n8n-nodes-ido-toolbox 0.1.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.md +19 -0
- package/README.md +245 -0
- package/dist/nodes/IdoToolbox/IdoToolbox.node.d.ts +5 -0
- package/dist/nodes/IdoToolbox/IdoToolbox.node.js +369 -0
- package/dist/nodes/IdoToolbox/IdoToolbox.node.js.map +1 -0
- package/dist/nodes/IdoToolbox/IdoToolbox.node.json +12 -0
- package/dist/nodes/IdoToolbox/ToolboxFields.d.ts +2 -0
- package/dist/nodes/IdoToolbox/ToolboxFields.js +383 -0
- package/dist/nodes/IdoToolbox/ToolboxFields.js.map +1 -0
- package/dist/nodes/IdoToolbox/ToolboxOperations.d.ts +2 -0
- package/dist/nodes/IdoToolbox/ToolboxOperations.js +68 -0
- package/dist/nodes/IdoToolbox/ToolboxOperations.js.map +1 -0
- package/dist/nodes/IdoToolbox/idoToolbox.svg +27 -0
- package/dist/package.json +54 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/index.js +5 -0
- package/package.json +54 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright 2022 n8n
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
5
|
+
the Software without restriction, including without limitation the rights to
|
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
7
|
+
of the Software, and to permit persons to whom the Software is furnished to do
|
|
8
|
+
so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# Ido Toolbox - אוסף כלים שימושיים ל-n8n
|
|
2
|
+
|
|
3
|
+
נוד קהילתי ל-n8n המכיל מגוון רחב של כלים שימושיים לניהול נתונים, טקסט, תאריכים ופעולות יומיומיות.
|
|
4
|
+
|
|
5
|
+
## ✨ תכונות עיקריות
|
|
6
|
+
|
|
7
|
+
- **כלים אקראיים**: יצירת מחרוזות, מספרים וסיסמאות אקראיים
|
|
8
|
+
- **עיבוד טקסט**: חיפוש והחלפה מרובים
|
|
9
|
+
- **יצירת HTML**: המרת נתונים לטבלאות HTML
|
|
10
|
+
- **תיקון אימייל**: תיקון דומיינים שגויים באימיילים
|
|
11
|
+
- **תגובות אקראיות**: בחירה אקראית מתוך רשימת תגובות
|
|
12
|
+
- **תמיכה באייג'נט**: כל הכלים זמינים לשימוש עם AI agents
|
|
13
|
+
|
|
14
|
+
## 🔧 הכלים הזמינים
|
|
15
|
+
|
|
16
|
+
### 1. כלים אקראיים
|
|
17
|
+
|
|
18
|
+
#### Generate Random String (יצירת מחרוזת אקראית)
|
|
19
|
+
יוצר מחרוזת אקראית באורך נבחר עם אפשרויות התאמה אישית.
|
|
20
|
+
|
|
21
|
+
**פרמטרים:**
|
|
22
|
+
- **Length**: אורך המחרוזת (ברירת מחדל: 8)
|
|
23
|
+
- **Include Numbers**: האם לכלול מספרים
|
|
24
|
+
- **Include Uppercase**: האם לכלול אותיות גדולות
|
|
25
|
+
- **Include Lowercase**: האם לכלול אותיות קטנות
|
|
26
|
+
|
|
27
|
+
**פלט:**
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"randomString": "Ab3Xy9Kl",
|
|
31
|
+
"length": 8
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
#### Generate Random Number (יצירת מספר אקראי)
|
|
36
|
+
יוצר מספר אקראי בטווח מוגדר.
|
|
37
|
+
|
|
38
|
+
**פרמטרים:**
|
|
39
|
+
- **Minimum Value**: ערך מינימלי (ברירת מחדל: 0)
|
|
40
|
+
- **Maximum Value**: ערך מקסימלי (ברירת מחדל: 100)
|
|
41
|
+
|
|
42
|
+
**פלט:**
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"randomNumber": 42,
|
|
46
|
+
"min": 0,
|
|
47
|
+
"max": 100,
|
|
48
|
+
"range": 101
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### Password Generator (מחולל סיסמאות)
|
|
53
|
+
יוצר סיסמאות חזקות עם אפשרות להתאמה אישית.
|
|
54
|
+
|
|
55
|
+
**פרמטרים:**
|
|
56
|
+
- **Length**: אורך הסיסמה (ברירת מחדל: 12)
|
|
57
|
+
- **Include Numbers**: האם לכלול מספרים
|
|
58
|
+
- **Include Symbols**: האם לכלול סימנים מיוחדים
|
|
59
|
+
|
|
60
|
+
**פלט:**
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"password": "Tr9@pL2#mN8&k",
|
|
64
|
+
"length": 12,
|
|
65
|
+
"strength": "Strong"
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. עיבוד טקסט
|
|
70
|
+
|
|
71
|
+
#### Multiple Search and Replace (חיפוש והחלפה מרובים)
|
|
72
|
+
מבצע חיפוש והחלפה מרובים בטקסט.
|
|
73
|
+
|
|
74
|
+
**פרמטרים:**
|
|
75
|
+
- **Input Text**: הטקסט שעליו לבצע חיפוש והחלפה
|
|
76
|
+
- **Replacements**: רשימת החלפות לביצוע
|
|
77
|
+
- **Search For**: הטקסט לחיפוש
|
|
78
|
+
- **Replace With**: הטקסט להחלפה
|
|
79
|
+
- **Case Sensitive**: האם החיפוש תלוי רישיות
|
|
80
|
+
|
|
81
|
+
**פלט:**
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"inputText": "Hello world!",
|
|
85
|
+
"outputText": "Hi universe!",
|
|
86
|
+
"changesMade": true,
|
|
87
|
+
"replacementsApplied": [
|
|
88
|
+
{
|
|
89
|
+
"search": "Hello",
|
|
90
|
+
"replace": "Hi",
|
|
91
|
+
"replacementsMade": 1
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"search": "world",
|
|
95
|
+
"replace": "universe",
|
|
96
|
+
"replacementsMade": 1
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"totalReplacements": 2
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3. יצירת HTML
|
|
104
|
+
|
|
105
|
+
#### Create HTML From Table (יצירת HTML מטבלה)
|
|
106
|
+
יוצר טבלת HTML בסיסית מנתונים.
|
|
107
|
+
|
|
108
|
+
**פרמטרים:**
|
|
109
|
+
- **Input Data**: נתוני הקלט (JSON או CSV)
|
|
110
|
+
- **Data Format**: פורמט הנתונים (JSON/CSV)
|
|
111
|
+
- **Include Headers**: האם לכלול כותרות
|
|
112
|
+
|
|
113
|
+
**פלט:**
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"htmlTable": "<table border=\"1\" style=\"border-collapse: collapse;\">...",
|
|
117
|
+
"rowCount": 3,
|
|
118
|
+
"columnCount": 2,
|
|
119
|
+
"headers": ["Name", "Age"]
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Create HTML From Table - Advanced (יצירת HTML מטבלה - מתקדם)
|
|
124
|
+
יוצר טבלת HTML מתקדמת עם עיצוב ותכונות נוספות.
|
|
125
|
+
|
|
126
|
+
**פרמטרים:**
|
|
127
|
+
- **Input Data**: נתוני הקלט (JSON או CSV)
|
|
128
|
+
- **Data Format**: פורמט הנתונים (JSON/CSV)
|
|
129
|
+
- **Table Class**: מחלקת CSS לטבלה
|
|
130
|
+
- **Include Headers**: האם לכלול כותרות
|
|
131
|
+
- **Table Title**: כותרת לטבלה (אופציונלי)
|
|
132
|
+
|
|
133
|
+
**פלט:**
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"htmlTable": "<h3>My Data</h3><table class=\"table table-striped\">...",
|
|
137
|
+
"rowCount": 3,
|
|
138
|
+
"columnCount": 2,
|
|
139
|
+
"headers": ["Name", "Age"],
|
|
140
|
+
"tableClass": "table table-striped",
|
|
141
|
+
"hasTitle": true
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 4. תיקון נתונים
|
|
146
|
+
|
|
147
|
+
#### Fix Email Address Domain (תיקון דומיין כתובת אימייל)
|
|
148
|
+
מתקן שגיאות הקלדה נפוצות בדומיינים של אימייל.
|
|
149
|
+
|
|
150
|
+
**תיקונים נתמכים:**
|
|
151
|
+
- `gmial.com` → `gmail.com`
|
|
152
|
+
- `hotmal.com` → `hotmail.com`
|
|
153
|
+
- `yahho.com` → `yahoo.com`
|
|
154
|
+
- ועוד...
|
|
155
|
+
|
|
156
|
+
**פרמטרים:**
|
|
157
|
+
- **Email Address**: כתובת האימייל לתיקון
|
|
158
|
+
|
|
159
|
+
**פלט:**
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"originalEmail": "user@gmial.com",
|
|
163
|
+
"correctedEmail": "user@gmail.com",
|
|
164
|
+
"domainCorrected": true,
|
|
165
|
+
"originalDomain": "gmial.com",
|
|
166
|
+
"correctedDomain": "gmail.com"
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 5. תגובות אקראיות
|
|
171
|
+
|
|
172
|
+
#### Return a Random Reply (החזרת תגובה אקראית)
|
|
173
|
+
מחזיר תגובה אקראית מתוך רשימה מוגדרת.
|
|
174
|
+
|
|
175
|
+
**פרמטרים:**
|
|
176
|
+
- **Replies**: רשימת תגובות מופרדות בפסיקים
|
|
177
|
+
|
|
178
|
+
**פלט:**
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"randomReply": "כן",
|
|
182
|
+
"totalReplies": 4,
|
|
183
|
+
"selectedIndex": 0,
|
|
184
|
+
"allReplies": ["כן", "לא", "אולי", "שאל שוב מאוחר יותר"]
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## 🚀 התקנה
|
|
189
|
+
|
|
190
|
+
1. התקן את n8n
|
|
191
|
+
2. התקן את הנוד:
|
|
192
|
+
```bash
|
|
193
|
+
npm install n8n-nodes-ido-toolbox
|
|
194
|
+
```
|
|
195
|
+
3. הפעל מחדש את n8n
|
|
196
|
+
4. הנוד "Ido Toolbox" יהיה זמין בפאנל הנודים
|
|
197
|
+
|
|
198
|
+
## 📝 דוגמאות שימוש
|
|
199
|
+
|
|
200
|
+
### יצירת סיסמה אקראית
|
|
201
|
+
```javascript
|
|
202
|
+
// הפעל את הנוד עם:
|
|
203
|
+
// Operation: Password Generator
|
|
204
|
+
// Length: 16
|
|
205
|
+
// Include Numbers: true
|
|
206
|
+
// Include Symbols: true
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### תיקון אימיילים ברשימת תפוצה
|
|
210
|
+
```javascript
|
|
211
|
+
// הפעל את הנוד עם:
|
|
212
|
+
// Operation: Fix Email Address Domain
|
|
213
|
+
// Email Address: user@gmial.com
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### יצירת טבלת HTML מנתונים
|
|
217
|
+
```javascript
|
|
218
|
+
// הפעל את הנוד עם:
|
|
219
|
+
// Operation: Create HTML From Table - Advanced
|
|
220
|
+
// Input Data: [{"name":"John","age":30},{"name":"Jane","age":25}]
|
|
221
|
+
// Data Format: JSON
|
|
222
|
+
// Table Title: User List
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## 🤖 תמיכה באייג'נט
|
|
226
|
+
|
|
227
|
+
כל הכלים בנוד זה מוגדרים ככלי אייג'נט (`usableAsTool: true`), מה שאומר שהם זמינים לשימוש עם AI agents ב-n8n.
|
|
228
|
+
|
|
229
|
+
## 🐛 דיווח על באגים
|
|
230
|
+
|
|
231
|
+
אם נתקלת בבאג או יש לך הצעה לשיפור, אנא פתח issue ב-GitHub.
|
|
232
|
+
|
|
233
|
+
## 📄 רישיון
|
|
234
|
+
|
|
235
|
+
פרויקט זה מופץ תחת רישיון MIT.
|
|
236
|
+
|
|
237
|
+
## 👥 תרומה
|
|
238
|
+
|
|
239
|
+
תרומות מתקבלות בברכה! אנא קרא את [קובץ התרומה](CONTRIBUTING.md) לפני שליחת Pull Request.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
**פותח על ידי:** IdoTools
|
|
244
|
+
**גרסה:** 0.1.0
|
|
245
|
+
**תאימות:** n8n 1.0+
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class IdoToolbox implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdoToolbox = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const n8n_workflow_2 = require("n8n-workflow");
|
|
6
|
+
const ToolboxOperations_1 = require("./ToolboxOperations");
|
|
7
|
+
const ToolboxFields_1 = require("./ToolboxFields");
|
|
8
|
+
class IdoToolbox {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.description = {
|
|
11
|
+
displayName: 'Ido Toolbox',
|
|
12
|
+
name: 'idoToolbox',
|
|
13
|
+
icon: { light: 'file:idoToolbox.svg', dark: 'file:idoToolbox.svg' },
|
|
14
|
+
group: ['transform'],
|
|
15
|
+
version: 1,
|
|
16
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
17
|
+
description: 'אוסף כלים שימושיים לניהול נתונים, טקסט ופעולות יומיומיות',
|
|
18
|
+
defaults: {
|
|
19
|
+
name: 'Ido Toolbox',
|
|
20
|
+
},
|
|
21
|
+
inputs: ["main"],
|
|
22
|
+
outputs: ["main"],
|
|
23
|
+
usableAsTool: true,
|
|
24
|
+
properties: [
|
|
25
|
+
{
|
|
26
|
+
displayName: 'Resource',
|
|
27
|
+
name: 'resource',
|
|
28
|
+
type: 'options',
|
|
29
|
+
noDataExpression: true,
|
|
30
|
+
options: [
|
|
31
|
+
{
|
|
32
|
+
name: 'כלים (Tools)',
|
|
33
|
+
value: 'tools',
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
default: 'tools',
|
|
37
|
+
},
|
|
38
|
+
...ToolboxOperations_1.toolboxOperations,
|
|
39
|
+
...ToolboxFields_1.toolboxFields,
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async execute() {
|
|
44
|
+
const items = this.getInputData();
|
|
45
|
+
const operation = this.getNodeParameter('operation', 0);
|
|
46
|
+
let returnData = [];
|
|
47
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
48
|
+
try {
|
|
49
|
+
let result = {};
|
|
50
|
+
switch (operation) {
|
|
51
|
+
case 'generateRandomString': {
|
|
52
|
+
const length = this.getNodeParameter('length', itemIndex, 8);
|
|
53
|
+
const includeNumbers = this.getNodeParameter('includeNumbers', itemIndex, true);
|
|
54
|
+
const includeUppercase = this.getNodeParameter('includeUppercase', itemIndex, true);
|
|
55
|
+
const includeLowercase = this.getNodeParameter('includeLowercase', itemIndex, true);
|
|
56
|
+
let charset = '';
|
|
57
|
+
if (includeLowercase)
|
|
58
|
+
charset += 'abcdefghijklmnopqrstuvwxyz';
|
|
59
|
+
if (includeUppercase)
|
|
60
|
+
charset += 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
61
|
+
if (includeNumbers)
|
|
62
|
+
charset += '0123456789';
|
|
63
|
+
if (!charset) {
|
|
64
|
+
throw new n8n_workflow_2.ApplicationError('At least one character type must be selected');
|
|
65
|
+
}
|
|
66
|
+
let randomString = '';
|
|
67
|
+
for (let i = 0; i < length; i++) {
|
|
68
|
+
randomString += charset.charAt(Math.floor(Math.random() * charset.length));
|
|
69
|
+
}
|
|
70
|
+
result = {
|
|
71
|
+
randomString,
|
|
72
|
+
length: randomString.length,
|
|
73
|
+
};
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case 'generateRandomNumber': {
|
|
77
|
+
const min = this.getNodeParameter('min', itemIndex, 0);
|
|
78
|
+
const max = this.getNodeParameter('max', itemIndex, 100);
|
|
79
|
+
if (min >= max) {
|
|
80
|
+
throw new n8n_workflow_2.ApplicationError('Minimum value must be less than maximum value');
|
|
81
|
+
}
|
|
82
|
+
const randomNumber = Math.floor(Math.random() * (max - min + 1)) + min;
|
|
83
|
+
result = {
|
|
84
|
+
randomNumber,
|
|
85
|
+
min,
|
|
86
|
+
max,
|
|
87
|
+
range: max - min + 1,
|
|
88
|
+
};
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case 'passwordGenerator': {
|
|
92
|
+
const length = this.getNodeParameter('length', itemIndex, 12);
|
|
93
|
+
const includeNumbers = this.getNodeParameter('includeNumbers', itemIndex, true);
|
|
94
|
+
const includeSymbols = this.getNodeParameter('includeSymbols', itemIndex, true);
|
|
95
|
+
let charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
96
|
+
if (includeNumbers)
|
|
97
|
+
charset += '0123456789';
|
|
98
|
+
if (includeSymbols)
|
|
99
|
+
charset += '!@#$%^&*()_+-=[]{}|;:,.<>?';
|
|
100
|
+
let password = '';
|
|
101
|
+
for (let i = 0; i < length; i++) {
|
|
102
|
+
password += charset.charAt(Math.floor(Math.random() * charset.length));
|
|
103
|
+
}
|
|
104
|
+
let strengthValue = 0;
|
|
105
|
+
if (password.length >= 8)
|
|
106
|
+
strengthValue++;
|
|
107
|
+
if (password.length >= 12)
|
|
108
|
+
strengthValue++;
|
|
109
|
+
if (/[a-z]/.test(password))
|
|
110
|
+
strengthValue++;
|
|
111
|
+
if (/[A-Z]/.test(password))
|
|
112
|
+
strengthValue++;
|
|
113
|
+
if (/[0-9]/.test(password))
|
|
114
|
+
strengthValue++;
|
|
115
|
+
if (/[^a-zA-Z0-9]/.test(password))
|
|
116
|
+
strengthValue++;
|
|
117
|
+
let strength = 'Weak';
|
|
118
|
+
if (strengthValue > 4)
|
|
119
|
+
strength = 'Strong';
|
|
120
|
+
else if (strengthValue > 2)
|
|
121
|
+
strength = 'Medium';
|
|
122
|
+
result = {
|
|
123
|
+
password,
|
|
124
|
+
length: password.length,
|
|
125
|
+
strength,
|
|
126
|
+
};
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'randomReply': {
|
|
130
|
+
const repliesString = this.getNodeParameter('replies', itemIndex, '');
|
|
131
|
+
const replies = repliesString.split(',').map(reply => reply.trim());
|
|
132
|
+
if (replies.length === 0) {
|
|
133
|
+
throw new n8n_workflow_2.ApplicationError('At least one reply must be provided');
|
|
134
|
+
}
|
|
135
|
+
const randomIndex = Math.floor(Math.random() * replies.length);
|
|
136
|
+
const selectedReply = replies[randomIndex];
|
|
137
|
+
result = {
|
|
138
|
+
randomReply: selectedReply,
|
|
139
|
+
totalReplies: replies.length,
|
|
140
|
+
selectedIndex: randomIndex,
|
|
141
|
+
allReplies: replies,
|
|
142
|
+
};
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
case 'fixEmailDomain': {
|
|
146
|
+
const email = this.getNodeParameter('email', itemIndex, '');
|
|
147
|
+
if (!email || !email.includes('@')) {
|
|
148
|
+
throw new n8n_workflow_2.ApplicationError('Invalid email address format');
|
|
149
|
+
}
|
|
150
|
+
const [localPart, domain] = email.split('@');
|
|
151
|
+
const domainCorrections = {
|
|
152
|
+
'gmial.com': 'gmail.com',
|
|
153
|
+
'gmal.com': 'gmail.com',
|
|
154
|
+
'gmail.co': 'gmail.com',
|
|
155
|
+
'hotmal.com': 'hotmail.com',
|
|
156
|
+
'hotmial.com': 'hotmail.com',
|
|
157
|
+
'yaho.com': 'yahoo.com',
|
|
158
|
+
'yahho.com': 'yahoo.com',
|
|
159
|
+
'outlok.com': 'outlook.com',
|
|
160
|
+
'outlok.co': 'outlook.com',
|
|
161
|
+
};
|
|
162
|
+
const correctedDomain = domainCorrections[domain.toLowerCase()] || domain;
|
|
163
|
+
const correctedEmail = `${localPart}@${correctedDomain}`;
|
|
164
|
+
result = {
|
|
165
|
+
originalEmail: email,
|
|
166
|
+
correctedEmail,
|
|
167
|
+
domainCorrected: correctedDomain !== domain,
|
|
168
|
+
originalDomain: domain,
|
|
169
|
+
correctedDomain,
|
|
170
|
+
};
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case 'multipleSearchReplace': {
|
|
174
|
+
const inputText = this.getNodeParameter('inputText', itemIndex, '');
|
|
175
|
+
const replacements = this.getNodeParameter('replacements', itemIndex, {});
|
|
176
|
+
const caseSensitive = this.getNodeParameter('caseSensitive', itemIndex, false);
|
|
177
|
+
let outputText = inputText;
|
|
178
|
+
const appliedReplacements = [];
|
|
179
|
+
if (replacements.replacement && Array.isArray(replacements.replacement)) {
|
|
180
|
+
for (const replacement of replacements.replacement) {
|
|
181
|
+
const searchText = replacement.search;
|
|
182
|
+
const replaceText = replacement.replace;
|
|
183
|
+
if (searchText) {
|
|
184
|
+
const flags = caseSensitive ? 'g' : 'gi';
|
|
185
|
+
const escapedSearch = searchText.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
186
|
+
const regex = new RegExp(escapedSearch, flags);
|
|
187
|
+
const beforeReplace = outputText;
|
|
188
|
+
outputText = outputText.replace(regex, replaceText);
|
|
189
|
+
appliedReplacements.push({
|
|
190
|
+
search: searchText,
|
|
191
|
+
replace: replaceText,
|
|
192
|
+
replacementsMade: (beforeReplace.match(regex) || []).length,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
result = {
|
|
198
|
+
inputText,
|
|
199
|
+
outputText,
|
|
200
|
+
changesMade: appliedReplacements.length > 0,
|
|
201
|
+
replacementsApplied: appliedReplacements,
|
|
202
|
+
totalReplacements: appliedReplacements.reduce((sum, r) => sum + r.replacementsMade, 0),
|
|
203
|
+
};
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
case 'createHtmlFromTable': {
|
|
207
|
+
const inputData = this.getNodeParameter('inputData', itemIndex, '');
|
|
208
|
+
const dataFormat = this.getNodeParameter('dataFormat', itemIndex, 'json');
|
|
209
|
+
const includeHeaders = this.getNodeParameter('includeHeaders', itemIndex, true);
|
|
210
|
+
let data = [];
|
|
211
|
+
let headers = [];
|
|
212
|
+
if (dataFormat === 'json') {
|
|
213
|
+
try {
|
|
214
|
+
const parsed = JSON.parse(inputData);
|
|
215
|
+
if (Array.isArray(parsed)) {
|
|
216
|
+
data = parsed;
|
|
217
|
+
if (data.length > 0 && typeof data[0] === 'object') {
|
|
218
|
+
headers = Object.keys(data[0]);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (typeof parsed === 'object') {
|
|
222
|
+
data = [parsed];
|
|
223
|
+
headers = Object.keys(parsed);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
throw new n8n_workflow_2.ApplicationError('Invalid JSON format');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else if (dataFormat === 'csv') {
|
|
231
|
+
const lines = inputData.split('\n').filter(line => line.trim());
|
|
232
|
+
if (lines.length > 0) {
|
|
233
|
+
headers = lines[0].split(',').map(h => h.trim());
|
|
234
|
+
for (let i = 1; i < lines.length; i++) {
|
|
235
|
+
const values = lines[i].split(',').map(v => v.trim());
|
|
236
|
+
const obj = {};
|
|
237
|
+
headers.forEach((header, index) => {
|
|
238
|
+
obj[header] = values[index] || '';
|
|
239
|
+
});
|
|
240
|
+
data.push(obj);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
let html = '<table border="1" style="border-collapse: collapse;">\n';
|
|
245
|
+
if (includeHeaders && headers.length > 0) {
|
|
246
|
+
html += ' <tr>\n';
|
|
247
|
+
headers.forEach(header => {
|
|
248
|
+
html += ` <th style="padding: 8px; background-color: #f5f5f5;">${header}</th>\n`;
|
|
249
|
+
});
|
|
250
|
+
html += ' </tr>\n';
|
|
251
|
+
}
|
|
252
|
+
data.forEach(row => {
|
|
253
|
+
html += ' <tr>\n';
|
|
254
|
+
headers.forEach(header => {
|
|
255
|
+
const value = row[header] || '';
|
|
256
|
+
html += ` <td style="padding: 8px;">${value}</td>\n`;
|
|
257
|
+
});
|
|
258
|
+
html += ' </tr>\n';
|
|
259
|
+
});
|
|
260
|
+
html += '</table>';
|
|
261
|
+
result = {
|
|
262
|
+
htmlTable: html,
|
|
263
|
+
rowCount: data.length,
|
|
264
|
+
columnCount: headers.length,
|
|
265
|
+
headers,
|
|
266
|
+
};
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
case 'createHtmlFromTableAdvanced': {
|
|
270
|
+
const inputData = this.getNodeParameter('inputData', itemIndex, '');
|
|
271
|
+
const dataFormat = this.getNodeParameter('dataFormat', itemIndex, 'json');
|
|
272
|
+
const tableClass = this.getNodeParameter('tableClass', itemIndex, 'table table-striped');
|
|
273
|
+
const includeHeaders = this.getNodeParameter('includeHeaders', itemIndex, true);
|
|
274
|
+
const tableTitle = this.getNodeParameter('tableTitle', itemIndex, '');
|
|
275
|
+
let data = [];
|
|
276
|
+
let headers = [];
|
|
277
|
+
if (dataFormat === 'json') {
|
|
278
|
+
try {
|
|
279
|
+
const parsed = JSON.parse(inputData);
|
|
280
|
+
if (Array.isArray(parsed)) {
|
|
281
|
+
data = parsed;
|
|
282
|
+
if (data.length > 0 && typeof data[0] === 'object') {
|
|
283
|
+
headers = Object.keys(data[0]);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
else if (typeof parsed === 'object') {
|
|
287
|
+
data = [parsed];
|
|
288
|
+
headers = Object.keys(parsed);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
throw new n8n_workflow_2.ApplicationError('Invalid JSON format');
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
else if (dataFormat === 'csv') {
|
|
296
|
+
const lines = inputData.split('\n').filter(line => line.trim());
|
|
297
|
+
if (lines.length > 0) {
|
|
298
|
+
headers = lines[0].split(',').map(h => h.trim());
|
|
299
|
+
for (let i = 1; i < lines.length; i++) {
|
|
300
|
+
const values = lines[i].split(',').map(v => v.trim());
|
|
301
|
+
const obj = {};
|
|
302
|
+
headers.forEach((header, index) => {
|
|
303
|
+
obj[header] = values[index] || '';
|
|
304
|
+
});
|
|
305
|
+
data.push(obj);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
let html = '';
|
|
310
|
+
if (tableTitle) {
|
|
311
|
+
html += `<h3>${tableTitle}</h3>\n`;
|
|
312
|
+
}
|
|
313
|
+
html += `<table class="${tableClass}" style="width: 100%; border-collapse: collapse;">\n`;
|
|
314
|
+
if (includeHeaders && headers.length > 0) {
|
|
315
|
+
html += ' <thead>\n <tr>\n';
|
|
316
|
+
headers.forEach(header => {
|
|
317
|
+
html += ` <th style="padding: 12px; background-color: #4a5568; color: white; border: 1px solid #ddd;">${header}</th>\n`;
|
|
318
|
+
});
|
|
319
|
+
html += ' </tr>\n </thead>\n';
|
|
320
|
+
}
|
|
321
|
+
html += ' <tbody>\n';
|
|
322
|
+
data.forEach((row, index) => {
|
|
323
|
+
const rowStyle = index % 2 === 0 ? 'background-color: #f9f9f9;' : 'background-color: #ffffff;';
|
|
324
|
+
html += ` <tr style="${rowStyle}">\n`;
|
|
325
|
+
headers.forEach(header => {
|
|
326
|
+
const value = row[header] || '';
|
|
327
|
+
html += ` <td style="padding: 12px; border: 1px solid #ddd;">${value}</td>\n`;
|
|
328
|
+
});
|
|
329
|
+
html += ' </tr>\n';
|
|
330
|
+
});
|
|
331
|
+
html += ' </tbody>\n</table>';
|
|
332
|
+
result = {
|
|
333
|
+
htmlTable: html,
|
|
334
|
+
rowCount: data.length,
|
|
335
|
+
columnCount: headers.length,
|
|
336
|
+
headers,
|
|
337
|
+
tableClass,
|
|
338
|
+
hasTitle: !!tableTitle,
|
|
339
|
+
};
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
default:
|
|
343
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operation ${operation} is not supported`);
|
|
344
|
+
}
|
|
345
|
+
returnData.push({
|
|
346
|
+
json: result,
|
|
347
|
+
pairedItem: itemIndex,
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
if (this.continueOnFail()) {
|
|
352
|
+
returnData.push({
|
|
353
|
+
json: { error: error.message },
|
|
354
|
+
error,
|
|
355
|
+
pairedItem: itemIndex,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, {
|
|
360
|
+
itemIndex,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return [returnData];
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
exports.IdoToolbox = IdoToolbox;
|
|
369
|
+
//# sourceMappingURL=IdoToolbox.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdoToolbox.node.js","sourceRoot":"","sources":["../../../nodes/IdoToolbox/IdoToolbox.node.ts"],"names":[],"mappings":"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"}
|