Commit Graph

81 Commits

Author SHA1 Message Date
feelgood-interface
727f6f3c0e feat(Azure Storage Node): New node (#12536) 2025-02-28 11:17:56 +01:00
Charlie Kolb
5334661b76 fix(Call n8n Workflow Tool Node): Support concurrent invocations of the tool (#13526)
Co-authored-by: Oleg Ivaniv <me@olegivaniv.com>
2025-02-26 16:23:31 +01:00
कारतोफ्फेलस्क्रिप्ट™
d41ca832dc refactor(core): Move ExecutionLifecycleHooks to core (#13042) 2025-02-07 18:16:37 +01:00
कारतोफ्फेलस्क्रिप्ट™
f64c6bf9ac chore: Upgrade nock and delete nock related boilerplate code (no-changelog) (#12869) 2025-01-27 18:17:51 +01:00
Tomi Turtiainen
97e651433b test: Set N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false in nodes tests (#12762) 2025-01-22 08:52:02 +02:00
कारतोफ्फेलस्क्रिप्ट™
96ab5bc7e6 ci: Disable task runner for core and nodes tests (#12757) 2025-01-21 17:53:59 +01:00
कारतोफ्फेलस्क्रिप्ट™
05858c2153 refactor(core): Reorganize n8n-core and enforce file-name casing (no-changelog) (#12667) 2025-01-17 15:17:25 +01:00
Michael Kret
7227a29845 fix(Google Calendar Node): Updates and fixes (#10715)
Co-authored-by: Shireen Missi <94372015+ShireenMissi@users.noreply.github.com>
2025-01-10 11:16:29 +02:00
Jon
a56a46259d fix(Spotify Node): Fix issue with null values breaking the response (#12080) 2025-01-09 14:42:27 +00:00
feelgood-interface
3006ccf41b feat(Microsoft Entra ID Node): New node (#11779)
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
2025-01-08 11:49:26 +01:00
कारतोफ्फेलस्क्रिप्ट™
39d5e0ff87 refactor(core): Replace typedi with our custom DI system (no-changelog) (#12389)
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
2025-01-06 10:21:24 +01:00
कारतोफ्फेलस्क्रिप्ट™
bafac73eb5 refactor: Impose import/order linting rule across nodes packages (no-changelog) (#12314) 2024-12-19 18:46:14 +01:00
Elias Meire
5c445314f8 test(Gmail Node): Add test coverage (no-changelog) (#12278) 2024-12-18 15:09:23 +00:00
Jon
de75c7b529 test(Philips Hue Node): Add test coverage (no-changelog) (#12223) 2024-12-16 11:00:20 +00:00
Michael Kret
65b8e20049 fix(Notion Node): Tests (no-changelog) (#12196) 2024-12-13 11:06:19 +02:00
कारतोफ्फेलस्क्रिप्ट™
2d36b42798 fix(core): Fix supportedNodes for non-lazy loaded community packages (no-changelog) (#11329) 2024-12-10 14:48:39 +01:00
Jon
7ad4badd2d test(Telegram Node): Add some tests for Telegram (no-changelog) (#11043) 2024-12-02 19:02:08 +00:00
कारतोफ्फेलस्क्रिप्ट™
2104fa1733 refactor(core): Extract poll context out of NodeExecutionFunctions (no-changelog) (#11449) 2024-11-04 09:49:52 +01:00
feelgood-interface
785b47feb3 feat(Gong Node): New node (#10777) 2024-10-16 10:23:09 +01:00
Elias Meire
fc26c44f65 test(Gmail Trigger Node): Add tests (no-changelog) (#11076) 2024-10-03 12:59:15 +01:00
Elias Meire
f92637a9fe test(n8n Form Trigger Node): Add tests, extract testing util for webhook triggers (no-changelog) (#11023) 2024-10-01 10:40:43 +01:00
Elias Meire
0ff0f1aa11 test(Schedule Trigger Node): Add tests and extract trigger test helper (no-changelog) (#10625) 2024-09-27 16:53:00 +01:00
कारतोफ्फेलस्क्रिप्ट™
cef64329a9 refactor(core): Simplify createDeferredPromise, and add tests (no-changelog) (#10811) 2024-09-13 15:53:03 +02:00
कारतोफ्फेलस्क्रिप्ट™
80ebe774bc ci: Fix a flaky test (no-changelog) (#9851) 2024-06-24 18:52:10 +02:00
Jon
e1e8a75763 fix(AWS SES Node): Fix issue with email aliases not working for sending from or sending to (#9811)
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
2024-06-20 15:42:52 +01:00
कारतोफ्फेलस्क्रिप्ट™
e4463c62b4 refactor(core): Extract duplicate utility functions and add unit tests (no-changelog) (#9814) 2024-06-20 12:09:23 +02:00
Iván Ovejero
f94090b48c ci: Fix typecheck for nodes-base (no-changelog) (#9630) 2024-06-05 12:33:02 +02:00
कारतोफ्फेलस्क्रिप्ट™
2bdc459bb2 refactor(core): Fix type errors in workflow, core, nodes-langchain, and nodes-base (no-changelog) (#9450) 2024-05-22 17:40:52 +02:00
कारतोफ्फेलस्क्रिप्ट™
bf2ee51e36 ci: Delete unused code in some backend tests (no-changelog) (#9456) 2024-05-17 18:43:50 +02:00
Michael Kret
017ae6e102 fix(Airtable Node): Do not allow to use deprecated api keys in v1 (#9171) 2024-04-24 16:04:14 +03:00
Michael Kret
0a9f6b3de8 feat(JWT Node): New node (#9005)
Co-authored-by: Giulio Andreini <andreini@netseven.it>
2024-04-10 13:16:48 +03:00
Elias Meire
3b2078c3ca fix(HTTP Request Node): Handle special characters in pagination expressions + improve hint text (#8576)
Co-authored-by: Michael Kret <michael.k@radency.com>
2024-02-12 17:32:27 +01:00
Tomi Turtiainen
9a1cc56806 fix: Set '@typescript-eslint/return-await' rule to 'always' for node code (no-changelog) (#8363)
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
2024-01-17 17:08:50 +02:00
कारतोफ्फेलस्क्रिप्ट™
1d2666b37c refactor(Peekalink Node): Stricter typing for Peekalink api call + Tests (no-changelog) (#8125)
This PR is an example for how we can
1. improve typing and remove boilerplate code in may of our nodes
2. use nock to write effective unit tests for nodes that make external
calls

## Review / Merge checklist
- [x] PR title and summary are descriptive
- [x] Add tests
2023-12-21 18:22:32 +01:00
Iván Ovejero
e77fd5d286 refactor: Switch plain errors in nodes-base to ApplicationError (no-changelog) (#7914)
Ensure all errors in `nodes-base` are `ApplicationError` or children of
it and contain no variables in the message, to continue normalizing all
the backend errors we report to Sentry. Also, skip reporting to Sentry
errors from user input and from external APIs. In future we should
refine `ApplicationError` to more specific errors.

Follow-up to: [#7877](https://github.com/n8n-io/n8n/pull/7877)

- [x] Test workflows:
https://github.com/n8n-io/n8n/actions/runs/7084627970
- [x] e2e: https://github.com/n8n-io/n8n/actions/runs/7084936861

---------

Co-authored-by: Michael Kret <michael.k@radency.com>
2023-12-05 11:17:08 +01:00
Elias Meire
14035e1244 feat(editor): Add HTTP request nodes for credentials without a node (#7157)
Github issue / Community forum post (link here to close automatically):

---------

Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
2023-11-13 12:11:16 +01:00
कारतोफ्फेलस्क्रिप्ट™
35bb42c1b9 refactor(core): Avoid passing around static state like default timezone (no-changelog) (#7221) 2023-10-27 14:17:52 +02:00
Iván Ovejero
62c096710f refactor: Run lintfix (no-changelog) (#7537)
- Fix autofixable violations
- Remove unused directives
- Allow for PascalCased variables - needed for dynamically imported or
assigned classes, decorators, routers, etc.
2023-10-27 14:15:02 +02:00
कारतोफ्फेलस्क्रिप्ट™
05586a900d refactor(core): Make Logger a service (no-changelog) (#7494) 2023-10-25 16:35:22 +02:00
कारतोफ्फेलस्क्रिप्ट™
b6de910cbe refactor(core): Abstract away InstanceSettings and encryptionKey into injectable services (no-changelog) (#7471)
This change ensures that things like `encryptionKey` and `instanceId`
are always available directly where they are needed, instead of passing
them around throughout the code.
2023-10-23 13:39:35 +02:00
Iván Ovejero
1a661e6d00 feat(core): Integrate object store as binary data manager (#7253)
Depends on: #7225 | Story:
[PAY-848](https://linear.app/n8n/issue/PAY-848)

This PR integrates the object store service as a new binary data manager
for Enterprise.
2023-10-05 15:25:17 +02:00
Iván Ovejero
6d6e2488c6 refactor(core): Generalize binary data manager interface (no-changelog) (#7164)
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>
2023-09-22 17:22:12 +02:00
Iván Ovejero
cd08c8e4c6 refactor(core): Implement soft-deletions for executions (#7092)
Based on #7065 | Story: https://linear.app/n8n/issue/PAY-771

n8n on filesystem mode marks binary data to delete on manual execution
deletion, on unsaved execution completion, and on every execution
pruning cycle. We later prune binary data in a separate cycle via these
marker files, based on the configured TTL. In the context of introducing
an S3 client to manage binary data, the filesystem mode's mark-and-prune
setup is too tightly coupled to the general binary data management
client interface.

This PR...
- Ensures the deletion of an execution causes the deletion of any binary
data associated to it. This does away with the need for binary data TTL
and simplifies the filesystem mode's mark-and-prune setup.
- Refactors all execution deletions (including pruning) to cause soft
deletions, hard-deletes soft-deleted executions based on the existing
pruning config, and adjusts execution endpoints to filter out
soft-deleted executions. This reduces DB load, and keeps binary data
around long enough for users to access it when building workflows with
unsaved executions.
- Moves all execution pruning work from an execution lifecycle hook to
`execution.repository.ts`. This keeps related logic in a single place.
- Removes all marking logic from the binary data manager. This
simplifies the interface that the S3 client will meet.
- Adds basic sanity-check tests to pruning logic and execution deletion.

Out of scope:

- Improving existing pruning logic.
- Improving existing execution repository logic.
- Adjusting dir structure for filesystem mode.

---------

Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
2023-09-20 15:21:42 +02:00
Iván Ovejero
8cd4db0ab7 refactor(core): Simplify marking logic in binary data manager (no-changelog) (#7046)
- For a saved execution, we write to disk binary data and metadata.
These two are only ever deleted via `POST /executions/delete`. No marker
file, so untouched by pruning.
- For an unsaved execution, we write to disk binary data, binary data
metadata, and a marker file at `/meta`. We later delete all three during
pruning.
- The third flow is legacy. Currently, if the execution is unsaved, we
actually store it in the DB while running the workflow and immediately
after the workflow is finished during the `onWorkflowPostExecute()` hook
we delete that execution, so the second flow applies. But formerly, we
did not store unsaved executions in the DB ("ephemeral executions") and
so we needed to write a marker file at `/persistMeta` so that, if the
ephemeral execution crashed after the step where binary data was stored,
we had a way to later delete its associated dangling binary data via a
second pruning cycle, and if the ephemeral execution succeeded, then we
immediately cleaned up the marker file at `/persistMeta` during the
`onWorkflowPostExecute()` hook.

This creation and cleanup at `/persistMeta` is still happening, but this
third flow no longer has a purpose, as we now store unsaved executions
in the DB and delete them immediately after. Hence the third flow can be
removed.
2023-08-31 16:02:20 +02:00
Alex Grozav
ed927d34b2 feat: External Secrets storage for credentials (#6477)
Github issue / Community forum post (link here to close automatically):

---------

Co-authored-by: Romain Minaud <romain.minaud@gmail.com>
Co-authored-by: Valya Bullions <valya@n8n.io>
Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
2023-08-25 10:33:46 +02:00
Iván Ovejero
7ce5d8fd90 refactor: Upgrade to Prettier 3 (no-changelog) (#6947)
Supersedes https://github.com/n8n-io/n8n/pull/6937

Excluding fixtures and test workflow JSONs to avoid having to update
tests.
2023-08-16 17:13:57 +02:00
कारतोफ्फेलस्क्रिप्ट™
31d8f478ee refactor(core): Parse Webhook request bodies on-demand (#6394)
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
2023-08-01 17:32:30 +02:00
कारतोफ्फेलस्क्रिप्ट™
0a31b8e2b4 feat(Read PDF Node): Replace pdf-parse with pdfjs, and add support for streaming and encrypted PDFs (#6640) 2023-07-18 20:07:29 +02:00
कारतोफ्फेलस्क्रिप्ट™
e33cc2c27c Merge remote-tracking branch 'origin/master' into release/1.0.1 2023-07-05 20:01:24 +02:00
कारतोफ्फेलस्क्रिप्ट™
d97edbcffa fix(core): Make node execution order configurable, and backward-compatible (#6507)
* 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>
2023-07-05 18:47:34 +02:00