Commit graph

118 commits

Author SHA1 Message Date
Jan Oberhauser 1d850da9fb Send request of HTTP Request node to browser console when testing 2021-06-12 20:22:55 +02:00
Iván Ovejero b2e0bcea16
🐛 Remove circular references from error objects (#1802)
*  Add circular references removal

* 🔥 Remove unused flag from affected node

* 🔥 Remove unused exports

* 🔨 refactor removing circular references

*  Replace IRawErrorObject with JsonObject

*  Make error detection depth-first (#1800)

* 👕 fix type

* 🔨 improve readability

* 📝 improve placeholder for circular reference

*  Turn marker into object to keep description

Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>
2021-06-12 17:15:23 +02:00
Jan 4946bfcd3e
Add functionality to send console.log messages to editor-UI (#1816)
*  Send console.log messages to editor-UI

*  Send message only to session which started workflow

*  Made it also work in own process

*  Add support for console.log UI forward also to FunctionItem Node

* 👕 Fix lint issue

* 👕 Fix linting issue

*  Improve code

Co-authored-by: Iván Ovejero <ivov.src@gmail.com>

Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
2021-05-29 13:41:25 -05:00
Omar Ajoue c972f3dd50
Added logging to n8n (#1381)
* Added logging to n8n

This commit adds logging to n8n using the Winston library.

For now, this commit only allows logging to console (default behavior)
or file (need to pass in config via environment variables).

Other logging methods can be further implemented using hooks. These were
skipped for now as it would require adding more dependencies.

Logging level is notice by default, meaning no additional messages would
be displayed at the moment. Logging level can be set to info or debug as
well to enrich the generated logs.

The ILogger interface was added to the workflow project as it would make
it available for all other projects but the implementation was done on
the cli project.

* Lint fixes and logging level naming. Also fixed the way we use the logger as it was not working previously

* Improvements to logging framework

Using appropriate single quotes
Improving the way the logger is declared

* Improved naming for Log Types

* Removed logger global variable, replacing it by a proxy

* Add logging to CLI commands

* Remove unused GenericHelpers

* Changed back some messages to console instead of logger and added npm
shortcuts for worker and webhook

* Fix typos

* Adding basic file rotation to logs as suggested by @mutdmour

* Fixed linting issues

* Correcting comment to correctly reflect space usage

* Added settings for log files rotation

* Correcting config type from String to Number

* Changed default file settings to number

To reflect previous changes to the type

* Changed the way log messages are added to be called statically. Also minor naming improvements

* Applying latest corrections sent by @ivov

*  Some logging improvements

* Saving logs to a folder inside n8n home instead of root

* Fixed broken tests and linting

* Changed some log messages to improve formatting

* Adding quotes to names  on log messages

* Added execution and session IDs to logs. Also removed unnecessary line breaks

*  Added file caller to log messages (#1657)

This is done using callsites library which already existed
in the project as another library's dependency. So in fact
it does not add any new dependency.

* Adding logs to help debug Salesforce node

*  Add function name to logs and add more logs

*  Improve some error messages

*  Improve some more log messages

*  Rename logging env variables to match others

Co-authored-by: dali <servfrdali@yahoo.fr>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-05-01 22:43:01 -05:00
Omar Ajoue 0c779de704
Implement timeout for workers and corrected timeout for subworkflows (#1634)
* Implemented timeout for workers and corrected timeout for subworkflows

* Fixed issue with timeouts when running on separate processes

* Standardized timeouts across all n8n

Now the maxTimeout setting takes effect whenever a timeout is set
to any workflows.

This causes local timeouts (either set on a per-workflow basis or
via global settings) to be capped by the maximum timeout. This
behavior already existed but was not applied to all places.

Also changed the way n8n enforces timeouts for subworkflows, making
it work always.

In effect, with this change, if you have one workflow that calls others
only the main workflow's timeout is taken into consideration, limiting
the maximum time that other workflows combined can run.

*  Fix timeout problem in "own" mode

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-04-17 16:44:07 +02:00
Iván Ovejero 1d27a9e87e
Improve node error handling (#1309)
* Add path mapping and response error interfaces

* Add error handling and throwing functionality

* Refactor error handling into a single function

* Re-implement error handling in Hacker News node

* Fix linting details

* Re-implement error handling in Spotify node

* Re-implement error handling in G Suite Admin node

* 🚧 create basic setup NodeError

* 🚧 add httpCodes

* 🚧 add path priolist

* 🚧 handle statusCode in error, adjust interfaces

* 🚧 fixing type issues w/Ivan

* 🚧 add error exploration

* 👔 fix linter issues

* 🔧 improve object check

* 🚧 remove path passing from NodeApiError

* 🚧 add multi error + refactor findProperty method

* 👔 allow any

* 🔧 handle multi error message callback

*  change return type of callback

*  add customCallback to MultiError

* 🚧 refactor to use INode

* 🔨 handle arrays, continue search after first null property found

* 🚫 refactor method access

* 🚧 setup NodeErrorView

*  change timestamp to Date.now

* 📚 Add documentation for methods and constants

* 🚧 change message setting

* 🚚 move NodeErrors to workflow

*  add new ErrorView for Nodes

* 🎨 improve error notification

* 🎨 refactor interfaces

*  add WorkflowOperationError, refactor error throwing

* 👕 fix linter issues

* 🎨 rename param

* 🐛 fix handling normal errors

*  add usage of NodeApiError

* 🎨 fix throw new error instead of constructor

* 🎨 remove unnecessary code/comments

* 🎨 adjusted spacing + updated status messages

* 🎨 fix tab indentation

*  Replace current errors with custom errors (#1576)

*  Introduce NodeApiError in catch blocks

*  Introduce NodeOperationError in nodes

*  Add missing errors and remove incompatible

*  Fix NodeOperationError in incompatible nodes

* 🔧 Adjust error handling in missed nodes

PayPal, FileMaker, Reddit, Taiga and Facebook Graph API nodes

* 🔨 Adjust Strava Trigger node error handling

* 🔨 Adjust AWS nodes error handling

* 🔨 Remove duplicate instantiation of NodeApiError

* 🐛 fix strava trigger node error handling

* Add XML parsing to NodeApiError constructor (#1633)

* 🐛 Remove type annotation from catch variable

*  Add XML parsing to NodeApiError

*  Simplify error handling in Rekognition node

*  Pass in XML flag in generic functions

* 🔥 Remove try/catch wrappers at call sites

* 🔨 Refactor setting description from XML

* 🔨 Refactor let to const in resource loaders

*  Find property in parsed XML

*  Change let to const

* 🔥 Remove unneeded try/catch block

* 👕 Fix linting issues

* 🐛 Fix errors from merge conflict resolution

*  Add custom errors to latest contributions

* 👕 Fix linting issues

*  Refactor MongoDB helpers for custom errors

* 🐛 Correct custom error type

*  Apply feedback to A nodes

*  Apply feedback to missed A node

*  Apply feedback to B-D nodes

*  Apply feedback to E-F nodes

*  Apply feedback to G nodes

*  Apply feedback to H-L nodes

*  Apply feedback to M nodes

*  Apply feedback to P nodes

*  Apply feedback to R nodes

*  Apply feedback to S nodes

*  Apply feedback to T nodes

*  Apply feedback to V-Z nodes

*  Add HTTP code to iterable node error

* 🔨 Standardize e as error

* 🔨 Standardize err as error

*  Fix error handling for non-standard nodes

Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>

Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>
Co-authored-by: Ben Hesseldieck <1849459+BHesseldieck@users.noreply.github.com>
2021-04-16 18:33:36 +02:00
Omar Ajoue 726a99bf69
Add Activation Trigger (#1570)
*  n8n start trigger node

* first declaration of WorkflowActivationMode

* implement first WorkflowActivationMode: 'init', 'create', 'update', 'activate'

* fix Server missing id

* add activation infos to triggers

* remove WorkflowActivationMode from webhook execution function

* add some missing activation and add manual activation

* clean up and fix some code

* fix UnhandledPromiseRejectionWarning: Error: Overwrite NodeExecuteFunctions.getExecuteTriggerFunctions.emit function!

* fix spaces

* use a better name for the node

* fix ident in package.json

* Contributions to lublak's PR #1287

* Fixed linting issues and change the way parameters are displayed

*  Fix name and minor improvements

Co-authored-by: lublak <lublak.de@gmail.com>
Co-authored-by: lublak <44057030+lublak@users.noreply.github.com>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-03-23 19:08:47 +01:00
Jan Oberhauser ddce679569 Minor changes to directories in binary data 2021-03-18 18:13:24 +01:00
Jan Oberhauser d65e8ee73b 🔀 Merge branch 'binary-file-path' of https://github.com/lublak/n8n into lublak-binary-file-path 2021-03-18 13:20:26 +01:00
Iván Ovejero 0dcaccefa7
GoToWebinar node (#1422)
* Create scaffolding for node

* Add SVG logo

* Create scaffolding for generic functions

* Add index for descriptions

* Simplify retrieval of details

* Introduce minor fixes in generic functions

* Add attendee description

* Fix attendee description operation

* Add coorganizer description

* Add panelist description

* Add registrant description

* Add session description

* Add webinar description

* Register node and credentials

* Add scaffolding for credentials

* Minor creds fixes

* Fix SVG icon size and position

* Fix capitalization in description

* Fix credentials connection

* Add attendee fields

* Populate webinar description

* Remove organizer key from params

* Add timezones array constant

* Implement webinar:create

* Implement webinar:delete

* Convert times to fixed collection

* Add missing segments to endpoints

* Fix webinar:update operation

* Implement all-items request

* Add params for session:getAll

* Add params for webinar:getAll

* Implement session:getAll and webinar:getAll

* Implement session:get and session:getDetails

* Implement coorganizer:create

* Implement coorganizer:delete

* Implement coorganizer:getAll

* Implement coorganizer:delete

* Refactor time range for getAll operations

* Implement coorganizer:reinvite

* Implement panelist:create and panelist:getAll

* Implement panelist:delete and panelist:reinvite

* Remove array body helper types

* Implement registrant:create and registrant:getAll

* Implement registrant:delete

* Prettify error handling

* Add returnAll toggle and limit for all operations

* Preload webinars

* Preload webinar key in more fields

* Refactor getAll as handler

* Add descriptions for session

* Add descriptions for attendee

* Add descriptions for co-organizer

* Add descriptions for panelist

* Add descriptions for registrant

* Add descriptions for webinar

* Add 403 check for refresh token

* Fix defaults for webinar loader

* Add descriptions for webinar types

*  Improvements

* Remove unneeded return type annotation

* Add handler for continue on fail

* Remove 403 check in error handler

The Go To Webinar API returns 403 for a range of various errors, so this check ended up overriding more specific error messages not related to 403 Forbidden errors.

* Remove logging

*  Small improvement

*  Minor improvements

*  Improvements

*  Minor improvements

Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-02-22 08:49:00 +01:00
Omar Ajoue 6ee9501d16
🐛 Fixing execution history for integrated workflows. (#1469)
* Fixing execution history for integrated workflows.

*  Minor improvements

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-02-20 13:51:06 +01:00
lublak cb9f31c49d add dir to different positions 2021-02-15 13:25:30 +01:00
Omar Ajoue 7a3aaf8a24
Unify execution id + Queue system (#1340)
* Unify execution ID across executions

* Fix indentation and improved comments

* WIP: saving data after each node execution

* Added on/off to save data after each step, saving initial data and retries working

* Fixing lint issues

* Fixing more lint issues

*  Add bull to execute workflows

* 👕 Fix lint issue

*  Add graceful shutdown to worker

*  Add loading staticData to worker

* 👕 Fix lint issue

*  Fix import

* Changed tables metadata to add nullable to stoppedAt

* Reload database on migration run

* Fixed reloading database schema for sqlite by reconnecting and fixing postgres migration

* Added checks to Redis and exiting process if connection is unavailable

* Fixing error with new installations

* Fix issue with data not being sent back to browser on manual executions with defined destination

* Merging bull and unify execution id branch fixes

* Main process will now get execution success from database instead of redis

* Omit execution duration if execution did not stop

* Fix issue with execution list displaying inconsistant information information while a workflow is running

* Remove unused hooks to clarify for developers that these wont run in queue mode

* Added active pooling to help recover from Redis crashes

* Lint issues

* Changing default polling interval to 60 seconds

* Removed unnecessary attributes from bull job

*  Improved output on worker job start

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-02-09 08:59:32 +01:00
Jan Oberhauser 5398a06ff2 Add variable $mode 2021-01-29 09:31:40 +01:00
Jan Oberhauser 1dedb3f4b8 Add expression support to credentials 2021-01-24 13:33:57 +01:00
Ben Hesseldieck d395498882
Add support for webhook route parameters (#1343)
* 🚧 add webhookId to URL

* 🚧 add webhookId to webhook entity, 🔧 refactor migrations

* 🚧 🐘 postgres migration

* 🚧 add mySQL migration

* 🚧 refactor mongoDB

* 🚧 add webhookId to IWebhookDb

* 🚧 starting workflow with dynamic route works

*  production dynamic webhooks complete

* 🎨 fix lint issues

* 🔧 dynamic path for webhook-test complete

* 🎨 fix lint issues

* 🎨 fix typescript issue

*  add error message for dynamic webhook-test

* 🔨 improve handling of leading `/`

* 🚧 add webhookId to URL

* 🚧 add webhookId to webhook entity, 🔧 refactor migrations

* 🚧 🐘 postgres migration

* 🚧 add mySQL migration

* 🚧 refactor mongoDB

* 🚧 add webhookId to IWebhookDb

* 🚧 starting workflow with dynamic route works

*  production dynamic webhooks complete

* 🎨 fix lint issues

* 🔧 dynamic path for webhook-test complete

* 🎨 fix lint issues

* 🎨 fix typescript issue

*  add error message for dynamic webhook-test

* 🔨 improve handling of leading `/`

*  Fix issue that tab-title did not get reset on new workflow

* Revert " Fix issue that tab-title did not get reset on new workflow"

This reverts commit 699d0a8946.

* 🔧 reset params before extraction

* 🐘 removing unique constraint for webhookId

* 🚧 handle multiple webhooks per id

* 🔧 enable webhook-test for multiple WH with same id

* 🐘 add migration for postgres

*  add mysql migration

* 🎨 fix lint issue

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2021-01-23 20:00:32 +01:00
Jan Oberhauser 95315cec60 Add optional sort option if "multipleValues" is set 2020-12-27 00:15:33 +01:00
Ben Hesseldieck f2666e92ff
Add preExecuteHooks (#1151)
*  Save initital data on hook error

* 🚧 update function interface

* 🚧 response webhook with error, 🐛 fix adding preExecutionHooks to hooks

* 🔥 remove execute hook

*  execute preExecute hooks on integrated workflows

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2020-11-13 23:31:27 +01:00
Jan Oberhauser 639bdd2ceb Allow custom documentation URLs on credentials & nodes 2020-11-09 12:23:53 +01:00
Jan Oberhauser 9fee42b2a8 Add shear option, resize with alpha color and fix bug 2020-11-09 11:26:46 +01:00
Jan Oberhauser 66bfcca63f 🐛 Fix issue with IF&Switch node for undefined expressions #1099 2020-10-26 09:43:01 +01:00
Rupenieks 266112a8cb
Clickup OAuth2 support (#649)
* OAuth2 credentials, genericFunctions needed config, UI options for oauth2 support

*  Added options to decide when to to send the bearer

* Fixed "undefined property split" issue

*  Small fix

*  Improvements to ClickUp-Node

*  Improvements

Co-authored-by: Rupenieks <ru@myos,co>
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
Co-authored-by: Ricardo Espinoza <ricardo@n8n.io>
2020-09-16 09:16:06 +02:00
Jan Oberhauser 30ac4f4c2c Extend CredentialType interface with "documentationUrl" property 2020-08-17 11:58:36 +02:00
Jan Oberhauser da0ef0d94c Add "Execute Once" node-setting 2020-08-08 21:11:12 +02:00
Ricardo Espinoza 8370940713
Box Node and Trigger (#765)
*  Box Node and Trigger

*  Improvements

*  small fix

* 🐛 Add missing interface

*   add search operation
2020-07-25 19:58:38 +02:00
Rupenieks 82d94873fc
OPTIONS request support for Production/Test Webhooks (#787)
* 🐛 Fix naming of events in AffinityTrigger Node

* 🚧 OPTIONS allow header response for production webhooks

*  Implemented Allow header for test webhook OPTIONS response

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
2020-07-24 16:24:18 +02:00
ricardo 494b1de93f Merge branch 'master' into static-stateless-webhooks 2020-06-22 16:16:50 -04:00
Jan Oberhauser cee5c522de Rename webhookPath parameter on node to webhookId 2020-06-10 16:17:16 +02:00
Jan Oberhauser 5ed86670a8 Make it use of full webhook path more generic 2020-06-10 15:39:15 +02:00
ricardo 91c40367e1 Done 2020-05-27 19:32:56 -04:00
Jan Oberhauser 147c50485c 🔀 Merge branch 'master' into oauth-support 2020-05-12 01:56:27 +02:00
Jan Oberhauser a80af661cc 🔀 Merge branch 'MyCupOfTeaOo-master' 2020-05-05 22:57:36 +02:00
Jan Oberhauser 3d330a94d3 Make it possible to display notes in flow 2020-05-05 17:34:12 +02:00
zou wendi e4cc3a4bc9 features: support jira self-hosted server 2020-05-05 12:07:19 +08:00
ricardo d57d457148 SurveyMonkey trigger 2020-04-26 12:51:27 -05:00
Jan Oberhauser 90fe5113a0 🔀 Merge branch 'master' into oauth-support 2020-04-14 20:54:19 +02:00
Jan Oberhauser c7024ca454 Add "alwaysOutputData" option to nodes 2020-04-12 19:58:30 +02:00
Jan Oberhauser 09e528565f Add $items to expression and Function-Nodes to get all items 2020-04-12 18:42:29 +02:00
Jan Oberhauser 0e7998cbba 🐛 Fix interface for getWorkflow 2020-04-11 10:30:50 +02:00
Jan Oberhauser 9dd9e0d8ba 🔀 Merge branch 'master' into oauth-support 2020-04-04 17:34:10 +02:00
Jan Oberhauser c1853a6ff5 Add functionality to evaluate expression 2020-03-21 17:25:29 +01:00
Jan Oberhauser ce0aaeba7d Improve continueOnFail behaviour 2020-03-17 13:18:04 +01:00
Jan Oberhauser 70286b469e Make workflow metadata available in expresions and
node-functions
2020-02-15 17:07:01 -08:00
Jan Oberhauser 6bff3dc199 Add parameter type "hidden" 2020-02-09 13:33:40 -08:00
Jan Oberhauser eb285ef711 Make it possible to set credentials to fixed values 2020-01-25 23:48:38 -08:00
Jan Oberhauser aa1899f81d Prepare webhooks for multitenancy 2020-01-22 15:06:43 -08:00
Jan Oberhauser 8228b8505f Abstract OAuth signing and make credentials extendable 2020-01-13 20:46:58 -06:00
Jan Oberhauser bf4c8bc3a2 Make it possible to define dependencies for loadOptions 2020-01-04 22:28:09 -06:00
Jan Oberhauser 629ab09135 Add additional possibilities to load workflow 2020-01-02 17:13:53 -06:00
Jan Oberhauser 584033ab4a Add polling support to Trigger-Nodes 2019-12-31 14:27:58 -06:00
Jan Oberhauser 8acc3c5931 Add ExecuteWorkflow-Node 2019-12-19 16:07:55 -06:00
Jan Oberhauser 2d409b6535 Support also numbers as values in options and multiOptions 2019-11-22 00:07:38 +01:00
Jan Oberhauser e3b71c2ed4 Rename function and fix styling 2019-10-20 21:42:34 +02:00
BenoitTallandier 02a7d92fc1 🔃Add unction getCurrentNodeParameters to get currents parameters in loading function 2019-10-20 20:55:49 +02:00
Jan Oberhauser ded2152d61 Make it possible to return custom content-type and data with
webhook
2019-10-16 14:01:39 +02:00
Jan Margeta 50a342b2fb 👕 Fix typo: IWebhookResonseData->IWebhookResponseData 2019-10-11 13:02:44 +02:00
Jan Oberhauser d337cbd805 👕 Replace some double quotes with single ones 2019-09-19 14:14:37 +02:00
Jan Oberhauser 2b2113433f Improve Code-Editor in Function-Nodes 2019-09-04 18:24:49 +02:00
Jan Oberhauser 48ccb36536 Make special variables like $node, $parameter, ... accessible
in Function Nodes
2019-09-04 14:53:39 +02:00
Jan Oberhauser 4d6e25c28e 💥 Fix typo reponse => response 2019-08-28 17:16:09 +02:00
Jan Oberhauser d59a043e3f Run workflows in own independent subprocess 2019-08-08 20:47:08 +02:00
Jan Oberhauser a0b7abed20 Add support for input labels 2019-08-02 15:56:05 +02:00
Jan Oberhauser a9453806b8 Add support for PostgresDB and save date as Date 2019-07-22 20:29:06 +02:00
Jan Oberhauser 32204d35d1 Make it possible to retry node on error 2019-07-18 19:39:54 +02:00
Jan Oberhauser 549a30c267 🐛 Fix display bug with identically named parameters with
dependencies
2019-07-13 19:50:41 +02:00
Jan Oberhauser be9c5622ac Add possibility to define custom node-subtitle for nodes in
UI
2019-07-12 14:14:36 +02:00
Jan Oberhauser 1e0d2cbf1e Add additional helper functions to webhook functionality 2019-07-12 11:33:18 +02:00
Jan Oberhauser 9cb9804eee Initial commit to release 2019-06-23 12:35:23 +02:00