mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-24 04:04:06 -08:00
refactor: Remove unused lint directives (no-changelog) (#9842)
This commit is contained in:
parent
16d3083af7
commit
44ea4c73eb
|
@ -165,7 +165,7 @@ describe('Data pinning', () => {
|
|||
ndv.actions.close();
|
||||
|
||||
workflowPage.actions.addNodeToCanvas(EDIT_FIELDS_SET_NODE_NAME, true, true);
|
||||
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
||||
|
||||
setExpressionOnStringValueInSet(`{{ $('${HTTP_REQUEST_NODE_NAME}').item`);
|
||||
|
||||
const output = '[Object: {"json": {"http": 123}, "pairedItem": {"item": 0}}]';
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/no-use-before-define */
|
||||
import { WorkflowPage, NDV } from '../pages';
|
||||
|
||||
const wf = new WorkflowPage();
|
||||
|
|
|
@ -89,7 +89,7 @@ describe('Current Workflow Executions', () => {
|
|||
.should('be.visible')
|
||||
.its('0.contentDocument.body') // Access the body of the iframe document
|
||||
.should('not.be.empty') // Ensure the body is not empty
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
|
||||
.then(cy.wrap)
|
||||
.find('.el-notification:has(.el-notification--error)')
|
||||
.should('be.visible')
|
||||
|
|
|
@ -36,7 +36,7 @@ describe('ADO-2106 connections should be colored correctly for pinned data in ex
|
|||
.should('be.visible')
|
||||
.its('0.contentDocument.body')
|
||||
.should('not.be.empty')
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
|
||||
.then(cy.wrap)
|
||||
.find('.jtk-connector[data-source-node="Webhook"][data-target-node="Set"]')
|
||||
.should('have.class', 'success')
|
||||
|
@ -56,7 +56,7 @@ describe('ADO-2106 connections should be colored correctly for pinned data in ex
|
|||
.should('be.visible')
|
||||
.its('0.contentDocument.body')
|
||||
.should('not.be.empty')
|
||||
// eslint-disable-next-line @typescript-eslint/unbound-method
|
||||
|
||||
.then(cy.wrap)
|
||||
.find('.jtk-connector[data-source-node="Webhook"][data-target-node="Set"]')
|
||||
.should('have.class', 'success')
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
import type { ClientOAuth2, ClientOAuth2Options, ClientOAuth2RequestObject } from './ClientOAuth2';
|
||||
import { auth, expects, getRequestOptions } from './utils';
|
||||
import { DEFAULT_HEADERS } from './constants';
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
import type { Headers } from './types';
|
||||
|
||||
export const DEFAULT_URL_BASE = 'https://example.org/';
|
||||
|
|
|
@ -9,6 +9,7 @@ import type {
|
|||
} from 'n8n-workflow';
|
||||
import { NodeConnectionType, NodeOperationError, tryToParseAlphanumericString } from 'n8n-workflow';
|
||||
|
||||
import { DynamicTool } from '@langchain/core/tools';
|
||||
import { getConnectionHintNoticeField } from '../../../utils/sharedFields';
|
||||
|
||||
import {
|
||||
|
@ -31,8 +32,6 @@ import {
|
|||
|
||||
import type { PlaceholderDefinition, ToolParameter } from './interfaces';
|
||||
|
||||
import { DynamicTool } from '@langchain/core/tools';
|
||||
|
||||
export class ToolHttpRequest implements INodeType {
|
||||
description: INodeTypeDescription = {
|
||||
displayName: 'HTTP Request Tool',
|
||||
|
|
|
@ -10,15 +10,6 @@ import { NodeConnectionType, NodeOperationError, jsonParse } from 'n8n-workflow'
|
|||
|
||||
import { getOAuth2AdditionalParameters } from 'n8n-nodes-base/dist/nodes/HttpRequest/GenericFunctions';
|
||||
|
||||
import type {
|
||||
ParameterInputType,
|
||||
ParametersValues,
|
||||
PlaceholderDefinition,
|
||||
ParametersValues as RawParametersValues,
|
||||
SendIn,
|
||||
ToolParameter,
|
||||
} from './interfaces';
|
||||
|
||||
import set from 'lodash/set';
|
||||
import get from 'lodash/get';
|
||||
import unset from 'lodash/unset';
|
||||
|
@ -28,6 +19,14 @@ import { convert } from 'html-to-text';
|
|||
|
||||
import { Readability } from '@mozilla/readability';
|
||||
import { JSDOM } from 'jsdom';
|
||||
import type {
|
||||
ParameterInputType,
|
||||
ParametersValues,
|
||||
PlaceholderDefinition,
|
||||
ParametersValues as RawParametersValues,
|
||||
SendIn,
|
||||
ToolParameter,
|
||||
} from './interfaces';
|
||||
|
||||
const genericCredentialRequest = async (ctx: IExecuteFunctions, itemIndex: number) => {
|
||||
const genericType = ctx.getNodeParameter('genericAuthType', itemIndex) as string;
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
||||
import { Container } from 'typedi';
|
||||
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
|
||||
import type { EntityManager } from '@n8n/typeorm';
|
||||
|
|
|
@ -24,14 +24,12 @@ export class ExternalHooks {
|
|||
credentialsRepository: CredentialsRepository,
|
||||
workflowRepository: WorkflowRepository,
|
||||
) {
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
this.dbCollections = {
|
||||
User: userRepository,
|
||||
Settings: settingsRepository,
|
||||
Credentials: credentialsRepository,
|
||||
Workflow: workflowRepository,
|
||||
};
|
||||
/* eslint-enable @typescript-eslint/naming-convention */
|
||||
}
|
||||
|
||||
async init(): Promise<void> {
|
||||
|
|
|
@ -232,12 +232,10 @@ export interface IExternalHooksFileData {
|
|||
|
||||
export interface IExternalHooksFunctions {
|
||||
dbCollections: {
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
User: UserRepository;
|
||||
Settings: SettingsRepository;
|
||||
Credentials: CredentialsRepository;
|
||||
Workflow: WorkflowRepository;
|
||||
/* eslint-enable @typescript-eslint/naming-convention */
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/no-use-before-define */
|
||||
import type { Entry as LdapUser } from 'ldapts';
|
||||
import { Filter } from 'ldapts/filters/Filter';
|
||||
import { Container } from 'typedi';
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
import { Container } from 'typedi';
|
||||
import type { Router } from 'express';
|
||||
import express from 'express';
|
||||
|
|
|
@ -197,7 +197,6 @@ export function encodeWebhookResponse(
|
|||
): IExecuteResponsePromiseData {
|
||||
if (typeof response === 'object' && Buffer.isBuffer(response.body)) {
|
||||
response.body = {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
'__@N8nEncodedBuffer@__': response.body.toString(BINARY_ENCODING),
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
||||
/* 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-unsafe-assignment */
|
||||
import { WorkflowExecute } from 'n8n-core';
|
||||
|
|
|
@ -219,7 +219,7 @@ export async function replaceInvalidCredentials(workflow: WorkflowEntity): Promi
|
|||
credentialsById[nodeCredentialType][nodeCredentials.id];
|
||||
}
|
||||
}
|
||||
/* eslint-enable no-await-in-loop */
|
||||
|
||||
return workflow;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ export class SecurityAudit extends BaseCommand {
|
|||
default: RISK_CATEGORIES.join(','),
|
||||
description: 'Comma-separated list of categories to include in the audit',
|
||||
}),
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
'days-abandoned-workflow': Flags.integer({
|
||||
default: config.getEnv('security.audit.daysAbandonedWorkflow'),
|
||||
description: 'Days for a workflow to be considered abandoned if not executed',
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import type { BinaryData } from 'n8n-core';
|
||||
import type { schema } from './schema';
|
||||
import type { RedisOptions } from 'ioredis';
|
||||
|
|
|
@ -20,11 +20,9 @@ interface OAuth1CredentialData {
|
|||
}
|
||||
|
||||
const algorithmMap = {
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
'HMAC-SHA256': 'sha256',
|
||||
'HMAC-SHA512': 'sha512',
|
||||
'HMAC-SHA1': 'sha1',
|
||||
/* eslint-enable */
|
||||
} as const;
|
||||
|
||||
@RestController('/oauth1-credential')
|
||||
|
@ -52,7 +50,7 @@ export class OAuth1CredentialController extends AbstractOAuthController {
|
|||
secret: oauthCredentials.consumerSecret,
|
||||
},
|
||||
signature_method: signatureMethod,
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
hash_function(base, key) {
|
||||
const algorithm = algorithmMap[signatureMethod] ?? 'sha1';
|
||||
return createHmac(algorithm, key).update(base).digest('base64');
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
import { AuthIdentity } from './AuthIdentity';
|
||||
import { AuthProviderSyncHistory } from './AuthProviderSyncHistory';
|
||||
import { AuthUser } from './AuthUser';
|
||||
|
|
|
@ -11,7 +11,7 @@ export class MigrateIntegerKeysToString1690000000001 implements IrreversibleMigr
|
|||
if (databaseType === 'mariadb') {
|
||||
collation = COLLATION_57;
|
||||
} else {
|
||||
const dbVersionQuery = (await queryRunner.query('SELECT @@version')) as // eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
const dbVersionQuery = (await queryRunner.query('SELECT @@version')) as
|
||||
| Array<{ '@@version': string }>
|
||||
| undefined;
|
||||
collation = COLLATION_80;
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
import { registerDecorator } from 'class-validator';
|
||||
|
||||
export function NoXss() {
|
||||
|
|
|
@ -24,7 +24,6 @@ import { type ServiceClass, ShutdownService } from '@/shutdown/Shutdown.service'
|
|||
export const OnShutdown =
|
||||
(priority = 100): MethodDecorator =>
|
||||
(prototype, propertyKey, descriptor) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||
const serviceClass = prototype.constructor as ServiceClass;
|
||||
const methodName = String(propertyKey);
|
||||
// TODO: assert that serviceClass is decorated with @Service
|
||||
|
|
|
@ -317,7 +317,6 @@ export class SourceControlGitService {
|
|||
await this.setGitSshCommand();
|
||||
const params = {};
|
||||
if (options.ffOnly) {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
Object.assign(params, { '--ff-only': true });
|
||||
}
|
||||
return await this.git.pull(params);
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
|
||||
import { MessageEventBusDestination } from './MessageEventBusDestination.ee';
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import { isObjectLiteral } from '@/utils';
|
||||
import { plainToInstance, instanceToPlain } from 'class-transformer';
|
||||
import { validate } from 'class-validator';
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import { isStringArray } from '@/utils';
|
||||
import { ApplicationError, jsonParse } from 'n8n-workflow';
|
||||
|
||||
|
|
|
@ -146,7 +146,6 @@ export class InstanceRiskReporter implements RiskReporter {
|
|||
const { instanceId } = this.instanceSettings;
|
||||
|
||||
const response = await axios.get<n8n.Version[]>(BASE_URL + currentVersionName, {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
headers: { 'n8n-instance-id': instanceId },
|
||||
});
|
||||
|
||||
|
|
|
@ -56,7 +56,6 @@ export class FrontendService {
|
|||
this.initSettings();
|
||||
|
||||
if (config.getEnv('nodes.communityPackages.enabled')) {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
void import('@/services/communityPackages.service').then(({ CommunityPackagesService }) => {
|
||||
this.communityPackagesService = Container.get(CommunityPackagesService);
|
||||
});
|
||||
|
|
|
@ -130,7 +130,6 @@ export function getWorkerCommandReceivedHandler(options: WorkerCommandReceivedHa
|
|||
}
|
||||
|
||||
logger.debug(
|
||||
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
||||
`Received unknown command via channel ${COMMAND_REDIS_CHANNEL}: "${message.command}"`,
|
||||
);
|
||||
break;
|
||||
|
|
|
@ -46,7 +46,6 @@ class RedisServiceBase {
|
|||
|
||||
this.redisClient.on('error', (error) => {
|
||||
if (!String(error).includes('ECONNREFUSED')) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||
this.logger.warn('Error with Redis: ', error);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
import { Container } from 'typedi';
|
||||
import type { ServiceProviderInstance } from 'samlify';
|
||||
import { UrlService } from '@/services/url.service';
|
||||
|
|
|
@ -9,7 +9,6 @@ export declare namespace SamlConfiguration {
|
|||
{},
|
||||
{},
|
||||
{
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
RelayState?: string;
|
||||
},
|
||||
{}
|
||||
|
|
|
@ -29,7 +29,6 @@ beforeEach(async () => {
|
|||
await testDb.truncate(['User']);
|
||||
});
|
||||
|
||||
// eslint-disable-next-line n8n-local-rules/no-skipped-tests
|
||||
test('user-management:reset should reset DB to default user state', async () => {
|
||||
//
|
||||
// ARRANGE
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
||||
|
@ -454,7 +454,6 @@ export async function parseRequestObject(requestObject: IRequestOptions) {
|
|||
// Check support for sendImmediately
|
||||
if (requestObject.auth.bearer !== undefined) {
|
||||
axiosConfig.headers = Object.assign(axiosConfig.headers || {}, {
|
||||
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
||||
Authorization: `Bearer ${requestObject.auth.bearer}`,
|
||||
});
|
||||
} else {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import { createHash } from 'node:crypto';
|
||||
import axios from 'axios';
|
||||
import { Service } from 'typedi';
|
||||
|
|
|
@ -1087,9 +1087,8 @@ export class WorkflowExecute {
|
|||
}
|
||||
|
||||
if (nodeSuccessData instanceof NodeExecutionOutput) {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||
const hints: NodeExecutionHint[] = nodeSuccessData.getHints();
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||
|
||||
executionHints.push(...hints);
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,9 @@ Range.prototype.getClientRects = vi.fn(() => ({
|
|||
|
||||
export class IntersectionObserver {
|
||||
root = null;
|
||||
|
||||
rootMargin = '';
|
||||
|
||||
thresholds = [];
|
||||
|
||||
disconnect() {
|
||||
|
|
|
@ -38,8 +38,8 @@
|
|||
:message="$locale.baseText('credentialEdit.credentialConfig.accountConnected')"
|
||||
:button-label="$locale.baseText('credentialEdit.credentialConfig.reconnect')"
|
||||
:button-title="$locale.baseText('credentialEdit.credentialConfig.reconnectOAuth2Credential')"
|
||||
@click="$emit('oauth')"
|
||||
data-test-id="oauth-connect-success-banner"
|
||||
@click="$emit('oauth')"
|
||||
>
|
||||
<template v-if="isGoogleOAuthType" #button>
|
||||
<p
|
||||
|
@ -118,8 +118,8 @@
|
|||
isOAuthType && requiredPropertiesFilled && !isOAuthConnected && credentialPermissions.update
|
||||
"
|
||||
:is-google-o-auth-type="isGoogleOAuthType"
|
||||
@click="$emit('oauth')"
|
||||
data-test-id="oauth-connect-button"
|
||||
@click="$emit('oauth')"
|
||||
/>
|
||||
|
||||
<n8n-text v-if="isMissingCredentials" color="text-base" size="medium">
|
||||
|
|
|
@ -665,7 +665,7 @@ export default defineComponent({
|
|||
};
|
||||
}
|
||||
|
||||
this.credentialName = currentCredentials.name as string;
|
||||
this.credentialName = currentCredentials.name;
|
||||
} catch (error) {
|
||||
this.showError(
|
||||
error,
|
||||
|
|
|
@ -48,7 +48,7 @@ async function onUpdateConnected(value: boolean) {
|
|||
|
||||
if (props.beforeUpdate) {
|
||||
const result = await props.beforeUpdate(value);
|
||||
if (result === false) {
|
||||
if (!result) {
|
||||
saving.value = false;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -154,7 +154,7 @@ watch(
|
|||
</div>
|
||||
</div>
|
||||
<div v-else :class="$style.email">
|
||||
<div :class="$style.input" @keyup.enter="send" data-test-id="nps-survey-email">
|
||||
<div :class="$style.input" data-test-id="nps-survey-email" @keyup.enter="send">
|
||||
<n8n-input
|
||||
v-model="form.email"
|
||||
:placeholder="YOUR_EMAIL_ADDRESS"
|
||||
|
|
|
@ -86,7 +86,7 @@ import { toRefs } from '@vueuse/core';
|
|||
// ---------------------------------------------------------------------------
|
||||
|
||||
const props = defineProps<{
|
||||
reportError: Boolean;
|
||||
reportError: boolean;
|
||||
}>();
|
||||
|
||||
// #endregion
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
import { Command } from '@oclif/core';
|
||||
|
|
|
@ -15,7 +15,7 @@ export async function createTemplate(
|
|||
replaceValues: object,
|
||||
): Promise<void> {
|
||||
// Copy the file to then replace the values in it
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||
|
||||
await copyFile(sourceFilePath, destinationFilePath);
|
||||
|
||||
// Replace the variables in the template file
|
||||
|
|
|
@ -81,7 +81,7 @@ export class ActiveCampaign implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'ActiveCampaign',
|
||||
name: 'activeCampaign',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:activeCampaign.svg', dark: 'file:activeCampaign.dark.svg' },
|
||||
group: ['transform'],
|
||||
version: 1,
|
||||
|
|
|
@ -26,7 +26,7 @@ export class Affinity implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Affinity',
|
||||
name: 'affinity',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:affinity.svg', dark: 'file:affinity.dark.svg' },
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -18,7 +18,7 @@ export class Amqp implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'AMQP Sender',
|
||||
name: 'amqp',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:amqp.svg',
|
||||
group: ['transform'],
|
||||
version: 1,
|
||||
|
|
|
@ -14,7 +14,7 @@ export class CircleCi implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'CircleCI',
|
||||
name: 'circleCi',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:circleCi.svg', dark: 'file:circleCi.dark.svg' },
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -23,7 +23,7 @@ export class Cockpit implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Cockpit',
|
||||
name: 'cockpit',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:cockpit.svg', dark: 'file:cockpit.dark.svg' },
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||
|
||||
import type {
|
||||
IExecuteFunctions,
|
||||
INodeExecutionData,
|
||||
|
|
|
@ -318,7 +318,7 @@ const embedFields: INodeProperties[] = [
|
|||
{
|
||||
displayName: 'Color',
|
||||
name: 'color',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-param-color-type-unused
|
||||
|
||||
type: 'color',
|
||||
default: '',
|
||||
description: 'Color code of the embed',
|
||||
|
|
|
@ -13,7 +13,7 @@ export class Drift implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Drift',
|
||||
name: 'drift',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:drift.svg', dark: 'file:drift.dark.svg' },
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -17,7 +17,7 @@ export class Egoi implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'E-goi',
|
||||
name: 'egoi',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:egoi.svg',
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -12,7 +12,6 @@ import * as toJson from './actions/toJson.operation';
|
|||
import * as iCall from './actions/iCall.operation';
|
||||
|
||||
export class ConvertToFile implements INodeType {
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-missing-subtitle
|
||||
description: INodeTypeDescription = {
|
||||
displayName: 'Convert to File',
|
||||
name: 'convertToFile',
|
||||
|
|
|
@ -15,7 +15,7 @@ export class Flow implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Flow',
|
||||
name: 'flow',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:flow.svg',
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||
import type { INodeProperties } from 'n8n-workflow';
|
||||
|
||||
export const webhookPath: INodeProperties = {
|
||||
|
|
|
@ -74,7 +74,7 @@ export class Freshdesk implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Freshdesk',
|
||||
name: 'freshdesk',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:freshdesk.svg',
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -16,7 +16,7 @@ export class GoogleTasks implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Google Tasks',
|
||||
name: 'googleTasks',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:googleTasks.svg',
|
||||
group: ['input'],
|
||||
version: 1,
|
||||
|
|
|
@ -12,9 +12,9 @@ import set from 'lodash/set';
|
|||
import isPlainObject from 'lodash/isPlainObject';
|
||||
|
||||
import FormData from 'form-data';
|
||||
import get from 'lodash/get';
|
||||
import { formatPrivateKey } from '../../utils/utilities';
|
||||
import type { HttpSslAuthCredentials } from './interfaces';
|
||||
import get from 'lodash/get';
|
||||
|
||||
export type BodyParameter = {
|
||||
name: string;
|
||||
|
|
|
@ -14,7 +14,7 @@ export class HumanticAi implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Humantic AI',
|
||||
name: 'humanticAi',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:humanticai.svg',
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -22,7 +22,7 @@ export class IfV1 implements INodeType {
|
|||
color: '#408000',
|
||||
},
|
||||
inputs: ['main'],
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
|
||||
|
||||
outputs: ['main', 'main'],
|
||||
outputNames: ['true', 'false'],
|
||||
properties: [
|
||||
|
|
|
@ -21,7 +21,7 @@ export class Intercom implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Intercom',
|
||||
name: 'intercom',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:intercom.svg',
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -16,9 +16,9 @@ import pick from 'lodash/pick';
|
|||
import set from 'lodash/set';
|
||||
import unset from 'lodash/unset';
|
||||
|
||||
import { flattenKeys, shuffleArray, compareItems } from '@utils/utilities';
|
||||
import { sortByCode } from '../V3/helpers/utils';
|
||||
import * as summarize from './summarize.operation';
|
||||
import { flattenKeys, shuffleArray, compareItems } from '@utils/utilities';
|
||||
|
||||
export class ItemListsV1 implements INodeType {
|
||||
description: INodeTypeDescription;
|
||||
|
|
|
@ -17,9 +17,9 @@ import pick from 'lodash/pick';
|
|||
import set from 'lodash/set';
|
||||
import unset from 'lodash/unset';
|
||||
|
||||
import { flattenKeys, shuffleArray, compareItems } from '@utils/utilities';
|
||||
import { sortByCode } from '../V3/helpers/utils';
|
||||
import * as summarize from './summarize.operation';
|
||||
import { flattenKeys, shuffleArray, compareItems } from '@utils/utilities';
|
||||
|
||||
export class ItemListsV2 implements INodeType {
|
||||
description: INodeTypeDescription;
|
||||
|
|
|
@ -6,9 +6,9 @@ import isEqual from 'lodash/isEqual';
|
|||
import lt from 'lodash/lt';
|
||||
import pick from 'lodash/pick';
|
||||
|
||||
import { compareItems, flattenKeys, updateDisplayOptions } from '@utils/utilities';
|
||||
import { prepareFieldsArray, typeToNumber } from '../../helpers/utils';
|
||||
import { disableDotNotationBoolean } from '../common.descriptions';
|
||||
import { compareItems, flattenKeys, updateDisplayOptions } from '@utils/utilities';
|
||||
|
||||
const properties: INodeProperties[] = [
|
||||
{
|
||||
|
|
|
@ -56,7 +56,6 @@ export class JiraTrigger implements INodeType {
|
|||
},
|
||||
},
|
||||
{
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-credentials-name-unsuffixed
|
||||
name: 'httpQueryAuth',
|
||||
displayName: 'Credentials to Authenticate Webhook',
|
||||
displayOptions: {
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||
import get from 'lodash/get';
|
||||
|
||||
import type {
|
||||
|
@ -27,7 +26,7 @@ export class MergeV1 implements INodeType {
|
|||
name: 'Merge',
|
||||
color: '#00bbcc',
|
||||
},
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
|
||||
|
||||
inputs: ['main', 'main'],
|
||||
outputs: ['main'],
|
||||
inputNames: ['Input 1', 'Input 2'],
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||
|
||||
import merge from 'lodash/merge';
|
||||
|
||||
import type {
|
||||
|
@ -41,7 +39,7 @@ export class MergeV2 implements INodeType {
|
|||
defaults: {
|
||||
name: 'Merge',
|
||||
},
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
|
||||
|
||||
inputs: ['main', 'main'],
|
||||
outputs: ['main'],
|
||||
inputNames: ['Input 1', 'Input 2'],
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import nock from 'nock';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
import type { IHttpRequestMethods } from 'n8n-workflow';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
|
||||
jest.mock('../../../../v2/transport', () => {
|
||||
const originalModule = jest.requireActual('../../../../v2/transport');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import nock from 'nock';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
import type { IHttpRequestMethods } from 'n8n-workflow';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
|
||||
jest.mock('../../../../v2/transport', () => {
|
||||
const originalModule = jest.requireActual('../../../../v2/transport');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import nock from 'nock';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
import type { IHttpRequestMethods } from 'n8n-workflow';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
|
||||
jest.mock('../../../../v2/transport', () => {
|
||||
const originalModule = jest.requireActual('../../../../v2/transport');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import nock from 'nock';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
import type { IHttpRequestMethods } from 'n8n-workflow';
|
||||
import { equalityTest, setup, workflowToTests } from '@test/nodes/Helpers';
|
||||
|
||||
jest.mock('../../../../v2/transport', () => {
|
||||
const originalModule = jest.requireActual('../../../../v2/transport');
|
||||
|
|
|
@ -114,7 +114,7 @@ export async function microsoftApiRequestAllItemsDelta(
|
|||
do {
|
||||
responseData = (await microsoftApiRequest.call(this, 'GET', '', {}, {}, uri)) as IDataObject;
|
||||
uri = responseData['@odata.nextLink'] as string;
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||
|
||||
for (const value of responseData.value as IDataObject[]) {
|
||||
if (value.fileSystemInfo as IDataObject) {
|
||||
const updatedTimeStamp = (value.fileSystemInfo as IDataObject)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable n8n-nodes-base/node-filename-against-convention */
|
||||
import type {
|
||||
IExecuteFunctions,
|
||||
INodeType,
|
||||
|
|
|
@ -14,7 +14,7 @@ export class Msg91 implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'MSG91',
|
||||
name: 'msg91',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:msg91.svg', dark: 'file:msg91.dark.svg' },
|
||||
group: ['transform'],
|
||||
version: 1,
|
||||
|
|
|
@ -21,8 +21,8 @@ import { camelCase, capitalCase, snakeCase } from 'change-case';
|
|||
import moment from 'moment-timezone';
|
||||
|
||||
import { validate as uuidValidate } from 'uuid';
|
||||
import { filters } from './descriptions/Filters';
|
||||
import set from 'lodash/set';
|
||||
import { filters } from './descriptions/Filters';
|
||||
|
||||
function uuidValidateWithoutDashes(this: IExecuteFunctions, value: string) {
|
||||
if (uuidValidate(value)) return true;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import { NodeConnectionType } from 'n8n-workflow';
|
||||
import { apiUrl } from '../Peekalink.node';
|
||||
import type { WorkflowTestData } from '@test/nodes/types';
|
||||
import { executeWorkflow } from '@test/nodes/ExecuteWorkflow';
|
||||
import * as Helpers from '@test/nodes/Helpers';
|
||||
import { NodeConnectionType } from 'n8n-workflow';
|
||||
|
||||
describe('Peekalink Node', () => {
|
||||
const exampleComPreview = {
|
||||
|
|
|
@ -3,10 +3,10 @@ import { NodeExecutionOutput, NodeOperationError } from 'n8n-workflow';
|
|||
|
||||
import { configurePostgres } from '../transport';
|
||||
import { configureQueryRunner } from '../helpers/utils';
|
||||
import type { PostgresNodeCredentials, PostgresNodeOptions } from '../helpers/interfaces';
|
||||
import type { PostgresType } from './node.type';
|
||||
|
||||
import * as database from './database/Database.resource';
|
||||
import type { PostgresNodeCredentials, PostgresNodeOptions } from '../helpers/interfaces';
|
||||
|
||||
export async function router(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
|
||||
let returnData: INodeExecutionData[] = [];
|
||||
|
|
|
@ -23,7 +23,7 @@ export class ProfitWell implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'ProfitWell',
|
||||
name: 'profitWell',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:profitwell.svg', dark: 'file:profitwell.dark.svg' },
|
||||
group: ['output'],
|
||||
version: 1,
|
||||
|
|
|
@ -20,7 +20,7 @@ export class RabbitMQ implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'RabbitMQ',
|
||||
name: 'rabbitmq',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:rabbitmq.svg',
|
||||
group: ['transform'],
|
||||
version: [1, 1.1],
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* eslint-disable @typescript-eslint/no-loop-func */
|
||||
import type {
|
||||
ITriggerFunctions,
|
||||
IDataObject,
|
||||
|
|
|
@ -13,6 +13,7 @@ import {
|
|||
NodeOperationError,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
import set from 'lodash/set';
|
||||
import {
|
||||
formatFeed,
|
||||
formatResults,
|
||||
|
@ -37,7 +38,6 @@ import {
|
|||
} from './descriptions';
|
||||
|
||||
import type { SplunkCredentials, SplunkFeedResponse } from './types';
|
||||
import set from 'lodash/set';
|
||||
|
||||
export class Splunk implements INodeType {
|
||||
description: INodeTypeDescription = {
|
||||
|
|
|
@ -46,7 +46,7 @@ export class StickyNote implements INodeType {
|
|||
{
|
||||
displayName: 'Color',
|
||||
name: 'color',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-param-color-type-unused
|
||||
|
||||
type: 'number',
|
||||
required: true,
|
||||
default: 1,
|
||||
|
|
|
@ -5,6 +5,7 @@ import {
|
|||
type INodeType,
|
||||
type INodeTypeDescription,
|
||||
} from 'n8n-workflow';
|
||||
import { generatePairedItemData } from '../../../utils/utilities';
|
||||
import {
|
||||
type Aggregations,
|
||||
NUMERICAL_AGGREGATIONS,
|
||||
|
@ -14,7 +15,6 @@ import {
|
|||
fieldValueGetter,
|
||||
splitData,
|
||||
} from './utils';
|
||||
import { generatePairedItemData } from '../../../utils/utilities';
|
||||
|
||||
export class Summarize implements INodeType {
|
||||
description: INodeTypeDescription = {
|
||||
|
|
|
@ -12,7 +12,7 @@ export class Vonage implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Vonage',
|
||||
name: 'vonage',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: { light: 'file:vonage.svg', dark: 'file:vonage.dark.svg' },
|
||||
group: ['input'],
|
||||
version: 1,
|
||||
|
|
|
@ -20,6 +20,7 @@ import isbot from 'isbot';
|
|||
import { file as tmpFile } from 'tmp-promise';
|
||||
import jwt from 'jsonwebtoken';
|
||||
|
||||
import { formatPrivateKey } from '../../utils/utilities';
|
||||
import {
|
||||
authenticationProperty,
|
||||
credentialsProperty,
|
||||
|
@ -39,7 +40,6 @@ import {
|
|||
isIpWhitelisted,
|
||||
setupOutputConnection,
|
||||
} from './utils';
|
||||
import { formatPrivateKey } from '../../utils/utilities';
|
||||
|
||||
export class Webhook extends Node {
|
||||
authPropertyName = 'authentication';
|
||||
|
@ -330,7 +330,7 @@ export class Webhook extends Node {
|
|||
}
|
||||
|
||||
const authHeader = req.headers.authorization;
|
||||
const token = authHeader && authHeader.split(' ')[1];
|
||||
const token = authHeader?.split(' ')[1];
|
||||
|
||||
if (!token) {
|
||||
throw new WebhookAuthorizationError(401, 'No token provided');
|
||||
|
|
|
@ -31,7 +31,7 @@ export class Wekan implements INodeType {
|
|||
description: INodeTypeDescription = {
|
||||
displayName: 'Wekan',
|
||||
name: 'wekan',
|
||||
// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg
|
||||
|
||||
icon: 'file:wekan.svg',
|
||||
group: ['transform'],
|
||||
version: 1,
|
||||
|
|
|
@ -1275,7 +1275,6 @@ export interface ICredentialsDisplayOptions {
|
|||
[key: string]: NodeParameterValue[] | undefined;
|
||||
};
|
||||
show?: {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
'@version'?: number[];
|
||||
[key: string]: NodeParameterValue[] | undefined;
|
||||
};
|
||||
|
@ -1711,29 +1710,28 @@ export type ConnectionTypes =
|
|||
| 'main';
|
||||
|
||||
export const enum NodeConnectionType {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
AiAgent = 'ai_agent',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiChain = 'ai_chain',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiDocument = 'ai_document',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiEmbedding = 'ai_embedding',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiLanguageModel = 'ai_languageModel',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiMemory = 'ai_memory',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiOutputParser = 'ai_outputParser',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiRetriever = 'ai_retriever',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiTextSplitter = 'ai_textSplitter',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiTool = 'ai_tool',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
AiVectorStore = 'ai_vectorStore',
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
Main = 'main',
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
||||
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
||||
|
||||
/* eslint-disable @typescript-eslint/no-use-before-define */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
|
||||
|
|
|
@ -794,7 +794,7 @@ export class WorkflowDataProxy {
|
|||
if (Array.isArray(itemPreviousNode.pairedItem)) {
|
||||
// Item is based on multiple items so check all of them
|
||||
const results = itemPreviousNode.pairedItem
|
||||
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
||||
|
||||
.map((item) => {
|
||||
try {
|
||||
const itemInput = item.input || 0;
|
||||
|
@ -1277,11 +1277,11 @@ export class WorkflowDataProxy {
|
|||
$now: DateTime.now(),
|
||||
$today: DateTime.now().set({ hour: 0, minute: 0, second: 0, millisecond: 0 }),
|
||||
$jmesPath: jmespathWrapper,
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
DateTime,
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
Interval,
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
|
||||
Duration,
|
||||
...that.additionalKeys,
|
||||
$getPairedItem: getPairedItem,
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
|
||||
import { parseString } from 'xml2js';
|
||||
import type {
|
||||
|
@ -149,7 +147,7 @@ export class NodeApiError extends NodeError {
|
|||
}
|
||||
|
||||
// if not description provided, try to find it in the error object
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
||||
|
||||
if (
|
||||
!description &&
|
||||
(errorResponse.description || (errorResponse?.reason as IDataObject)?.description)
|
||||
|
@ -160,7 +158,7 @@ export class NodeApiError extends NodeError {
|
|||
}
|
||||
|
||||
// if not message provided, try to find it in the error object or set description as message
|
||||
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
|
||||
|
||||
if (
|
||||
!message &&
|
||||
(errorResponse.message || (errorResponse?.reason as IDataObject)?.message || description)
|
||||
|
@ -265,10 +263,8 @@ export class NodeApiError extends NodeError {
|
|||
parseString(xml, { explicitArray: false }, (_, result) => {
|
||||
if (!result) return;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
||||
const topLevelKey = Object.keys(result)[0];
|
||||
this.description = this.findProperty(
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access
|
||||
result[topLevelKey],
|
||||
ERROR_MESSAGE_PROPERTIES,
|
||||
['Error'].concat(ERROR_NESTING_PROPERTIES),
|
||||
|
|
Loading…
Reference in a new issue