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.
Files changed (70) hide show
  1. package/LICENSE +21 -42
  2. package/README.md +23 -45
  3. package/dist/nodes/{PiiRedactor/PiiRedactor.node.d.ts → Redactor/Redactor.node.d.ts} +1 -1
  4. package/dist/nodes/{PiiRedactor/PiiRedactor.node.js → Redactor/Redactor.node.js} +150 -191
  5. package/dist/nodes/{PiiRedactor → Redactor}/audit.d.ts +0 -26
  6. package/dist/nodes/{PiiRedactor → Redactor}/audit.js +5 -52
  7. package/dist/nodes/Redactor/classification.d.ts +13 -0
  8. package/dist/nodes/{PiiRedactor → Redactor}/classification.js +0 -31
  9. package/dist/nodes/Redactor/context.d.ts +7 -0
  10. package/dist/nodes/{PiiRedactor → Redactor}/context.js +10 -72
  11. package/dist/nodes/Redactor/encryption.d.ts +4 -0
  12. package/dist/nodes/{PiiRedactor → Redactor}/encryption.js +8 -53
  13. package/dist/nodes/{PiiRedactor → Redactor}/engine.d.ts +0 -17
  14. package/dist/nodes/{PiiRedactor → Redactor}/engine.js +20 -230
  15. package/dist/nodes/Redactor/injection.d.ts +20 -0
  16. package/dist/nodes/{PiiRedactor → Redactor}/injection.js +4 -57
  17. package/dist/nodes/Redactor/names.d.ts +8 -0
  18. package/dist/nodes/{PiiRedactor → Redactor}/names.js +0 -34
  19. package/dist/nodes/{PiiRedactor → Redactor}/patterns.d.ts +0 -9
  20. package/dist/nodes/{PiiRedactor → Redactor}/patterns.js +50 -159
  21. package/dist/nodes/Redactor/presidio.d.ts +27 -0
  22. package/dist/nodes/{PiiRedactor → Redactor}/presidio.js +0 -48
  23. package/dist/nodes/{PiiRedactor → Redactor}/profiles.d.ts +0 -24
  24. package/dist/nodes/{PiiRedactor → Redactor}/profiles.js +3 -29
  25. package/dist/nodes/Redactor/pseudonymize.d.ts +1 -0
  26. package/dist/nodes/{PiiRedactor → Redactor}/pseudonymize.js +0 -27
  27. package/dist/nodes/Redactor/redactor.dark.svg +1 -0
  28. package/dist/nodes/Redactor/redactor.svg +1 -0
  29. package/dist/nodes/{PiiRedactor → Redactor}/ropa.d.ts +0 -12
  30. package/dist/nodes/{PiiRedactor → Redactor}/ropa.js +2 -20
  31. package/dist/nodes/{PiiRedactor → Redactor}/types.d.ts +0 -11
  32. package/dist/nodes/{PiiRedactor → Redactor}/types.js +0 -1
  33. package/dist/nodes/{PiiRedactor → Redactor}/vault.d.ts +0 -8
  34. package/dist/nodes/{PiiRedactor → Redactor}/vault.js +4 -41
  35. package/package.json +34 -15
  36. package/README.dev.md +0 -443
  37. package/README.npm.md +0 -443
  38. package/dist/nodes/PiiRedactor/__tests__/encryption.test.d.ts +0 -1
  39. package/dist/nodes/PiiRedactor/__tests__/encryption.test.js +0 -200
  40. package/dist/nodes/PiiRedactor/__tests__/engine.test.d.ts +0 -1
  41. package/dist/nodes/PiiRedactor/__tests__/engine.test.js +0 -524
  42. package/dist/nodes/PiiRedactor/__tests__/operations.test.d.ts +0 -1
  43. package/dist/nodes/PiiRedactor/__tests__/operations.test.js +0 -316
  44. package/dist/nodes/PiiRedactor/__tests__/patterns-global.test.d.ts +0 -1
  45. package/dist/nodes/PiiRedactor/__tests__/patterns-global.test.js +0 -427
  46. package/dist/nodes/PiiRedactor/__tests__/patterns.test.d.ts +0 -1
  47. package/dist/nodes/PiiRedactor/__tests__/patterns.test.js +0 -481
  48. package/dist/nodes/PiiRedactor/__tests__/phase1.test.d.ts +0 -1
  49. package/dist/nodes/PiiRedactor/__tests__/phase1.test.js +0 -343
  50. package/dist/nodes/PiiRedactor/__tests__/phase3.test.d.ts +0 -1
  51. package/dist/nodes/PiiRedactor/__tests__/phase3.test.js +0 -275
  52. package/dist/nodes/PiiRedactor/__tests__/phase4.test.d.ts +0 -1
  53. package/dist/nodes/PiiRedactor/__tests__/phase4.test.js +0 -184
  54. package/dist/nodes/PiiRedactor/__tests__/presidio.test.d.ts +0 -1
  55. package/dist/nodes/PiiRedactor/__tests__/presidio.test.js +0 -170
  56. package/dist/nodes/PiiRedactor/__tests__/security.test.d.ts +0 -1
  57. package/dist/nodes/PiiRedactor/__tests__/security.test.js +0 -178
  58. package/dist/nodes/PiiRedactor/__tests__/semantic.test.d.ts +0 -1
  59. package/dist/nodes/PiiRedactor/__tests__/semantic.test.js +0 -319
  60. package/dist/nodes/PiiRedactor/__tests__/vault.test.d.ts +0 -1
  61. package/dist/nodes/PiiRedactor/__tests__/vault.test.js +0 -247
  62. package/dist/nodes/PiiRedactor/classification.d.ts +0 -33
  63. package/dist/nodes/PiiRedactor/context.d.ts +0 -57
  64. package/dist/nodes/PiiRedactor/encryption.d.ts +0 -45
  65. package/dist/nodes/PiiRedactor/injection.d.ts +0 -46
  66. package/dist/nodes/PiiRedactor/names.d.ts +0 -28
  67. package/dist/nodes/PiiRedactor/presidio.d.ts +0 -77
  68. package/dist/nodes/PiiRedactor/pseudonymize.d.ts +0 -20
  69. package/dist/nodes/PiiRedactor/redact.png +0 -0
  70. package/dist/nodes/PiiRedactor/redact.svg +0 -3
