n8n-nodes-redactor 1.10.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -42
- package/README.md +23 -45
- package/dist/nodes/{PiiRedactor/PiiRedactor.node.d.ts → Redactor/Redactor.node.d.ts} +1 -1
- package/dist/nodes/{PiiRedactor/PiiRedactor.node.js → Redactor/Redactor.node.js} +150 -191
- package/dist/nodes/{PiiRedactor → Redactor}/audit.d.ts +0 -26
- package/dist/nodes/{PiiRedactor → Redactor}/audit.js +5 -52
- package/dist/nodes/Redactor/classification.d.ts +13 -0
- package/dist/nodes/{PiiRedactor → Redactor}/classification.js +0 -31
- package/dist/nodes/Redactor/context.d.ts +7 -0
- package/dist/nodes/{PiiRedactor → Redactor}/context.js +10 -72
- package/dist/nodes/Redactor/encryption.d.ts +4 -0
- package/dist/nodes/{PiiRedactor → Redactor}/encryption.js +8 -53
- package/dist/nodes/{PiiRedactor → Redactor}/engine.d.ts +0 -17
- package/dist/nodes/{PiiRedactor → Redactor}/engine.js +20 -230
- package/dist/nodes/Redactor/injection.d.ts +20 -0
- package/dist/nodes/{PiiRedactor → Redactor}/injection.js +4 -57
- package/dist/nodes/Redactor/names.d.ts +8 -0
- package/dist/nodes/{PiiRedactor → Redactor}/names.js +0 -34
- package/dist/nodes/{PiiRedactor → Redactor}/patterns.d.ts +0 -9
- package/dist/nodes/{PiiRedactor → Redactor}/patterns.js +50 -159
- package/dist/nodes/Redactor/presidio.d.ts +27 -0
- package/dist/nodes/{PiiRedactor → Redactor}/presidio.js +0 -48
- package/dist/nodes/{PiiRedactor → Redactor}/profiles.d.ts +0 -24
- package/dist/nodes/{PiiRedactor → Redactor}/profiles.js +3 -29
- package/dist/nodes/Redactor/pseudonymize.d.ts +1 -0
- package/dist/nodes/{PiiRedactor → Redactor}/pseudonymize.js +0 -27
- package/dist/nodes/Redactor/redactor.dark.svg +1 -0
- package/dist/nodes/Redactor/redactor.svg +1 -0
- package/dist/nodes/{PiiRedactor → Redactor}/ropa.d.ts +0 -12
- package/dist/nodes/{PiiRedactor → Redactor}/ropa.js +2 -20
- package/dist/nodes/{PiiRedactor → Redactor}/types.d.ts +0 -11
- package/dist/nodes/{PiiRedactor → Redactor}/types.js +0 -1
- package/dist/nodes/{PiiRedactor → Redactor}/vault.d.ts +0 -8
- package/dist/nodes/{PiiRedactor → Redactor}/vault.js +4 -41
- package/package.json +34 -15
- package/README.dev.md +0 -443
- package/README.npm.md +0 -443
- package/dist/nodes/PiiRedactor/__tests__/encryption.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/encryption.test.js +0 -200
- package/dist/nodes/PiiRedactor/__tests__/engine.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/engine.test.js +0 -524
- package/dist/nodes/PiiRedactor/__tests__/operations.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/operations.test.js +0 -316
- package/dist/nodes/PiiRedactor/__tests__/patterns-global.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/patterns-global.test.js +0 -427
- package/dist/nodes/PiiRedactor/__tests__/patterns.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/patterns.test.js +0 -481
- package/dist/nodes/PiiRedactor/__tests__/phase1.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/phase1.test.js +0 -343
- package/dist/nodes/PiiRedactor/__tests__/phase3.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/phase3.test.js +0 -275
- package/dist/nodes/PiiRedactor/__tests__/phase4.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/phase4.test.js +0 -184
- package/dist/nodes/PiiRedactor/__tests__/presidio.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/presidio.test.js +0 -170
- package/dist/nodes/PiiRedactor/__tests__/security.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/security.test.js +0 -178
- package/dist/nodes/PiiRedactor/__tests__/semantic.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/semantic.test.js +0 -319
- package/dist/nodes/PiiRedactor/__tests__/vault.test.d.ts +0 -1
- package/dist/nodes/PiiRedactor/__tests__/vault.test.js +0 -247
- package/dist/nodes/PiiRedactor/classification.d.ts +0 -33
- package/dist/nodes/PiiRedactor/context.d.ts +0 -57
- package/dist/nodes/PiiRedactor/encryption.d.ts +0 -45
- package/dist/nodes/PiiRedactor/injection.d.ts +0 -46
- package/dist/nodes/PiiRedactor/names.d.ts +0 -28
- package/dist/nodes/PiiRedactor/presidio.d.ts +0 -77
- package/dist/nodes/PiiRedactor/pseudonymize.d.ts +0 -20
- package/dist/nodes/PiiRedactor/redact.png +0 -0
- package/dist/nodes/PiiRedactor/redact.svg +0 -3
package/LICENSE
CHANGED
|
@@ -1,42 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Mirza Iqbal / next8n (https://next8n.com)
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
- Removing or altering copyright notices or attribution
|
|
23
|
-
|
|
24
|
-
ATTRIBUTION:
|
|
25
|
-
|
|
26
|
-
This software was developed and is actively maintained by next8n
|
|
27
|
-
(https://next8n.com). Attribution must be preserved in all copies.
|
|
28
|
-
|
|
29
|
-
DISCLAIMER:
|
|
30
|
-
|
|
31
|
-
THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
32
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
33
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
34
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
35
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
36
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
37
|
-
SOFTWARE.
|
|
38
|
-
|
|
39
|
-
We built it. We maintain it. We own the rights to the code.
|
|
40
|
-
|
|
41
|
-
For commercial licensing, partnership, or custom development:
|
|
42
|
-
https://services.next8n.com
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mirza Iqbal / next8n (https://next8n.com)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="https://
|
|
2
|
+
<img src="https://raw.githubusercontent.com/mjmirza/n8n-nodes-redactor/master/.github/assets/logo.png" alt="Redactor" width="96" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">n8n-nodes-redactor</h1>
|
|
@@ -12,17 +12,17 @@
|
|
|
12
12
|
<p align="center">
|
|
13
13
|
<a href="https://www.npmjs.com/package/n8n-nodes-redactor"><img src="https://img.shields.io/npm/v/n8n-nodes-redactor?style=for-the-badge&color=CB3837&label=npm" alt="npm version" /></a>
|
|
14
14
|
<a href="https://www.npmjs.com/package/n8n-nodes-redactor"><img src="https://img.shields.io/npm/dt/n8n-nodes-redactor?style=for-the-badge&color=blue&label=downloads" alt="npm downloads" /></a>
|
|
15
|
-
<a href="#license"><img src="https://img.shields.io/badge/license-
|
|
16
|
-
<img src="https://img.shields.io/badge/
|
|
17
|
-
<img src="https://img.shields.io/badge/
|
|
18
|
-
<img src="https://img.shields.io/badge/
|
|
19
|
-
<img src="https://img.shields.io/badge/
|
|
20
|
-
<img src="https://img.shields.io/badge/Operations-
|
|
15
|
+
<a href="#license"><img src="https://img.shields.io/badge/license-MIT-blue?style=for-the-badge" alt="MIT License" /></a>
|
|
16
|
+
<a href="https://docs.npmjs.com/generating-provenance-statements"><img src="https://img.shields.io/badge/npm-Provenance_Signed-2ea44f?style=for-the-badge" alt="npm provenance" /></a>
|
|
17
|
+
<img src="https://img.shields.io/badge/PII_Patterns-216-success?style=for-the-badge" alt="216 PII patterns" />
|
|
18
|
+
<img src="https://img.shields.io/badge/Tests-437_Passed-brightgreen?style=for-the-badge" alt="437 tests passed" />
|
|
19
|
+
<img src="https://img.shields.io/badge/Categories-11-success?style=for-the-badge" alt="11 categories" />
|
|
20
|
+
<img src="https://img.shields.io/badge/Operations-7-success?style=for-the-badge" alt="7 operations" />
|
|
21
|
+
<img src="https://img.shields.io/badge/n8n-2.x_Ready-FF6D5A?style=for-the-badge" alt="Tested on n8n 2.x" />
|
|
21
22
|
<img src="https://img.shields.io/badge/Vault-AES--256--GCM_Encrypted-7B61FF?style=for-the-badge" alt="AES-256-GCM Vault" />
|
|
22
23
|
<img src="https://img.shields.io/badge/Presidio-NLP_Optional-7B61FF?style=for-the-badge" alt="Presidio NLP" />
|
|
23
24
|
<img src="https://img.shields.io/badge/Vault-Reversible-7B61FF?style=for-the-badge" alt="Reversible Vault" />
|
|
24
|
-
<img src="https://img.shields.io/badge/GDPR-
|
|
25
|
-
<img src="https://img.shields.io/badge/HIPAA-Ready-00C4B4?style=for-the-badge" alt="HIPAA Ready" />
|
|
25
|
+
<img src="https://img.shields.io/badge/GDPR-Art.30_ROPA_Record-00C4B4?style=for-the-badge" alt="GDPR Art.30 ROPA record" />
|
|
26
26
|
<img src="https://img.shields.io/badge/100%25-Local_Processing-10A37F?style=for-the-badge" alt="100% Local" />
|
|
27
27
|
<img src="https://img.shields.io/badge/n8n-Community_Node-FF6D5A?style=for-the-badge" alt="n8n Community Node" />
|
|
28
28
|
<img src="https://img.shields.io/badge/AI_Agent-Compatible-10A37F?style=for-the-badge" alt="AI Agent Compatible" />
|
|
@@ -40,7 +40,7 @@ You know this is a problem. Your clients know it too. But rebuilding every workf
|
|
|
40
40
|
|
|
41
41
|
**This node fixes it in 2 minutes.**
|
|
42
42
|
|
|
43
|
-
Drop it between your data source and your LLM node. It automatically detects and replaces
|
|
43
|
+
Drop it between your data source and your LLM node. It automatically detects and replaces 216 kinds of sensitive data with safe tokens. The LLM processes the clean data. Then the node swaps the original values back in. Your customer data never leaves your server.
|
|
44
44
|
|
|
45
45
|
No cloud service. No API keys. No third-party dependency. Everything runs locally on your machine.
|
|
46
46
|
|
|
@@ -81,7 +81,7 @@ The LLM never saw the real data. Your customer never knew the difference.
|
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
84
|
-
## What it detects (
|
|
84
|
+
## What it detects (216 patterns across 11 categories)
|
|
85
85
|
|
|
86
86
|
### Contact Information
|
|
87
87
|
| Type | Examples |
|
|
@@ -202,7 +202,7 @@ Add your own patterns for anything specific to your business:
|
|
|
202
202
|
|
|
203
203
|
---
|
|
204
204
|
|
|
205
|
-
##
|
|
205
|
+
## 7 Operations: When to use what
|
|
206
206
|
|
|
207
207
|
| Operation | When to use it | What it does | Example workflow |
|
|
208
208
|
|-----------|---------------|-------------|-----------------|
|
|
@@ -211,9 +211,10 @@ Add your own patterns for anything specific to your business:
|
|
|
211
211
|
| **Detect** | Compliance audits, data assessment, before deciding to redact | Scans all data for sensitive information and returns a full report. Does NOT modify the data. Use this to understand what PII exists. | `[Data Source] > Detect > [If PII found] > Redact` |
|
|
212
212
|
| **Verify** | After redaction, to confirm nothing leaked through | Re-scans redacted output to check if any PII slipped past. Returns PASS or FAIL with details of any leaks. Defense-in-depth. | `[Data Source] > Redact > [LLM] > Verify > [Alert if FAIL]` |
|
|
213
213
|
| **Classify** | Data governance, sensitivity labeling, routing decisions | Assigns sensitivity labels (PUBLIC / INTERNAL / CONFIDENTIAL / RESTRICTED) based on what PII categories are found. Includes escalation rules. | `[Data Source] > Classify > [If RESTRICTED] > Block` |
|
|
214
|
-
| **Purge** | GDPR right to erasure, cleanup, end of workflow | Deletes vault sessions from memory or disk
|
|
214
|
+
| **Purge** | GDPR right to erasure, cleanup, end of workflow | Deletes vault sessions from memory or disk, so no PII mapping is left behind. Supports GDPR Article 17 (right to erasure) requests. | `[End of workflow] > Purge` |
|
|
215
215
|
| **Stats** | Debugging, monitoring, admin | Shows all active vault sessions with entry counts, creation times, TTL, and vault storage type. | Run manually to inspect vault state. |
|
|
216
|
-
|
|
216
|
+
|
|
217
|
+
**ROPA record (a Redact option, not a separate operation):** turn on *Include Audit Report*, then *Include GDPR Art.30 ROPA Record*, and fill in the controller details. The report output then carries a Records of Processing Activities entry built from this run.
|
|
217
218
|
|
|
218
219
|
**Recommended workflow for production:**
|
|
219
220
|
```
|
|
@@ -293,7 +294,7 @@ npm install n8n-nodes-redactor
|
|
|
293
294
|
2. **Add "Redactor"** to your workflow, set operation to **Redact**
|
|
294
295
|
3. **Connect it** before your OpenAI/Claude/Gemini node
|
|
295
296
|
4. **Add another "Redactor"** after the LLM node, set operation to **Restore**
|
|
296
|
-
5. Both nodes share the same Session ID (defaults to execution ID
|
|
297
|
+
5. Both nodes share the same Session ID (defaults to the execution ID, so a full run works automatically). Testing one step at a time? Set the same fixed Session ID, for example `test-1`, on both nodes.
|
|
297
298
|
6. **Run your workflow.** Customer data stays on your server.
|
|
298
299
|
|
|
299
300
|
That's it. No configuration needed for the default case.
|
|
@@ -358,13 +359,13 @@ Assigns sensitivity labels (PUBLIC / INTERNAL / CONFIDENTIAL / RESTRICTED) based
|
|
|
358
359
|
Encrypt vault files at rest with a passphrase. Each tenant uses a different passphrase for complete isolation. Even with filesystem access, encrypted files are unreadable without the key. scrypt key derivation resists brute-force attacks.
|
|
359
360
|
|
|
360
361
|
### Persistent Audit Log
|
|
361
|
-
JSONL audit log of all redaction activity. Compatible with Splunk, ELK, Datadog. Daily rotation + 100MB size limit.
|
|
362
|
+
JSONL audit log of all redaction activity. Compatible with Splunk, ELK, Datadog. Daily rotation + 100MB size limit. Self-hosted n8n only. Helps you meet GDPR Art.30, HIPAA, SOX and PCI DSS record-keeping, which still depends on how you store and retain the files.
|
|
362
363
|
|
|
363
364
|
### GDPR Art.30 ROPA Report
|
|
364
|
-
|
|
365
|
+
Adds a structured Records of Processing Activities entry to the Redact report output, covering the fields in GDPR Article 30(1): controller, purposes, legal basis, data subjects, personal data categories, recipients, retention, and security measures. Detection results fill it in, you supply the controller details in the node.
|
|
365
366
|
|
|
366
367
|
### Per-Tenant Profiles
|
|
367
|
-
|
|
368
|
+
Coming in 2.0.0. Per-client redaction settings (patterns, allow and deny lists, threshold, mode) supplied as JSON in the node, so they work on n8n Cloud too. Earlier docs listed this as available; it was not reachable from the node and is being rebuilt.
|
|
368
369
|
|
|
369
370
|
---
|
|
370
371
|
|
|
@@ -389,7 +390,7 @@ For docker-compose setup and language configuration, see [docs/PRESIDIO_SETUP.md
|
|
|
389
390
|
|
|
390
391
|
## Missing a use case? We'll build it for you.
|
|
391
392
|
|
|
392
|
-
This node
|
|
393
|
+
This node ships 216 built-in patterns. But every business has unique data: internal codes, proprietary identifiers, industry-specific formats.
|
|
393
394
|
|
|
394
395
|
**You can add your own patterns directly in the node UI** using the Custom Patterns section. Define any regex, give it a label, and the engine will detect and redact it alongside the built-in patterns.
|
|
395
396
|
|
|
@@ -413,31 +414,8 @@ If there is a specific use case that is not covered here and you want us to cove
|
|
|
413
414
|
|
|
414
415
|
## License
|
|
415
416
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
Copyright (c) 2026 Mirza Iqbal / [next8n](https://next8n.com). All rights reserved.
|
|
419
|
-
|
|
420
|
-
This node is published as an n8n community node for the benefit of the n8n ecosystem and the teams building AI workflows that need to handle customer data responsibly. However, the intellectual property, source code, and all associated rights are owned exclusively by the copyright holder.
|
|
421
|
-
|
|
422
|
-
**Permitted:**
|
|
423
|
-
- Install and use this node for your own internal workflows and business automation
|
|
424
|
-
|
|
425
|
-
**Prohibited without explicit written consent:**
|
|
426
|
-
- Copying, forking, or reproducing the source code in any form
|
|
427
|
-
- Commercial redistribution, resale, sublicensing, or white-labeling
|
|
428
|
-
- Creating derivative works or competing products based on this code
|
|
429
|
-
- Public redistribution of modified or unmodified versions
|
|
430
|
-
- Using the Software as part of a commercial service offering
|
|
431
|
-
- Removing or altering copyright notices or attribution
|
|
432
|
-
|
|
433
|
-
**Attribution:** This node was developed and is actively maintained by [next8n](https://next8n.com). Attribution must be preserved in all copies.
|
|
434
|
-
|
|
435
|
-
This software is provided "as is", without warranty of any kind, express or implied.
|
|
436
|
-
|
|
437
|
-
**We built it. We maintain it. We own the rights to the code.**
|
|
438
|
-
|
|
439
|
-
**Legal notice:** This is an original, independently authored work. The entire source code is the intellectual property of the copyright holder. No third-party proprietary code is included. All PII detection runs locally using pattern matching and validation algorithms authored by next8n.
|
|
417
|
+
MIT. See [LICENSE](LICENSE). Copyright (c) 2026 Mirza Iqbal / [next8n](https://next8n.com).
|
|
440
418
|
|
|
441
|
-
|
|
419
|
+
Free to use, modify and redistribute, including commercially, as long as the copyright notice stays in place. Provided "as is", without warranty. This node helps you reduce what reaches an LLM; it is not legal advice and does not by itself make a workflow GDPR or HIPAA compliant.
|
|
442
420
|
|
|
443
|
-
For
|
|
421
|
+
For partnership or custom development: [services.next8n.com](https://services.next8n.com)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class Redactor implements INodeType {
|
|
3
3
|
description: INodeTypeDescription;
|
|
4
4
|
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
5
|
}
|