👕 Fix lint issue

This commit is contained in:
Jan Oberhauser 2020-10-22 15:46:03 +02:00
parent 5b7efd67ca
commit 40c2acd77b
491 changed files with 4045 additions and 3936 deletions

View file

@ -10,8 +10,8 @@ import * as config from '../config';
import {
ActiveExecutions,
ActiveWorkflowRunner,
CredentialTypes,
CredentialsOverwrites,
CredentialTypes,
Db,
ExternalHooks,
GenericHelpers,

View file

@ -10,58 +10,58 @@ const config = convict({
doc: 'Type of database to use',
format: ['sqlite', 'mariadb', 'mongodb', 'mysqldb', 'postgresdb'],
default: 'sqlite',
env: 'DB_TYPE'
env: 'DB_TYPE',
},
mongodb: {
connectionUrl: {
doc: 'MongoDB Connection URL',
format: '*',
default: 'mongodb://user:password@localhost:27017/database',
env: 'DB_MONGODB_CONNECTION_URL'
}
env: 'DB_MONGODB_CONNECTION_URL',
},
},
tablePrefix: {
doc: 'Prefix for table names',
format: '*',
default: '',
env: 'DB_TABLE_PREFIX'
env: 'DB_TABLE_PREFIX',
},
postgresdb: {
database: {
doc: 'PostgresDB Database',
format: String,
default: 'n8n',
env: 'DB_POSTGRESDB_DATABASE'
env: 'DB_POSTGRESDB_DATABASE',
},
host: {
doc: 'PostgresDB Host',
format: String,
default: 'localhost',
env: 'DB_POSTGRESDB_HOST'
env: 'DB_POSTGRESDB_HOST',
},
password: {
doc: 'PostgresDB Password',
format: String,
default: '',
env: 'DB_POSTGRESDB_PASSWORD'
env: 'DB_POSTGRESDB_PASSWORD',
},
port: {
doc: 'PostgresDB Port',
format: Number,
default: 5432,
env: 'DB_POSTGRESDB_PORT'
env: 'DB_POSTGRESDB_PORT',
},
user: {
doc: 'PostgresDB User',
format: String,
default: 'root',
env: 'DB_POSTGRESDB_USER'
env: 'DB_POSTGRESDB_USER',
},
schema: {
doc: 'PostgresDB Schema',
format: String,
default: 'public',
env: 'DB_POSTGRESDB_SCHEMA'
env: 'DB_POSTGRESDB_SCHEMA',
},
ssl: {
@ -89,7 +89,7 @@ const config = convict({
default: true,
env: 'DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED',
},
}
},
},
mysqldb: {
@ -97,31 +97,31 @@ const config = convict({
doc: 'MySQL Database',
format: String,
default: 'n8n',
env: 'DB_MYSQLDB_DATABASE'
env: 'DB_MYSQLDB_DATABASE',
},
host: {
doc: 'MySQL Host',
format: String,
default: 'localhost',
env: 'DB_MYSQLDB_HOST'
env: 'DB_MYSQLDB_HOST',
},
password: {
doc: 'MySQL Password',
format: String,
default: '',
env: 'DB_MYSQLDB_PASSWORD'
env: 'DB_MYSQLDB_PASSWORD',
},
port: {
doc: 'MySQL Port',
format: Number,
default: 3306,
env: 'DB_MYSQLDB_PORT'
env: 'DB_MYSQLDB_PORT',
},
user: {
doc: 'MySQL User',
format: String,
default: 'root',
env: 'DB_MYSQLDB_USER'
env: 'DB_MYSQLDB_USER',
},
},
},
@ -136,7 +136,7 @@ const config = convict({
doc: 'Overwrites for credentials',
format: '*',
default: '{}',
env: 'CREDENTIALS_OVERWRITE_DATA'
env: 'CREDENTIALS_OVERWRITE_DATA',
},
endpoint: {
doc: 'Fetch credentials from API',
@ -156,7 +156,7 @@ const config = convict({
doc: 'In what process workflows should be executed',
format: ['main', 'own'],
default: 'own',
env: 'EXECUTIONS_PROCESS'
env: 'EXECUTIONS_PROCESS',
},
// A Workflow times out and gets canceled after this time (seconds).
@ -174,13 +174,13 @@ const config = convict({
doc: 'Max run time (seconds) before stopping the workflow execution',
format: Number,
default: -1,
env: 'EXECUTIONS_TIMEOUT'
env: 'EXECUTIONS_TIMEOUT',
},
maxTimeout: {
doc: 'Max execution time (seconds) that can be set for a workflow individually',
format: Number,
default: 3600,
env: 'EXECUTIONS_TIMEOUT_MAX'
env: 'EXECUTIONS_TIMEOUT_MAX',
},
// If a workflow executes all the data gets saved by default. This
@ -193,13 +193,13 @@ const config = convict({
doc: 'What workflow execution data to save on error',
format: ['all', 'none'],
default: 'all',
env: 'EXECUTIONS_DATA_SAVE_ON_ERROR'
env: 'EXECUTIONS_DATA_SAVE_ON_ERROR',
},
saveDataOnSuccess: {
doc: 'What workflow execution data to save on success',
format: ['all', 'none'],
default: 'all',
env: 'EXECUTIONS_DATA_SAVE_ON_SUCCESS'
env: 'EXECUTIONS_DATA_SAVE_ON_SUCCESS',
},
// If the executions of workflows which got started via the editor
@ -211,7 +211,7 @@ const config = convict({
doc: 'Save data of executions when started manually via editor',
format: 'Boolean',
default: false,
env: 'EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS'
env: 'EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS',
},
// To not exceed the database's capacity and keep its size moderate
@ -223,19 +223,19 @@ const config = convict({
doc: 'Delete data of past executions on a rolling basis',
format: 'Boolean',
default: false,
env: 'EXECUTIONS_DATA_PRUNE'
env: 'EXECUTIONS_DATA_PRUNE',
},
pruneDataMaxAge: {
doc: 'How old (hours) the execution data has to be to get deleted',
format: Number,
default: 336,
env: 'EXECUTIONS_DATA_MAX_AGE'
env: 'EXECUTIONS_DATA_MAX_AGE',
},
pruneDataTimeout: {
doc: 'Timeout (seconds) after execution data has been pruned',
format: Number,
default: 3600,
env: 'EXECUTIONS_DATA_PRUNE_TIMEOUT'
env: 'EXECUTIONS_DATA_PRUNE_TIMEOUT',
},
},
@ -248,7 +248,7 @@ const config = convict({
doc: 'The timezone to use',
format: '*',
default: 'America/New_York',
env: 'GENERIC_TIMEZONE'
env: 'GENERIC_TIMEZONE',
},
},
@ -258,45 +258,45 @@ const config = convict({
default: '/',
arg: 'path',
env: 'N8N_PATH',
doc: 'Path n8n is deployed to'
doc: 'Path n8n is deployed to',
},
host: {
format: String,
default: 'localhost',
arg: 'host',
env: 'N8N_HOST',
doc: 'Host name n8n can be reached'
doc: 'Host name n8n can be reached',
},
port: {
format: Number,
default: 5678,
arg: 'port',
env: 'N8N_PORT',
doc: 'HTTP port n8n can be reached'
doc: 'HTTP port n8n can be reached',
},
listen_address: {
format: String,
default: '0.0.0.0',
env: 'N8N_LISTEN_ADDRESS',
doc: 'IP address n8n should listen on'
doc: 'IP address n8n should listen on',
},
protocol: {
format: ['http', 'https'],
default: 'http',
env: 'N8N_PROTOCOL',
doc: 'HTTP Protocol via which n8n can be reached'
doc: 'HTTP Protocol via which n8n can be reached',
},
ssl_key: {
format: String,
default: '',
env: 'N8N_SSL_KEY',
doc: 'SSL Key for HTTPS Protocol'
doc: 'SSL Key for HTTPS Protocol',
},
ssl_cert: {
format: String,
default: '',
env: 'N8N_SSL_CERT',
doc: 'SSL Cert for HTTPS Protocol'
doc: 'SSL Cert for HTTPS Protocol',
},
security: {
@ -304,82 +304,82 @@ const config = convict({
doc: 'Additional endpoints to exclude auth checks. Multiple endpoints can be separated by colon (":")',
format: String,
default: '',
env: 'N8N_AUTH_EXCLUDE_ENDPOINTS'
env: 'N8N_AUTH_EXCLUDE_ENDPOINTS',
},
basicAuth: {
active: {
format: 'Boolean',
default: false,
env: 'N8N_BASIC_AUTH_ACTIVE',
doc: 'If basic auth should be activated for editor and REST-API'
doc: 'If basic auth should be activated for editor and REST-API',
},
user: {
format: String,
default: '',
env: 'N8N_BASIC_AUTH_USER',
doc: 'The name of the basic auth user'
doc: 'The name of the basic auth user',
},
password: {
format: String,
default: '',
env: 'N8N_BASIC_AUTH_PASSWORD',
doc: 'The password of the basic auth user'
doc: 'The password of the basic auth user',
},
hash: {
format: 'Boolean',
default: false,
env: 'N8N_BASIC_AUTH_HASH',
doc: 'If password for basic auth is hashed'
}
doc: 'If password for basic auth is hashed',
},
},
jwtAuth: {
active: {
format: 'Boolean',
default: false,
env: 'N8N_JWT_AUTH_ACTIVE',
doc: 'If JWT auth should be activated for editor and REST-API'
doc: 'If JWT auth should be activated for editor and REST-API',
},
jwtHeader: {
format: String,
default: '',
env: 'N8N_JWT_AUTH_HEADER',
doc: 'The request header containing a signed JWT'
doc: 'The request header containing a signed JWT',
},
jwtHeaderValuePrefix: {
format: String,
default: '',
env: 'N8N_JWT_AUTH_HEADER_VALUE_PREFIX',
doc: 'The request header value prefix to strip (optional)'
doc: 'The request header value prefix to strip (optional)',
},
jwksUri: {
format: String,
default: '',
env: 'N8N_JWKS_URI',
doc: 'The URI to fetch JWK Set for JWT authentication'
doc: 'The URI to fetch JWK Set for JWT authentication',
},
jwtIssuer: {
format: String,
default: '',
env: 'N8N_JWT_ISSUER',
doc: 'JWT issuer to expect (optional)'
doc: 'JWT issuer to expect (optional)',
},
jwtNamespace: {
format: String,
default: '',
env: 'N8N_JWT_NAMESPACE',
doc: 'JWT namespace to expect (optional)'
doc: 'JWT namespace to expect (optional)',
},
jwtAllowedTenantKey: {
format: String,
default: '',
env: 'N8N_JWT_ALLOWED_TENANT_KEY',
doc: 'JWT tenant key name to inspect within JWT namespace (optional)'
doc: 'JWT tenant key name to inspect within JWT namespace (optional)',
},
jwtAllowedTenant: {
format: String,
default: '',
env: 'N8N_JWT_ALLOWED_TENANT',
doc: 'JWT tenant to allow (optional)'
doc: 'JWT tenant to allow (optional)',
},
},
},
@ -389,19 +389,19 @@ const config = convict({
format: String,
default: 'rest',
env: 'N8N_ENDPOINT_REST',
doc: 'Path for rest endpoint'
doc: 'Path for rest endpoint',
},
webhook: {
format: String,
default: 'webhook',
env: 'N8N_ENDPOINT_WEBHOOK',
doc: 'Path for webhook endpoint'
doc: 'Path for webhook endpoint',
},
webhookTest: {
format: String,
default: 'webhook-test',
env: 'N8N_ENDPOINT_WEBHOOK_TEST',
doc: 'Path for test-webhook endpoint'
doc: 'Path for test-webhook endpoint',
},
},
@ -409,7 +409,7 @@ const config = convict({
doc: 'Files containing external hooks. Multiple files can be separated by colon (":")',
format: String,
default: '',
env: 'EXTERNAL_HOOK_FILES'
env: 'EXTERNAL_HOOK_FILES',
},
nodes: {
@ -433,13 +433,13 @@ const config = convict({
}
},
default: '[]',
env: 'NODES_EXCLUDE'
env: 'NODES_EXCLUDE',
},
errorTriggerType: {
doc: 'Node Type to use as Error Trigger',
format: String,
default: 'n8n-nodes-base.errorTrigger',
env: 'NODES_ERROR_TRIGGER_TYPE'
env: 'NODES_ERROR_TRIGGER_TYPE',
},
},

View file

@ -7,8 +7,8 @@ import {
} from 'n8n-core';
import {
IExecutionsCurrentSummary,
IExecutingWorkflowData,
IExecutionsCurrentSummary,
IWorkflowExecutionDataProcess,
} from '.';

View file

@ -1,17 +1,17 @@
import {
IActivationError,
Db,
NodeTypes,
IActivationError,
IResponseCallbackData,
IWebhookDb,
IWorkflowDb,
IWorkflowExecutionDataProcess,
NodeTypes,
ResponseHelper,
WebhookHelpers,
WorkflowCredentials,
WorkflowExecuteAdditionalData,
WorkflowHelpers,
WorkflowRunner,
WorkflowExecuteAdditionalData,
IWebhookDb,
} from './';
import {
@ -26,8 +26,8 @@ import {
INode,
INodeExecutionData,
IRunExecutionData,
NodeHelpers,
IWorkflowExecuteAdditionalData as IWorkflowExecuteAdditionalDataWorkflow,
NodeHelpers,
WebhookHttpMethod,
Workflow,
WorkflowExecuteMode,
@ -352,8 +352,8 @@ export class ActiveWorkflowRunner {
node,
data: {
main: data,
}
}
},
},
];
const executionData: IRunExecutionData = {

View file

@ -9,8 +9,8 @@ import {
INodeParameters,
INodeProperties,
INodeType,
INodeTypes,
INodeTypeData,
INodeTypes,
NodeHelpers,
Workflow,
} from 'n8n-workflow';

View file

@ -4,8 +4,8 @@ import {
import {
CredentialTypes,
ICredentialsOverwrite,
GenericHelpers,
ICredentialsOverwrite,
} from './';

View file

@ -33,27 +33,27 @@ export let collections: IDatabaseCollections = {
};
import {
CreateIndexStoppedAt1594828256133,
InitialMigration1587669153312,
WebhookModel1589476000887,
CreateIndexStoppedAt1594828256133,
} from './databases/postgresdb/migrations';
import {
CreateIndexStoppedAt1594910478695,
InitialMigration1587563438936,
WebhookModel1592679094242,
CreateIndexStoppedAt1594910478695,
} from './databases/mongodb/migrations';
import {
CreateIndexStoppedAt1594902918301,
InitialMigration1588157391238,
WebhookModel1592447867632,
CreateIndexStoppedAt1594902918301,
} from './databases/mysqldb/migrations';
import {
CreateIndexStoppedAt1594825041918,
InitialMigration1588102412422,
WebhookModel1592445003908,
CreateIndexStoppedAt1594825041918,
} from './databases/sqlite/migrations';
import * as path from 'path';
@ -154,7 +154,7 @@ export async function init(): Promise<IDatabaseCollections> {
migrations: [
InitialMigration1588102412422,
WebhookModel1592445003908,
CreateIndexStoppedAt1594825041918
CreateIndexStoppedAt1594825041918,
],
migrationsRun: true,
migrationsTableName: `${entityPrefix}migrations`,

View file

@ -1,7 +1,7 @@
import {
Db,
IExternalHooksFunctions,
IExternalHooksClass,
IExternalHooksFunctions,
} from './';
import * as config from '../config';

View file

@ -1,7 +1,7 @@
import {
INodeType,
INodeTypes,
INodeTypeData,
INodeTypes,
NodeHelpers,
} from 'n8n-workflow';

View file

@ -67,7 +67,7 @@ export function sendSuccessResponse(res: Response, data: any, raw?: boolean, res
res.json(data);
} else {
res.json({
data
data,
});
}
}
@ -183,7 +183,7 @@ export function unflattenExecutionData(fullExecutionData: IExecutionFlattedDb):
mode: fullExecutionData.mode,
startedAt: fullExecutionData.startedAt,
stoppedAt: fullExecutionData.stoppedAt,
finished: fullExecutionData.finished ? fullExecutionData.finished : false
finished: fullExecutionData.finished ? fullExecutionData.finished : false,
});
return returnData;

View file

@ -26,15 +26,18 @@ import {
ActiveExecutions,
ActiveWorkflowRunner,
CredentialsHelper,
CredentialsOverwrites,
CredentialTypes,
Db,
ExternalHooks,
GenericHelpers,
IActivationError,
ICustomRequest,
ICredentialsDb,
ICredentialsDecryptedDb,
ICredentialsDecryptedResponse,
ICredentialsOverwrite,
ICredentialsResponse,
ICustomRequest,
IExecutionDeleteFilter,
IExecutionFlatted,
IExecutionFlattedDb,
@ -47,21 +50,18 @@ import {
IN8nUISettings,
IPackageVersions,
IWorkflowBase,
IWorkflowShortResponse,
IWorkflowResponse,
IWorkflowExecutionDataProcess,
IWorkflowResponse,
IWorkflowShortResponse,
LoadNodesAndCredentials,
NodeTypes,
Push,
ResponseHelper,
TestWebhooks,
WorkflowCredentials,
WebhookHelpers,
WorkflowCredentials,
WorkflowExecuteAdditionalData,
WorkflowRunner,
GenericHelpers,
CredentialsOverwrites,
ICredentialsOverwrite,
LoadNodesAndCredentials,
} from './';
import {
@ -75,9 +75,9 @@ import {
ICredentialType,
IDataObject,
INodeCredentials,
INodeTypeDescription,
INodeParameters,
INodePropertyOptions,
INodeTypeDescription,
IRunData,
IWorkflowCredentials,
Workflow,
@ -172,7 +172,7 @@ class App {
oauthCallbackUrls: {
'oauth1': urlBaseWebhook + `${this.restEndpoint}/oauth1-credential/callback`,
'oauth2': urlBaseWebhook + `${this.restEndpoint}/oauth2-credential/callback`,
}
},
};
}
@ -313,7 +313,7 @@ class App {
const jwtVerifyOptions: jwt.VerifyOptions = {
issuer: jwtIssuer !== '' ? jwtIssuer : undefined,
ignoreExpiration: false
ignoreExpiration: false,
};
jwt.verify(token, getKey, jwtVerifyOptions, (err: jwt.VerifyErrors, decoded: object) => {
@ -355,7 +355,7 @@ class App {
limit: '16mb', verify: (req, res, buf) => {
// @ts-ignore
req.rawBody = buf;
}
},
}));
// Support application/xml type post data
@ -365,14 +365,14 @@ class App {
normalize: true, // Trim whitespace inside text nodes
normalizeTags: true, // Transform tags to lowercase
explicitArray: false, // Only put properties in array if length > 1
}
},
}));
this.app.use(bodyParser.text({
limit: '16mb', verify: (req, res, buf) => {
// @ts-ignore
req.rawBody = buf;
}
},
}));
// Make sure that Vue history mode works properly
@ -382,9 +382,9 @@ class App {
from: new RegExp(`^\/(${this.restEndpoint}|healthz|css|js|${this.endpointWebhook}|${this.endpointWebhookTest})\/?.*$`),
to: (context) => {
return context.parsedUrl!.pathname!.toString();
}
}
]
},
},
],
}));
//support application/x-www-form-urlencoded post data
@ -392,7 +392,7 @@ class App {
verify: (req, res, buf) => {
// @ts-ignore
req.rawBody = buf;
}
},
}));
if (process.env['NODE_ENV'] !== 'production') {
@ -1074,7 +1074,7 @@ class App {
};
const oauthRequestData = {
oauth_callback: `${WebhookHelpers.getWebhookBaseUrl()}${this.restEndpoint}/oauth1-credential/callback?cid=${req.query.id}`
oauth_callback: `${WebhookHelpers.getWebhookBaseUrl()}${this.restEndpoint}/oauth1-credential/callback?cid=${req.query.id}`,
};
await this.externalHooks.run('oauth1.authenticate', [oAuthOptions, oauthRequestData]);
@ -1153,7 +1153,7 @@ class App {
qs: {
oauth_token,
oauth_verifier,
}
},
};
let oauthToken;
@ -1329,7 +1329,7 @@ class App {
accessTokenUri: _.get(oauthCredentials, 'accessTokenUrl', '') as string,
authorizationUri: _.get(oauthCredentials, 'authUrl', '') as string,
redirectUri: `${WebhookHelpers.getWebhookBaseUrl()}${this.restEndpoint}/oauth2-credential/callback`,
scopes: _.split(_.get(oauthCredentials, 'scope', 'openid,') as string, ',')
scopes: _.split(_.get(oauthCredentials, 'scope', 'openid,') as string, ','),
};
if (_.get(oauthCredentials, 'authentication', 'header') as string === 'body') {
@ -1877,7 +1877,7 @@ class App {
// got used
res.setHeader('Last-Modified', startTime);
}
}
},
}));
}

