Story: [PAY-846](https://linear.app/n8n/issue/PAY-846) | Related:
https://github.com/n8n-io/n8n/pull/7225
For the S3 backend for external storage of binary data and execution
data, the `getAsStream` method in the binary data manager interface used
by FS and S3 will need to become async. This is a breaking change for
nodes-base.
Depends on: #7092 | Story:
[PAY-768](https://linear.app/n8n/issue/PAY-768)
This PR:
- Generalizes the `IBinaryDataManager` interface.
- Adjusts `Filesystem.ts` to satisfy the interface.
- Sets up an S3 client stub to be filled in in the next PR.
- Turns `BinaryDataManager` into an injectable service.
- Adjusts the config schema and adds new validators.
Note that the PR looks large but all the main changes are in
`packages/core/src/binaryData`.
Out of scope:
- `BinaryDataManager` (now `BinaryDataService`) and `Filesystem.ts` (now
`fs.client.ts`) were slightly refactored for maintainability, but fully
overhauling them is **not** the focus of this PR, which is meant to
clear the way for the S3 implementation. Future improvements for these
two should include setting up a backwards-compatible dir structure that
makes it easier to locate binary data files to delete, removing
duplication, simplifying cloning methods, using integers for binary data
size instead of `prettyBytes()`, writing tests for existing binary data
logic, etc.
---------
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Github issue / Community forum post (link here to close automatically):
https://github.com/n8n-io/n8n/pull/6348
---------
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Marcus <marcus@n8n.io>
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
* fix(Postgres Node): For select queries, empty result should be be replaced with `{"success":true}`
* ⚡ less checks
---------
Co-authored-by: Michael Kret <michael.k@radency.com>
* fix(core): Make node execution order configurable, and backward-compatible
* ⚡ Also add new Merge-Node behaviour
* ⚡ Fix typo
* Fix lint issue
* update labels
* rename legacy to v0
* remove the unnecessary log
* default all new workflows to use v1 execution-order
* remove the controller changes
* clone default settings to avoid it getting modified
---------
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
* rename sendinblue to brevo
* refactor sendinblue node files/folders to brevo
* update codex node, documentation urls and api baseUrls
* adding comments to original node names
* First node set up.
* Progress: all Resources and Operations updated
* Upsates to all resources.
* Updated tooltip for Tweet > Search > Tweet fields.
* Upodate to resource locator items in User > Search.
* Added e.g. to placeholders and minor copy tweaks.
* Fixed Operations sorting.
* Added a couple of operations back.
* Removed 'Authorized API Call'.
* Remove authorization header when empty
* Import pkce
* Add OAuth2 with new grant type to Twitter
* Add pkce logic auto assign authorization code if pkce not defined
* Add pkce to ui and interfaces
* Fix scopes for Oauth2 twitter
* Deubg + pass it through header
* Add debug console, add airtable cred
* Remove all console.logs, make PKCE in th body only when it exists
* Remove invalid character ~
* Remove more console.logs
* remove body inside query
* Remove useless grantype check
* Hide oauth2 twitter waiting for overhaul
* Remove redundant header removal
* Remove more console.logs
* Add V2 twitter
* Add V1
* Fix description V1, V2
* Fix description for V1
* Add Oauth2 request
* Add user lookup
* Add search username by ID
* Search tweet feat
* Wip create tweet
* Generic function for returning ID
* Add like and retweet feat
* Add delete tweet feat
* Fix Location tweets
* Fix type
* Feat List add members
* Add scopes for dm and list
* Add direct message feature
* Improve response data
* Fix regex
* Add unit test to Twitter v2
* Fix unit test
* Remove console.logs
* Remove more console.logs
* Handle @ in username
* Minor copy tweaks.
* Add return all logic
* Add error for api permission error
* Update message api error
* Add error for date error
* Add notice for TwitterOAuth2 api link
* Fix display names location
* fix List RLC
* Fix like endpoint
* Fix error message check
* fix(core): Fix OAuth2 callback for grantType=clientCredentials
* Improve fix for callback
* update pnpm
* Fix iso time for end time
* sync oauth2Credential
* remove unused codeVerifer in Server.ts
* Add location and attachments notice
* Add notice to oauth1
* Improve notice for twitter
* moved credentials notice to TwitterOAuth1Api.credentials.ts
---------
Co-authored-by: agobrech <ael.gobrecht@gmail.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Co-authored-by: Marcus <marcus@n8n.io>
* Draft setup
* ⚡ Implemented expression evaluation in Postgres node, minor SQL editor UI improvements, minor refacring
* ⚡ Added initial version of expression preview for SQL editor
* ⚡ Linking npm package for codemirror sql grammar instead of a local file
* ⚡ Moving expression editor wrapper elements to the component
* ⚡ Using expression preview in SQL editor
* Use SQL parser skipping whitespace
* ✨ Added support for custom skipped segments specification
* ✨ Fixing highlight problems with dots and expressions that resolve to zero
* 👕 Fixing linting error
* ✨ Added current item support
* ⚡ Added expression support to more nodes with sql editor
* ✨ Added expression support for other nodes
* ✨ Implemented different SQL dialect support
* 🐛 Fixing hard-coded parameter names for editors
* ✨ Fixing preview for nested queries, updating query when input data changes, adding keyboard shortcut to toggle comments
* ✨ Adding a custom automcomplete notice for different editors
* ⚡ Updating SQL autocomplete notice
* ✅ Added unit tests for SQL editor
* ⚡ Using latest grammar
* 🐛 Fixing code node editor rendering
* 💄 SQL preview dropdown matches editor width. Removing unnecessary css
* ⚡ Addressing PR review feedback
* 👌 Addressing PR review feedback pt2
* 👌 Added path alias for utils in nodes-base package
* 👌 Addressing more PR review feedback
* ✅ Adding tests for `getResolvables` utility function
* ⚡Fixing lodash imports
* 👌 Better focus handling, adding more plugins to the editor, other minor imrovements
* ⚡ Not showing SQL autocomplete suggestions inside expressions
* ⚡ Using npm package for sql grammar
* ⚡ Removing autocomplete notice, adding line highlight on syntax error
* 👌 Addressing code review feedback
---------
Co-authored-by: Milorad Filipovic <milorad@n8n.io>
* Remove authorization header when empty
* Import pkce
* Add OAuth2 with new grant type to Twitter
* Add pkce logic auto assign authorization code if pkce not defined
* Add pkce to ui and interfaces
* Fix scopes for Oauth2 twitter
* Deubg + pass it through header
* Add debug console, add airtable cred
* Remove all console.logs, make PKCE in th body only when it exists
* Remove invalid character ~
* Remove more console.logs
* remove body inside query
* Remove useless grantype check
* Hide oauth2 twitter waiting for overhaul
* Remove redundant header removal
* Remove more console.logs
* Add comment for code verifier
* Remove uneeded scopes
* Restore client id in callback
* Revert "Add OAuth2 with new grant type to Twitter"
This reverts commit 1c3b331aa1.
* Remove oauth2 from twitter
* Remove properties linked to oauth2
* Fix lodash imports
* remove redundant check
* remove redundant codeVerifier
* patch pkce-challenge to avoid generating `code_verifier` with `~`
* store `codeVerifier` on the DB like `csrfSecret`
* remove unrelated changes
---------
Co-authored-by: Marcus <marcus@n8n.io>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
* first commit for postgres migration
* (not working)
* sqlite migration
* quicksave
* fix tests
* fix pg test
* fix postgres
* fix variables import
* fix execution saving
* add user settings fix
* change migration to single lines
* patch preferences endpoint
* cleanup
* improve variable import
* cleanup unusued code
* Update packages/cli/src/PublicApi/v1/handlers/workflows/workflows.handler.ts
Co-authored-by: Omar Ajoue <krynble@gmail.com>
* address review notes
* fix var update/import
* refactor: Separate execution data to its own table (#6323)
* wip: Temporary migration process
* refactor: Create boilerplate repository methods for executions
* fix: Lint issues
* refactor: Added search endpoint to repository
* refactor: Make the execution list work again
* wip: Updating how we create and update executions everywhere
* fix: Lint issues and remove most of the direct access to execution model
* refactor: Remove includeWorkflowData flag and fix more tests
* fix: Lint issues
* fix: Fixed ordering of executions for FE, removed transaction when saving execution and removed unnecessary update
* refactor: Add comment about missing feature
* refactor: Refactor counting executions
* refactor: Add migration for other dbms and fix issues found
* refactor: Fix lint issues
* refactor: Remove unnecessary comment and auto inject repo to internal hooks
* refactor: remove type assertion
* fix: Fix broken tests
* fix: Remove unnecessary import
* Remove unnecessary toString() call
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
* fix: Address comments after review
* refactor: Remove unused import
* fix: Lint issues
* fix: Add correct migration files
---------
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
* remove null values from credential export
* fix: Fix an issue with queue mode where all running execution would be returned
* fix: Update n8n node to allow for workflow ids with letters
* set upstream on set branch
* remove typo
* add nodeAccess to credentials
* fix unsaved run check for undefined id
* fix(core): Rename version control feature to source control (#6480)
* rename versionControl to sourceControl
* fix source control tooltip wording
---------
Co-authored-by: Romain Minaud <romain.minaud@gmail.com>
* fix(editor): Pay 548 hide the set up version control button (#6485)
* feat(DebugHelper Node): Fix and include in main app (#6406)
* improve node a bit
* fixing continueOnFail() ton contain error in json
* improve pairedItem
* fix random data returning object results
* fix nanoId length typo
* update pnpm-lock file
---------
Co-authored-by: Marcus <marcus@n8n.io>
* fix(editor): Remove setup source control CTA button
* fix(editor): Remove setup source control CTA button
---------
Co-authored-by: Michael Auerswald <michael.auerswald@gmail.com>
Co-authored-by: Marcus <marcus@n8n.io>
* fix(editor): Update source control docs links (#6488)
* feat(DebugHelper Node): Fix and include in main app (#6406)
* improve node a bit
* fixing continueOnFail() ton contain error in json
* improve pairedItem
* fix random data returning object results
* fix nanoId length typo
* update pnpm-lock file
---------
Co-authored-by: Marcus <marcus@n8n.io>
* feat(editor): Replace root events with event bus events (no-changelog) (#6454)
* feat: replace root events with event bus events
* fix: prevent cypress from replacing global with globalThis in import path
* feat: remove emitter mixin
* fix: replace component events with event bus
* fix: fix linting issue
* fix: fix breaking expression switch
* chore: prettify ndv e2e suite code
* fix(editor): Update source control docs links
---------
Co-authored-by: Michael Auerswald <michael.auerswald@gmail.com>
Co-authored-by: Marcus <marcus@n8n.io>
Co-authored-by: Alex Grozav <alex@grozav.com>
* fix tag endpoint regex
---------
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Romain Minaud <romain.minaud@gmail.com>
Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
Co-authored-by: Marcus <marcus@n8n.io>
Co-authored-by: Alex Grozav <alex@grozav.com>
* Create new version for S3
* Update S3 to new aws s3 methods
* Switch from SAOP to Rest api
* Add multipart request
* Seperate stream into chunks and send the multipart
* Fix chunk into buffer
* Fix wrong sha256 mismatch
* Add abort multipart on error
* Complete multipart and list parts
* Change format to xml and add a minmum size of 5MB for each part
* Fix returned data for uploading a file
* Remove console.logs
* Seperate needed headers and multipart headers
* Throw error on aborting, remove console.logs
* Remove soap request from generic function
* Keep buffer
* Add unit test for V2
* fix upload file content body
* removed unused import
* Fix bug where the object was too smal and used only one part
* Fix naming for bucket name
* Fix issue with file name not returning data
* Add parent name
* Remove console.logs
* Add content type
* fix headears for other upload mode
---------
Co-authored-by: Marcus <marcus@n8n.io>
* Handle conversion to correct unix format
* Fix intervals, ranges for months
* fix regex to match 10, 11, 12
---------
Co-authored-by: Marcus <marcus@n8n.io>
* Boilerplate for PostgresTrigger
* Create trigger function as a query
* Add additional fields to customize trigger query
* Add customizable channel name && operation name
* Add concat () for function name
* Add hints and placeholders
* Add resource Locator to trigger postgres
* Add the ability for knowing trigger event
* Throw error for same function name
* Remove console.logs
* Remove schema from Chanel notifcation mode
* Add UUID and save trigger in workflow static data drop function
* Fix bug where wrongfully casted result in pgl
* Correctly drops the resources when manually executing the trigger
* Remove manual execution with special interaction
* Remove console.logs
* ♻️ Move related trigger functions to new file
* fix target using 'schema."tableName"' in quotes
To support targets with Uppercase table names
* Remove static Data and use node id for uuid
* Update deleting of the trigger and function
* Fix regex expression for channel name
* Change to drop cascade the trigger function
* Replace functions on restart if no name has been defined
* Parse payload result
* Improve handling with hyphens in names
* Remove duplicate code and clean up
* Add payload on delete
* Fix rlc
* fixing uppercase tableName
* fix multiple triggers/connections issues
* fixing rlc pgp.end() issues
* unify pgp init db method
* drop trigger only in createTrigger mode
---------
Co-authored-by: Marcus <marcus@n8n.io>
* ci: Start supporting Node.js 18
Node.js 18 became the active LTS on 2022-10-25, and Node.js 16 went into maintenance mode.
https://github.com/nodejs/Release#release-schedule
We should also slowly deprecate node 16 support, [as support for it is ends much earlier now, due to support for openssl 1.1.1 ending](https://nodejs.org/en/blog/announcements/nodejs16-eol).
* Remove hashing algorithms that are not available in newer node.js/openssl
- RSA-MD4
- RSA-MDC2
- md4
- md4WithRSAEncryption
- mdc2
- mdc2WithRSA
* in e2e tests, resolve `localhost` to ipv4 instead of ipv6
* Add later in workflow mode
* Add new operation
* Acknowledge message in next node
* Add response and emit for responsePromiseHook
* Remove double success message, close channel correctly
* Answser messages correctly
* Remove option from delete operation
* move operation name to camelCase
* Fix versioning
* To remove: add action item in v1
* Add notice for delete from queue
* Correctly only execute only the delete operation
* Refactor delete from queue operator and add return last items
---------
Co-authored-by: Marcus <marcus@n8n.io>
* Setup versionized node
* Fix node naming
* Set all possible actions
* Add Current Date operation
* Add timezone to current date
* feat add to date operator
* Change output field name to camel case
* Fix info box for luxons tip
* Feat subtract to date operation
* Feat format date operation
* Fix to node field for format date
* Feat rounding operation
* Feat get in between date operation
* Feat add extract date operation
* Add generic function for parsing date
* Remove moment methods from operations
* Change moment to luxon for the rest of the operations
* Fix Format date operation
* Fix format value
* Add timezone option for current date
* Add tests, improve workflow settings for testing, toString the results
* Change icon for V2
* Revert "Change icon for V2"
This reverts commit 46b59bea2e.
* Change workflow test name
* Fix ui bug for custom format
* Fix default value for format operation
* Fix info box for rounding operation
* Change default for units for between time operation
* Inprove fields and resort time units
* Fix extract week number
* Resolve issue with formating and timezones
* Fix field name and unit order
* ⚡ restored removed test case, sync v1 with curent master
* ⚡ parseDate update to support timestamps, tests
* Keep same field for substract and add time
* Update unit test
* Improve visibility, add iso to string option
* Update option naming
---------
Co-authored-by: Michael Kret <michael.k@radency.com>
* 🎨 Change current defualt ressource to contact
* Change display name for list membership
* 🎨 Change display name for ressource properties
* 🔥 Remove Name & ID in Display name
* 🐛 Fix simplify data where behavior was wrong
* 🎨 Move simplfy output to additional fields
* Change data type from string to number for IDs
* Add tooltip for contact ID
* 🎨 Change tooltip for list of Id's
* Change name of fields and reorgaized options
* 🥅 Add clearer errors for some specific cases
* 🎨 changed filters in Deal get all
* Deprecate form ressource
* ✨ add pipeline dropdown to auto fetch
* 🎨 Change direction's name
* 🎨 Change description of filter groups
* 🎨 Add validation and errors for maximum filters
* ✨ Add ressource locator to all ressources
* 🎨 add tooltip for timestamp when using expressions
* ✨add versioning
* 🐛 fixes small bugs and ui problems
* remove show options that was breaking custom prop
* ✨ add ownership to deals
* ✨ add notice for credential depreciation
* 🎨 Refactor names for RLC
* 🎨 Fixes to Deal
* ✨ Inprove delete confirmation message
* 🎨 Fixe titles of fields
* 🎨 Fixe correct ressource hint
* 🎨 Improve error when requesting non existing ressource
* ⚡️ Improve get deal
* ✨ Improve search by domain for companies
* ✨ Improve getting recently created deals
* 🎨 Improve versioning file structure
* 🥅 Improve error for unknown ids
* ✨ Add filters to recently search for companies
* ✨ Uniformize including properties for contact
* ✨ Improve get all operation for Companies
* 🎨 Change filters name
* 🎨 Remove useless descriptions
* 🎨Improve description
* ✨ Dynamically retrieve the correct operator for the properties
* 🥅 Improve error handeling
* 🥅 improve error when not finding the id
* ⚡️Add searchable feature to Deal and contacts
* 🚨 Fix linting issues
* 🚨 Fix linting issues for V1 Hubspot
* 🐛 Fix pairedItem for v2 hubspot
* 🚨 Fix linting in HubSpot Description
* 🚨 More linting fixes
* Fix error handling
* Update endpoint for deleting object
* Fix label for recent actions
* 🐛 fix listMemberships typo in V1 and V2
* docs: Stop assuming the user's gender in code comments (after merge)
c87262a312
* fixing V1 GenericFunctions.ts api query limit as number
* Update description for ticket
* Add type to RLC
* Revert "Add type to RLC"
This reverts commit 578dacfb97.
* Add type to RLC engagement
---------
Co-authored-by: Marcus <marcus@n8n.io>
* ✅ add Read Binary Files tests
* ⚡️updated ReadBinaryFiles test
* fix test result comparison
* fix test result comparison
---------
Co-authored-by: Michael Kret <michael.k@radency.com>
* Fix broken logic with type action
* Unit test base
* Add unit test using only nock
* Fix failing test
* remove console log
---------
Co-authored-by: Marcus <marcus@n8n.io>
* feat(editor): Add support for `loadOptionsDependsOn` to the Resource Locator component
* 🔥 Removing leftover log
* ✅ Added e2e tests for ResourceLocator component
* 🐛 Change request to follow new API version
* Extract urn from response header
* Change body params for image and media request
* Fix body for Image and Article posts
* remove console log
---------
Co-authored-by: Marcus <marcus@n8n.io>
* ✨ Add basic QuickChart node
* 🏷️ Fix up types
* ❇️ Add Boxplot and Violin
* ❇️ Add point styles
* ❇️ Add horizontal charts
* ⚡ Make possible to provide array of labels via expressions
* ⚡ Improvements
* ⚡ Improvements
* 🎨 fix lint errors
* ⚡️disable chart types we don't want to support in P0
* ⚡️support setting labels manually or using an array
* ⚡️move Horizontal parameter into options
* ⚡️ update "Put Output In Field" param description and hint
* ⚡️ removed font color
* ⚡️fix Device Pixel Ratio
* ⚡️fix Polar Chart not working
* ⚡️Show Fill param only for charts supporting it
* ⚡️Show pointStyle param only for charts supporting it
* ⚡️remove second "Chart Type" option
* ⚡ updated error message, added json data, updated description
* Add codex json file
* ✅ add unit test
* ✅ improve unit test
* ⚡ removed any, added aliases
---------
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
Co-authored-by: Marcus <marcus@n8n.io>
Co-authored-by: Michael Kret <michael.k@radency.com>
* ✨ Change from binary buffer to binary streaming
* Remove console.logs
* Import Readable from the correct lib
* stream response
* parametersToKeyValue doesn't need to be async anymore
* Fix bodyParameter reduce method
* parametersToKeyValue doesn't need to be async anymore
* handle streaming responses
* send `Content-Length` and `Content-Type` on binary requests
* Add new helper function for binary data
* Add binary function to helpers interface
* Fix bug in error handler
* Fix issue with wrongfully assigned headers to body
* Fix test workflow
* Remove console.logs
* Remove unnecsessary type
* Remove concat dependency already imported in workflow package
* Update pnpm-lock file
* Small fixes, asyncronous error message
* reset the lockfile
* Remove buffer check and simplify error handling
---------
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
* Remove brackets and double quotes from fieldname
* Fix bug with duplicate field
* Parse field names from splitbyfield
* Fix error with field name remove console.logs
* Add versioning to itemlist
* Fix naming
* Remove comment
* ✨ Add requiresDataPath to Set
* Add Data path mapping to rename keys
* Add required path name to airtable
* Add required data path
* Add required data path to airtable trigger
* Fix multiple keyword for required path
* ⚡️use multiple for Airtable ignore fields
---------
Co-authored-by: Marcus <marcus@n8n.io>
* ⚡️wip
* ⚡️RLC Search Function for getUsers and getRepositories
* 🐛fix Repository RLC by name url
* 🐛 search method getRepositories include forks
* 🐛 fix repository name can have a dot
* 🐛 fix RLC extractValue without optional
* 🎨 fix linting errors
* 🎨 using prefix 'e.g.' in RLC placeholders
---------
Co-authored-by: Michael Kret <michael.k@radency.com>
* ✨ Add tests to DateTime node
* Test different timezone
* Try new fix
* Fix workflow change time of workflow exec in UTC
* Check if UTC is correctly setup
---------
Co-authored-by: Marcus <marcus@n8n.io>
* ⚡ test setup
* ⚡️basic test with run once for all and each items
* 🎨 fix linting error
* ⚡️update to new Helper.setup(tests)
* ⚡ migrate tests to pin data approach
* ⚡️test setup
* ⚡️fix 'testData' implicitly has an 'any' type.
* ✅ test github action file binary data reading
* ✅ checking for output binary equality
* ✅ writing files to different formats
* ✅ reading spreadsheet with different options
* ⚡️improve workflow file path replacement
* 🐛 fixing string.at() not supported in node 14.
* 🐛 trying to fix github action test error
* ⚡ fix for empty binary
* ⚡ switch for binary test
* ⚡️test helpers now return/compare json and binary (if not empty))
* ⚡ removed commented console log
---------
Co-authored-by: Michael Kret <michael.k@radency.com>
* 🐛Fix scheduler for intervals days and week
* ♻️ Simplify and move recurrency rules outside trigger node
* Remove async and promise from recurency rule
* Update correctly the Static data when using recurrency Rule
* Fix logic when recurrency is activated
* 🎨 Remove useless staticData fix(passed by reference)
* 🐛 remove duplicted hour cronJob leading to 2 executions
* More fixes, handles multiple execution
* 🐛 fixing dayOfYear recurency check
* 🐛 fix recurency check for hours/days should not equal lastExecution
* Add month interval to the scheduler
* Fix flawed logic for comparing interval
* 🚨 Fix lint issue type
---------
Co-authored-by: Marcus <marcus@n8n.io>
* feat: add data path flag
* chore: update types
* feat: use path for data
* feat: add support for multiple values
* fix: handle if not prev node
* fix: update node
* fix: handle multi part path
* feat: add support for multiple vals for field
* feat: add support for table transforms
* feat: use dot notation
* feat: fix bug where brackets removed
* fix: handle dots, fix unit tests
* test: update snapshot
* test: fix tests
* test: add test for edge case
* feat(Telegram Trigger node, Shopify Trigger node): Change display name of Telegram and Shopify trigger nodes
* Remove trigger on tooltips for Telegram and Shopify trigger nodes
* Add telegram action override and make sure recommended category actions are overwritable
* refactor(core): Add more overloads for string-type node parameter (no-changelog)
continued from https://github.com/n8n-io/n8n/pull/4797
* include binaryPropertyOutput
* use streams to upload files to google drive
* use streams to download files from google drive
* use resumable uploads api for google drive
* avoid dangling promises, and reduce memory usage in error logging
* ✨ Create rule `no-unneeded-backticks`
* 👕 Enable rule
* ⚡ Run rule on `cli`
* ⚡ Run rule on `core`
* ⚡ Run rule on `workflow`
* ⚡ Rule rule on `design-system`
* ⚡ Run rule on `node-dev`
* ⚡ Run rule on `editor-ui`
* ⚡ Run rule on `nodes-base`
* add or update documentation URLs for all credentials
* add UTM params to documentation urls even when they are absolute urls
* Setup a CI job to validate documentation urls after every release
* Fix FacebookGraphApi documentation URL
* also validate node documentation urls
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
* Added 'M' type to decode attribute for dynamodb
* Fixed bug with return all. Headers from the previous iteration were being passed causing an invalid signature error
* feat(OpenAI Node): Add a node to work with OpenAI
* Added codex file for OpenAi node
* Minor tweaks to Operation Image.
* Minor tweaks to Resource Text.
* Minor copy modification to Image:Create.
* Removed "a Text" in Text operations names.
* ⚡ Connect Response Format parameter and other improvements
* ✨ Add "filter" postReceiveAction
* ⚡ Rename operations and add spelling mistake again to example
* ⚡ Rename another operation
Co-authored-by: Jonathan Bennetts <jonathan.bennetts@gmail.com>
Co-authored-by: Giulio Andreini <andreini@netseven.it>
* stringify objects before encoding them objects in MoveBinaryData
* add fileSize and fileType on MoveBinaryData converted data
* show `view` option for text files as well
* improve how JSON binary data is shown in the UI
* WIP: Node Actions List UI
* WIP: Recommended Actions and preseting of fields
* WIP: Resource category
* 🎨 Moved actions categorisation to the server
* 🏷️ Add missing INodeAction type
* ✨ Improve SSR categorisation, fix adding of mixed actions
* ♻️ Refactor CategorizedItems to composition api, style fixes
* WIP: Adding multiple nodes
* ♻️ Refactor rest of the NodeCreator component to composition API, conver globalLinkActions to composable
* ✨ Allow actions dragging, fix search and refactor passing of actions to categorized items
* 💄 Fix node actions title
* Migrate to the pinia store, add posthog feature and various fixes
* 🐛 Fix filtering of trigger actions when not merged
* fix: N8N-5439 — Do not use simple node item when at NodeHelperPanel root
* 🐛 Design review fixes
* 🐛 Fix disabling of merged actions
* Fix trigger root filtering
* ✨ Allow for custom node actions parser, introduce hubspot parser
* 🐛 Fix initial node params validation, fix position of second added node
* 🐛 Introduce operations category, removed canvas node names overrride, fix API actions display and prevent dragging of action nodes
* ✨ Prevent NDV auto-open feature flag
* 🐛 Inject recommened action for trigger nodes without actions
* Refactored NodeCreatorNode to Storybook, change filtering of merged nodes for the trigger helper panel, minor fixes
* Improve rendering of app nodes and animation
* Cleanup, any only enable accordion transition on triggerhelperpanel
* Hide node creator scrollbars in Firefox
* Minor styles fixes
* Do not copy the array in rendering method
* Removed unused props
* Fix memory leak
* Fix categorisation of regular nodes with a single resource
* Implement telemetry calls for node actions
* Move categorization to FE
* Fix client side actions categorisation
* Skip custom action show
* Only load tooltip for NodeIcon if necessary
* Fix lodash startCase import
* Remove lodash.startcase
* Cleanup
* Fix node creator autofocus on "tab"
* Prevent posthog getFeatureFlag from crashing
* Debugging preview env search issues
* Remove logs
* Make sure the pre-filled params are update not overwritten
* Get rid of transition in itemiterator
* WIP: Rough version of NodeActions keyboard navigation, replace nodeCreator composable with Pinia store module
* Rewrite to add support for ActionItem to ItemIterator and make CategorizedItems accept items props
* Fix category item counter & cleanup
* Add APIHint to actions search no-result, clean up NodeCreatorNode
* Improve node actions no results message
* Remove logging, fix filtering of recommended placeholder category
* Remove unused NodeActions component and node merging feature falg
* Do not show regular nodes without actions
* Make sure to add manual trigger when adding http node via actions hint
* Fixed api hint footer line height
* Prevent pointer-events od NodeIcon img and remove "this" from template
* Address PR points
* Fix e2e specs
* Make sure canvas ia loaded
* Make sure canvas ia loaded before opening nodeCreator in e2e spec
* Fix flaky workflows tags e2e getter
* Imrpove node creator click outside UX, add manual node to regular nodes added from trigger panel
* Add manual trigger node if dragging regular from trigger panel
* ⚡ enabled array-type
* ⚡ await-thenable on
* ⚡ ban-types on
* ⚡ default-param-last on
* ⚡ dot-notation on
* ⚡ member-delimiter-style on
* ⚡ no-duplicate-imports on
* ⚡ no-empty-interface on
* ⚡ no-floating-promises on
* ⚡ no-for-in-array on
* ⚡ no-invalid-void-type on
* ⚡ no-loop-func on
* ⚡ no-shadow on
* ⚡ ban-ts-comment re enabled
* ⚡ @typescript-eslint/lines-between-class-members on
* address my own comment
* @typescript-eslint/return-await on
* @typescript-eslint/promise-function-async on
* @typescript-eslint/no-unnecessary-boolean-literal-compare on
* @typescript-eslint/no-unnecessary-type-assertion on
* prefer-const on
* @typescript-eslint/prefer-optional-chain on
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
* 🐛 Fixes weekly schedule trigger and inconsitent behavior from Cron
* 🐛 Explicitly check if number of items is undefined
* 🐛 Add flag for first time execution
* Fix merge issues
* 🎨 Decomplexise logic for week interval
* fix: account for periods longer than minimum interval and first executions
Co-authored-by: Omar Ajoue <krynble@gmail.com>
* use resource locator component for database -> get (Notion V1/V2)
* getDatabases search function for V1/V2 with url
* updated database get list placeholder
* get database RLC by url - regex support optional workspace domain names
* fixed linting error
* listSearch getDatabases support filter query
* support extractValue in getCurrentNodeParameter for RLC
* RLC for database page create/getAll operation
* RLC for database get operation support "By ID" with optional v param.
* use RLC in append blocks operation
* use RLC in NotionTrigger.nodes.ts
* removed unused loadOptions getDatabases
* support database RLC in createPage/createDbPage operation
* page create operation use RLC for parent page param
* page archive operation use RLC for page param
* removed unused imports
* fixed missing extractPageId in NotionV1.node.ts
* database page get operation use RLC for page param
* database page update operation use RLC for page param
* block getAll children operation use RLC for page param
* block append operation use RLC for block param
* support databaseId with optional '-' characters
* support blockId with optional '-' characters
* support pageId with optional '-' characters
* improved RLC descriptions and hints
* NotionTrigger node support databseId with optional '-' characters
* stricter RLC by ID regex rules for uuids
* stricter RLC by URL regex rules for uuids
* stricter RLC by ID regex rules for uuids (support max length)
* RLC regex from URL allow both http and https
* RLC by ID only allow uuid v4 with optional dash
* removed RLC from URL hint "Use Notion's copy link..."
* RLC from URL only allow uuid v4
* DB Status Column: Support Simplify Properties
* Notion Credentials: Support custom Notion-Version header
Use latest Notion-Version 2022-02-22 if not set
* DB Status Column: Support DB Page Create/Update
* DB Status Column: Support DB Page GetMany Filters
* removed unused paginationToken args
* Database Get: RLC by URL improve validation error message
* 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
* fix(core): make `deepCopy` backward compatible
`JSON.parse(JSON.stringify())` uses `.toJSON` when available. so should `deepCopy`
* fix(core): prevent double quotes on luxon datetimes (#4508)
* 🐛 Prevent double quotes on luxon datetimes
* ⚡ Generalize solution
* update the types in packages/workflow/src/utils.ts
* add `toJSON` check to NodeErrors.isTraversableObject as well
* move the toJSON check before the cyclic dependency check
* fix(core): keep backward compatibility in deepCopy by calling `toJSON` on objects that have it
* fix(core): updating deepCopy typings
* Revert "fix(core): updating deepCopy typings"
This reverts commit 100a0f1f3d.
* fix(core): temporarily removing Date cloning from deepCopy
* fix(core): updating deepCopy types
* fix(core): updating deepCopy
* fix(core): updating deepCopy get prototype of object
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
* http node headers and query JSON parameter options added
* Query and Header added to option processing
* remove old set headers.
* ⚡ Small improvements
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
* 🐛 Fix bug when response doesn't include content type
* ⚡ Improve autodetect response format
* ⚡ Make content-type match more specific
* ⚡ Improve list of content-types to download
* ✨ Create Schedule node with MVP structure
* ✨ Add 24 increments for hours picker
* 🚨 Lintfix
* Add timestamp, add hour minute and cron expression
* Fix bug where there was one extra interval object
* Fix default value from fixedCollection
* 🐛 UI fixes
* 🎨 Changed logic to reflect UI fixes
* Fix auto intitialising
* Deprecated interval and cron in favor of schedule node
* 🐛 Ui fixes
* 🐛 Fix issue with week intervals
* 🚨 Lint fixes
* change order of days in the week to chronological order
* 🎨 change the order of the interval to chronological
* 🔥 delete schedule unused svg
* feat(ExecuteWorkflowTrigger node): Implement ExecuteWorkflowTrigger node (#4108)
* feat(ExecuteWorkflowTrigger node): Implement ExecuteWorkflowTrigger node
* feat(editor): Do not show duplicate button if canvas contains `maxNodes` amount of nodes
* feat(ManualTrigger node): Implement ManualTrigger node (#4110)
* feat(ManualTrigger node): Implement ManualTrigger node
* 📝 Remove generics doc items from ManualTrigger node
* feat(editor-ui): Trigger tab redesign (#4150)
* 🚧 Begin with TriggerPanel implementation, add Other Trigger Nodes subcategory
* 🚧 Extracted categorized categories/subcategory/nodes rendering into its own component — CategorizedItems, removed SubcategoryPanel, added translations
* ✨ Implement MainPanel background scrim
* ♻️ Move `categoriesWithNodes`, 'visibleNodeTypes` and 'categorizedItems` to store, implemented dynamic categories count based on `selectedType`
* 🐛 Fix SlideTransition for all the NodeCreato panels
* 💄 Fix cursos for CategoryItem and NodeItem
* 🐛 Make sure ALL_NODE_FILTER is always set when MainPanel is mounted
* 🎨 Address PR comments
* label: Use Array type for CategorizedItems props
* 🏷️ Add proper types for Vue props
* 🎨 Use standard component registration for CategorizedItems inside TriggerHelperPanel
* 🎨 Use kebab case for main-panel and icon component
* 🏷️ Improve types
* feat(editor-ui): Redesign search input inside node creator panel (#4204)
* 🚧 Begin with TriggerPanel implementation, add Other Trigger Nodes subcategory
* 🚧 Extracted categorized categories/subcategory/nodes rendering into its own component — CategorizedItems, removed SubcategoryPanel, added translations
* ✨ Implement MainPanel background scrim
* ♻️ Move `categoriesWithNodes`, 'visibleNodeTypes` and 'categorizedItems` to store, implemented dynamic categories count based on `selectedType`
* 🐛 Fix SlideTransition for all the NodeCreato panels
* 💄 Fix cursos for CategoryItem and NodeItem
* 🐛 Make sure ALL_NODE_FILTER is always set when MainPanel is mounted
* 🎨 Address PR comments
* label: Use Array type for CategorizedItems props
* 🏷️ Add proper types for Vue props
* 🎨 Use standard component registration for CategorizedItems inside TriggerHelperPanel
* ✨ Redesign search input and unify usage of categorized items
* 🏷️ Use lowercase "Boolean" as `isSearchVisible` computed return type
* 🔥 Remove useless emit
* ✨ Implement no result view based on subcategory, minor fixes
* 🎨 Remove unused properties
* feat(node-email): Change EmailReadImap display name and name (#4239)
* feat(editor-ui): Implement "Choose a Triger" action and related behaviour (#4226)
* ✨ Implement "Choose a Triger" action and related behaviour
* 🔇 Lint fix
* ♻️ Remove PlaceholderTrigger node, add a button instead
* 🎨 Merge onMouseEnter and onMouseLeave to a single function
* 💡 Add comment
* 🔥 Remove PlaceholderNode registration
* 🎨 Rename TriggerPlaceholderButton to CanvasAddButton
* ✨ Add method to unregister custom action and rework CanvasAddButton centering logic
* 🎨 Run `setRecenteredCanvasAddButtonPosition` on `CanvasAddButton` mount
* fix(editor): Fix selecting of node from node-creator panel by clicking
* 🔀 Merge fixes
* fix(editor): Show execute workflow trigger instead of workflow trigger in the trigger helper panel
* feat(editor): Fix node creator panel slide transition (#4261)
* fix(editor): Fix node creator panel slide-in/slide-out transitions
* 🎨 Fix naming
* 🎨 Use kebab-case for transition component name
* feat(editor): Disable execution and show notice when user tries to run workflow without enabled triggers
* fix(editor): Address first batch of new WF experience review (#4279)
* fix(editor): Fix first batch of review items
* bug(editor): Fix nodeview canvas add button centering
* 🔇 Fix linter errors
* bug(ManualTrigger Node): Fix manual trigger node execution
* fix(editor): Do not show canvas add button in execution or demo mode and prevent clicking if creator is open
* fix(editor): do not show pin data tooltip for manual trigger node
* fix(editor): do not use nodeViewOffset on zoomToFit
* 💄 Add margin for last node creator item and set font-weight to 700 for category title
* ✨ Position welcome note next to the added trigger node
* 🐛 Remve always true welcome note
* feat(editor): Minor UI and UX tweaks (#4328)
* 💄 Make top viewport buttons less prominent
* ✨ Allow user to switch to all tabs if it contains filter results, move nodecreator state props to its own module
* 🔇 Fix linting errors
* 🔇 Fix linting errors
* 🔇 Fix linting errors
* chore(build): Ping Turbo version to 1.5.5
* 💄 Minor traigger panel and node view style changes
* 💬 Update display name of execute workflow trigger
* feat(core, editor): Update subworkflow execution logic (#4269)
* ✨ Implement `findWorkflowStart`
* ⚡ Extend `WorkflowOperationError`
* ⚡ Add `WorkflowOperationError` to toast
* 📘 Extend interface
* ✨ Add `subworkflowExecutionError` to store
* ✨ Create `SubworkflowOperationError`
* ⚡ Render subworkflow error as node error
* 🚚 Move subworkflow start validation to `cli`
* ⚡ Reset subworkflow execution error state
* 🔥 Remove unused import
* ⚡ Adjust CLI commands
* 🔥 Remove unneeded check
* 🔥 Remove stray log
* ⚡ Simplify syntax
* ⚡ Sort in case both Start and EWT present
* ♻️ Address Omar's feedback
* 🔥 Remove unneeded lint exception
* ✏️ Fix copy
* 👕 Fix lint
* fix: moved find start node function to catchable place
Co-authored-by: Omar Ajoue <krynble@gmail.com>
* 💄 Change ExecuteWorkflow node to primary
* ✨ Allow user to navigate to all tab if it contains search results
* 🐛 Fixed canvas control button while in demo, disable workflow activation for non-activavle nodes and revert zoomToFit bottom offset
* :fix: Do not chow request text if there's results
* 💬 Update noResults text
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
* ✨ Create Schedule node with MVP structure
* ✨ Add 24 increments for hours picker
* 🚨 Lintfix
* Add timestamp, add hour minute and cron expression
* Fix bug where there was one extra interval object
* Fix default value from fixedCollection
* 🐛 UI fixes
* 🎨 Changed logic to reflect UI fixes
* Fix auto intitialising
* Deprecated interval and cron in favor of schedule node
* 🐛 Ui fixes
* 🐛 Fix issue with week intervals
* 🚨 Lint fixes
* change order of days in the week to chronological order
* add support for authenticate, test to RundeckApi Credentials
* ensure that the RunDeckApi note uses the authentication mechanism
defined incredentials
BREAKING CHANGE: The Merge node list of operations was rearranged.
Merge node: 'Combine' operation was added with 'Combine Mode' option, operations 'Merge By Fields', 'Merge By Position' and 'Multiplex' placed under 'Combine Mode' option.
To update -go to the workflows that use the Merge node, select 'Combine' operation and then choose an option from 'Combination Mode' that matches an operation that was previously used. If you want to continue even on error, you can set "Continue on Fail" to true.