n8n-nodes-dk-ms 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/README.md +111 -0
- package/dist/credentials/AmisMisaApi.credentials.d.ts +7 -0
- package/dist/credentials/AmisMisaApi.credentials.js +49 -0
- package/dist/nodes/AmisMisa/AmisMisa.node.d.ts +5 -0
- package/dist/nodes/AmisMisa/AmisMisa.node.js +245 -0
- package/dist/nodes/AmisMisa/amisMisa.svg +5 -0
- package/package.json +52 -0
package/README.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# n8n-nodes-dk-ms
|
|
2
|
+
|
|
3
|
+
`n8n-nodes-dk-ms` là custom community node cho n8n dùng để tích hợp AMIS MISA.
|
|
4
|
+
|
|
5
|
+
Phiên bản đầu tiên hỗ trợ thao tác:
|
|
6
|
+
|
|
7
|
+
- **AMIS MISA → Customer → Get Many**: lấy danh sách khách hàng từ AMIS MISA, dựa trên Apps Script đã chạy thành công trong `docs/LayDanhSachKhachHang.txt`.
|
|
8
|
+
|
|
9
|
+
## Tính năng
|
|
10
|
+
|
|
11
|
+
- Có credential riêng `AMIS MISA API` để lưu cookie an toàn trong n8n.
|
|
12
|
+
- Không hardcode cookie/token vào source code.
|
|
13
|
+
- Hỗ trợ phân trang tự động.
|
|
14
|
+
- Output mỗi khách hàng là một item n8n.
|
|
15
|
+
- Có thể build và publish lên npm như community node.
|
|
16
|
+
|
|
17
|
+
## Cài đặt để phát triển local
|
|
18
|
+
|
|
19
|
+
```cmd
|
|
20
|
+
cd /d "D:\Github\2026.06.09 n8n MISA"
|
|
21
|
+
npm install
|
|
22
|
+
npm run build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
> Tôi không tự chạy các lệnh trên trong session này vì bạn chưa yêu cầu test/build.
|
|
26
|
+
|
|
27
|
+
## Publish lên npm
|
|
28
|
+
|
|
29
|
+
Sau khi kiểm tra local thành công:
|
|
30
|
+
|
|
31
|
+
```cmd
|
|
32
|
+
cd /d "D:\Github\2026.06.09 n8n MISA"
|
|
33
|
+
npm login
|
|
34
|
+
npm publish
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Nếu tên package `n8n-nodes-dk-ms` đã tồn tại trên npm, cần đổi trường `name` trong `package.json` trước khi publish.
|
|
38
|
+
|
|
39
|
+
## Cài trong n8n
|
|
40
|
+
|
|
41
|
+
Trong n8n v2.0:
|
|
42
|
+
|
|
43
|
+
1. Mở `Settings`.
|
|
44
|
+
2. Vào `Community Nodes`.
|
|
45
|
+
3. Chọn cài package.
|
|
46
|
+
4. Nhập package name:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
n8n-nodes-dk-ms
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
5. Khởi động lại n8n nếu hệ thống yêu cầu.
|
|
53
|
+
|
|
54
|
+
## Cấu hình credential
|
|
55
|
+
|
|
56
|
+
Tạo credential mới loại **AMIS MISA API**.
|
|
57
|
+
|
|
58
|
+
Các trường cần nhập:
|
|
59
|
+
|
|
60
|
+
| Field | Giá trị gợi ý |
|
|
61
|
+
|---|---|
|
|
62
|
+
| AMIS Cookie | Cookie đăng nhập lấy từ trình duyệt sau khi đăng nhập AMIS MISA |
|
|
63
|
+
| Customer Endpoint | `https://amisapp.misa.vn/warehouse/g1/api/di/v1/Customer/v2/datapaging` |
|
|
64
|
+
| Origin | `https://amisapp.misa.vn` |
|
|
65
|
+
| User Agent | `Mozilla/5.0 AutoKhoHang` |
|
|
66
|
+
|
|
67
|
+
Không ghi cookie thật vào `README.md`, workflow, hoặc source code.
|
|
68
|
+
|
|
69
|
+
## Cách dùng node
|
|
70
|
+
|
|
71
|
+
1. Tạo workflow mới trong n8n.
|
|
72
|
+
2. Thêm node **AMIS MISA**.
|
|
73
|
+
3. Chọn credential **AMIS MISA API**.
|
|
74
|
+
4. Chọn:
|
|
75
|
+
- `Resource`: `Customer`
|
|
76
|
+
- `Operation`: `Get Many`
|
|
77
|
+
5. Cấu hình:
|
|
78
|
+
- `Return All`: bật nếu muốn lấy toàn bộ khách hàng.
|
|
79
|
+
- `Limit`: số khách hàng tối đa nếu tắt `Return All`.
|
|
80
|
+
- `Page Size`: mặc định `100`.
|
|
81
|
+
- `Filter`: để trống nếu không lọc.
|
|
82
|
+
- `Sort JSON`: mặc định sắp xếp theo `CustomerCode` tăng dần.
|
|
83
|
+
6. Execute node.
|
|
84
|
+
|
|
85
|
+
## Output
|
|
86
|
+
|
|
87
|
+
Mỗi item output có các field:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
CustomerCode
|
|
91
|
+
CustomerName
|
|
92
|
+
Address
|
|
93
|
+
ShippingAddress
|
|
94
|
+
CustomerTaxCode
|
|
95
|
+
Mobile
|
|
96
|
+
ContactMobilePhone
|
|
97
|
+
Inactive
|
|
98
|
+
CustomerID
|
|
99
|
+
IsCorp
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Ghi chú bảo mật
|
|
103
|
+
|
|
104
|
+
- Cookie AMIS MISA là secret, không commit vào git.
|
|
105
|
+
- Các file `.env`, `.credentials.json`, `config.json` đã được đưa vào `.gitignore`.
|
|
106
|
+
- Nếu cookie hết hạn, cập nhật lại credential trong n8n.
|
|
107
|
+
|
|
108
|
+
## Nguồn tham khảo
|
|
109
|
+
|
|
110
|
+
- `docs/Endpoint.txt`
|
|
111
|
+
- `docs/LayDanhSachKhachHang.txt`
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AmisMisaApi = void 0;
|
|
4
|
+
const DEFAULT_CUSTOMER_ENDPOINT = 'https://amisapp.misa.vn/warehouse/g1/api/di/v1/Customer/v2/datapaging';
|
|
5
|
+
const DEFAULT_ORIGIN = 'https://amisapp.misa.vn';
|
|
6
|
+
const DEFAULT_USER_AGENT = 'Mozilla/5.0 AutoKhoHang';
|
|
7
|
+
class AmisMisaApi {
|
|
8
|
+
name = 'amisMisaApi';
|
|
9
|
+
displayName = 'AMIS MISA API';
|
|
10
|
+
documentationUrl = 'https://github.com/dk-ms/n8n-nodes-dk-ms';
|
|
11
|
+
properties = [
|
|
12
|
+
{
|
|
13
|
+
displayName: 'AMIS Cookie',
|
|
14
|
+
name: 'cookie',
|
|
15
|
+
type: 'string',
|
|
16
|
+
typeOptions: {
|
|
17
|
+
password: true,
|
|
18
|
+
},
|
|
19
|
+
default: '',
|
|
20
|
+
required: true,
|
|
21
|
+
description: 'Cookie đăng nhập AMIS MISA. Không chia sẻ hoặc commit giá trị này.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
displayName: 'Customer Endpoint',
|
|
25
|
+
name: 'customerEndpoint',
|
|
26
|
+
type: 'string',
|
|
27
|
+
default: DEFAULT_CUSTOMER_ENDPOINT,
|
|
28
|
+
required: true,
|
|
29
|
+
description: 'Endpoint lấy danh sách khách hàng AMIS MISA.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
displayName: 'Origin',
|
|
33
|
+
name: 'origin',
|
|
34
|
+
type: 'string',
|
|
35
|
+
default: DEFAULT_ORIGIN,
|
|
36
|
+
required: true,
|
|
37
|
+
description: 'Header Origin khi gọi AMIS MISA.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
displayName: 'User Agent',
|
|
41
|
+
name: 'userAgent',
|
|
42
|
+
type: 'string',
|
|
43
|
+
default: DEFAULT_USER_AGENT,
|
|
44
|
+
required: true,
|
|
45
|
+
description: 'Header User-Agent khi gọi AMIS MISA.',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
exports.AmisMisaApi = AmisMisaApi;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class AmisMisa implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AmisMisa = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const DEFAULT_PAGE_SIZE = 100;
|
|
6
|
+
const DEFAULT_LIMIT = 100;
|
|
7
|
+
const DEFAULT_COLUMNS = [
|
|
8
|
+
'CustomerCode',
|
|
9
|
+
'CustomerName',
|
|
10
|
+
'Address',
|
|
11
|
+
'ShippingAddress',
|
|
12
|
+
'CustomerTaxCode',
|
|
13
|
+
'Mobile',
|
|
14
|
+
'ContactMobilePhone',
|
|
15
|
+
'Inactive',
|
|
16
|
+
'CustomerID',
|
|
17
|
+
'IsCorp',
|
|
18
|
+
];
|
|
19
|
+
const DEFAULT_SORT = '[{"Selector":"CustomerCode","Desc":false}]';
|
|
20
|
+
const REQUEST_TIMEOUT_MS = 30_000;
|
|
21
|
+
class AmisMisa {
|
|
22
|
+
description = {
|
|
23
|
+
displayName: 'AMIS MISA',
|
|
24
|
+
name: 'amisMisa',
|
|
25
|
+
icon: 'file:amisMisa.svg',
|
|
26
|
+
group: ['transform'],
|
|
27
|
+
version: 1,
|
|
28
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
29
|
+
description: 'Tích hợp AMIS MISA cho n8n',
|
|
30
|
+
defaults: {
|
|
31
|
+
name: 'AMIS MISA',
|
|
32
|
+
},
|
|
33
|
+
inputs: ['main'],
|
|
34
|
+
outputs: ['main'],
|
|
35
|
+
credentials: [
|
|
36
|
+
{
|
|
37
|
+
name: 'amisMisaApi',
|
|
38
|
+
required: true,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
properties: [
|
|
42
|
+
{
|
|
43
|
+
displayName: 'Resource',
|
|
44
|
+
name: 'resource',
|
|
45
|
+
type: 'options',
|
|
46
|
+
noDataExpression: true,
|
|
47
|
+
options: [
|
|
48
|
+
{
|
|
49
|
+
name: 'Customer',
|
|
50
|
+
value: 'customer',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
default: 'customer',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
displayName: 'Operation',
|
|
57
|
+
name: 'operation',
|
|
58
|
+
type: 'options',
|
|
59
|
+
noDataExpression: true,
|
|
60
|
+
displayOptions: {
|
|
61
|
+
show: {
|
|
62
|
+
resource: ['customer'],
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
options: [
|
|
66
|
+
{
|
|
67
|
+
name: 'Get Many',
|
|
68
|
+
value: 'getMany',
|
|
69
|
+
description: 'Lấy danh sách khách hàng',
|
|
70
|
+
action: 'Lấy danh sách khách hàng',
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
default: 'getMany',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
displayName: 'Return All',
|
|
77
|
+
name: 'returnAll',
|
|
78
|
+
type: 'boolean',
|
|
79
|
+
default: true,
|
|
80
|
+
displayOptions: {
|
|
81
|
+
show: {
|
|
82
|
+
resource: ['customer'],
|
|
83
|
+
operation: ['getMany'],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
description: 'Có lấy toàn bộ dữ liệu qua phân trang hay không',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
displayName: 'Limit',
|
|
90
|
+
name: 'limit',
|
|
91
|
+
type: 'number',
|
|
92
|
+
default: DEFAULT_LIMIT,
|
|
93
|
+
typeOptions: {
|
|
94
|
+
minValue: 1,
|
|
95
|
+
},
|
|
96
|
+
displayOptions: {
|
|
97
|
+
show: {
|
|
98
|
+
resource: ['customer'],
|
|
99
|
+
operation: ['getMany'],
|
|
100
|
+
returnAll: [false],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
description: 'Số khách hàng tối đa cần lấy khi không bật Return All',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
displayName: 'Page Size',
|
|
107
|
+
name: 'pageSize',
|
|
108
|
+
type: 'number',
|
|
109
|
+
default: DEFAULT_PAGE_SIZE,
|
|
110
|
+
typeOptions: {
|
|
111
|
+
minValue: 1,
|
|
112
|
+
maxValue: 500,
|
|
113
|
+
},
|
|
114
|
+
displayOptions: {
|
|
115
|
+
show: {
|
|
116
|
+
resource: ['customer'],
|
|
117
|
+
operation: ['getMany'],
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
description: 'Số bản ghi lấy trong mỗi request phân trang',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
displayName: 'Filter',
|
|
124
|
+
name: 'filter',
|
|
125
|
+
type: 'string',
|
|
126
|
+
default: '',
|
|
127
|
+
displayOptions: {
|
|
128
|
+
show: {
|
|
129
|
+
resource: ['customer'],
|
|
130
|
+
operation: ['getMany'],
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
description: 'Chuỗi Filter gửi tới AMIS MISA. Để trống để lấy tất cả.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
displayName: 'Sort JSON',
|
|
137
|
+
name: 'sort',
|
|
138
|
+
type: 'string',
|
|
139
|
+
default: DEFAULT_SORT,
|
|
140
|
+
displayOptions: {
|
|
141
|
+
show: {
|
|
142
|
+
resource: ['customer'],
|
|
143
|
+
operation: ['getMany'],
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
description: 'Chuỗi JSON Sort gửi tới AMIS MISA.',
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
};
|
|
150
|
+
async execute() {
|
|
151
|
+
const resource = this.getNodeParameter('resource', 0);
|
|
152
|
+
const operation = this.getNodeParameter('operation', 0);
|
|
153
|
+
if (resource === 'customer' && operation === 'getMany') {
|
|
154
|
+
return [await get_many_customers.call(this)];
|
|
155
|
+
}
|
|
156
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Operation chưa được hỗ trợ: ${resource}.${operation}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.AmisMisa = AmisMisa;
|
|
160
|
+
async function get_many_customers() {
|
|
161
|
+
const credentials = (await this.getCredentials('amisMisaApi'));
|
|
162
|
+
const return_all = this.getNodeParameter('returnAll', 0);
|
|
163
|
+
const limit = return_all ? Number.POSITIVE_INFINITY : this.getNodeParameter('limit', 0);
|
|
164
|
+
const page_size = this.getNodeParameter('pageSize', 0);
|
|
165
|
+
const filter = this.getNodeParameter('filter', 0);
|
|
166
|
+
const sort = this.getNodeParameter('sort', 0);
|
|
167
|
+
const customers = [];
|
|
168
|
+
let page_index = 1;
|
|
169
|
+
validate_credentials(credentials, this);
|
|
170
|
+
while (customers.length < limit) {
|
|
171
|
+
const response = await request_customer_page.call(this, credentials, page_index, page_size, filter, sort);
|
|
172
|
+
const page_data = response.Data ?? [];
|
|
173
|
+
for (const customer of page_data) {
|
|
174
|
+
customers.push(normalize_customer(customer));
|
|
175
|
+
if (customers.length >= limit) {
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (page_data.length < page_size) {
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
page_index += 1;
|
|
183
|
+
}
|
|
184
|
+
return customers.map((customer) => ({ json: customer }));
|
|
185
|
+
}
|
|
186
|
+
async function request_customer_page(credentials, page_index, page_size, filter, sort) {
|
|
187
|
+
// Payload giữ cấu trúc giống Apps Script đã chạy thành công.
|
|
188
|
+
const payload = {
|
|
189
|
+
PageIndex: page_index,
|
|
190
|
+
PageSize: page_size,
|
|
191
|
+
Columns: DEFAULT_COLUMNS.join(','),
|
|
192
|
+
Filter: filter,
|
|
193
|
+
Sort: sort,
|
|
194
|
+
CustomFilter: '',
|
|
195
|
+
UseSp: false,
|
|
196
|
+
ColumnsSummary: '',
|
|
197
|
+
QuickSearch: {},
|
|
198
|
+
CustomParam: {},
|
|
199
|
+
};
|
|
200
|
+
const options = {
|
|
201
|
+
method: 'POST',
|
|
202
|
+
url: credentials.customerEndpoint,
|
|
203
|
+
headers: {
|
|
204
|
+
Accept: 'application/json, text/plain, */*',
|
|
205
|
+
Cookie: credentials.cookie,
|
|
206
|
+
Origin: credentials.origin,
|
|
207
|
+
'User-Agent': credentials.userAgent,
|
|
208
|
+
},
|
|
209
|
+
body: payload,
|
|
210
|
+
json: true,
|
|
211
|
+
timeout: REQUEST_TIMEOUT_MS,
|
|
212
|
+
};
|
|
213
|
+
try {
|
|
214
|
+
const response = (await this.helpers.httpRequest(options));
|
|
215
|
+
if (!response.Success) {
|
|
216
|
+
const message = response.UserMessage ?? response.ErrorMessage ?? 'AMIS MISA API trả về Success=false';
|
|
217
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), message, {
|
|
218
|
+
description: `PageIndex=${page_index}, PageSize=${page_size}`,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
return response;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
if (error instanceof n8n_workflow_1.NodeOperationError) {
|
|
225
|
+
throw error;
|
|
226
|
+
}
|
|
227
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Không gọi được AMIS MISA Customer API', {
|
|
228
|
+
description: error instanceof Error ? error.message : String(error),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function validate_credentials(credentials, context) {
|
|
233
|
+
if (!credentials.cookie) {
|
|
234
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Thiếu AMIS Cookie trong credential');
|
|
235
|
+
}
|
|
236
|
+
if (!credentials.customerEndpoint) {
|
|
237
|
+
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Thiếu Customer Endpoint trong credential');
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function normalize_customer(customer) {
|
|
241
|
+
return DEFAULT_COLUMNS.reduce((result, column) => {
|
|
242
|
+
result[column] = customer[column] ?? '';
|
|
243
|
+
return result;
|
|
244
|
+
}, {});
|
|
245
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-label="AMIS MISA">
|
|
2
|
+
<rect width="64" height="64" rx="14" fill="#1f6feb"/>
|
|
3
|
+
<path d="M14 44L24 18h8l10 26h-7l-2-6H23l-2 6h-7zm12-12h7l-3.5-10L26 32z" fill="#fff"/>
|
|
4
|
+
<path d="M43 18h7v26h-7V18z" fill="#b6e3ff"/>
|
|
5
|
+
</svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-dk-ms",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Community node cho n8n để tích hợp AMIS MISA.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"n8n-community-node-package",
|
|
7
|
+
"n8n",
|
|
8
|
+
"amis",
|
|
9
|
+
"misa",
|
|
10
|
+
"warehouse"
|
|
11
|
+
],
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"homepage": "https://github.com/dk-ms/n8n-nodes-dk-ms",
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "DK MS"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/dk-ms/n8n-nodes-dk-ms.git"
|
|
20
|
+
},
|
|
21
|
+
"main": "dist/index.js",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc && gulp build:icons",
|
|
24
|
+
"dev": "tsc --watch",
|
|
25
|
+
"format": "prettier --write \"credentials/**/*.ts\" \"nodes/**/*.ts\"",
|
|
26
|
+
"lint": "eslint credentials nodes --ext .ts",
|
|
27
|
+
"prepublishOnly": "npm run build"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"n8n": {
|
|
33
|
+
"n8nNodesApiVersion": 1,
|
|
34
|
+
"credentials": [
|
|
35
|
+
"dist/credentials/AmisMisaApi.credentials.js"
|
|
36
|
+
],
|
|
37
|
+
"nodes": [
|
|
38
|
+
"dist/nodes/AmisMisa/AmisMisa.node.js"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/node": "20.11.30",
|
|
43
|
+
"eslint": "8.57.0",
|
|
44
|
+
"gulp": "4.0.2",
|
|
45
|
+
"n8n-workflow": "2.0.0",
|
|
46
|
+
"prettier": "3.2.5",
|
|
47
|
+
"typescript": "5.4.5"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"n8n-workflow": ">=2.0.0"
|
|
51
|
+
}
|
|
52
|
+
}
|