View file

@ -10,10 +10,10 @@ import {
IWorkflowDb,
IWorkflowExecutionDataProcess,
ResponseHelper,
WorkflowHelpers,
WorkflowRunner,
WorkflowCredentials,
WorkflowExecuteAdditionalData,
WorkflowHelpers,
WorkflowRunner,
} from './';
import {
@ -252,7 +252,7 @@ export function getWorkflowWebhooksBasic(workflow: Workflow): IWebhookData[] {
data: {
main: webhookResultData.workflowData,
},
},
}
);
const runExecutionData: IRunExecutionData = {

View file

@ -25,8 +25,8 @@ import {
IExecuteData,
IExecuteWorkflowInfo,
INode,
INodeParameters,
INodeExecutionData,
INodeParameters,
IRun,
IRunExecutionData,
ITaskData,
@ -74,7 +74,7 @@ function executeErrorWorkflow(workflowData: IWorkflowBase, fullRunData: IRun, mo
workflow: {
id: workflowData.id !== undefined ? workflowData.id.toString() as string : undefined,
name: workflowData.name,
}
},
};
// Run the error workflow
WorkflowHelpers.executeErrorWorkflow(workflowData.settings.errorWorkflow as string, workflowErrorData);
@ -191,13 +191,13 @@ function hookFunctionsPush(): IWorkflowExecuteHooks {
workflowId: this.workflowData.id as string,
workflowName: this.workflowData.name,
});
}
},
],
workflowExecuteAfter: [
async function (this: WorkflowHooks, fullRunData: IRun, newStaticData: IDataObject): Promise<void> {
pushExecutionFinished(this.mode, fullRunData, this.executionId, undefined, this.retryOf);
},
]
],
};
}
@ -298,7 +298,7 @@ function hookFunctionsSave(parentProcessMode?: string): IWorkflowExecuteHooks {
}
}
},
]
],
};
}
@ -374,8 +374,8 @@ export async function executeWorkflow(workflowInfo: IExecuteWorkflowInfo, additi
// Always start with empty data if no inputData got supplied
inputData = inputData || [
{
json: {}
}
json: {},
},
];
// Initialize the incoming data
@ -386,7 +386,7 @@ export async function executeWorkflow(workflowInfo: IExecuteWorkflowInfo, additi
data: {
main: [inputData],
},
},
}
);
const runExecutionData: IRunExecutionData = {

View file

@ -3,8 +3,8 @@ import {
Db,
ICredentialsTypeData,
ITransferNodeTypes,
IWorkflowExecutionDataProcess,
IWorkflowErrorData,
IWorkflowExecutionDataProcess,
NodeTypes,
WorkflowCredentials,
WorkflowRunner,
@ -120,12 +120,12 @@ export async function executeErrorWorkflow(workflowId: string, workflowErrorData
main: [
[
{
json: workflowErrorData
}
]
json: workflowErrorData,
},
],
],
},
},
}
);
const runExecutionData: IRunExecutionData = {

View file

@ -24,8 +24,8 @@ import {
IExecutionError,
IRun,
Workflow,
WorkflowHooks,
WorkflowExecuteMode,
WorkflowHooks,
} from 'n8n-workflow';
import * as config from '../config';

View file

@ -135,13 +135,13 @@ export class WorkflowRunnerProcess {
workflowExecuteBefore: [
async (): Promise<void> => {
this.sendHookToParentProcess('workflowExecuteBefore', []);
}
},
],
workflowExecuteAfter: [
async (fullRunData: IRun, newStaticData?: IDataObject): Promise<void> => {
this.sendHookToParentProcess('workflowExecuteAfter', [fullRunData, newStaticData]);
},
]
],
};
return new WorkflowHooks(hookFunctions, this.data!.executionMode, this.data!.executionId, this.data!.workflowData, { sessionId: this.data!.sessionId, retryOf: this.data!.retryOf as string });

