@acrewity/n8n-nodes-acrewity 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 +21 -0
- package/README.md +107 -0
- package/dist/credentials/AcrewityApi.credentials.d.ts +10 -0
- package/dist/credentials/AcrewityApi.credentials.js +49 -0
- package/dist/credentials/acrewity.svg +55 -0
- package/dist/nodes/Acrewity/Acrewity.node.d.ts +5 -0
- package/dist/nodes/Acrewity/Acrewity.node.js +930 -0
- package/dist/nodes/Acrewity/acrewity.svg +55 -0
- package/dist/temp/acrewity_brandmark.png +0 -0
- package/dist/temp/image-1757423886389.png +0 -0
- package/dist/temp/image-c30de7b8-b9f0-46ff-9726-c87c8e447356.png +0 -0
- package/package.json +62 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Acrewity
|
|
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
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# n8n-nodes-acrewity
|
|
2
|
+
|
|
3
|
+
This is an n8n community node for [Acrewity](https://acrewity.com) - a unified API platform with 20+ utility services.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
This node provides access to all Acrewity API services:
|
|
8
|
+
|
|
9
|
+
### Data & Utilities
|
|
10
|
+
- **UUID Generator** - Generate unique identifiers (v1, v4)
|
|
11
|
+
- **Regex Matcher** - Pattern matching and text extraction
|
|
12
|
+
- **Text Diff** - Compare two texts and highlight differences
|
|
13
|
+
- **URL Encoder/Decoder** - Safely encode and decode URLs
|
|
14
|
+
- **Timezone Converter** - Convert times between timezones
|
|
15
|
+
- **JSON Schema Validator** - Validate JSON against schemas
|
|
16
|
+
|
|
17
|
+
### Content Processing
|
|
18
|
+
- **URL to Markdown** - Convert web pages to Markdown
|
|
19
|
+
- **HTML to Markdown** - Convert HTML content to Markdown
|
|
20
|
+
- **Markdown to HTML** - Convert Markdown to HTML with syntax highlighting
|
|
21
|
+
- **HTML to PDF** - Generate PDF documents from HTML
|
|
22
|
+
|
|
23
|
+
### Document Generation
|
|
24
|
+
- **QR Code Generator** - Generate QR codes (PNG/SVG)
|
|
25
|
+
- **Markdown Table Generator** - Create formatted Markdown tables
|
|
26
|
+
|
|
27
|
+
### File Conversion
|
|
28
|
+
- **Image Converter** - Convert between JPEG, PNG, WebP
|
|
29
|
+
- **Excel to JSON** - Parse Excel files to JSON
|
|
30
|
+
- **JSON to Excel** - Create Excel files from JSON data
|
|
31
|
+
|
|
32
|
+
### PDF Operations
|
|
33
|
+
- **PDF Merge** - Combine multiple PDF files
|
|
34
|
+
- **PDF Extract Page** - Extract specific pages from PDFs
|
|
35
|
+
- **PDF to HTML** - Convert PDFs to HTML
|
|
36
|
+
- **PDF to Markdown** - Convert PDFs to Markdown
|
|
37
|
+
|
|
38
|
+
### Communication
|
|
39
|
+
- **Email Access** - Send emails via SMTP
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
### In n8n Desktop/Self-hosted
|
|
44
|
+
|
|
45
|
+
1. Go to **Settings** > **Community Nodes**
|
|
46
|
+
2. Select **Install**
|
|
47
|
+
3. Enter `@acrewity/n8n-nodes-acrewity`
|
|
48
|
+
4. Click **Install**
|
|
49
|
+
|
|
50
|
+
### Manual Installation
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install @acrewity/n8n-nodes-acrewity
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Credentials
|
|
57
|
+
|
|
58
|
+
To use this node, you need an Acrewity API key:
|
|
59
|
+
|
|
60
|
+
1. Sign up at [acrewity.com](https://acrewity.com)
|
|
61
|
+
2. Go to your Dashboard > API Keys
|
|
62
|
+
3. Create a new API key
|
|
63
|
+
4. Copy the key (starts with `ak_`)
|
|
64
|
+
|
|
65
|
+
In n8n:
|
|
66
|
+
1. Go to **Credentials**
|
|
67
|
+
2. Create new **Acrewity API** credential
|
|
68
|
+
3. Paste your API key
|
|
69
|
+
|
|
70
|
+
## Usage
|
|
71
|
+
|
|
72
|
+
1. Add the **Acrewity** node to your workflow
|
|
73
|
+
2. Select a **Resource** (service type)
|
|
74
|
+
3. Select an **Operation**
|
|
75
|
+
4. Fill in the required parameters
|
|
76
|
+
5. Execute!
|
|
77
|
+
|
|
78
|
+
### Example: Generate UUIDs
|
|
79
|
+
|
|
80
|
+
1. Resource: `UUID Generator`
|
|
81
|
+
2. Operation: `Generate UUID`
|
|
82
|
+
3. UUID Version: `Version 4 (Random)`
|
|
83
|
+
4. Count: `5`
|
|
84
|
+
|
|
85
|
+
### Example: Convert HTML to PDF
|
|
86
|
+
|
|
87
|
+
1. Resource: `HTML to PDF`
|
|
88
|
+
2. Operation: `Convert to PDF`
|
|
89
|
+
3. HTML Content: `<html><body><h1>Invoice #123</h1>...</body></html>`
|
|
90
|
+
|
|
91
|
+
## API Documentation
|
|
92
|
+
|
|
93
|
+
Full API documentation is available at [acrewity.com/docs](https://acrewity.com/docs)
|
|
94
|
+
|
|
95
|
+
## Credits
|
|
96
|
+
|
|
97
|
+
Each API operation costs **1 credit**. Check your credit balance in the Acrewity dashboard.
|
|
98
|
+
|
|
99
|
+
## Support
|
|
100
|
+
|
|
101
|
+
- **Documentation**: [acrewity.com/docs](https://acrewity.com/docs)
|
|
102
|
+
- **Issues**: [GitHub Issues](https://github.com/Acrewity/n8n-nodes-acrewity/issues)
|
|
103
|
+
- **Contact**: [acrewity.com/contact](https://acrewity.com/contact)
|
|
104
|
+
|
|
105
|
+
## License
|
|
106
|
+
|
|
107
|
+
[MIT](LICENSE.md)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class AcrewityApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
icon: "file:acrewity.svg";
|
|
6
|
+
documentationUrl: string;
|
|
7
|
+
properties: INodeProperties[];
|
|
8
|
+
authenticate: IAuthenticateGeneric;
|
|
9
|
+
test: ICredentialTestRequest;
|
|
10
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AcrewityApi = void 0;
|
|
4
|
+
class AcrewityApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'acrewityApi';
|
|
7
|
+
this.displayName = 'Acrewity API';
|
|
8
|
+
this.icon = 'file:acrewity.svg';
|
|
9
|
+
this.documentationUrl = 'https://acrewity.com/docs/api-reference';
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'API Key',
|
|
13
|
+
name: 'apiKey',
|
|
14
|
+
type: 'string',
|
|
15
|
+
typeOptions: { password: true },
|
|
16
|
+
default: '',
|
|
17
|
+
required: true,
|
|
18
|
+
description: 'Your Acrewity API key (starts with ak_). Get one from your Acrewity dashboard.',
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
this.authenticate = {
|
|
22
|
+
type: 'generic',
|
|
23
|
+
properties: {
|
|
24
|
+
headers: {
|
|
25
|
+
Authorization: '=Bearer {{$credentials.apiKey}}',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
this.test = {
|
|
30
|
+
request: {
|
|
31
|
+
baseURL: 'https://www.acrewity.com',
|
|
32
|
+
url: '/api/services/execute',
|
|
33
|
+
method: 'POST',
|
|
34
|
+
headers: {
|
|
35
|
+
'Content-Type': 'application/json',
|
|
36
|
+
},
|
|
37
|
+
body: JSON.stringify({
|
|
38
|
+
service: 'uuid_generator',
|
|
39
|
+
operation: 'generate_uuid',
|
|
40
|
+
parameters: {
|
|
41
|
+
version: 4,
|
|
42
|
+
count: 1,
|
|
43
|
+
},
|
|
44
|
+
}),
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.AcrewityApi = AcrewityApi;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="grad-tl" x1="0%" y1="100%" x2="100%" y2="0%">
|
|
4
|
+
<stop offset="0%" stop-color="#0EA5E9"/>
|
|
5
|
+
<stop offset="100%" stop-color="#14B8A6"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="grad-tr" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
8
|
+
<stop offset="0%" stop-color="#14B8A6"/>
|
|
9
|
+
<stop offset="100%" stop-color="#F97316"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="grad-br" x1="100%" y1="0%" x2="0%" y2="100%">
|
|
12
|
+
<stop offset="0%" stop-color="#F97316"/>
|
|
13
|
+
<stop offset="100%" stop-color="#EC4899"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<linearGradient id="grad-bl" x1="100%" y1="100%" x2="0%" y2="0%">
|
|
16
|
+
<stop offset="0%" stop-color="#EC4899"/>
|
|
17
|
+
<stop offset="100%" stop-color="#8B5CF6"/>
|
|
18
|
+
</linearGradient>
|
|
19
|
+
<linearGradient id="grad-l" x1="100%" y1="100%" x2="0%" y2="0%">
|
|
20
|
+
<stop offset="0%" stop-color="#8B5CF6"/>
|
|
21
|
+
<stop offset="100%" stop-color="#0EA5E9"/>
|
|
22
|
+
</linearGradient>
|
|
23
|
+
</defs>
|
|
24
|
+
|
|
25
|
+
<!-- Outer ring made of curved body segments -->
|
|
26
|
+
|
|
27
|
+
<!-- Top segment (teal to orange) -->
|
|
28
|
+
<path d="M20 10
|
|
29
|
+
A26 26 0 0 1 44 10
|
|
30
|
+
A18 18 0 0 0 20 10Z" fill="url(#grad-tr)"/>
|
|
31
|
+
|
|
32
|
+
<!-- Right segment (orange to pink) -->
|
|
33
|
+
<path d="M54 20
|
|
34
|
+
A26 26 0 0 1 54 44
|
|
35
|
+
A18 18 0 0 0 54 20Z" fill="url(#grad-br)"/>
|
|
36
|
+
|
|
37
|
+
<!-- Bottom segment (pink to purple) -->
|
|
38
|
+
<path d="M44 54
|
|
39
|
+
A26 26 0 0 1 20 54
|
|
40
|
+
A18 18 0 0 0 44 54Z" fill="url(#grad-bl)"/>
|
|
41
|
+
|
|
42
|
+
<!-- Left segment (purple to blue) -->
|
|
43
|
+
<path d="M10 44
|
|
44
|
+
A26 26 0 0 1 10 20
|
|
45
|
+
A18 18 0 0 0 10 44Z" fill="url(#grad-l)"/>
|
|
46
|
+
|
|
47
|
+
<!-- Four heads -->
|
|
48
|
+
<circle cx="14" cy="14" r="5.5" fill="url(#grad-tl)"/>
|
|
49
|
+
<circle cx="50" cy="14" r="5.5" fill="url(#grad-tr)"/>
|
|
50
|
+
<circle cx="50" cy="50" r="5.5" fill="url(#grad-br)"/>
|
|
51
|
+
<circle cx="14" cy="50" r="5.5" fill="url(#grad-bl)"/>
|
|
52
|
+
|
|
53
|
+
<!-- White center -->
|
|
54
|
+
<circle cx="32" cy="32" r="13" fill="white"/>
|
|
55
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class Acrewity implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,930 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Acrewity = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
class Acrewity {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.description = {
|
|
8
|
+
displayName: 'Acrewity',
|
|
9
|
+
name: 'acrewity',
|
|
10
|
+
icon: 'file:acrewity.svg',
|
|
11
|
+
group: ['transform'],
|
|
12
|
+
version: 1,
|
|
13
|
+
subtitle: '={{$parameter["operation"] + " (" + $parameter["resource"] + ")"}}',
|
|
14
|
+
description: 'Consume the Acrewity API - 20+ utility services for data conversion, PDF processing, QR codes, and more',
|
|
15
|
+
defaults: {
|
|
16
|
+
name: 'Acrewity',
|
|
17
|
+
},
|
|
18
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
19
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
20
|
+
usableAsTool: true,
|
|
21
|
+
credentials: [
|
|
22
|
+
{
|
|
23
|
+
name: 'acrewityApi',
|
|
24
|
+
required: true,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
properties: [
|
|
28
|
+
// Resource Selection
|
|
29
|
+
{
|
|
30
|
+
displayName: 'Resource',
|
|
31
|
+
name: 'resource',
|
|
32
|
+
type: 'options',
|
|
33
|
+
noDataExpression: true,
|
|
34
|
+
options: [
|
|
35
|
+
{ name: 'Email', value: 'email_access', description: 'Send emails via SMTP' },
|
|
36
|
+
{ name: 'Excel to JSON', value: 'excel_to_json', description: 'Convert Excel files to JSON' },
|
|
37
|
+
{ name: 'HTML to Markdown', value: 'html_to_markdown', description: 'Convert HTML to Markdown' },
|
|
38
|
+
{ name: 'HTML to PDF', value: 'html_to_pdf', description: 'Convert HTML to PDF documents' },
|
|
39
|
+
{ name: 'Image Converter', value: 'image_converter', description: 'Convert images between formats' },
|
|
40
|
+
{ name: 'JSON Schema Validator', value: 'json_schema_validator', description: 'Validate JSON against schemas' },
|
|
41
|
+
{ name: 'JSON to Excel', value: 'excel_editor', description: 'Convert JSON to Excel files' },
|
|
42
|
+
{ name: 'Markdown Table', value: 'markdown_table_generator', description: 'Generate Markdown tables' },
|
|
43
|
+
{ name: 'Markdown to HTML', value: 'markdown_to_html', description: 'Convert Markdown to HTML' },
|
|
44
|
+
{ name: 'PDF Extract Page', value: 'pdf_extract_page', description: 'Extract pages from PDFs' },
|
|
45
|
+
{ name: 'PDF Merge', value: 'pdf_merge', description: 'Merge multiple PDF files' },
|
|
46
|
+
{ name: 'PDF to HTML', value: 'pdf_to_html', description: 'Convert PDF to HTML' },
|
|
47
|
+
{ name: 'PDF to Markdown', value: 'pdf_to_markdown', description: 'Convert PDF to Markdown' },
|
|
48
|
+
{ name: 'QR Code', value: 'qr_code_generator', description: 'Generate QR codes' },
|
|
49
|
+
{ name: 'Regex Matcher', value: 'regex_matcher', description: 'Match patterns in text' },
|
|
50
|
+
{ name: 'Text Diff', value: 'text_diff', description: 'Compare two texts' },
|
|
51
|
+
{ name: 'Timezone Converter', value: 'timezone_converter', description: 'Convert between timezones' },
|
|
52
|
+
{ name: 'URL Encoder/Decoder', value: 'url_encoder_decoder', description: 'Encode or decode URLs' },
|
|
53
|
+
{ name: 'URL to Markdown', value: 'url_to_markdown', description: 'Convert web pages to Markdown' },
|
|
54
|
+
{ name: 'UUID Generator', value: 'uuid_generator', description: 'Generate unique identifiers' },
|
|
55
|
+
],
|
|
56
|
+
default: 'uuid_generator',
|
|
57
|
+
},
|
|
58
|
+
// ============ UUID Generator ============
|
|
59
|
+
{
|
|
60
|
+
displayName: 'Operation',
|
|
61
|
+
name: 'operation',
|
|
62
|
+
type: 'options',
|
|
63
|
+
noDataExpression: true,
|
|
64
|
+
displayOptions: { show: { resource: ['uuid_generator'] } },
|
|
65
|
+
options: [
|
|
66
|
+
{ name: 'Generate UUID', value: 'generate_uuid', action: 'Generate unique identifiers' },
|
|
67
|
+
],
|
|
68
|
+
default: 'generate_uuid',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
displayName: 'UUID Version',
|
|
72
|
+
name: 'version',
|
|
73
|
+
type: 'options',
|
|
74
|
+
displayOptions: { show: { resource: ['uuid_generator'] } },
|
|
75
|
+
options: [
|
|
76
|
+
{ name: 'Version 1 (Time-Based)', value: 1 },
|
|
77
|
+
{ name: 'Version 4 (Random)', value: 4 },
|
|
78
|
+
],
|
|
79
|
+
default: 4,
|
|
80
|
+
description: 'The UUID version to generate',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
displayName: 'Count',
|
|
84
|
+
name: 'count',
|
|
85
|
+
type: 'number',
|
|
86
|
+
displayOptions: { show: { resource: ['uuid_generator'] } },
|
|
87
|
+
default: 1,
|
|
88
|
+
typeOptions: { minValue: 1, maxValue: 100 },
|
|
89
|
+
description: 'Number of UUIDs to generate',
|
|
90
|
+
},
|
|
91
|
+
// ============ Regex Matcher ============
|
|
92
|
+
{
|
|
93
|
+
displayName: 'Operation',
|
|
94
|
+
name: 'operation',
|
|
95
|
+
type: 'options',
|
|
96
|
+
noDataExpression: true,
|
|
97
|
+
displayOptions: { show: { resource: ['regex_matcher'] } },
|
|
98
|
+
options: [
|
|
99
|
+
{ name: 'Match Pattern', value: 'match_pattern', action: 'Match regex pattern in text' },
|
|
100
|
+
],
|
|
101
|
+
default: 'match_pattern',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
displayName: 'Text',
|
|
105
|
+
name: 'text',
|
|
106
|
+
type: 'string',
|
|
107
|
+
displayOptions: { show: { resource: ['regex_matcher'] } },
|
|
108
|
+
default: '',
|
|
109
|
+
required: true,
|
|
110
|
+
description: 'The text to search in',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
displayName: 'Pattern',
|
|
114
|
+
name: 'pattern',
|
|
115
|
+
type: 'string',
|
|
116
|
+
displayOptions: { show: { resource: ['regex_matcher'] } },
|
|
117
|
+
default: '',
|
|
118
|
+
required: true,
|
|
119
|
+
description: 'The regex pattern to match',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
displayName: 'Flags',
|
|
123
|
+
name: 'flags',
|
|
124
|
+
type: 'string',
|
|
125
|
+
displayOptions: { show: { resource: ['regex_matcher'] } },
|
|
126
|
+
default: 'g',
|
|
127
|
+
description: 'Regex flags (g=global, i=case-insensitive, m=multiline)',
|
|
128
|
+
},
|
|
129
|
+
// ============ Text Diff ============
|
|
130
|
+
{
|
|
131
|
+
displayName: 'Operation',
|
|
132
|
+
name: 'operation',
|
|
133
|
+
type: 'options',
|
|
134
|
+
noDataExpression: true,
|
|
135
|
+
displayOptions: { show: { resource: ['text_diff'] } },
|
|
136
|
+
options: [
|
|
137
|
+
{ name: 'Compare Text', value: 'compare_text', action: 'Compare two texts' },
|
|
138
|
+
],
|
|
139
|
+
default: 'compare_text',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
displayName: 'Text 1',
|
|
143
|
+
name: 'text1',
|
|
144
|
+
type: 'string',
|
|
145
|
+
typeOptions: { rows: 4 },
|
|
146
|
+
displayOptions: { show: { resource: ['text_diff'] } },
|
|
147
|
+
default: '',
|
|
148
|
+
required: true,
|
|
149
|
+
description: 'The original text',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
displayName: 'Text 2',
|
|
153
|
+
name: 'text2',
|
|
154
|
+
type: 'string',
|
|
155
|
+
typeOptions: { rows: 4 },
|
|
156
|
+
displayOptions: { show: { resource: ['text_diff'] } },
|
|
157
|
+
default: '',
|
|
158
|
+
required: true,
|
|
159
|
+
description: 'The text to compare against',
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
displayName: 'Format',
|
|
163
|
+
name: 'format',
|
|
164
|
+
type: 'options',
|
|
165
|
+
displayOptions: { show: { resource: ['text_diff'] } },
|
|
166
|
+
options: [
|
|
167
|
+
{ name: 'Unified', value: 'unified' },
|
|
168
|
+
{ name: 'JSON', value: 'json' },
|
|
169
|
+
],
|
|
170
|
+
default: 'unified',
|
|
171
|
+
description: 'Output format for the diff',
|
|
172
|
+
},
|
|
173
|
+
// ============ URL Encoder/Decoder ============
|
|
174
|
+
{
|
|
175
|
+
displayName: 'Operation',
|
|
176
|
+
name: 'operation',
|
|
177
|
+
type: 'options',
|
|
178
|
+
noDataExpression: true,
|
|
179
|
+
displayOptions: { show: { resource: ['url_encoder_decoder'] } },
|
|
180
|
+
options: [
|
|
181
|
+
{ name: 'Encode', value: 'encode', action: 'Url encode text' },
|
|
182
|
+
{ name: 'Decode', value: 'decode', action: 'Url decode text' },
|
|
183
|
+
],
|
|
184
|
+
default: 'encode',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
displayName: 'Text',
|
|
188
|
+
name: 'text',
|
|
189
|
+
type: 'string',
|
|
190
|
+
displayOptions: { show: { resource: ['url_encoder_decoder'] } },
|
|
191
|
+
default: '',
|
|
192
|
+
required: true,
|
|
193
|
+
description: 'The text to encode or decode',
|
|
194
|
+
},
|
|
195
|
+
// ============ Timezone Converter ============
|
|
196
|
+
{
|
|
197
|
+
displayName: 'Operation',
|
|
198
|
+
name: 'operation',
|
|
199
|
+
type: 'options',
|
|
200
|
+
noDataExpression: true,
|
|
201
|
+
displayOptions: { show: { resource: ['timezone_converter'] } },
|
|
202
|
+
options: [
|
|
203
|
+
{ name: 'Convert Timezone', value: 'convert_timezone', action: 'Convert time between timezones' },
|
|
204
|
+
],
|
|
205
|
+
default: 'convert_timezone',
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
displayName: 'Date/Time',
|
|
209
|
+
name: 'datetime',
|
|
210
|
+
type: 'string',
|
|
211
|
+
displayOptions: { show: { resource: ['timezone_converter'] } },
|
|
212
|
+
default: '',
|
|
213
|
+
required: true,
|
|
214
|
+
description: 'The datetime to convert (e.g., 2025-10-23T12:00:00)',
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
displayName: 'From Timezone',
|
|
218
|
+
name: 'fromTimezone',
|
|
219
|
+
type: 'options',
|
|
220
|
+
displayOptions: { show: { resource: ['timezone_converter'] } },
|
|
221
|
+
options: [
|
|
222
|
+
{ name: 'AEST (Australian Eastern)', value: 'AEST' },
|
|
223
|
+
{ name: 'CET (Central European)', value: 'CET' },
|
|
224
|
+
{ name: 'CST (Central)', value: 'CST' },
|
|
225
|
+
{ name: 'EST (Eastern)', value: 'EST' },
|
|
226
|
+
{ name: 'GMT', value: 'GMT' },
|
|
227
|
+
{ name: 'JST (Japan)', value: 'JST' },
|
|
228
|
+
{ name: 'MST (Mountain)', value: 'MST' },
|
|
229
|
+
{ name: 'PST (Pacific)', value: 'PST' },
|
|
230
|
+
{ name: 'UTC', value: 'UTC' },
|
|
231
|
+
],
|
|
232
|
+
default: 'UTC',
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
displayName: 'To Timezone',
|
|
236
|
+
name: 'toTimezone',
|
|
237
|
+
type: 'options',
|
|
238
|
+
displayOptions: { show: { resource: ['timezone_converter'] } },
|
|
239
|
+
options: [
|
|
240
|
+
{ name: 'AEST (Australian Eastern)', value: 'AEST' },
|
|
241
|
+
{ name: 'CET (Central European)', value: 'CET' },
|
|
242
|
+
{ name: 'CST (Central)', value: 'CST' },
|
|
243
|
+
{ name: 'EST (Eastern)', value: 'EST' },
|
|
244
|
+
{ name: 'GMT', value: 'GMT' },
|
|
245
|
+
{ name: 'JST (Japan)', value: 'JST' },
|
|
246
|
+
{ name: 'MST (Mountain)', value: 'MST' },
|
|
247
|
+
{ name: 'PST (Pacific)', value: 'PST' },
|
|
248
|
+
{ name: 'UTC', value: 'UTC' },
|
|
249
|
+
],
|
|
250
|
+
default: 'EST',
|
|
251
|
+
},
|
|
252
|
+
// ============ QR Code Generator ============
|
|
253
|
+
{
|
|
254
|
+
displayName: 'Operation',
|
|
255
|
+
name: 'operation',
|
|
256
|
+
type: 'options',
|
|
257
|
+
noDataExpression: true,
|
|
258
|
+
displayOptions: { show: { resource: ['qr_code_generator'] } },
|
|
259
|
+
options: [
|
|
260
|
+
{ name: 'Generate QR Code', value: 'generate_qr', action: 'Generate a QR code' },
|
|
261
|
+
],
|
|
262
|
+
default: 'generate_qr',
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
displayName: 'Text/URL',
|
|
266
|
+
name: 'text',
|
|
267
|
+
type: 'string',
|
|
268
|
+
displayOptions: { show: { resource: ['qr_code_generator'] } },
|
|
269
|
+
default: '',
|
|
270
|
+
required: true,
|
|
271
|
+
description: 'The text or URL to encode in the QR code',
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
displayName: 'Format',
|
|
275
|
+
name: 'format',
|
|
276
|
+
type: 'options',
|
|
277
|
+
displayOptions: { show: { resource: ['qr_code_generator'] } },
|
|
278
|
+
options: [
|
|
279
|
+
{ name: 'PNG', value: 'png' },
|
|
280
|
+
{ name: 'SVG', value: 'svg' },
|
|
281
|
+
],
|
|
282
|
+
default: 'png',
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
displayName: 'Size',
|
|
286
|
+
name: 'size',
|
|
287
|
+
type: 'number',
|
|
288
|
+
displayOptions: { show: { resource: ['qr_code_generator'] } },
|
|
289
|
+
default: 300,
|
|
290
|
+
typeOptions: { minValue: 100, maxValue: 1000 },
|
|
291
|
+
description: 'Size of the QR code in pixels',
|
|
292
|
+
},
|
|
293
|
+
// ============ Markdown Table Generator ============
|
|
294
|
+
{
|
|
295
|
+
displayName: 'Operation',
|
|
296
|
+
name: 'operation',
|
|
297
|
+
type: 'options',
|
|
298
|
+
noDataExpression: true,
|
|
299
|
+
displayOptions: { show: { resource: ['markdown_table_generator'] } },
|
|
300
|
+
options: [
|
|
301
|
+
{ name: 'Generate Table', value: 'generate_table', action: 'Generate a markdown table' },
|
|
302
|
+
],
|
|
303
|
+
default: 'generate_table',
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
displayName: 'Headers (JSON Array)',
|
|
307
|
+
name: 'headers',
|
|
308
|
+
type: 'string',
|
|
309
|
+
displayOptions: { show: { resource: ['markdown_table_generator'] } },
|
|
310
|
+
default: '["Column1", "Column2", "Column3"]',
|
|
311
|
+
required: true,
|
|
312
|
+
description: 'Table headers as a JSON array',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
displayName: 'Rows (JSON Array of Arrays)',
|
|
316
|
+
name: 'rows',
|
|
317
|
+
type: 'string',
|
|
318
|
+
typeOptions: { rows: 4 },
|
|
319
|
+
displayOptions: { show: { resource: ['markdown_table_generator'] } },
|
|
320
|
+
default: '[["Row1Col1", "Row1Col2", "Row1Col3"], ["Row2Col1", "Row2Col2", "Row2Col3"]]',
|
|
321
|
+
required: true,
|
|
322
|
+
description: 'Table rows as a JSON array of arrays',
|
|
323
|
+
},
|
|
324
|
+
// ============ JSON Schema Validator ============
|
|
325
|
+
{
|
|
326
|
+
displayName: 'Operation',
|
|
327
|
+
name: 'operation',
|
|
328
|
+
type: 'options',
|
|
329
|
+
noDataExpression: true,
|
|
330
|
+
displayOptions: { show: { resource: ['json_schema_validator'] } },
|
|
331
|
+
options: [
|
|
332
|
+
{ name: 'Validate JSON', value: 'validate_json', action: 'Validate JSON against a schema' },
|
|
333
|
+
],
|
|
334
|
+
default: 'validate_json',
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
displayName: 'Data (JSON)',
|
|
338
|
+
name: 'data',
|
|
339
|
+
type: 'string',
|
|
340
|
+
typeOptions: { rows: 4 },
|
|
341
|
+
displayOptions: { show: { resource: ['json_schema_validator'] } },
|
|
342
|
+
default: '{}',
|
|
343
|
+
required: true,
|
|
344
|
+
description: 'The JSON data to validate',
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
displayName: 'Schema (JSON)',
|
|
348
|
+
name: 'schema',
|
|
349
|
+
type: 'string',
|
|
350
|
+
typeOptions: { rows: 6 },
|
|
351
|
+
displayOptions: { show: { resource: ['json_schema_validator'] } },
|
|
352
|
+
default: '{"type": "object", "properties": {}}',
|
|
353
|
+
required: true,
|
|
354
|
+
description: 'The JSON Schema to validate against',
|
|
355
|
+
},
|
|
356
|
+
// ============ URL to Markdown ============
|
|
357
|
+
{
|
|
358
|
+
displayName: 'Operation',
|
|
359
|
+
name: 'operation',
|
|
360
|
+
type: 'options',
|
|
361
|
+
noDataExpression: true,
|
|
362
|
+
displayOptions: { show: { resource: ['url_to_markdown'] } },
|
|
363
|
+
options: [
|
|
364
|
+
{ name: 'Convert URL', value: 'url_to_markdown', action: 'Convert web page to markdown' },
|
|
365
|
+
],
|
|
366
|
+
default: 'url_to_markdown',
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
displayName: 'URL',
|
|
370
|
+
name: 'url',
|
|
371
|
+
type: 'string',
|
|
372
|
+
displayOptions: { show: { resource: ['url_to_markdown'] } },
|
|
373
|
+
default: '',
|
|
374
|
+
required: true,
|
|
375
|
+
placeholder: 'https://example.com',
|
|
376
|
+
description: 'The URL of the web page to convert',
|
|
377
|
+
},
|
|
378
|
+
// ============ HTML to PDF ============
|
|
379
|
+
{
|
|
380
|
+
displayName: 'Operation',
|
|
381
|
+
name: 'operation',
|
|
382
|
+
type: 'options',
|
|
383
|
+
noDataExpression: true,
|
|
384
|
+
displayOptions: { show: { resource: ['html_to_pdf'] } },
|
|
385
|
+
options: [
|
|
386
|
+
{ name: 'Convert to PDF', value: 'convert_pdf', action: 'Convert HTML to PDF' },
|
|
387
|
+
],
|
|
388
|
+
default: 'convert_pdf',
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
displayName: 'HTML Content',
|
|
392
|
+
name: 'html',
|
|
393
|
+
type: 'string',
|
|
394
|
+
typeOptions: { rows: 6 },
|
|
395
|
+
displayOptions: { show: { resource: ['html_to_pdf'] } },
|
|
396
|
+
default: '<html><body><h1>Hello World</h1></body></html>',
|
|
397
|
+
required: true,
|
|
398
|
+
description: 'The HTML content to convert to PDF',
|
|
399
|
+
},
|
|
400
|
+
// ============ HTML to Markdown ============
|
|
401
|
+
{
|
|
402
|
+
displayName: 'Operation',
|
|
403
|
+
name: 'operation',
|
|
404
|
+
type: 'options',
|
|
405
|
+
noDataExpression: true,
|
|
406
|
+
displayOptions: { show: { resource: ['html_to_markdown'] } },
|
|
407
|
+
options: [
|
|
408
|
+
{ name: 'Convert to Markdown', value: 'convert', action: 'Convert html to markdown' },
|
|
409
|
+
],
|
|
410
|
+
default: 'convert',
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
displayName: 'HTML Content',
|
|
414
|
+
name: 'content',
|
|
415
|
+
type: 'string',
|
|
416
|
+
typeOptions: { rows: 6 },
|
|
417
|
+
displayOptions: { show: { resource: ['html_to_markdown'] } },
|
|
418
|
+
default: '',
|
|
419
|
+
required: true,
|
|
420
|
+
description: 'The HTML content to convert',
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
displayName: 'Preserve Tables',
|
|
424
|
+
name: 'preserve_tables',
|
|
425
|
+
type: 'boolean',
|
|
426
|
+
displayOptions: { show: { resource: ['html_to_markdown'] } },
|
|
427
|
+
default: true,
|
|
428
|
+
description: 'Whether to preserve table formatting',
|
|
429
|
+
},
|
|
430
|
+
// ============ Markdown to HTML ============
|
|
431
|
+
{
|
|
432
|
+
displayName: 'Operation',
|
|
433
|
+
name: 'operation',
|
|
434
|
+
type: 'options',
|
|
435
|
+
noDataExpression: true,
|
|
436
|
+
displayOptions: { show: { resource: ['markdown_to_html'] } },
|
|
437
|
+
options: [
|
|
438
|
+
{ name: 'Convert to HTML', value: 'convert', action: 'Convert markdown to html' },
|
|
439
|
+
{ name: 'Convert to Fragment', value: 'fragment', action: 'Convert markdown to html fragment' },
|
|
440
|
+
],
|
|
441
|
+
default: 'convert',
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
displayName: 'Markdown Content',
|
|
445
|
+
name: 'content',
|
|
446
|
+
type: 'string',
|
|
447
|
+
typeOptions: { rows: 6 },
|
|
448
|
+
displayOptions: { show: { resource: ['markdown_to_html'] } },
|
|
449
|
+
default: '',
|
|
450
|
+
required: true,
|
|
451
|
+
description: 'The Markdown content to convert',
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
displayName: 'Include Styles',
|
|
455
|
+
name: 'include_styles',
|
|
456
|
+
type: 'boolean',
|
|
457
|
+
displayOptions: { show: { resource: ['markdown_to_html'], operation: ['convert'] } },
|
|
458
|
+
default: true,
|
|
459
|
+
description: 'Whether to include CSS styles in the output',
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
displayName: 'Highlight Code',
|
|
463
|
+
name: 'highlight_code',
|
|
464
|
+
type: 'boolean',
|
|
465
|
+
displayOptions: { show: { resource: ['markdown_to_html'], operation: ['convert'] } },
|
|
466
|
+
default: true,
|
|
467
|
+
description: 'Whether to add syntax highlighting to code blocks',
|
|
468
|
+
},
|
|
469
|
+
// ============ Image Converter ============
|
|
470
|
+
{
|
|
471
|
+
displayName: 'Operation',
|
|
472
|
+
name: 'operation',
|
|
473
|
+
type: 'options',
|
|
474
|
+
noDataExpression: true,
|
|
475
|
+
displayOptions: { show: { resource: ['image_converter'] } },
|
|
476
|
+
options: [
|
|
477
|
+
{ name: 'Convert Image', value: 'convert_image', action: 'Convert image format' },
|
|
478
|
+
],
|
|
479
|
+
default: 'convert_image',
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
displayName: 'Image URL',
|
|
483
|
+
name: 'imageUrl',
|
|
484
|
+
type: 'string',
|
|
485
|
+
displayOptions: { show: { resource: ['image_converter'] } },
|
|
486
|
+
default: '',
|
|
487
|
+
required: true,
|
|
488
|
+
description: 'URL of the image to convert',
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
displayName: 'Output Format',
|
|
492
|
+
name: 'format',
|
|
493
|
+
type: 'options',
|
|
494
|
+
displayOptions: { show: { resource: ['image_converter'] } },
|
|
495
|
+
options: [
|
|
496
|
+
{ name: 'JPEG', value: 'jpeg' },
|
|
497
|
+
{ name: 'PNG', value: 'png' },
|
|
498
|
+
{ name: 'WebP', value: 'webp' },
|
|
499
|
+
],
|
|
500
|
+
default: 'jpeg',
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
displayName: 'Quality',
|
|
504
|
+
name: 'quality',
|
|
505
|
+
type: 'number',
|
|
506
|
+
displayOptions: { show: { resource: ['image_converter'] } },
|
|
507
|
+
default: 85,
|
|
508
|
+
typeOptions: { minValue: 1, maxValue: 100 },
|
|
509
|
+
description: 'Output quality (1-100)',
|
|
510
|
+
},
|
|
511
|
+
// ============ Excel to JSON ============
|
|
512
|
+
{
|
|
513
|
+
displayName: 'Operation',
|
|
514
|
+
name: 'operation',
|
|
515
|
+
type: 'options',
|
|
516
|
+
noDataExpression: true,
|
|
517
|
+
displayOptions: { show: { resource: ['excel_to_json'] } },
|
|
518
|
+
options: [
|
|
519
|
+
{ name: 'Convert to JSON', value: 'convert', action: 'Convert excel to json' },
|
|
520
|
+
],
|
|
521
|
+
default: 'convert',
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
displayName: 'Excel File (Base64)',
|
|
525
|
+
name: 'file',
|
|
526
|
+
type: 'string',
|
|
527
|
+
typeOptions: { rows: 4 },
|
|
528
|
+
displayOptions: { show: { resource: ['excel_to_json'] } },
|
|
529
|
+
default: '',
|
|
530
|
+
required: true,
|
|
531
|
+
description: 'Base64 encoded Excel file content',
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
displayName: 'Sheet Name',
|
|
535
|
+
name: 'sheetName',
|
|
536
|
+
type: 'string',
|
|
537
|
+
displayOptions: { show: { resource: ['excel_to_json'] } },
|
|
538
|
+
default: 'Sheet1',
|
|
539
|
+
description: 'Name of the sheet to convert',
|
|
540
|
+
},
|
|
541
|
+
// ============ JSON to Excel ============
|
|
542
|
+
{
|
|
543
|
+
displayName: 'Operation',
|
|
544
|
+
name: 'operation',
|
|
545
|
+
type: 'options',
|
|
546
|
+
noDataExpression: true,
|
|
547
|
+
displayOptions: { show: { resource: ['excel_editor'] } },
|
|
548
|
+
options: [
|
|
549
|
+
{ name: 'Create Excel', value: 'create_excel', action: 'Create excel from json' },
|
|
550
|
+
],
|
|
551
|
+
default: 'create_excel',
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
displayName: 'Data (JSON Array)',
|
|
555
|
+
name: 'data',
|
|
556
|
+
type: 'string',
|
|
557
|
+
typeOptions: { rows: 6 },
|
|
558
|
+
displayOptions: { show: { resource: ['excel_editor'] } },
|
|
559
|
+
default: '[{"Name": "John", "Email": "john@example.com"}]',
|
|
560
|
+
required: true,
|
|
561
|
+
description: 'JSON array of objects to convert to Excel',
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
displayName: 'Sheet Name',
|
|
565
|
+
name: 'sheetName',
|
|
566
|
+
type: 'string',
|
|
567
|
+
displayOptions: { show: { resource: ['excel_editor'] } },
|
|
568
|
+
default: 'Sheet1',
|
|
569
|
+
description: 'Name of the Excel sheet',
|
|
570
|
+
},
|
|
571
|
+
// ============ PDF Merge ============
|
|
572
|
+
{
|
|
573
|
+
displayName: 'Operation',
|
|
574
|
+
name: 'operation',
|
|
575
|
+
type: 'options',
|
|
576
|
+
noDataExpression: true,
|
|
577
|
+
displayOptions: { show: { resource: ['pdf_merge'] } },
|
|
578
|
+
options: [
|
|
579
|
+
{ name: 'Merge PDFs', value: 'merge', action: 'Merge two PDF files' },
|
|
580
|
+
],
|
|
581
|
+
default: 'merge',
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
displayName: 'Source PDF (Base64)',
|
|
585
|
+
name: 'source_pdf',
|
|
586
|
+
type: 'string',
|
|
587
|
+
typeOptions: { rows: 4 },
|
|
588
|
+
displayOptions: { show: { resource: ['pdf_merge'] } },
|
|
589
|
+
default: '',
|
|
590
|
+
required: true,
|
|
591
|
+
description: 'First PDF file (Base64 encoded)',
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
displayName: 'Target PDF (Base64)',
|
|
595
|
+
name: 'target_pdf',
|
|
596
|
+
type: 'string',
|
|
597
|
+
typeOptions: { rows: 4 },
|
|
598
|
+
displayOptions: { show: { resource: ['pdf_merge'] } },
|
|
599
|
+
default: '',
|
|
600
|
+
required: true,
|
|
601
|
+
description: 'Second PDF file to append (Base64 encoded)',
|
|
602
|
+
},
|
|
603
|
+
// ============ PDF Extract Page ============
|
|
604
|
+
{
|
|
605
|
+
displayName: 'Operation',
|
|
606
|
+
name: 'operation',
|
|
607
|
+
type: 'options',
|
|
608
|
+
noDataExpression: true,
|
|
609
|
+
displayOptions: { show: { resource: ['pdf_extract_page'] } },
|
|
610
|
+
options: [
|
|
611
|
+
{ name: 'Extract Page', value: 'extract', action: 'Extract a page from PDF' },
|
|
612
|
+
],
|
|
613
|
+
default: 'extract',
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
displayName: 'PDF File (Base64)',
|
|
617
|
+
name: 'pdf',
|
|
618
|
+
type: 'string',
|
|
619
|
+
typeOptions: { rows: 4 },
|
|
620
|
+
displayOptions: { show: { resource: ['pdf_extract_page'] } },
|
|
621
|
+
default: '',
|
|
622
|
+
required: true,
|
|
623
|
+
description: 'PDF file (Base64 encoded)',
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
displayName: 'Page Number',
|
|
627
|
+
name: 'pageNumber',
|
|
628
|
+
type: 'number',
|
|
629
|
+
displayOptions: { show: { resource: ['pdf_extract_page'] } },
|
|
630
|
+
default: 1,
|
|
631
|
+
typeOptions: { minValue: 1 },
|
|
632
|
+
description: 'Page number to extract (1-based)',
|
|
633
|
+
},
|
|
634
|
+
// ============ PDF to HTML ============
|
|
635
|
+
{
|
|
636
|
+
displayName: 'Operation',
|
|
637
|
+
name: 'operation',
|
|
638
|
+
type: 'options',
|
|
639
|
+
noDataExpression: true,
|
|
640
|
+
displayOptions: { show: { resource: ['pdf_to_html'] } },
|
|
641
|
+
options: [
|
|
642
|
+
{ name: 'Convert to HTML', value: 'convert', action: 'Convert PDF to HTML' },
|
|
643
|
+
{ name: 'Get Metadata', value: 'metadata', action: 'Get PDF metadata' },
|
|
644
|
+
],
|
|
645
|
+
default: 'convert',
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
displayName: 'PDF File (Base64)',
|
|
649
|
+
name: 'base64_data',
|
|
650
|
+
type: 'string',
|
|
651
|
+
typeOptions: { rows: 4 },
|
|
652
|
+
displayOptions: { show: { resource: ['pdf_to_html'] } },
|
|
653
|
+
default: '',
|
|
654
|
+
required: true,
|
|
655
|
+
description: 'PDF file (Base64 encoded)',
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
displayName: 'Include Styles',
|
|
659
|
+
name: 'include_styles',
|
|
660
|
+
type: 'boolean',
|
|
661
|
+
displayOptions: { show: { resource: ['pdf_to_html'], operation: ['convert'] } },
|
|
662
|
+
default: true,
|
|
663
|
+
description: 'Whether to include CSS styles',
|
|
664
|
+
},
|
|
665
|
+
// ============ PDF to Markdown ============
|
|
666
|
+
{
|
|
667
|
+
displayName: 'Operation',
|
|
668
|
+
name: 'operation',
|
|
669
|
+
type: 'options',
|
|
670
|
+
noDataExpression: true,
|
|
671
|
+
displayOptions: { show: { resource: ['pdf_to_markdown'] } },
|
|
672
|
+
options: [
|
|
673
|
+
{ name: 'Convert to Markdown', value: 'convert', action: 'Convert pdf to markdown' },
|
|
674
|
+
],
|
|
675
|
+
default: 'convert',
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
displayName: 'PDF File (Base64)',
|
|
679
|
+
name: 'base64_data',
|
|
680
|
+
type: 'string',
|
|
681
|
+
typeOptions: { rows: 4 },
|
|
682
|
+
displayOptions: { show: { resource: ['pdf_to_markdown'] } },
|
|
683
|
+
default: '',
|
|
684
|
+
required: true,
|
|
685
|
+
description: 'PDF file (Base64 encoded)',
|
|
686
|
+
},
|
|
687
|
+
// ============ Email Access ============
|
|
688
|
+
{
|
|
689
|
+
displayName: 'Operation',
|
|
690
|
+
name: 'operation',
|
|
691
|
+
type: 'options',
|
|
692
|
+
noDataExpression: true,
|
|
693
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
694
|
+
options: [
|
|
695
|
+
{ name: 'Send Email', value: 'send_email', action: 'Send an email' },
|
|
696
|
+
],
|
|
697
|
+
default: 'send_email',
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
displayName: 'To',
|
|
701
|
+
name: 'to',
|
|
702
|
+
type: 'string',
|
|
703
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
704
|
+
default: '',
|
|
705
|
+
required: true,
|
|
706
|
+
description: 'Recipient email address',
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
displayName: 'Subject',
|
|
710
|
+
name: 'subject',
|
|
711
|
+
type: 'string',
|
|
712
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
713
|
+
default: '',
|
|
714
|
+
required: true,
|
|
715
|
+
description: 'Email subject',
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
displayName: 'Body (Text)',
|
|
719
|
+
name: 'text',
|
|
720
|
+
type: 'string',
|
|
721
|
+
typeOptions: { rows: 4 },
|
|
722
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
723
|
+
default: '',
|
|
724
|
+
description: 'Plain text email body',
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
displayName: 'SMTP Host',
|
|
728
|
+
name: 'smtp_host',
|
|
729
|
+
type: 'string',
|
|
730
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
731
|
+
default: '',
|
|
732
|
+
required: true,
|
|
733
|
+
placeholder: 'smtp.example.com',
|
|
734
|
+
description: 'SMTP server hostname',
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
displayName: 'SMTP Port',
|
|
738
|
+
name: 'smtp_port',
|
|
739
|
+
type: 'number',
|
|
740
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
741
|
+
default: 587,
|
|
742
|
+
description: 'SMTP server port',
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
displayName: 'SMTP User',
|
|
746
|
+
name: 'smtp_user',
|
|
747
|
+
type: 'string',
|
|
748
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
749
|
+
default: '',
|
|
750
|
+
required: true,
|
|
751
|
+
description: 'SMTP username/email',
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
displayName: 'SMTP Password',
|
|
755
|
+
name: 'smtp_pass',
|
|
756
|
+
type: 'string',
|
|
757
|
+
typeOptions: { password: true },
|
|
758
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
759
|
+
default: '',
|
|
760
|
+
required: true,
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
displayName: 'From Email',
|
|
764
|
+
name: 'from',
|
|
765
|
+
type: 'string',
|
|
766
|
+
displayOptions: { show: { resource: ['email_access'] } },
|
|
767
|
+
default: '',
|
|
768
|
+
required: true,
|
|
769
|
+
description: 'Sender email address',
|
|
770
|
+
},
|
|
771
|
+
],
|
|
772
|
+
};
|
|
773
|
+
}
|
|
774
|
+
async execute() {
|
|
775
|
+
const items = this.getInputData();
|
|
776
|
+
const returnData = [];
|
|
777
|
+
const credentials = await this.getCredentials('acrewityApi');
|
|
778
|
+
for (let i = 0; i < items.length; i++) {
|
|
779
|
+
try {
|
|
780
|
+
const resource = this.getNodeParameter('resource', i);
|
|
781
|
+
const operation = this.getNodeParameter('operation', i);
|
|
782
|
+
// Build parameters based on resource and operation
|
|
783
|
+
const parameters = {};
|
|
784
|
+
// UUID Generator
|
|
785
|
+
if (resource === 'uuid_generator') {
|
|
786
|
+
parameters.version = this.getNodeParameter('version', i);
|
|
787
|
+
parameters.count = this.getNodeParameter('count', i);
|
|
788
|
+
}
|
|
789
|
+
// Regex Matcher
|
|
790
|
+
if (resource === 'regex_matcher') {
|
|
791
|
+
parameters.text = this.getNodeParameter('text', i);
|
|
792
|
+
parameters.pattern = this.getNodeParameter('pattern', i);
|
|
793
|
+
parameters.flags = this.getNodeParameter('flags', i);
|
|
794
|
+
}
|
|
795
|
+
// Text Diff
|
|
796
|
+
if (resource === 'text_diff') {
|
|
797
|
+
parameters.text1 = this.getNodeParameter('text1', i);
|
|
798
|
+
parameters.text2 = this.getNodeParameter('text2', i);
|
|
799
|
+
parameters.format = this.getNodeParameter('format', i);
|
|
800
|
+
}
|
|
801
|
+
// URL Encoder/Decoder
|
|
802
|
+
if (resource === 'url_encoder_decoder') {
|
|
803
|
+
parameters.text = this.getNodeParameter('text', i);
|
|
804
|
+
}
|
|
805
|
+
// Timezone Converter
|
|
806
|
+
if (resource === 'timezone_converter') {
|
|
807
|
+
parameters.datetime = this.getNodeParameter('datetime', i);
|
|
808
|
+
parameters.fromTimezone = this.getNodeParameter('fromTimezone', i);
|
|
809
|
+
parameters.toTimezone = this.getNodeParameter('toTimezone', i);
|
|
810
|
+
}
|
|
811
|
+
// QR Code Generator
|
|
812
|
+
if (resource === 'qr_code_generator') {
|
|
813
|
+
parameters.text = this.getNodeParameter('text', i);
|
|
814
|
+
parameters.format = this.getNodeParameter('format', i);
|
|
815
|
+
parameters.size = this.getNodeParameter('size', i);
|
|
816
|
+
}
|
|
817
|
+
// Markdown Table Generator
|
|
818
|
+
if (resource === 'markdown_table_generator') {
|
|
819
|
+
parameters.headers = JSON.parse(this.getNodeParameter('headers', i));
|
|
820
|
+
parameters.rows = JSON.parse(this.getNodeParameter('rows', i));
|
|
821
|
+
}
|
|
822
|
+
// JSON Schema Validator
|
|
823
|
+
if (resource === 'json_schema_validator') {
|
|
824
|
+
parameters.data = JSON.parse(this.getNodeParameter('data', i));
|
|
825
|
+
parameters.schema = JSON.parse(this.getNodeParameter('schema', i));
|
|
826
|
+
}
|
|
827
|
+
// URL to Markdown
|
|
828
|
+
if (resource === 'url_to_markdown') {
|
|
829
|
+
parameters.url = this.getNodeParameter('url', i);
|
|
830
|
+
}
|
|
831
|
+
// HTML to PDF
|
|
832
|
+
if (resource === 'html_to_pdf') {
|
|
833
|
+
parameters.html = this.getNodeParameter('html', i);
|
|
834
|
+
}
|
|
835
|
+
// HTML to Markdown
|
|
836
|
+
if (resource === 'html_to_markdown') {
|
|
837
|
+
parameters.content = this.getNodeParameter('content', i);
|
|
838
|
+
parameters.preserve_tables = this.getNodeParameter('preserve_tables', i);
|
|
839
|
+
}
|
|
840
|
+
// Markdown to HTML
|
|
841
|
+
if (resource === 'markdown_to_html') {
|
|
842
|
+
parameters.content = this.getNodeParameter('content', i);
|
|
843
|
+
if (operation === 'convert') {
|
|
844
|
+
parameters.include_styles = this.getNodeParameter('include_styles', i);
|
|
845
|
+
parameters.highlight_code = this.getNodeParameter('highlight_code', i);
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
// Image Converter
|
|
849
|
+
if (resource === 'image_converter') {
|
|
850
|
+
parameters.imageUrl = this.getNodeParameter('imageUrl', i);
|
|
851
|
+
parameters.format = this.getNodeParameter('format', i);
|
|
852
|
+
parameters.quality = this.getNodeParameter('quality', i);
|
|
853
|
+
}
|
|
854
|
+
// Excel to JSON
|
|
855
|
+
if (resource === 'excel_to_json') {
|
|
856
|
+
parameters.file = this.getNodeParameter('file', i);
|
|
857
|
+
parameters.sheetName = this.getNodeParameter('sheetName', i);
|
|
858
|
+
}
|
|
859
|
+
// JSON to Excel
|
|
860
|
+
if (resource === 'excel_editor') {
|
|
861
|
+
parameters.data = JSON.parse(this.getNodeParameter('data', i));
|
|
862
|
+
parameters.sheetName = this.getNodeParameter('sheetName', i);
|
|
863
|
+
}
|
|
864
|
+
// PDF Merge
|
|
865
|
+
if (resource === 'pdf_merge') {
|
|
866
|
+
parameters.source_pdf = this.getNodeParameter('source_pdf', i);
|
|
867
|
+
parameters.target_pdf = this.getNodeParameter('target_pdf', i);
|
|
868
|
+
}
|
|
869
|
+
// PDF Extract Page
|
|
870
|
+
if (resource === 'pdf_extract_page') {
|
|
871
|
+
parameters.pdf = this.getNodeParameter('pdf', i);
|
|
872
|
+
parameters.pageNumber = this.getNodeParameter('pageNumber', i);
|
|
873
|
+
}
|
|
874
|
+
// PDF to HTML
|
|
875
|
+
if (resource === 'pdf_to_html') {
|
|
876
|
+
parameters.base64_data = this.getNodeParameter('base64_data', i);
|
|
877
|
+
if (operation === 'convert') {
|
|
878
|
+
parameters.include_styles = this.getNodeParameter('include_styles', i);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
// PDF to Markdown
|
|
882
|
+
if (resource === 'pdf_to_markdown') {
|
|
883
|
+
parameters.base64_data = this.getNodeParameter('base64_data', i);
|
|
884
|
+
}
|
|
885
|
+
// Email Access
|
|
886
|
+
if (resource === 'email_access') {
|
|
887
|
+
parameters.to = this.getNodeParameter('to', i);
|
|
888
|
+
parameters.subject = this.getNodeParameter('subject', i);
|
|
889
|
+
parameters.text = this.getNodeParameter('text', i);
|
|
890
|
+
parameters.smtp_host = this.getNodeParameter('smtp_host', i);
|
|
891
|
+
parameters.smtp_port = this.getNodeParameter('smtp_port', i);
|
|
892
|
+
parameters.smtp_user = this.getNodeParameter('smtp_user', i);
|
|
893
|
+
parameters.smtp_pass = this.getNodeParameter('smtp_pass', i);
|
|
894
|
+
parameters.from = this.getNodeParameter('from', i);
|
|
895
|
+
}
|
|
896
|
+
// Make API request
|
|
897
|
+
const response = await this.helpers.httpRequest({
|
|
898
|
+
method: 'POST',
|
|
899
|
+
url: 'https://www.acrewity.com/api/services/execute',
|
|
900
|
+
headers: {
|
|
901
|
+
'Content-Type': 'application/json',
|
|
902
|
+
Authorization: `Bearer ${credentials.apiKey}`,
|
|
903
|
+
},
|
|
904
|
+
body: {
|
|
905
|
+
service: resource,
|
|
906
|
+
operation,
|
|
907
|
+
parameters,
|
|
908
|
+
},
|
|
909
|
+
json: true,
|
|
910
|
+
});
|
|
911
|
+
returnData.push({
|
|
912
|
+
json: response,
|
|
913
|
+
pairedItem: { item: i },
|
|
914
|
+
});
|
|
915
|
+
}
|
|
916
|
+
catch (error) {
|
|
917
|
+
if (this.continueOnFail()) {
|
|
918
|
+
returnData.push({
|
|
919
|
+
json: { error: error.message },
|
|
920
|
+
pairedItem: { item: i },
|
|
921
|
+
});
|
|
922
|
+
continue;
|
|
923
|
+
}
|
|
924
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
return [returnData];
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
exports.Acrewity = Acrewity;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="grad-tl" x1="0%" y1="100%" x2="100%" y2="0%">
|
|
4
|
+
<stop offset="0%" stop-color="#0EA5E9"/>
|
|
5
|
+
<stop offset="100%" stop-color="#14B8A6"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="grad-tr" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
8
|
+
<stop offset="0%" stop-color="#14B8A6"/>
|
|
9
|
+
<stop offset="100%" stop-color="#F97316"/>
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="grad-br" x1="100%" y1="0%" x2="0%" y2="100%">
|
|
12
|
+
<stop offset="0%" stop-color="#F97316"/>
|
|
13
|
+
<stop offset="100%" stop-color="#EC4899"/>
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<linearGradient id="grad-bl" x1="100%" y1="100%" x2="0%" y2="0%">
|
|
16
|
+
<stop offset="0%" stop-color="#EC4899"/>
|
|
17
|
+
<stop offset="100%" stop-color="#8B5CF6"/>
|
|
18
|
+
</linearGradient>
|
|
19
|
+
<linearGradient id="grad-l" x1="100%" y1="100%" x2="0%" y2="0%">
|
|
20
|
+
<stop offset="0%" stop-color="#8B5CF6"/>
|
|
21
|
+
<stop offset="100%" stop-color="#0EA5E9"/>
|
|
22
|
+
</linearGradient>
|
|
23
|
+
</defs>
|
|
24
|
+
|
|
25
|
+
<!-- Outer ring made of curved body segments -->
|
|
26
|
+
|
|
27
|
+
<!-- Top segment (teal to orange) -->
|
|
28
|
+
<path d="M20 10
|
|
29
|
+
A26 26 0 0 1 44 10
|
|
30
|
+
A18 18 0 0 0 20 10Z" fill="url(#grad-tr)"/>
|
|
31
|
+
|
|
32
|
+
<!-- Right segment (orange to pink) -->
|
|
33
|
+
<path d="M54 20
|
|
34
|
+
A26 26 0 0 1 54 44
|
|
35
|
+
A18 18 0 0 0 54 20Z" fill="url(#grad-br)"/>
|
|
36
|
+
|
|
37
|
+
<!-- Bottom segment (pink to purple) -->
|
|
38
|
+
<path d="M44 54
|
|
39
|
+
A26 26 0 0 1 20 54
|
|
40
|
+
A18 18 0 0 0 44 54Z" fill="url(#grad-bl)"/>
|
|
41
|
+
|
|
42
|
+
<!-- Left segment (purple to blue) -->
|
|
43
|
+
<path d="M10 44
|
|
44
|
+
A26 26 0 0 1 10 20
|
|
45
|
+
A18 18 0 0 0 10 44Z" fill="url(#grad-l)"/>
|
|
46
|
+
|
|
47
|
+
<!-- Four heads -->
|
|
48
|
+
<circle cx="14" cy="14" r="5.5" fill="url(#grad-tl)"/>
|
|
49
|
+
<circle cx="50" cy="14" r="5.5" fill="url(#grad-tr)"/>
|
|
50
|
+
<circle cx="50" cy="50" r="5.5" fill="url(#grad-br)"/>
|
|
51
|
+
<circle cx="14" cy="50" r="5.5" fill="url(#grad-bl)"/>
|
|
52
|
+
|
|
53
|
+
<!-- White center -->
|
|
54
|
+
<circle cx="32" cy="32" r="13" fill="white"/>
|
|
55
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@acrewity/n8n-nodes-acrewity",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "n8n community node for Acrewity API - A unified API platform with 20+ utility services including PDF processing, data conversion, QR codes, and more",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://acrewity.com",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"keywords": [
|
|
11
|
+
"n8n-community-node-package",
|
|
12
|
+
"n8n",
|
|
13
|
+
"acrewity",
|
|
14
|
+
"api",
|
|
15
|
+
"pdf",
|
|
16
|
+
"conversion",
|
|
17
|
+
"qr-code",
|
|
18
|
+
"uuid",
|
|
19
|
+
"markdown",
|
|
20
|
+
"excel",
|
|
21
|
+
"json"
|
|
22
|
+
],
|
|
23
|
+
"author": {
|
|
24
|
+
"name": "Acrewity",
|
|
25
|
+
"email": "support@acrewity.com"
|
|
26
|
+
},
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/Acrewity/n8n-nodes-acrewity.git"
|
|
30
|
+
},
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "n8n-node build",
|
|
33
|
+
"build:watch": "tsc --watch",
|
|
34
|
+
"dev": "n8n-node dev",
|
|
35
|
+
"lint": "n8n-node lint",
|
|
36
|
+
"lint:fix": "n8n-node lint --fix",
|
|
37
|
+
"release": "n8n-node release",
|
|
38
|
+
"prepublishOnly": "n8n-node prerelease"
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist"
|
|
42
|
+
],
|
|
43
|
+
"n8n": {
|
|
44
|
+
"n8nNodesApiVersion": 1,
|
|
45
|
+
"strict": true,
|
|
46
|
+
"credentials": [
|
|
47
|
+
"dist/credentials/AcrewityApi.credentials.js"
|
|
48
|
+
],
|
|
49
|
+
"nodes": [
|
|
50
|
+
"dist/nodes/Acrewity/Acrewity.node.js"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@n8n/node-cli": "*",
|
|
55
|
+
"eslint": "9.32.0",
|
|
56
|
+
"prettier": "3.6.2",
|
|
57
|
+
"typescript": "5.9.2"
|
|
58
|
+
},
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"n8n-workflow": "*"
|
|
61
|
+
}
|
|
62
|
+
}
|