package/LICENSE CHANGED
@@ -1,42 +1,21 @@
1
- Fair Use Code License (FUCL)
2
-
3
- Copyright (c) 2026 Mirza Iqbal / next8n (https://next8n.com). All rights reserved.
4
-
5
- This software is published as an n8n community node for the benefit of the n8n
6
- ecosystem and teams building AI workflows that need to handle customer data
7
- responsibly. However, the intellectual property, source code, and all associated
8
- rights are owned exclusively by the copyright holder.
9
-
10
- PERMITTED:
11
-
12
- - Install and use this software for your own internal workflows and
13
- business automation.
14
-
15
- PROHIBITED WITHOUT EXPLICIT WRITTEN CONSENT:
16
-
17
- - Copying, forking, or reproducing the source code in any form
18
- - Commercial redistribution, resale, sublicensing, or white-labeling
19
- - Creating derivative works or competing products based on this code
20
- - Public redistribution of modified or unmodified versions
21
- - Using the Software as part of a commercial service offering
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://unpkg.com/n8n-nodes-redactor@1.0.2/dist/nodes/PiiRedactor/redact.png" alt="Redactor" width="80" />
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-FUCL-orange?style=for-the-badge" alt="License" /></a>
16
- <img src="https://img.shields.io/badge/PII_Types-216+-success?style=for-the-badge" alt="216+ PII Types" />
17
- <img src="https://img.shields.io/badge/Tests-426_Passed-brightgreen?style=for-the-badge" alt="426 Tests Passed" />
18
- <img src="https://img.shields.io/badge/Categories-12-success?style=for-the-badge" alt="12 Categories" />
19
- <img src="https://img.shields.io/badge/Countries-35+-success?style=for-the-badge" alt="35+ Countries" />
20
- <img src="https://img.shields.io/badge/Operations-8-success?style=for-the-badge" alt="8 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-Ready-00C4B4?style=for-the-badge" alt="GDPR Ready" />
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 200+ types 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.
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 (125+ sensitive data types across 11 categories)
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
- ## 8 Operations: When to use what
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. Ensures no PII mapping data remains after processing. Required for GDPR Article 17 compliance. | `[End of workflow] > Purge` |
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
- | **ROPA Report** | GDPR Article 30 compliance | Generates structured Records of Processing Activities covering all 8 fields required by GDPR Art.30(1). Auto-populated from redaction results. | After Redact, generate compliance documentation. |
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 - works automatically)
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. Compliant with GDPR Art.30, HIPAA (6-year), SOX (7-year), PCI DSS (1-year) retention requirements.
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
- Generates structured compliance reports covering all 8 fields required by GDPR Article 30(1): controller, purposes, data subjects, personal data categories, recipients, third-country transfers, retention, and security measures. Auto-populated from redaction results.
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
- Save and load redaction configurations per client/tenant. Each profile defines: enabled patterns, allow/deny lists, confidence threshold, redaction mode, and compliance settings. Agencies managing multiple clients can switch profiles per workflow.
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 covers 210+ data types across 22 privacy regulations. But every business has unique data: internal codes, proprietary identifiers, industry-specific formats.
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
- **Fair Use Code License (FUCL)**
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
- Interested in collaborating or contributing? We're open to partnerships. Let's talk.
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 commercial licensing, partnership, or custom development: [services.next8n.com](https://services.next8n.com)
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 PiiRedactor implements INodeType {
2
+ export declare class Redactor implements INodeType {
3
3
  description: INodeTypeDescription;
4
4
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
5
  }