View file

@ -20,7 +20,7 @@ export class CredentialsEntity implements ICredentialsDb {
id: number;
@Column({
length: 128
length: 128,
})
name: string;
@ -29,7 +29,7 @@ export class CredentialsEntity implements ICredentialsDb {
@Index()
@Column({
length: 32
length: 32,
})
type: string;

View file

@ -22,7 +22,7 @@ export class WorkflowEntity implements IWorkflowDb {
id: number;
@Column({
length: 128
length: 128,
})
name: string;

View file

@ -20,7 +20,7 @@ export class CredentialsEntity implements ICredentialsDb {
id: number;
@Column({
length: 128
length: 128,
})
name: string;
@ -29,7 +29,7 @@ export class CredentialsEntity implements ICredentialsDb {
@Index()
@Column({
length: 32
length: 32,
})
type: string;

View file

@ -22,7 +22,7 @@ export class WorkflowEntity implements IWorkflowDb {
id: number;
@Column({
length: 128
length: 128,
})
name: string;

View file

@ -20,7 +20,7 @@ export class CredentialsEntity implements ICredentialsDb {
id: number;
@Column({
length: 128
length: 128,
})
name: string;
@ -29,7 +29,7 @@ export class CredentialsEntity implements ICredentialsDb {
@Index()
@Column({
length: 32
length: 32,
})
type: string;

View file

@ -22,7 +22,7 @@ export class WorkflowEntity implements IWorkflowDb {
id: number;
@Column({
length: 128
length: 128,
})
name: string;

View file

@ -46,6 +46,11 @@
"forin": true,
"jsdoc-format": true,
"label-position": true,
"indent": [
true,
"tabs",
2
],
"member-access": [
true,
"no-public"
@ -60,6 +65,13 @@
"no-default-export": true,
"no-duplicate-variable": true,
"no-inferrable-types": true,
"ordered-imports": [
true,
{
"import-sources-order": "any",
"named-imports-order": "case-insensitive"
}
],
"no-namespace": [
true,
"allow-declarations"
@ -82,6 +94,18 @@
"ignore-bound-class-methods"
],
"switch-default": true,
"trailing-comma": [
true,
{
"multiline": {
"objects": "always",
"arrays": "always",
"functions": "never",
"typeLiterals": "ignore"
},
"esSpecCompliant": true
}
],
"triple-equals": [
true,
"allow-null-check"

View file

@ -5,7 +5,7 @@ import {
ICredentialsEncrypted,
} from 'n8n-workflow';
import { enc, AES } from 'crypto-js';
import { AES, enc } from 'crypto-js';
export class Credentials extends ICredentials {

View file

@ -9,13 +9,13 @@ import {
ILoadOptionsFunctions as ILoadOptionsFunctionsBase,
INodeExecutionData,
INodeType,
IOAuth2Options,
IPollFunctions as IPollFunctionsBase,
IPollResponse,
ITriggerFunctions as ITriggerFunctionsBase,
ITriggerResponse,
IWebhookFunctions as IWebhookFunctionsBase,
IWorkflowSettings as IWorkflowSettingsWorkflow,
IOAuth2Options,
} from 'n8n-workflow';

View file

@ -36,7 +36,7 @@ export class LoadNodeParameterOptions {
position: [
0,
0,
]
],
};
if (credentials) {

View file

@ -1,9 +1,9 @@
import {
BINARY_ENCODING,
IHookFunctions,
ILoadOptionsFunctions,
IResponseError,
IWorkflowSettings,
BINARY_ENCODING,
} from './';
import {
@ -19,6 +19,7 @@ import {
INodeExecutionData,
INodeParameters,
INodeType,
IOAuth2Options,
IPollFunctions,
IRunExecutionData,
ITaskDataConnections,
@ -34,7 +35,6 @@ import {
Workflow,
WorkflowDataProxy,
WorkflowExecuteMode,
IOAuth2Options,
} from 'n8n-workflow';
import * as clientOAuth1 from 'oauth-1.0a';
@ -43,7 +43,7 @@ import * as clientOAuth2 from 'client-oauth2';
import { get } from 'lodash';
import * as express from 'express';
import * as path from 'path';
import { OptionsWithUrl, OptionsWithUri } from 'request';
import { OptionsWithUri, OptionsWithUrl } from 'request';
import * as requestPromise from 'request-promise-native';
import { createHmac } from 'crypto';
import { fromBuffer } from 'file-type';
@ -91,7 +91,7 @@ export async function prepareBinaryData(binaryData: Buffer, filePath?: string, m
// TODO: Should program it in a way that it does not have to converted to base64
// It should only convert to and from base64 when saved in database because
// of for example an error or when there is a wait node.
data: binaryData.toString(BINARY_ENCODING)
data: binaryData.toString(BINARY_ENCODING),
};
if (filePath) {

View file

@ -1,10 +1,10 @@
import {
ENCRYPTION_KEY_ENV_OVERWRITE,
EXTENSIONS_SUBDIRECTORY,
IUserSettings,
USER_FOLDER_ENV_OVERWRITE,
USER_SETTINGS_FILE_NAME,
USER_SETTINGS_SUBFOLDER,
IUserSettings,
} from '.';

View file

@ -15,8 +15,8 @@ import {
ITaskDataConnections,
IWaitingForExecution,
IWorkflowExecuteAdditionalData,
WorkflowExecuteMode,
Workflow,
WorkflowExecuteMode,
} from 'n8n-workflow';
import {
NodeExecuteFunctions,
@ -84,7 +84,7 @@ export class WorkflowExecute {
],
],
},
}
},
];
this.runExecutionData = {
@ -137,8 +137,8 @@ export class WorkflowExecute {
// If it has no incoming data add the default empty data
incomingData.push([
{
json: {}
}
json: {},
},
]);
} else {
// Get the data of the incoming connections
@ -156,7 +156,7 @@ export class WorkflowExecute {
node: workflow.getNode(startNode) as INode,
data: {
main: incomingData,
}
},
};
nodeExecutionStack.push(executeData);
@ -252,7 +252,7 @@ export class WorkflowExecute {
if (this.runExecutionData.executionData!.waitingExecution[connectionData.node][runIndex] === undefined) {
// Node does not have data for runIndex yet so create also empty one and init it
this.runExecutionData.executionData!.waitingExecution[connectionData.node][runIndex] = {
main: []
main: [],
};
for (let i = 0; i < workflow.connectionsByDestinationNode[connectionData.node]['main'].length; i++) {
this.runExecutionData.executionData!.waitingExecution[connectionData.node][runIndex].main.push(null);
@ -282,7 +282,7 @@ export class WorkflowExecute {
// So add it to the execution stack
this.runExecutionData.executionData!.nodeExecutionStack.push({
node: workflow.nodes[connectionData.node],
data: this.runExecutionData.executionData!.waitingExecution[connectionData.node][runIndex]
data: this.runExecutionData.executionData!.waitingExecution[connectionData.node][runIndex],
});
// Remove the data from waiting
@ -426,15 +426,15 @@ export class WorkflowExecute {
this.runExecutionData.executionData!.waitingExecution[connectionData.node] = {};
}
this.runExecutionData.executionData!.waitingExecution[connectionData.node][runIndex] = {
main: connectionDataArray
main: connectionDataArray,
};
} else {
// All data is there so add it directly to stack
this.runExecutionData.executionData!.nodeExecutionStack.push({
node: workflow.nodes[connectionData.node],
data: {
main: connectionDataArray
}
main: connectionDataArray,
},
});
}
}
@ -608,7 +608,7 @@ export class WorkflowExecute {
nodeSuccessData[0] = [
{
json: {},
}
},
];
}
}
@ -639,7 +639,7 @@ export class WorkflowExecute {
}
taskData = {
startTime,
executionTime: (new Date().getTime()) - startTime
executionTime: (new Date().getTime()) - startTime,
};
if (executionError !== undefined) {
@ -669,7 +669,7 @@ export class WorkflowExecute {
// Node executed successfully. So add data and go on.
taskData.data = ({
'main': nodeSuccessData
'main': nodeSuccessData,
} as ITaskDataConnections);
this.executeHook('nodeExecuteAfter', [executionNode.name, taskData]);

View file

@ -3,86 +3,86 @@ import { Credentials } from '../src';
describe('Credentials', () => {
describe('without nodeType set', () => {
describe('without nodeType set', () => {
test('should be able to set and read key data without initial data set', () => {
test('should be able to set and read key data without initial data set', () => {
const credentials = new Credentials('testName', 'testType', []);
const credentials = new Credentials('testName', 'testType', []);
const key = 'key1';
const password = 'password';
// const nodeType = 'base.noOp';
const newData = 1234;
const key = 'key1';
const password = 'password';
// const nodeType = 'base.noOp';
const newData = 1234;
credentials.setDataKey(key, newData, password);
credentials.setDataKey(key, newData, password);
expect(credentials.getDataKey(key, password)).toEqual(newData);
});
expect(credentials.getDataKey(key, password)).toEqual(newData);
});
test('should be able to set and read key data with initial data set', () => {
test('should be able to set and read key data with initial data set', () => {
const key = 'key2';
const password = 'password';
const key = 'key2';
const password = 'password';
// Saved under "key1"
const initialData = 4321;
const initialDataEncoded = 'U2FsdGVkX1+0baznXt+Ag/ub8A2kHLyoLxn/rR9h4XQ=';
// Saved under "key1"
const initialData = 4321;
const initialDataEncoded = 'U2FsdGVkX1+0baznXt+Ag/ub8A2kHLyoLxn/rR9h4XQ=';
const credentials = new Credentials('testName', 'testType', [], initialDataEncoded);
const credentials = new Credentials('testName', 'testType', [], initialDataEncoded);
const newData = 1234;
const newData = 1234;
// Set and read new data
credentials.setDataKey(key, newData, password);
expect(credentials.getDataKey(key, password)).toEqual(newData);
// Set and read new data
credentials.setDataKey(key, newData, password);
expect(credentials.getDataKey(key, password)).toEqual(newData);
// Read the data which got provided encrypted on init
expect(credentials.getDataKey('key1', password)).toEqual(initialData);
});
// Read the data which got provided encrypted on init
expect(credentials.getDataKey('key1', password)).toEqual(initialData);
});
});
});
describe('with nodeType set', () => {
describe('with nodeType set', () => {
test('should be able to set and read key data without initial data set', () => {
test('should be able to set and read key data without initial data set', () => {
const nodeAccess = [
{
nodeType: 'base.noOp',
user: 'userName',
date: new Date(),
}
];
const nodeAccess = [
{
nodeType: 'base.noOp',
user: 'userName',
date: new Date(),
},
];
const credentials = new Credentials('testName', 'testType', nodeAccess);
const credentials = new Credentials('testName', 'testType', nodeAccess);
const key = 'key1';
const password = 'password';
const nodeType = 'base.noOp';
const newData = 1234;
const key = 'key1';
const password = 'password';
const nodeType = 'base.noOp';
const newData = 1234;
credentials.setDataKey(key, newData, password);
credentials.setDataKey(key, newData, password);
// Should be able to read with nodeType which has access
expect(credentials.getDataKey(key, password, nodeType)).toEqual(newData);
// Should be able to read with nodeType which has access
expect(credentials.getDataKey(key, password, nodeType)).toEqual(newData);
// Should not be able to read with nodeType which does NOT have access
// expect(credentials.getDataKey(key, password, 'base.otherNode')).toThrowError(Error);
try {
credentials.getDataKey(key, password, 'base.otherNode');
expect(true).toBe(false);
} catch (e) {
expect(e.message).toBe('The node of type "base.otherNode" does not have access to credentials "testName" of type "testType".');
}
// Should not be able to read with nodeType which does NOT have access
// expect(credentials.getDataKey(key, password, 'base.otherNode')).toThrowError(Error);
try {
credentials.getDataKey(key, password, 'base.otherNode');
expect(true).toBe(false);
} catch (e) {
expect(e.message).toBe('The node of type "base.otherNode" does not have access to credentials "testName" of type "testType".');
}
// Get the data which will be saved in database
const dbData = credentials.getDataToSave();
expect(dbData.name).toEqual('testName');
expect(dbData.type).toEqual('testType');
expect(dbData.nodesAccess).toEqual(nodeAccess);
// Compare only the first 6 characters as the rest seems to change with each execution
expect(dbData.data!.slice(0, 6)).toEqual('U2FsdGVkX1+wpQWkj+YTzaPSNTFATjnlmFKIsUTZdhk='.slice(0, 6));
});
});
// Get the data which will be saved in database
const dbData = credentials.getDataToSave();
expect(dbData.name).toEqual('testName');
expect(dbData.type).toEqual('testType');
expect(dbData.nodesAccess).toEqual(nodeAccess);
// Compare only the first 6 characters as the rest seems to change with each execution
expect(dbData.data!.slice(0, 6)).toEqual('U2FsdGVkX1+wpQWkj+YTzaPSNTFATjnlmFKIsUTZdhk='.slice(0, 6));
});
});
});

View file

@ -7,8 +7,8 @@ import {
INodeExecutionData,
INodeParameters,
INodeType,
INodeTypes,
INodeTypeData,
INodeTypes,
IRun,
ITaskData,
IWorkflowBase,
@ -87,7 +87,7 @@ class NodeTypesClass implements INodeTypes {
displayOptions: {
show: {
mode: [
'passThrough'
'passThrough',
],
},
},
@ -104,7 +104,7 @@ class NodeTypesClass implements INodeTypes {
default: 'input1',
description: 'Defines of which input the data should be used as output of node.',
},
]
],
},
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
// const itemsInput2 = this.getInputData(1);
@ -131,7 +131,7 @@ class NodeTypesClass implements INodeTypes {
}
return [returnData];
}
},
},
},
'n8n-nodes-base.set': {
@ -186,11 +186,11 @@ class NodeTypesClass implements INodeTypes {
default: 0,
description: 'The number value to write in the property.',
},
]
],
},
],
},
]
],
},
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const items = this.getInputData();
@ -213,7 +213,7 @@ class NodeTypesClass implements INodeTypes {
}
return this.prepareOutputData(returnData);
}
},
},
},
'n8n-nodes-base.start': {
@ -231,7 +231,7 @@ class NodeTypesClass implements INodeTypes {
},
inputs: [],
outputs: ['main'],
properties: []
properties: [],
},
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const items = this.getInputData();

