## Summary
Add `ShutdownService` and `OnShutdown` decorator for more unified way to
shutdown different components. Use this new way in the following
components:
- HTTP(S) server
- Pruning service
- Push connection
- License
---------
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Also,
1. Consistent CORS support ~on all three webhook types~ waiting webhooks never supported CORS. I'll fix that in another PR
2. [Fixes binary-data handling when request body is text, json, or xml](https://linear.app/n8n/issue/NODE-505/webhook-binary-data-handling-fails-for-textplain-files).
3. Reduced number of middleware that each request has to go through.
4. Removed the need to maintain webhook endpoints in the auth-exception list.
5. Skip all middlewares (apart from `compression`) on Webhook routes.
6. move `multipart/form-data` support out of individual nodes
7. upgrade `formidable`
8. fix the filenames on binary-data in webhooks nodes
9. add unit tests and integration tests for webhook request handling, and increase test coverage
* store n8n version string in a const and use that everywhere
* reduce code duplication between Server and WebhookServer
* unify redis checks
* fix linting
* SIGTERM/SIGINT should only be handled once
* move error-handling initialization to commands
* create a new `sleep` function in workflow utils
* detect crashes and report them to Sentry
* feat(cli): Setup error tracking using Sentry
* make error reporting available in the workflows package
* address some of the PR comments
* create a ErrorReporterProxy like LoggerProxy
* remove the `captureError` helper. use ErrorReporterProxy directly
* fix linting issues
* remove ErrorReporterProxy warnings in tests
* check for NODE_ENV === 'production' instead
* IErrorReporter -> ErrorReporter
* ErrorReporterProxy.getInstance() -> ErrorReporter
* allow capturing stacks in warnings as well
* make n8n debugging consistent with `npm start`
* IReportingOptions -> ReportingOptions
* use consistent signature for `error` and `warn`
* use Logger instead of console.log
* Improve code health
Fix TS typos in local variables
Fix CSS typos in local styles
Fix typos in comments
Fix typos in strings
* Fix order of n8n setup sections in CONTRIBUTING.md
* ✨ Add Webhook-Response-Node
* ⚡ Replace callback function with promise
* ✨ Add support for Bull and binary-data
* ✨ Add string response option
* ⚡ Remove some comments
* ✨ Make more generically possible & fix issue multi call in
queue mode
* ⚡ Fix startup and eslint issues
* ⚡ Improvements to webhook response node and functionality
* ⚡ Replace data with more generic type
* ⚡ Make statusMessage optional
* ⚡ Change parameter order
* ⚡ Move Response Code underneath options
* ⚡ Hide Response Code on Webhook node if mode responseNode got selected
* ⚡ Minor improvements
* ⚡ Add missing file and fix lint issue
* ⚡ Fix some node linting issues
* ⚡ Apply feedback
* ⚡ Minor improvements
* refactor saving
* refactor api layer to be stateless
* refactor header details
* set variable for menu height
* clean up scss
* clean up indentation
* clean up dropdown impl
* refactor no tags view
* split away header
* Fix tslint issues
* Refactor tag manager
* add tags to patch request
* clean up scss
* ⚡ Refactor types to entities
* fix issues
* update no workflow error
* clean up tagscontainer
* use getters instead of state
* remove imports
* use custom colors
* clean up tags container
* clean up dropdown
* clean up focusoncreate
* ⚡ Ignore mistaken ID in POST /workflows
* ⚡ Fix undefined tag ID in PATCH /workflows
* ⚡ Shorten response for POST /tags
* remove scss mixins
* clean up imports
* ⚡ Implement validation with class-validator
* address ivan's comments
* implement modals
* Fix lint issues
* fix disabling shortcuts
* fix focus issues
* fix focus issues
* fix focus issues with modal
* fix linting issues
* use dispatch
* use constants for modal keys
* fix focus
* fix lint issues
* remove unused prop
* add modal root
* fix lint issues
* remove unused methods
* fix shortcut
* remove max width
* ⚡ Fix duplicate entry error for pg and MySQL
* update rename messaging
* update order of buttons
* fix firefox overflow on windows
* fix dropdown height
* 🔨 refactor tag crud controllers
* 🧹 remove unused imports
* use variable for number of items
* fix dropdown spacing
* ⚡ Restore type to fix build
* ⚡ Fix post-refactor PATCH /workflows/:id
* ⚡ Fix PATCH /workflows/:id for zero tags
* ⚡ Fix usage count becoming stringified
* address max's comments
* fix filter spacing
* fix blur bug
* address most of ivan's comments
* address tags type concern
* remove defaults
* ⚡ return tag id as string
* 🔨 add hooks to tag CUD operations
* 🏎 simplify timestamp pruning
* remove blur event
* fix onblur bug
* ⚡ Fix fs import to fix build
* address max's comments
* implement responsive tag container
* fix lint issues
* update tag limits
* address ivan's comments
* remove rename, refactor header, implement new designs for save, remove responsive tag container
* update styling
* update styling
* implement responsive tag container
* implement header tags edit
* implement header tags edit
* fix lint issues
* implement expandable input
* minor fixes
* minor fixes
* use variable
* rename save as
* duplicate fixes
* minor edit fixes
* lint fixes
* style fixes
* hook up saving name
* hook up tags
* clean up impl
* fix dirty state bug
* update limit
* update notification messages
* on click outside
* fix minor bug with count
* lint fixes
* handle minor edge cases
* handle minor edge cases
* handle minor bugs; fix firefox dropdown issue
* Fix min width
* apply tags only after api success
* remove count fix
* clean up workflow tags impl, fix tags delete bug
* fix minor issue
* fix minor spacing issue
* disable wrap for ops
* fix viewport root; save on click in dropdown
* save button loading when saving name/tags
* implement max width on tags container
* implement cleaner create experience
* disable edit while updating
* codacy hex color
* refactor tags container
* fix clickability
* fix workflow open and count
* clean up structure
* fix up lint issues
* fix button size
* increase workflow name limit for larger screen
* tslint fixes
* disable responsiveness for workflow modal
* rename event
* change min width for tags
* clean up pr
* address max's comments on styles
* remove success toasts
* add hover mode to name
* minor fixes
* refactor name preview
* fix name input not to jiggle
* finish up name input
* Fix up add tags
* clean up param
* clean up scss
* fix resizing name
* fix resizing name
* fix resize bug
* clean up edit spacing
* ignore on esc
* fix input bug
* focus input on clear
* build
* fix up add tags clickablity
* remove scrollbars
* move into folders
* clean up multiple patch req
* remove padding top from edit
* update tags on enter
* build
* rollout blur on enter behavior
* rollout esc behavior
* fix tags bug when duplicating tags
* move key to reload tags
* update header spacing
* build
* update hex case
* refactor workflow title
* remove unusued prop
* keep focus on error, fix bug on error
* Fix bug with name / tags toggle on error
* fix connection push bug
* :spakles: Implement wait functionality
* 🐛 Do not delete waiting executions with prune
* ⚡ Improve SQLite migration to not lose execution data anymore
* ⚡ Make it possible to restart waiting execution via webhook
* ⚡ Add missing file
* 🐛 Some more merge fixes
* ⚡ Do not show error for Wait-Nodes if in time-mode
* ⚡ Make $executionId available in expressions
* 👕 Fix lint issue
* 👕 Fix lint issue
* 👕 Fix lint issue
* ⚡ Set the unlimited sleep time as a variable
* ⚡ Add also sleeping webhook path to config
* ⚡ Make it possible to retrieve restartUrl in workflow
* ⚡ Add authentication to Wait-Node in Webhook-Mode
* ⚡ Return 404 when trying to restart execution via webhook which does
not support it
* ✨ Make it possible to set absolute time on Wait-Node
* ⚡ Remove not needed imports
* ⚡ Fix description format
* ✨ Implement missing webhook features on Wait-Node
* ⚡ Display webhook variable in NodeWebhooks
* ⚡ Include also date in displayed sleep time
* ⚡ Make it possible to see sleep time on node
* ⚡ Make sure that no executions does get executed twice
* ⚡ Add comment
* ⚡ Further improvements
* ⚡ Make Wait-Node easier to use
* ✨ Add support for "notice" parameter type
* Fixing wait node to work with queue, improved logging and execution view
* Added support for mysql and pg
* ✨ Add support for webhook postfix path
* ✨ Make it possible to stop sleeping executions
* ⚡ Fix issue with webhook paths in not webhook mode
* ⚡ Remove not needed console.log
* ⚡ Update TODOs
* ⚡ Increase min time of workflow staying active to descrease possible issue
with overlap
* 👕 Fix lint issue
* 🐛 Fix issues with webhooks
* ⚡ Make error message clearer
* ⚡ Fix issue with missing execution ID in scaling mode
* Fixed execution list to correctly display waiting executins
* Feature: enable webhook wait workflows to continue after specified time
* Fixed linting
* ⚡ Improve waiting description text
* ⚡ Fix parameter display issue and rename
* ⚡ Remove comment
* ⚡ Do not display webhooks on Wait-Node
* Changed wording from restart to resume on wait node
* Fixed wording and inconsistent screen when changing resume modes
* Removed dots from the descriptions
* Changed docs url and renaming postfix to suffix
* Changed names from sleep to wait
* ⚡ Apply suggestions from ben
Co-authored-by: Ben Hesseldieck <1849459+BHesseldieck@users.noreply.github.com>
* Some fixes by Ben
* ⚡ Remove console.logs
* ⚡ Fixes and improvements
Co-authored-by: Mutasem <mutdmour@gmail.com>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Ben Hesseldieck <b.hesseldieck@gmail.com>
Co-authored-by: Ben Hesseldieck <1849459+BHesseldieck@users.noreply.github.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
* 🐛 fix db connection check
* 👕 fix missing semi
* ⏪ Revert "🐛 Hardcode typeorm@0.2.34 as new version makes health-check fail"
This reverts commit ddee2ec47c.
* 🐛 fix health-check in WebhookServer
* 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
* Added webhooks service and setting to disable webhooks from main process
* Fixed executions list when running with queues. Now we get the list of actively running workflows from bull.
* Add option to disable deregistration of webhooks on shutdown
* Rename WEBHOOK_TUNNEL_URL to WEBHOOK_URL keeping backwards compat.
* Added auto refresh to executions list
* Improvements to workflow stop process when running with queues
* Refactor queue system to use a singleton and avoid code duplication
* Improve comments and remove unnecessary commits
* Remove console.log from vue file
* Blocking webhook process to run without queues
* Handling execution stop graciously when possible
* Removing initialization of all workflows from webhook process
* Refactoring code to remove code duplication for job stop
* Improved execution list to be more fluid and less intrusive
* Fixing workflow name for current executions when auto updating
* ⚡ Right align autorefresh checkbox
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>