View file

@ -47,8 +47,8 @@ describe('WorkflowExecute', () => {
"typeVersion": 1,
"position": [
100,
300
]
300,
],
},
{
"parameters": {
@ -56,19 +56,19 @@ describe('WorkflowExecute', () => {
"number": [
{
"name": "value1",
"value": 1
}
]
}
"value": 1,
},
],
},
},
"name": "Set",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
280,
300
]
}
300,
],
},
],
"connections": {
"Start": {
@ -77,12 +77,12 @@ describe('WorkflowExecute', () => {
{
"node": "Set",
"type": "main",
"index": 0
}
]
]
}
}
"index": 0,
},
],
],
},
},
},
},
output: {
@ -115,8 +115,8 @@ describe('WorkflowExecute', () => {
"typeVersion": 1,
"position": [
100,
300
]
300,
],
},
{
"parameters": {
@ -124,18 +124,18 @@ describe('WorkflowExecute', () => {
"number": [
{
"name": "value1",
"value": 1
}
]
}
"value": 1,
},
],
},
},
"name": "Set1",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
300,
250
]
250,
],
},
{
"parameters": {
@ -143,19 +143,19 @@ describe('WorkflowExecute', () => {
"number": [
{
"name": "value2",
"value": 2
}
]
}
"value": 2,
},
],
},
},
"name": "Set2",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
500,
400
]
}
400,
],
},
],
"connections": {
"Start": {
@ -164,15 +164,15 @@ describe('WorkflowExecute', () => {
{
"node": "Set1",
"type": "main",
"index": 0
"index": 0,
},
{
"node": "Set2",
"type": "main",
"index": 0
}
]
]
"index": 0,
},
],
],
},
"Set1": {
"main": [
@ -180,12 +180,12 @@ describe('WorkflowExecute', () => {
{
"node": "Set2",
"type": "main",
"index": 0
}
]
]
}
}
"index": 0,
},
],
],
},
},
},
},
output: {
@ -201,7 +201,7 @@ describe('WorkflowExecute', () => {
{
value1: 1,
},
]
],
],
Set2: [
[
@ -228,15 +228,15 @@ describe('WorkflowExecute', () => {
"nodes": [
{
"parameters": {
"mode": "passThrough"
"mode": "passThrough",
},
"name": "Merge4",
"type": "n8n-nodes-base.merge",
"typeVersion": 1,
"position": [
1150,
500
]
500,
],
},
{
"parameters": {
@ -244,18 +244,18 @@ describe('WorkflowExecute', () => {
"number": [
{
"name": "value2",
"value": 2
}
]
}
"value": 2,
},
],
},
},
"name": "Set2",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
290,
400
]
400,
],
},
{
"parameters": {
@ -263,18 +263,18 @@ describe('WorkflowExecute', () => {
"number": [
{
"name": "value4",
"value": 4
}
]
}
"value": 4,
},
],
},
},
"name": "Set4",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
850,
200
]
200,
],
},
{
"parameters": {
@ -282,30 +282,30 @@ describe('WorkflowExecute', () => {
"number": [
{
"name": "value3",
"value": 3
}
]
}
"value": 3,
},
],
},
},
"name": "Set3",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
650,
200
]
200,
],
},
{
"parameters": {
"mode": "passThrough"
"mode": "passThrough",
},
"name": "Merge4",
"type": "n8n-nodes-base.merge",
"typeVersion": 1,
"position": [
1150,
500
]
500,
],
},
{
"parameters": {},
@ -314,21 +314,21 @@ describe('WorkflowExecute', () => {
"typeVersion": 1,
"position": [
1000,
400
]
400,
],
},
{
"parameters": {
"mode": "passThrough",
"output": "input2"
"output": "input2",
},
"name": "Merge2",
"type": "n8n-nodes-base.merge",
"typeVersion": 1,
"position": [
700,
400
]
400,
],
},
{
"parameters": {},
@ -337,8 +337,8 @@ describe('WorkflowExecute', () => {
"typeVersion": 1,
"position": [
500,
300
]
300,
],
},
{
"parameters": {
@ -346,18 +346,18 @@ describe('WorkflowExecute', () => {
"number": [
{
"name": "value1",
"value": 1
}
]
}
"value": 1,
},
],
},
},
"name": "Set1",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
300,
200
]
200,
],
},
{
"parameters": {},
@ -366,9 +366,9 @@ describe('WorkflowExecute', () => {
"typeVersion": 1,
"position": [
100,
300
]
}
300,
],
},
],
"connections": {
"Set2": {
@ -377,15 +377,15 @@ describe('WorkflowExecute', () => {
{
"node": "Merge1",
"type": "main",
"index": 1
"index": 1,
},
{
"node": "Merge2",
"type": "main",
"index": 1
}
]
]
"index": 1,
},
],
],
},
"Set4": {
"main": [
@ -393,10 +393,10 @@ describe('WorkflowExecute', () => {
{
"node": "Merge3",
"type": "main",
"index": 0
}
]
]
"index": 0,
},
],
],
},
"Set3": {
"main": [
@ -404,10 +404,10 @@ describe('WorkflowExecute', () => {
{
"node": "Set4",
"type": "main",
"index": 0
}
]
]
"index": 0,
},
],
],
},
"Merge3": {
"main": [
@ -415,10 +415,10 @@ describe('WorkflowExecute', () => {
{
"node": "Merge4",
"type": "main",
"index": 0
}
]
]
"index": 0,
},
],
],
},
"Merge2": {
"main": [
@ -426,10 +426,10 @@ describe('WorkflowExecute', () => {
{
"node": "Merge3",
"type": "main",
"index": 1
}
]
]
"index": 1,
},
],
],
},
"Merge1": {
"main": [
@ -437,10 +437,10 @@ describe('WorkflowExecute', () => {
{
"node": "Merge2",
"type": "main",
"index": 0
}
]
]
"index": 0,
},
],
],
},
"Set1": {
"main": [
@ -448,15 +448,15 @@ describe('WorkflowExecute', () => {
{
"node": "Merge1",
"type": "main",
"index": 0
"index": 0,
},
{
"node": "Set3",
"type": "main",
"index": 0
}
]
]
"index": 0,
},
],
],
},
"Start": {
"main": [
@ -464,22 +464,22 @@ describe('WorkflowExecute', () => {
{
"node": "Set1",
"type": "main",
"index": 0
"index": 0,
},
{
"node": "Set2",
"type": "main",
"index": 0
"index": 0,
},
{
"node": "Merge4",
"type": "main",
"index": 1
}
]
]
}
}
"index": 1,
},
],
],
},
},
},
},
output: {
@ -534,14 +534,14 @@ describe('WorkflowExecute', () => {
{
value2: 2,
},
]
],
],
Merge2: [
[
{
value2: 2,
},
]
],
],
Merge3: [
[
@ -553,7 +553,7 @@ describe('WorkflowExecute', () => {
{
value2: 2,
},
]
],
],
Merge4: [
[
@ -565,7 +565,7 @@ describe('WorkflowExecute', () => {
{
value2: 2,
},
]
],
],
},
},

View file

@ -46,6 +46,11 @@
"forin": true,
"jsdoc-format": true,
"label-position": true,
"indent": [
true,
"tabs",
2
],
"member-access": [
true,
"no-public"
@ -60,6 +65,13 @@
"no-default-export": true,
"no-duplicate-variable": true,
"no-inferrable-types": true,
"ordered-imports": [
true,
{
"import-sources-order": "any",
"named-imports-order": "case-insensitive"
}
],
"no-namespace": [
true,
"allow-declarations"
@ -82,6 +94,18 @@
"ignore-bound-class-methods"
],
"switch-default": true,
"trailing-comma": [
true,
{
"multiline": {
"objects": "always",
"arrays": "always",
"functions": "always",
"typeLiterals": "ignore"
},
"esSpecCompliant": true
}
],
"triple-equals": [
true,
"allow-null-check"

View file

@ -15,7 +15,7 @@ import Vue from 'vue';
export default Vue.extend(
{
name: 'PageContentWrapper',
}
},
);
</script>

View file

@ -47,6 +47,7 @@
"forin": true,
"jsdoc-format": true,
"label-position": true,
"indent": [true, "tabs", 2],
"member-access": [
true,
"no-public"
@ -83,6 +84,18 @@
"ignore-bound-class-methods"
],
"switch-default": true,
"trailing-comma": [
true,
{
"multiline": {
"objects": "always",
"arrays": "always",
"functions": "always",
"typeLiterals": "ignore"
},
"esSpecCompliant": true
}
],
"triple-equals": [
true,
"allow-null-check"

View file

@ -23,7 +23,7 @@ export async function createTemplate(sourceFilePath: string, destinationFilePath
// Replace the variables in the template file
const options: ReplaceInFileConfig = {
files: [
destinationFilePath
destinationFilePath,
],
from: [],
to: [],

View file

@ -46,6 +46,11 @@
"forin": true,
"jsdoc-format": true,
"label-position": true,
"indent": [
true,
"tabs",
2
],
"member-access": [
true,
"no-public"
@ -60,6 +65,13 @@
"no-default-export": true,
"no-duplicate-variable": true,
"no-inferrable-types": true,
"ordered-imports": [
true,
{
"import-sources-order": "any",
"named-imports-order": "case-insensitive"
}
],
"no-namespace": [
true,
"allow-declarations"
@ -82,6 +94,18 @@
"ignore-bound-class-methods"
],
"switch-default": true,
"trailing-comma": [
true,
{
"multiline": {
"objects": "always",
"arrays": "always",
"functions": "always",
"typeLiterals": "ignore"
},
"esSpecCompliant": true
}
],
"triple-equals": [
true,
"allow-null-check"

View file

@ -31,7 +31,7 @@ export class AcuitySchedulingOAuth2Api implements ICredentialType {
name: 'scope',
type: 'hidden' as NodePropertyTypes,
default: 'api-v1',
required: true
required: true,
},
{
displayName: 'Auth URI Query Parameters',

View file

@ -13,7 +13,7 @@ export class DisqusApi implements ICredentialType {
name: 'accessToken',
type: 'string' as NodePropertyTypes,
default: '',
description: 'Visit your account details page, and grab the Access Token. See <a href="https://disqus.com/api/docs/auth/">Disqus auth</a>.'
description: 'Visit your account details page, and grab the Access Token. See <a href="https://disqus.com/api/docs/auth/">Disqus auth</a>.',
},
];
}

View file

@ -13,7 +13,7 @@ export class DriftApi implements ICredentialType {
name: 'accessToken',
type: 'string' as NodePropertyTypes,
default: '',
description: 'Visit your account details page, and grab the Access Token. See <a href="https://devdocs.drift.com/docs/quick-start">Drift auth</a>.'
description: 'Visit your account details page, and grab the Access Token. See <a href="https://devdocs.drift.com/docs/quick-start">Drift auth</a>.',
},
];
}

View file

@ -42,7 +42,7 @@ export class EventbriteOAuth2Api implements ICredentialType {
displayName: 'Authentication',
name: 'authentication',
type: 'hidden' as NodePropertyTypes,
default: 'body'
default: 'body',
},
];
}

View file

@ -21,7 +21,7 @@ export class FreshdeskApi implements ICredentialType {
type: 'string' as NodePropertyTypes,
placeholder: 'company',
description: 'If the URL you get displayed on Freshdesk is "https://company.freshdesk.com" enter "company"',
default: ''
default: '',
},
];
}

View file

@ -14,7 +14,7 @@ export class Ftp implements ICredentialType {
required: true,
type: 'string' as NodePropertyTypes,
default: '',
placeholder: 'localhost'
placeholder: 'localhost',
},
{
displayName: 'Port',

View file

@ -13,7 +13,7 @@ export class GitlabApi implements ICredentialType {
displayName: 'Gitlab Server',
name: 'server',
type: 'string' as NodePropertyTypes,
default: 'https://gitlab.com'
default: 'https://gitlab.com',
},
{
displayName: 'Access Token',

View file

@ -16,7 +16,7 @@ export class GitlabOAuth2Api implements ICredentialType {
displayName: 'Gitlab Server',
name: 'server',
type: 'string' as NodePropertyTypes,
default: 'https://gitlab.com'
default: 'https://gitlab.com',
},
{
displayName: 'Authorization URL',

View file

@ -17,7 +17,7 @@ export class GoogleTasksOAuth2Api implements ICredentialType {
displayName: 'Scope',
name: 'scope',
type: 'hidden' as NodePropertyTypes,
default: scopes.join(' ')
default: scopes.join(' '),
},
];
}

View file

@ -13,14 +13,14 @@ export class HarvestApi implements ICredentialType {
name: 'accountId',
type: 'string' as NodePropertyTypes,
default: '',
description: 'Visit your account details page, and grab the Account ID. See <a href="https://help.getharvest.com/api-v2/authentication-api/authentication/authentication/">Harvest Personal Access Tokens</a>.'
description: 'Visit your account details page, and grab the Account ID. See <a href="https://help.getharvest.com/api-v2/authentication-api/authentication/authentication/">Harvest Personal Access Tokens</a>.',
},
{
displayName: 'Access Token',
name: 'accessToken',
type: 'string' as NodePropertyTypes,
default: '',
description: 'Visit your account details page, and grab the Access Token. See <a href="https://help.getharvest.com/api-v2/authentication-api/authentication/authentication/">Harvest Personal Access Tokens</a>.'
description: 'Visit your account details page, and grab the Access Token. See <a href="https://help.getharvest.com/api-v2/authentication-api/authentication/authentication/">Harvest Personal Access Tokens</a>.',
},
];
}

View file

@ -38,7 +38,7 @@ export class LinkedInOAuth2Api implements ICredentialType {
name: 'scope',
type: 'hidden' as NodePropertyTypes,
default: '=r_liteprofile,r_emailaddress,w_member_social{{$parameter["organizationSupport"] === true ? ",w_organization_social":""}}',
description: 'Standard scopes for posting on behalf of a user or organization. See <a href="https://docs.microsoft.com/en-us/linkedin/marketing/getting-started#available-permissions"> this resource </a>.'
description: 'Standard scopes for posting on behalf of a user or organization. See <a href="https://docs.microsoft.com/en-us/linkedin/marketing/getting-started#available-permissions"> this resource </a>.',
},
{
displayName: 'Auth URI Query Parameters',

View file

@ -9,7 +9,7 @@ export class MessageBirdApi implements ICredentialType {
displayName: 'API Key',
name: 'accessKey',
type: 'string' as NodePropertyTypes,
default: ''
}
default: '',
},
];
}

View file

@ -9,40 +9,40 @@ export class MicrosoftSql implements ICredentialType {
displayName: 'Server',
name: 'server',
type: 'string' as NodePropertyTypes,
default: 'localhost'
default: 'localhost',
},
{
displayName: 'Database',
name: 'database',
type: 'string' as NodePropertyTypes,
default: 'master'
default: 'master',
},
{
displayName: 'User',
name: 'user',
type: 'string' as NodePropertyTypes,
default: 'sa'
default: 'sa',
},
{
displayName: 'Password',
name: 'password',
type: 'string' as NodePropertyTypes,
typeOptions: {
password: true
password: true,
},
default: ''
default: '',
},
{
displayName: 'Port',
name: 'port',
type: 'number' as NodePropertyTypes,
default: 1433
default: 1433,
},
{
displayName: 'Domain',
name: 'domain',
type: 'string' as NodePropertyTypes,
default: ''
}
default: '',
},
];
}

View file

@ -39,7 +39,7 @@ export class MongoDb implements ICredentialType {
placeholder: 'mongodb://<USERNAME>:<PASSWORD>@localhost:27017/?authSource=admin&readPreference=primary&appname=n8n&ssl=false',
required: false,
description: `If provided, the value here will be used as a MongoDB connection string,<br />
and the MongoDB credentials will be ignored`
and the MongoDB credentials will be ignored`,
},
{
displayName: 'Host',
@ -52,14 +52,14 @@ export class MongoDb implements ICredentialType {
],
},
},
default: 'localhost'
default: 'localhost',
},
{
displayName: 'Database',
name: 'database',
type: 'string' as NodePropertyTypes,
default: '',
description: 'Note: the database should still be provided even if using an override connection string'
description: 'Note: the database should still be provided even if using an override connection string',
},
{
displayName: 'User',
@ -72,14 +72,14 @@ export class MongoDb implements ICredentialType {
],
},
},
default: ''
default: '',
},
{
displayName: 'Password',
name: 'password',
type: 'string' as NodePropertyTypes,
typeOptions: {
password: true
password: true,
},
displayOptions: {
show: {
@ -88,7 +88,7 @@ export class MongoDb implements ICredentialType {
],
},
},
default: ''
default: '',
},
{
displayName: 'Port',
@ -101,7 +101,7 @@ export class MongoDb implements ICredentialType {
],
},
},
default: 27017
default: 27017,
},
];
}

View file

@ -50,15 +50,15 @@ export class OAuth1Api implements ICredentialType {
options: [
{
name: 'HMAC-SHA1',
value: 'HMAC-SHA1'
value: 'HMAC-SHA1',
},
{
name: 'HMAC-SHA256',
value: 'HMAC-SHA256'
value: 'HMAC-SHA256',
},
{
name: 'HMAC-SHA512',
value: 'HMAC-SHA512'
value: 'HMAC-SHA512',
},
],
default: '',

View file

@ -29,13 +29,13 @@ export class PayPalApi implements ICredentialType {
options: [
{
name: 'Sanbox',
value: 'sanbox'
value: 'sanbox',
},
{
name: 'Live',
value: 'live'
value: 'live',
},
]
],
},
];
}

View file

@ -74,7 +74,7 @@ export class Postgres implements ICredentialType {
{
name: 'verify-full (not implemented)',
value: 'verify-full',
}
},
],
default: 'disable',
},

View file

@ -13,7 +13,7 @@ export class S3 implements ICredentialType {
displayName: 'S3 endpoint',
name: 'endpoint',
type: 'string' as NodePropertyTypes,
default: ''
default: '',
},
{
displayName: 'Region',
@ -40,7 +40,7 @@ export class S3 implements ICredentialType {
displayName: 'Force path style',
name: 'forcePathStyle',
type: 'boolean' as NodePropertyTypes,
default: false
default: false,
},
];
}

View file

@ -13,7 +13,7 @@ export class Signl4Api implements ICredentialType {
name: 'teamSecret',
type: 'string' as NodePropertyTypes,
default: '',
description: 'The team secret is the last part of your SIGNL4 webhook URL.'
description: 'The team secret is the last part of your SIGNL4 webhook URL.',
},
];
}

View file

@ -11,7 +11,7 @@ const userScopes = [
'stars:read',
'stars:write',
'users.profile:read',
'users.profile:write'
'users.profile:write',
];
export class SlackOAuth2Api implements ICredentialType {

View file

@ -29,7 +29,7 @@ export class StravaOAuth2Api implements ICredentialType {
name: 'scope',
type: 'hidden' as NodePropertyTypes,
default: 'activity:read_all,activity:write',
required: true
required: true,
},
{
displayName: 'Auth URI Query Parameters',

View file

@ -50,7 +50,7 @@ export class SurveyMonkeyOAuth2Api implements ICredentialType {
displayName: 'Authentication',
name: 'authentication',
type: 'hidden' as NodePropertyTypes,
default: 'body'
default: 'body',
},
];
}

View file

@ -9,7 +9,7 @@ export class ZoomApi implements ICredentialType {
displayName: 'JWT Token',
name: 'accessToken',
type: 'string' as NodePropertyTypes,
default: ''
}
default: '',
},
];
}

View file

@ -13,31 +13,31 @@ export class ZoomOAuth2Api implements ICredentialType {
displayName: 'Authorization URL',
name: 'authUrl',
type: 'hidden' as NodePropertyTypes,
default: 'https://zoom.us/oauth/authorize'
default: 'https://zoom.us/oauth/authorize',
},
{
displayName: 'Access Token URL',
name: 'accessTokenUrl',
type: 'hidden' as NodePropertyTypes,
default: 'https://zoom.us/oauth/token'
default: 'https://zoom.us/oauth/token',
},
{
displayName: 'Scope',
name: 'scope',
type: 'hidden' as NodePropertyTypes,
default: ''
default: '',
},
{
displayName: 'Auth URI Query Parameters',
name: 'authQueryParameters',
type: 'hidden' as NodePropertyTypes,
default: ''
default: '',
},
{
displayName: 'Authentication',
name: 'authentication',
type: 'hidden' as NodePropertyTypes,
default: 'header'
}
default: 'header',
},
];
}

View file

@ -142,7 +142,7 @@ export class ActiveCampaign implements INodeType {
},
{
name: 'Connection',
value: 'connection'
value: 'connection',
},
{
name: 'Deal',
@ -158,7 +158,7 @@ export class ActiveCampaign implements INodeType {
},
{
name: 'E-commerce Order Products',
value: 'ecommerceOrderProducts'
value: 'ecommerceOrderProducts',
},
{
name: 'Tag',

View file

@ -35,7 +35,7 @@ export class ActiveCampaignTrigger implements INodeType {
{
name: 'activeCampaignApi',
required: true,
}
},
],
webhooks: [
{
@ -103,7 +103,7 @@ export class ActiveCampaignTrigger implements INodeType {
}
return returnData;
},
}
},
};
// @ts-ignore
webhookMethods = {
@ -132,7 +132,7 @@ export class ActiveCampaignTrigger implements INodeType {
url: webhookUrl,
events,
sources,
}
},
};
const { webhook } = await activeCampaignApiRequest.call(this, 'POST', '/api/3/webhooks', body);
webhookData.webhookId = webhook.id;
@ -155,7 +155,7 @@ export class ActiveCampaignTrigger implements INodeType {
const req = this.getRequestObject();
return {
workflowData: [
this.helpers.returnJsonArray(req.body)
this.helpers.returnJsonArray(req.body),
],
};
}

View file

@ -234,7 +234,7 @@ export const connectionFields = [
default: 1,
description: 'The status of a sync triggered on the connection (0 = sync stopped; 1 = sync running).',
},
]
],
},
// ----------------------------------

View file

@ -138,7 +138,7 @@ export const contactFields = [
default: '',
description: 'Value of the field to set.',
},
]
],
},
],
},
@ -237,7 +237,7 @@ export const contactFields = [
default: '',
description: 'Value of the field to set.',
},
]
],
},
],
},

View file

@ -232,7 +232,7 @@ export const dealFields = [
default: 0,
description: 'The status of the deal',
},
]
],
},
// ----------------------------------
@ -345,7 +345,7 @@ export const dealFields = [
default: 0,
description: 'The status of the deal',
},
]
],
},
// ----------------------------------

View file

@ -247,7 +247,7 @@ export const ecomOrderFields = [
displayOptions: {
show: {
operation: [
'create'
'create',
],
resource: [
'ecommerceOrder',
@ -391,7 +391,7 @@ export const ecomOrderFields = [
description: 'The order number. This can be different than the externalid.',
},
]
],
},
// ----------------------------------
@ -632,7 +632,7 @@ export const ecomOrderFields = [
],
},
]
],
},
// ----------------------------------

View file

@ -42,7 +42,7 @@ export async function activeCampaignApiRequest(this: IHookFunctions | IExecuteFu
method,
qs: query,
uri: `${credentials.apiUrl}${endpoint}`,
json: true
json: true,
};
if (Object.keys(body).length !== 0) {

View file

@ -228,5 +228,5 @@ export const tagFields = [
// ----------------------------------
// tag:getAll
// ----------------------------------
...activeCampaignDefaultGetAllProperties('tag', 'getAll')
...activeCampaignDefaultGetAllProperties('tag', 'getAll'),
] as INodeProperties[];

View file

@ -169,5 +169,5 @@ export const allCurrencies = [
{ name: 'Yemeni Rial', value: 'yer' },
{ name: 'South African Rand', value: 'zar' },
{ name: 'Zambian Kwacha', value: 'zmw' },
{ name: 'Zimbabwean Dollar', value: 'zwl' }
{ name: 'Zimbabwean Dollar', value: 'zwl' },
];

View file

@ -20,7 +20,7 @@ export async function acuitySchedulingApiRequest(this: IHookFunctions | IExecute
qs,
body,
uri: uri ||`https://acuityscheduling.com/api/v1${resource}`,
json: true
json: true,
};
try {

View file

@ -49,7 +49,7 @@ export class Affinity implements INodeType {
{
name: 'affinityApi',
required: true,
}
},
],
properties: [
{

View file

@ -29,7 +29,7 @@ export async function affinityApiRequest(this: IExecuteFunctions | IWebhookFunct
body,
qs: query,
uri: uri || `${endpoint}${resource}`,
json: true
json: true,
};
if (!Object.keys(body).length) {
delete options.body;

View file

@ -62,7 +62,7 @@ export const organizationFields = [
],
operation: [
'create',
]
],
},
},
description: 'The name of the organization.',
@ -80,7 +80,7 @@ export const organizationFields = [
],
operation: [
'create',
]
],
},
},
description: 'The domain name of the organization.',
@ -130,7 +130,7 @@ export const organizationFields = [
],
operation: [
'update',
]
],
},
},
description: 'Unique identifier for the organization.',
@ -176,7 +176,7 @@ export const organizationFields = [
default: [],
description: 'Persons that the new organization will be associated with.',
},
]
],
},
/* -------------------------------------------------------------------------- */
/* organization:get */
@ -194,7 +194,7 @@ export const organizationFields = [
],
operation: [
'get',
]
],
},
},
description: 'Unique identifier for the organization.',
@ -223,7 +223,7 @@ export const organizationFields = [
default: false,
description: 'When true, interaction dates will be present on the returned resources.',
},
]
],
},
/* -------------------------------------------------------------------------- */
/* organization:getAll */
@ -300,7 +300,7 @@ export const organizationFields = [
default: false,
description: 'When true, interaction dates will be present on the returned resources.',
},
]
],
},
/* -------------------------------------------------------------------------- */
/* organization:delete */
@ -318,7 +318,7 @@ export const organizationFields = [
],
operation: [
'delete',
]
],
},
},
description: 'Unique identifier for the organization.',

View file

@ -62,7 +62,7 @@ export const personFields = [
],
operation: [
'create',
]
],
},
},
description: 'The first name of the person.',
@ -80,7 +80,7 @@ export const personFields = [
],
operation: [
'create',
]
],
},
},
description: 'The last name of the person.',
@ -130,7 +130,7 @@ export const personFields = [
],
operation: [
'create',
]
],
},
},
placeholder: 'info@example.com',
@ -152,7 +152,7 @@ export const personFields = [
],
operation: [
'update',
]
],
},
},
description: 'Unique identifier for the person.',
@ -198,7 +198,7 @@ export const personFields = [
default: [],
description: 'Organizations that the person is associated with.',
},
]
],
},
{
displayName: 'Emails',
@ -216,7 +216,7 @@ export const personFields = [
],
operation: [
'update',
]
],
},
},
placeholder: 'info@example.com',
@ -238,7 +238,7 @@ export const personFields = [
],
operation: [
'get',
]
],
},
},
description: 'Unique identifier for the person.',
@ -267,7 +267,7 @@ export const personFields = [
default: false,
description: 'When true, interaction dates will be present on the returned resources.',
},
]
],
},
/* -------------------------------------------------------------------------- */
/* person:getAll */
@ -344,7 +344,7 @@ export const personFields = [
default: false,
description: 'When true, interaction dates will be present on the returned resources.',
},
]
],
},
/* -------------------------------------------------------------------------- */
/* person:delete */
@ -362,7 +362,7 @@ export const personFields = [
],
operation: [
'delete',
]
],
},
},
description: 'Unique identifier for the person.',

View file

@ -44,7 +44,7 @@ export class AgileCrm implements INodeType {
{
name: 'agileCrmApi',
required: true,
}
},
],
properties: [
// Node properties which the user gets displayed and
@ -56,15 +56,15 @@ export class AgileCrm implements INodeType {
options: [
{
name: 'Company',
value: 'company'
value: 'company',
},
{
name: 'Contact',
value: 'contact'
value: 'contact',
},
{
name: 'Deal',
value: 'deal'
value: 'deal',
},
],
default: 'contact',
@ -80,7 +80,7 @@ export class AgileCrm implements INodeType {
// DEAL
...dealOperations,
...dealFields
...dealFields,
],
};
@ -174,28 +174,28 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'first_name',
value: additionalFields.firstName as string
value: additionalFields.firstName as string,
} as IDataObject);
}
if (additionalFields.lastName) {
properties.push({
type: 'SYSTEM',
name: 'last_name',
value: additionalFields.lastName as string
value: additionalFields.lastName as string,
} as IDataObject);
}
if (additionalFields.company) {
properties.push({
type: 'SYSTEM',
name: 'company',
value: additionalFields.company as string
value: additionalFields.company as string,
} as IDataObject);
}
if (additionalFields.title) {
properties.push({
type: 'SYSTEM',
name: 'title',
value: additionalFields.title as string
value: additionalFields.title as string,
} as IDataObject);
}
if (additionalFields.emailOptions) {
@ -205,7 +205,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'email',
value: property.email as string
value: property.email as string,
} as IDataObject);
});
}
@ -216,7 +216,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'address',
value: property.address as string
value: property.address as string,
} as IDataObject);
});
}
@ -228,7 +228,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'phone',
value: property.number as string
value: property.number as string,
} as IDataObject);
});
}
@ -237,7 +237,7 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'email',
value: additionalFields.email as string
value: additionalFields.email as string,
} as IDataObject);
}
@ -245,7 +245,7 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'address',
value: additionalFields.address as string
value: additionalFields.address as string,
} as IDataObject);
}
@ -253,7 +253,7 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'phone',
value: additionalFields.phone as string
value: additionalFields.phone as string,
} as IDataObject);
}
@ -266,7 +266,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'webiste',
value: property.url as string
value: property.url as string,
} as IDataObject);
});
}
@ -278,7 +278,7 @@ export class AgileCrm implements INodeType {
type: 'CUSTOM',
subtype: property.subtype as string,
name: property.name,
value: property.value as string
value: property.value as string,
} as IDataObject);
});
}
@ -329,28 +329,28 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'first_name',
value: additionalFields.firstName as string
value: additionalFields.firstName as string,
} as IDataObject);
}
if (additionalFields.lastName) {
properties.push({
type: 'SYSTEM',
name: 'last_name',
value: additionalFields.lastName as string
value: additionalFields.lastName as string,
} as IDataObject);
}
if (additionalFields.company) {
properties.push({
type: 'SYSTEM',
name: 'company',
value: additionalFields.company as string
value: additionalFields.company as string,
} as IDataObject);
}
if (additionalFields.title) {
properties.push({
type: 'SYSTEM',
name: 'title',
value: additionalFields.title as string
value: additionalFields.title as string,
} as IDataObject);
}
if (additionalFields.emailOptions) {
@ -360,7 +360,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'email',
value: property.email as string
value: property.email as string,
} as IDataObject);
});
}
@ -371,7 +371,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'address',
value: property.address as string
value: property.address as string,
} as IDataObject);
});
}
@ -383,7 +383,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'phone',
value: property.number as string
value: property.number as string,
} as IDataObject);
});
}
@ -392,7 +392,7 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'email',
value: additionalFields.email as string
value: additionalFields.email as string,
} as IDataObject);
}
@ -400,7 +400,7 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'address',
value: additionalFields.address as string
value: additionalFields.address as string,
} as IDataObject);
}
@ -408,7 +408,7 @@ export class AgileCrm implements INodeType {
properties.push({
type: 'SYSTEM',
name: 'phone',
value: additionalFields.phone as string
value: additionalFields.phone as string,
} as IDataObject);
}
@ -421,7 +421,7 @@ export class AgileCrm implements INodeType {
type: 'SYSTEM',
subtype: property.subtype as string,
name: 'webiste',
value: property.url as string
value: property.url as string,
} as IDataObject);
});
}
@ -432,7 +432,7 @@ export class AgileCrm implements INodeType {
type: 'CUSTOM',
subtype: property.subtype as string,
name: property.name,
value: property.value as string
value: property.value as string,
} as IDataObject);
});
}

View file

@ -104,7 +104,7 @@ export const companyFields = [
false,
],
},
}
},
},
/* -------------------------------------------------------------------------- */
/* company:create */
@ -206,29 +206,29 @@ export const companyFields = [
options: [
{
name: '0',
value: 0
value: 0,
},
{
name: '1',
value: 1
value: 1,
},
{
name: '2',
value: 2
value: 2,
},
{
name: '3',
value: 3
value: 3,
},
{
name: '4',
value: 4
value: 4,
},
{
name: '5',
value: 5
value: 5,
},
]
],
},
{
displayName: 'Tags',
@ -339,7 +339,7 @@ export const companyFields = [
type: 'string',
required: true,
default: '',
description: 'Property name.'
description: 'Property name.',
},
{
displayName: 'Sub Type',
@ -653,7 +653,7 @@ export const companyFields = [
},
],
},
]
],
},
],
},

View file

@ -205,7 +205,7 @@ export const contactFields = [
},
{
name: 'Office',
value: 'office'
value: 'office',
},
],
},
@ -656,15 +656,15 @@ export const contactFields = [
options: [
{
name: 'Home',
value: 'home'
value: 'home',
},
{
name: 'Office',
value: 'office'
value: 'office',
},
{
name: 'Postal',
value: 'postal'
value: 'postal',
},
],
},
@ -715,8 +715,8 @@ export const contactFields = [
{
name: 'Personal',
value: 'personal',
}
]
},
],
},
{
displayName: 'Email',
@ -752,7 +752,7 @@ export const contactFields = [
description: 'Lead score of contact',
typeOptions: {
minValue: 0,
}
},
},
{
displayName: 'Star Value',
@ -966,7 +966,7 @@ export const contactFields = [
type: 'string',
required: true,
default: '',
description: 'Property name.'
description: 'Property name.',
},
{
displayName: 'Sub Type',

View file

@ -143,7 +143,7 @@ export const dealFields = [
required: true,
typeOptions: {
minValue: 0,
maxValue: 1000000000000
maxValue: 1000000000000,
},
displayOptions: {
show: {
@ -210,7 +210,7 @@ export const dealFields = [
required: true,
typeOptions: {
minValue: 0,
maxValue: 100
maxValue: 100,
},
displayOptions: {
show: {
@ -318,7 +318,7 @@ export const dealFields = [
type: 'string',
required: true,
default: '',
description: 'Property name.'
description: 'Property name.',
},
{
displayName: 'Value',
@ -444,7 +444,7 @@ export const dealFields = [
type: 'number',
typeOptions: {
minValue: 0,
maxValue: 10000
maxValue: 10000,
},
default: '',
description: 'Expected Value of deal.',
@ -462,7 +462,7 @@ export const dealFields = [
type: 'number',
typeOptions: {
minValue: 0,
maxValue: 100
maxValue: 100,
},
default: 50,
description: 'Expected Value of deal.',
@ -497,7 +497,7 @@ export const dealFields = [
type: 'string',
required: true,
default: '',
description: 'Property name.'
description: 'Property name.',
},
{
displayName: 'Value',
@ -510,6 +510,6 @@ export const dealFields = [
},
],
},
]
],
},
] as INodeProperties[];

View file

@ -25,7 +25,7 @@ export async function agileCrmApiRequest(this: IHookFunctions | IExecuteFunction
},
auth: {
username: credentials!.email as string,
password: credentials!.apiKey as string
password: credentials!.apiKey as string,
},
uri: uri || `https://${credentials!.subdomain}.agilecrm.com/dev/${endpoint}`,
json: true,

View file

@ -31,7 +31,7 @@ export class Airtable implements INodeType {
{
name: 'airtableApi',
required: true,
}
},
],
properties: [
{
@ -47,22 +47,22 @@ export class Airtable implements INodeType {
{
name: 'Delete',
value: 'delete',
description: 'Delete data from a table'
description: 'Delete data from a table',
},
{
name: 'List',
value: 'list',
description: 'List data from a table'
description: 'List data from a table',
},
{
name: 'Read',
value: 'read',
description: 'Read data from a table'
description: 'Read data from a table',
},
{
name: 'Update',
value: 'update',
description: 'Update data in a table'
description: 'Update data in a table',
},
],
default: 'read',
@ -196,7 +196,7 @@ export class Airtable implements INodeType {
displayOptions: {
show: {
operation: [
'list'
'list',
],
},
},
@ -259,13 +259,13 @@ export class Airtable implements INodeType {
{
name: 'DESC',
value: 'desc',
description: 'Sort in descending order (large -> small)'
description: 'Sort in descending order (large -> small)',
},
],
default: 'asc',
description: 'The sort direction.',
},
]
],
},
],
},

View file

@ -98,6 +98,6 @@ export async function apiRequestAllItems(this: IHookFunctions | IExecuteFunction
);
return {
records: returnData
records: returnData,
};
}

View file

@ -59,7 +59,7 @@ export class Amqp implements INodeType {
},
],
},
]
],
};
async executeSingle(this: IExecuteSingleFunctions): Promise<INodeExecutionData> {
@ -107,7 +107,7 @@ export class Amqp implements INodeType {
const message = {
application_properties: headerProperties,
body
body,
};
const sendResult = context.sender.send(message);

View file

@ -77,7 +77,7 @@ export class AmqpTrigger implements INodeType {
},
],
},
]
],
};
@ -109,7 +109,7 @@ export class AmqpTrigger implements INodeType {
port: credentials.port,
reconnect: true, // this id the default anyway
reconnect_limit: 50, // try for max 50 times, based on a back-off algorithm
container_id: (durable ? clientname : null)
container_id: (durable ? clientname : null),
};
if (credentials.username || credentials.password) {
container.options.username = credentials.username;
@ -146,16 +146,16 @@ export class AmqpTrigger implements INodeType {
source: {
address: sink,
durable: 2,
expiry_policy: 'never'
expiry_policy: 'never',
},
credit_window: 1 // prefetch 1
credit_window: 1, // prefetch 1
};
} else {
clientOptions = {
source: {
address: sink,
},
credit_window: 1 // prefetch 1
credit_window: 1, // prefetch 1
};
}
connection.open_receiver(clientOptions);

View file

@ -1218,7 +1218,7 @@ export class Asana implements INodeType {
}
return returnData;
}
},
},
};

View file

@ -248,7 +248,7 @@ export class AsanaTrigger implements INodeType {
return {
workflowData: [
this.helpers.returnJsonArray(req.body.events)
this.helpers.returnJsonArray(req.body.events),
],
};
}

View file

@ -63,7 +63,7 @@ export class Automizy implements INodeType {
},
],
default: 'contact',
description: 'The resource to operate on.'
description: 'The resource to operate on.',
},
...contactOperations,
@ -86,12 +86,12 @@ export class Automizy implements INodeType {
this,
'smartLists',
'GET',
`/smart-lists`,
`/smart-lists`
);
for (const list of lists) {
returnData.push({
name: list.name,
value: list.id
value: list.id,
});
}
return returnData;
@ -109,7 +109,7 @@ export class Automizy implements INodeType {
for (const tag of tags) {
returnData.push({
name: tag.name,
value: tag.name
value: tag.name,
});
}
return returnData;
@ -122,12 +122,12 @@ export class Automizy implements INodeType {
this,
'customFields',
'GET',
'/custom-fields',
'/custom-fields'
);
for (const customField of customFields) {
returnData.push({
name: customField.name,
value: customField.id
value: customField.id,
});
}
return returnData;
@ -178,7 +178,7 @@ export class Automizy implements INodeType {
this,
'POST',
`/smart-lists/${listId}/contacts`,
body,
body
);
}
@ -188,7 +188,7 @@ export class Automizy implements INodeType {
responseData = await automizyApiRequest.call(
this,
'DELETE',
`/contacts/${contactId}`,
`/contacts/${contactId}`
);
responseData = { success: true };
@ -200,7 +200,7 @@ export class Automizy implements INodeType {
responseData = await automizyApiRequest.call(
this,
'GET',
`/contacts/${contactId}`,
`/contacts/${contactId}`
);
}
@ -227,7 +227,7 @@ export class Automizy implements INodeType {
'GET',
`/smart-lists/${listId}/contacts`,
{},
qs,
qs
);
} else {
@ -238,7 +238,7 @@ export class Automizy implements INodeType {
'GET',
`/smart-lists/${listId}/contacts`,
{},
qs,
qs
);
responseData = responseData.contacts;
@ -272,7 +272,7 @@ export class Automizy implements INodeType {
this,
'PATCH',
`/contacts/${email}`,
body,
body
);
}
}
@ -290,7 +290,7 @@ export class Automizy implements INodeType {
this,
'POST',
`/smart-lists`,
body,
body
);
}
@ -300,7 +300,7 @@ export class Automizy implements INodeType {
responseData = await automizyApiRequest.call(
this,
'DELETE',
`/smart-lists/${listId}`,
`/smart-lists/${listId}`
);
responseData = { success: true };
@ -312,7 +312,7 @@ export class Automizy implements INodeType {
responseData = await automizyApiRequest.call(
this,
'GET',
`/smart-lists/${listId}`,
`/smart-lists/${listId}`
);
}
@ -337,7 +337,7 @@ export class Automizy implements INodeType {
'GET',
`/smart-lists`,
{},
qs,
qs
);
} else {
@ -348,7 +348,7 @@ export class Automizy implements INodeType {
'GET',
`/smart-lists`,
{},
qs,
qs
);
responseData = responseData.smartLists;
@ -368,7 +368,7 @@ export class Automizy implements INodeType {
this,
'PATCH',
`/smart-lists/${listId}`,
body,
body
);
}
}

View file

@ -204,7 +204,7 @@ export const contactFields = [
},
},
default: '',
description: 'Can be ID or email.'
description: 'Can be ID or email.',
},
/* -------------------------------------------------------------------------- */

View file

@ -29,7 +29,7 @@ export class AwsLambda implements INodeType {
{
name: 'aws',
required: true,
}
},
],
properties: [
{
@ -145,7 +145,7 @@ export class AwsLambda implements INodeType {
});
}
return returnData;
}
},
},
};
@ -173,7 +173,7 @@ export class AwsLambda implements INodeType {
{
'X-Amz-Invocation-Type': params.InvocationType,
'Content-Type': 'application/x-amz-json-1.0',
},
}
);
} catch (err) {
throw new Error(`AWS Error: ${err}`);

View file

@ -29,7 +29,7 @@ export class AwsSns implements INodeType {
{
name: 'aws',
required: true,
}
},
],
properties: [
{
@ -133,7 +133,7 @@ export class AwsSns implements INodeType {
}
return returnData;
}
},
},
};

View file

@ -93,7 +93,7 @@ export class AwsSnsTrigger implements INodeType {
});
}
return returnData;
}
},
},
};
// @ts-ignore

View file

@ -96,7 +96,7 @@ export class AwsRekognition implements INodeType {
displayOptions: {
show: {
operation: [
'analyze'
'analyze',
],
resource: [
'image',
@ -110,7 +110,7 @@ export class AwsRekognition implements INodeType {
displayOptions: {
show: {
operation: [
'analyze'
'analyze',
],
resource: [
'image',
@ -132,7 +132,7 @@ export class AwsRekognition implements INodeType {
displayOptions: {
show: {
operation: [
'analyze'
'analyze',
],
resource: [
'image',
@ -153,7 +153,7 @@ export class AwsRekognition implements INodeType {
displayOptions: {
show: {
operation: [
'analyze'
'analyze',
],
resource: [
'image',

View file

@ -65,7 +65,7 @@ export class AwsS3 implements INodeType {
{
name: 'aws',
required: true,
}
},
],
properties: [
{
@ -148,7 +148,7 @@ export class AwsS3 implements INodeType {
'$': {
xmlns: 'http://s3.amazonaws.com/doc/2006-03-01/',
},
}
},
};
let data = '';
// if credentials has the S3 defaul region (us-east-1) the body (XML) does not have to be sent.
@ -282,7 +282,7 @@ export class AwsS3 implements INodeType {
for (const childObject of responseData) {
//@ts-ignore
(body.Delete.Object as IDataObject[]).push({
Key: childObject.Key as string
Key: childObject.Key as string,
});
}

View file

@ -113,19 +113,19 @@ export const fileFields = [
options: [
{
name: 'Authenticated Read',
value: 'authenticatedRead'
value: 'authenticatedRead',
},
{
name: 'AWS Exec Read',
value: 'awsExecRead'
value: 'awsExecRead',
},
{
name: 'Bucket Owner Full Control',
value: 'bucketOwnerFullControl'
value: 'bucketOwnerFullControl',
},
{
name: 'Bucket Owner Read',
value: 'bucketOwnerRead'
value: 'bucketOwnerRead',
},
{
name: 'Private',
@ -133,15 +133,15 @@ export const fileFields = [
},
{
name: 'Public Read',
value: 'publicRead'
value: 'publicRead',
},
{
name: 'Public Read Write',
value: 'publicReadWrite'
value: 'publicReadWrite',
},
],
default: 'private',
description: 'The canned ACL to apply to the object.'
description: 'The canned ACL to apply to the object.',
},
{
displayName: 'Grant Full Control',
@ -399,7 +399,7 @@ export const fileFields = [
displayOptions: {
show: {
operation: [
'upload'
'upload',
],
resource: [
'file',
@ -416,13 +416,13 @@ export const fileFields = [
displayOptions: {
show: {
operation: [
'upload'
'upload',
],
resource: [
'file',
],
binaryData: [
false
false,
],
},
},
@ -438,13 +438,13 @@ export const fileFields = [
displayOptions: {
show: {
operation: [
'upload'
'upload',
],
resource: [
'file',
],
binaryData: [
true
true,
],
},
@ -476,19 +476,19 @@ export const fileFields = [
options: [
{
name: 'Authenticated Read',
value: 'authenticatedRead'
value: 'authenticatedRead',
},
{
name: 'AWS Exec Read',
value: 'awsExecRead'
value: 'awsExecRead',
},
{
name: 'Bucket Owner Full Control',
value: 'bucketOwnerFullControl'
value: 'bucketOwnerFullControl',
},
{
name: 'Bucket Owner Read',
value: 'bucketOwnerRead'
value: 'bucketOwnerRead',
},
{
name: 'Private',
@ -496,15 +496,15 @@ export const fileFields = [
},
{
name: 'Public Read',
value: 'publicRead'
value: 'publicRead',
},
{
name: 'Public Read Write',
value: 'publicReadWrite'
value: 'publicReadWrite',
},
],
default: 'private',
description: 'The canned ACL to apply to the object.'
description: 'The canned ACL to apply to the object.',
},
{
displayName: 'Grant Full Control',
@ -705,7 +705,7 @@ export const fileFields = [
description: '',
},
],
}
},
],
description: 'Optional extra headers to add to the message (most headers are allowed).',
},
@ -755,7 +755,7 @@ export const fileFields = [
displayOptions: {
show: {
operation: [
'download'
'download',
],
resource: [
'file',

View file

@ -97,7 +97,7 @@ export const folderFields = [
name: 'parentFolderKey',
type: 'string',
default: '',
description: 'Parent folder you want to create the folder in'
description: 'Parent folder you want to create the folder in',
},
{
displayName: 'Requester Pays',
@ -141,7 +141,7 @@ export const folderFields = [
},
],
default: 'standard',
description: 'Amazon S3 storage classes.'
description: 'Amazon S3 storage classes.',
},
],
},

View file

@ -585,7 +585,7 @@ export class AwsSes implements INodeType {
}
return returnData;
}
},
},
};
@ -756,7 +756,7 @@ export class AwsSes implements INodeType {
const params = [
`Template.TemplateName=${templateName}`,
`Template.SubjectPart=${subjectPart}`,
`Template.HtmlPart=<h1>${htmlPart}</h1>`
`Template.HtmlPart=<h1>${htmlPart}</h1>`,
];
if (additionalFields.textPart) {

View file

@ -181,7 +181,7 @@ export const imageFields = [
type: 'string',
default: '',
description: 'Replacement image url you want to use (must be publicly viewable)',
}
},
],
},
],
@ -202,7 +202,7 @@ export const imageFields = [
],
operation: [
'get',
]
],
},
},
description: 'Unique identifier for the image.',

View file

@ -49,7 +49,7 @@ export const templateFields = [
],
operation: [
'get',
]
],
},
},
description: 'Unique identifier for the template.',

View file

@ -35,7 +35,7 @@ export class BitbucketTrigger implements INodeType {
{
name: 'bitbucketApi',
required: true,
}
},
],
webhooks: [
{
@ -75,9 +75,9 @@ export class BitbucketTrigger implements INodeType {
displayOptions: {
show: {
resource: [
'user'
]
}
'user',
],
},
},
typeOptions: {
loadOptionsMethod: 'getUsersEvents',
@ -94,9 +94,9 @@ export class BitbucketTrigger implements INodeType {
displayOptions: {
show: {
resource: [
'team'
]
}
'team',
],
},
},
typeOptions: {
loadOptionsMethod: 'getTeams',
@ -112,9 +112,9 @@ export class BitbucketTrigger implements INodeType {
displayOptions: {
show: {
resource: [
'team'
]
}
'team',
],
},
},
typeOptions: {
loadOptionsMethod: 'getTeamEvents',
@ -131,9 +131,9 @@ export class BitbucketTrigger implements INodeType {
displayOptions: {
show: {
resource: [
'repository'
]
}
'repository',
],
},
},
typeOptions: {
loadOptionsMethod: 'getRepositories',
@ -149,9 +149,9 @@ export class BitbucketTrigger implements INodeType {
displayOptions: {
show: {
resource: [
'repository'
]
}
'repository',
],
},
},
typeOptions: {
loadOptionsMethod: 'getRepositoriesEvents',
@ -351,7 +351,7 @@ export class BitbucketTrigger implements INodeType {
}
return {
workflowData: [
this.helpers.returnJsonArray(req.body)
this.helpers.returnJsonArray(req.body),
],
};
}

View file

@ -21,7 +21,7 @@ export async function bitbucketApiRequest(this: IHookFunctions | IExecuteFunctio
qs,
body,
uri: uri ||`https://api.bitbucket.org/2.0${resource}`,
json: true
json: true,
};
options = Object.assign({}, options, option);
if (Object.keys(options.body).length === 0) {

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