@seranking/n8n-nodes-seranking 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +793 -0
  3. package/dist/credentials/SeRankingApi.credentials.d.ts +9 -0
  4. package/dist/credentials/SeRankingApi.credentials.js +58 -0
  5. package/dist/nodes/SeRanking/SeRanking.node.d.ts +5 -0
  6. package/dist/nodes/SeRanking/SeRanking.node.js +136 -0
  7. package/dist/nodes/SeRanking/dataApi/descriptions/AiSearchDescription.d.ts +3 -0
  8. package/dist/nodes/SeRanking/dataApi/descriptions/AiSearchDescription.js +239 -0
  9. package/dist/nodes/SeRanking/dataApi/descriptions/BacklinksDescription.d.ts +3 -0
  10. package/dist/nodes/SeRanking/dataApi/descriptions/BacklinksDescription.js +948 -0
  11. package/dist/nodes/SeRanking/dataApi/descriptions/DomainAnalysisDescription.d.ts +3 -0
  12. package/dist/nodes/SeRanking/dataApi/descriptions/DomainAnalysisDescription.js +597 -0
  13. package/dist/nodes/SeRanking/dataApi/descriptions/KeywordResearchDescription.d.ts +3 -0
  14. package/dist/nodes/SeRanking/dataApi/descriptions/KeywordResearchDescription.js +331 -0
  15. package/dist/nodes/SeRanking/dataApi/descriptions/WebsiteAuditDescription.d.ts +3 -0
  16. package/dist/nodes/SeRanking/dataApi/descriptions/WebsiteAuditDescription.js +632 -0
  17. package/dist/nodes/SeRanking/dataApi/operations/AiSearchOperations.d.ts +2 -0
  18. package/dist/nodes/SeRanking/dataApi/operations/AiSearchOperations.js +80 -0
  19. package/dist/nodes/SeRanking/dataApi/operations/BacklinksOperations.d.ts +2 -0
  20. package/dist/nodes/SeRanking/dataApi/operations/BacklinksOperations.js +332 -0
  21. package/dist/nodes/SeRanking/dataApi/operations/DomainAnalysisOperations.d.ts +2 -0
  22. package/dist/nodes/SeRanking/dataApi/operations/DomainAnalysisOperations.js +182 -0
  23. package/dist/nodes/SeRanking/dataApi/operations/KeywordResearchOperations.d.ts +2 -0
  24. package/dist/nodes/SeRanking/dataApi/operations/KeywordResearchOperations.js +167 -0
  25. package/dist/nodes/SeRanking/dataApi/operations/WebsiteAuditOperations.d.ts +2 -0
  26. package/dist/nodes/SeRanking/dataApi/operations/WebsiteAuditOperations.js +209 -0
  27. package/dist/nodes/SeRanking/descriptions/AiSearchDescription.d.ts +3 -0
  28. package/dist/nodes/SeRanking/descriptions/AiSearchDescription.js +239 -0
  29. package/dist/nodes/SeRanking/descriptions/BacklinksDescription.d.ts +0 -0
  30. package/dist/nodes/SeRanking/descriptions/BacklinksDescription.js +1 -0
  31. package/dist/nodes/SeRanking/descriptions/DomainAnalysisDescription.d.ts +3 -0
  32. package/dist/nodes/SeRanking/descriptions/DomainAnalysisDescription.js +360 -0
  33. package/dist/nodes/SeRanking/descriptions/KeywordResearchDescription.d.ts +3 -0
  34. package/dist/nodes/SeRanking/descriptions/KeywordResearchDescription.js +331 -0
  35. package/dist/nodes/SeRanking/descriptions/WebsiteAuditDescription.d.ts +0 -0
  36. package/dist/nodes/SeRanking/descriptions/WebsiteAuditDescription.js +1 -0
  37. package/dist/nodes/SeRanking/descriptions/shared.d.ts +0 -0
  38. package/dist/nodes/SeRanking/descriptions/shared.js +1 -0
  39. package/dist/nodes/SeRanking/operations/AiSearchOperations.d.ts +2 -0
  40. package/dist/nodes/SeRanking/operations/AiSearchOperations.js +77 -0
  41. package/dist/nodes/SeRanking/operations/DomainAnalysisOperations.d.ts +2 -0
  42. package/dist/nodes/SeRanking/operations/DomainAnalysisOperations.js +101 -0
  43. package/dist/nodes/SeRanking/operations/KeywordResearchOperations.d.ts +2 -0
  44. package/dist/nodes/SeRanking/operations/KeywordResearchOperations.js +157 -0
  45. package/dist/nodes/SeRanking/operations/executeBacklinks.d.ts +0 -0
  46. package/dist/nodes/SeRanking/operations/executeBacklinks.js +1 -0
  47. package/dist/nodes/SeRanking/operations/executeDomainAnalysis.d.ts +0 -0
  48. package/dist/nodes/SeRanking/operations/executeDomainAnalysis.js +1 -0
  49. package/dist/nodes/SeRanking/operations/executeKeywordResearch.d.ts +0 -0
  50. package/dist/nodes/SeRanking/operations/executeKeywordResearch.js +1 -0
  51. package/dist/nodes/SeRanking/operations/executeWebsiteAudit.d.ts +0 -0
  52. package/dist/nodes/SeRanking/operations/executeWebsiteAudit.js +1 -0
  53. package/dist/nodes/SeRanking/seranking.svg +4 -0
  54. package/dist/nodes/SeRanking/utils/apiRequest.d.ts +2 -0
  55. package/dist/nodes/SeRanking/utils/apiRequest.js +143 -0
  56. package/dist/nodes/SeRanking/utils/errorHandling.d.ts +0 -0
  57. package/dist/nodes/SeRanking/utils/errorHandling.js +1 -0
  58. package/dist/nodes/SeRanking/utils/validators.d.ts +4 -0
  59. package/dist/nodes/SeRanking/utils/validators.js +53 -0
  60. package/package.json +61 -0
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiSearchOperations = AiSearchOperations;
4
+ const apiRequest_1 = require("../../utils/apiRequest");
5
+ const validators_1 = require("../../utils/validators");
6
+ async function AiSearchOperations(index) {
7
+ const operation = this.getNodeParameter('operation', index);
8
+ let endpoint = '';
9
+ const params = {};
10
+ switch (operation) {
11
+ case 'getOverview': {
12
+ const domain = this.getNodeParameter('domain', index);
13
+ const engine = this.getNodeParameter('engine', index);
14
+ const source = this.getNodeParameter('source', index);
15
+ const scope = this.getNodeParameter('scope', index, 'base_domain');
16
+ endpoint = '/ai-search/overview';
17
+ params.target = (0, validators_1.validateDomain)(domain);
18
+ params.engine = engine;
19
+ params.source = (0, validators_1.validateSource)(source);
20
+ params.scope = scope;
21
+ break;
22
+ }
23
+ case 'discoverBrand': {
24
+ const domain = this.getNodeParameter('domain', index);
25
+ const source = this.getNodeParameter('source', index);
26
+ const scope = this.getNodeParameter('scope', index, 'base_domain');
27
+ endpoint = '/ai-search/discover-brand';
28
+ params.target = (0, validators_1.validateDomain)(domain);
29
+ params.source = (0, validators_1.validateSource)(source);
30
+ params.scope = scope;
31
+ break;
32
+ }
33
+ case 'getPromptsByTarget': {
34
+ const domain = this.getNodeParameter('domain', index);
35
+ const engine = this.getNodeParameter('engine', index);
36
+ const source = this.getNodeParameter('source', index);
37
+ const scope = this.getNodeParameter('scope', index, 'base_domain');
38
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
39
+ endpoint = '/ai-search/prompts-by-target';
40
+ params.target = (0, validators_1.validateDomain)(domain);
41
+ params.engine = engine;
42
+ params.source = (0, validators_1.validateSource)(source);
43
+ params.scope = scope;
44
+ if (additionalFields.sort)
45
+ params.sort = additionalFields.sort;
46
+ if (additionalFields.sortOrder)
47
+ params.sort_order = additionalFields.sortOrder;
48
+ if (additionalFields.limit)
49
+ params.limit = additionalFields.limit;
50
+ if (additionalFields.offset)
51
+ params.offset = additionalFields.offset;
52
+ break;
53
+ }
54
+ case 'getPromptsByBrand': {
55
+ const brandName = this.getNodeParameter('brandName', index);
56
+ const engine = this.getNodeParameter('engine', index);
57
+ const source = this.getNodeParameter('source', index);
58
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
59
+ if (!brandName || brandName.trim() === '') {
60
+ throw new Error('Brand name cannot be empty');
61
+ }
62
+ endpoint = '/ai-search/prompts-by-brand';
63
+ params.brand = brandName.trim();
64
+ params.engine = engine;
65
+ params.source = (0, validators_1.validateSource)(source);
66
+ if (additionalFields.sort)
67
+ params.sort = additionalFields.sort;
68
+ if (additionalFields.sortOrder)
69
+ params.sort_order = additionalFields.sortOrder;
70
+ if (additionalFields.limit)
71
+ params.limit = additionalFields.limit;
72
+ if (additionalFields.offset)
73
+ params.offset = additionalFields.offset;
74
+ break;
75
+ }
76
+ default:
77
+ throw new Error(`Unknown AI Search operation: ${operation}`);
78
+ }
79
+ return await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, params, index);
80
+ }
@@ -0,0 +1,2 @@
1
+ import { IExecuteFunctions } from 'n8n-workflow';
2
+ export declare function BacklinksOperations(this: IExecuteFunctions, index: number): Promise<any>;
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BacklinksOperations = BacklinksOperations;
4
+ const apiRequest_1 = require("../../utils/apiRequest");
5
+ const validators_1 = require("../../utils/validators");
6
+ function mapMode(modeInput) {
7
+ const modeMapping = {
8
+ 'as_root': 'domain',
9
+ 'as_subdomain': 'host',
10
+ 'one_unit': 'url'
11
+ };
12
+ return modeMapping[modeInput] || modeInput;
13
+ }
14
+ async function BacklinksOperations(index) {
15
+ const operation = this.getNodeParameter('operation', index);
16
+ let endpoint = '';
17
+ const params = {};
18
+ let method = 'GET';
19
+ switch (operation) {
20
+ case 'getSummary': {
21
+ const target = this.getNodeParameter('target', index);
22
+ const modeInput = this.getNodeParameter('mode', index);
23
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
24
+ endpoint = '/backlinks/summary';
25
+ params.target = target;
26
+ params.mode = mapMode(modeInput);
27
+ if (additionalFields.historical !== undefined) {
28
+ params.historical = additionalFields.historical ? 1 : 0;
29
+ }
30
+ break;
31
+ }
32
+ case 'getMetrics': {
33
+ const targetsInput = this.getNodeParameter('targets', index);
34
+ const targetsList = targetsInput
35
+ .split(/[\n,]/)
36
+ .map(t => t.trim())
37
+ .filter(t => t.length > 0);
38
+ endpoint = '/backlinks/metrics';
39
+ if (targetsList.length === 0) {
40
+ throw new Error('Please provide at least one target domain');
41
+ }
42
+ params.target = targetsList[0];
43
+ if (targetsList.length > 1) {
44
+ params._additionalTargets = targetsList.slice(1);
45
+ }
46
+ break;
47
+ }
48
+ case 'getAll': {
49
+ const target = this.getNodeParameter('target', index);
50
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
51
+ endpoint = '/backlinks/all';
52
+ params.target = target;
53
+ if (additionalFields.mode)
54
+ params.mode = mapMode(additionalFields.mode);
55
+ if (additionalFields.limit)
56
+ params.limit = additionalFields.limit;
57
+ if (additionalFields.offset)
58
+ params.offset = additionalFields.offset;
59
+ if (additionalFields.sort)
60
+ params.sort = additionalFields.sort;
61
+ if (additionalFields.order)
62
+ params.order = additionalFields.order;
63
+ if (additionalFields.linkType)
64
+ params.link_type = additionalFields.linkType;
65
+ if (additionalFields.linkStatus)
66
+ params.link_status = additionalFields.linkStatus;
67
+ break;
68
+ }
69
+ case 'getRaw': {
70
+ const target = this.getNodeParameter('target', index);
71
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
72
+ endpoint = '/backlinks/raw';
73
+ params.target = target;
74
+ if (additionalFields.mode)
75
+ params.mode = mapMode(additionalFields.mode);
76
+ if (additionalFields.limit)
77
+ params.limit = additionalFields.limit;
78
+ if (additionalFields.cursor)
79
+ params.cursor = additionalFields.cursor;
80
+ if (additionalFields.linkType)
81
+ params.link_type = additionalFields.linkType;
82
+ break;
83
+ }
84
+ case 'getCount': {
85
+ const target = this.getNodeParameter('target', index);
86
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
87
+ endpoint = '/backlinks/count';
88
+ params.target = target;
89
+ if (additionalFields.mode)
90
+ params.mode = mapMode(additionalFields.mode);
91
+ break;
92
+ }
93
+ case 'export': {
94
+ const target = this.getNodeParameter('target', index);
95
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
96
+ endpoint = '/backlinks/export';
97
+ params.target = target;
98
+ if (additionalFields.mode)
99
+ params.mode = mapMode(additionalFields.mode);
100
+ if (additionalFields.linkType)
101
+ params.link_type = additionalFields.linkType;
102
+ if (additionalFields.linkStatus)
103
+ params.link_status = additionalFields.linkStatus;
104
+ break;
105
+ }
106
+ case 'exportStatus': {
107
+ const taskId = this.getNodeParameter('taskId', index);
108
+ endpoint = '/backlinks/export/status';
109
+ params.task_id = taskId;
110
+ break;
111
+ }
112
+ case 'exportDownload': {
113
+ const exportUrl = this.getNodeParameter('exportUrl', index);
114
+ endpoint = exportUrl;
115
+ params._fullUrl = true;
116
+ break;
117
+ }
118
+ case 'getHistory': {
119
+ const target = this.getNodeParameter('target', index);
120
+ const dateFrom = this.getNodeParameter('dateFrom', index);
121
+ const dateTo = this.getNodeParameter('dateTo', index);
122
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
123
+ if (!(0, validators_1.validateDateFormat)(dateFrom) || !(0, validators_1.validateDateFormat)(dateTo)) {
124
+ throw new Error('Date must be in YYYY-MM-DD format');
125
+ }
126
+ endpoint = '/backlinks/history';
127
+ params.target = target;
128
+ params.date_from = dateFrom;
129
+ params.date_to = dateTo;
130
+ if (additionalFields.mode)
131
+ params.mode = mapMode(additionalFields.mode);
132
+ if (additionalFields.eventType)
133
+ params.event_type = additionalFields.eventType;
134
+ if (additionalFields.limit)
135
+ params.limit = additionalFields.limit;
136
+ if (additionalFields.offset)
137
+ params.offset = additionalFields.offset;
138
+ break;
139
+ }
140
+ case 'getHistoryCount': {
141
+ const target = this.getNodeParameter('target', index);
142
+ const dateFrom = this.getNodeParameter('dateFrom', index);
143
+ const dateTo = this.getNodeParameter('dateTo', index);
144
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
145
+ if (!(0, validators_1.validateDateFormat)(dateFrom) || !(0, validators_1.validateDateFormat)(dateTo)) {
146
+ throw new Error('Date must be in YYYY-MM-DD format');
147
+ }
148
+ endpoint = '/backlinks/history/count';
149
+ params.target = target;
150
+ params.date_from = dateFrom;
151
+ params.date_to = dateTo;
152
+ if (additionalFields.mode)
153
+ params.mode = mapMode(additionalFields.mode);
154
+ break;
155
+ }
156
+ case 'getCumulativeHistory': {
157
+ const target = this.getNodeParameter('target', index);
158
+ const dateFrom = this.getNodeParameter('dateFrom', index);
159
+ const dateTo = this.getNodeParameter('dateTo', index);
160
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
161
+ if (!(0, validators_1.validateDateFormat)(dateFrom) || !(0, validators_1.validateDateFormat)(dateTo)) {
162
+ throw new Error('Date must be in YYYY-MM-DD format');
163
+ }
164
+ endpoint = '/backlinks/history/cumulative';
165
+ params.target = target;
166
+ params.date_from = dateFrom;
167
+ params.date_to = dateTo;
168
+ if (additionalFields.mode)
169
+ params.mode = mapMode(additionalFields.mode);
170
+ break;
171
+ }
172
+ case 'getAnchors': {
173
+ const target = this.getNodeParameter('target', index);
174
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
175
+ endpoint = '/backlinks/anchors';
176
+ params.target = target;
177
+ if (additionalFields.mode)
178
+ params.mode = mapMode(additionalFields.mode);
179
+ if (additionalFields.limit)
180
+ params.limit = additionalFields.limit;
181
+ if (additionalFields.offset)
182
+ params.offset = additionalFields.offset;
183
+ break;
184
+ }
185
+ case 'getRefDomains': {
186
+ const target = this.getNodeParameter('target', index);
187
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
188
+ endpoint = '/backlinks/refdomains';
189
+ params.target = target;
190
+ if (additionalFields.mode)
191
+ params.mode = mapMode(additionalFields.mode);
192
+ if (additionalFields.limit)
193
+ params.limit = additionalFields.limit;
194
+ if (additionalFields.offset)
195
+ params.offset = additionalFields.offset;
196
+ if (additionalFields.sort)
197
+ params.sort = additionalFields.sort;
198
+ if (additionalFields.order)
199
+ params.order = additionalFields.order;
200
+ break;
201
+ }
202
+ case 'getRefDomainsCount': {
203
+ const target = this.getNodeParameter('target', index);
204
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
205
+ endpoint = '/backlinks/refdomains/count';
206
+ params.target = target;
207
+ if (additionalFields.mode)
208
+ params.mode = mapMode(additionalFields.mode);
209
+ break;
210
+ }
211
+ case 'getRefDomainsHistory': {
212
+ const target = this.getNodeParameter('target', index);
213
+ const dateFrom = this.getNodeParameter('dateFrom', index);
214
+ const dateTo = this.getNodeParameter('dateTo', index);
215
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
216
+ if (!(0, validators_1.validateDateFormat)(dateFrom) || !(0, validators_1.validateDateFormat)(dateTo)) {
217
+ throw new Error('Date must be in YYYY-MM-DD format');
218
+ }
219
+ endpoint = '/backlinks/refdomains/history';
220
+ params.target = target;
221
+ params.date_from = dateFrom;
222
+ params.date_to = dateTo;
223
+ if (additionalFields.mode)
224
+ params.mode = mapMode(additionalFields.mode);
225
+ if (additionalFields.eventType)
226
+ params.event_type = additionalFields.eventType;
227
+ if (additionalFields.limit)
228
+ params.limit = additionalFields.limit;
229
+ if (additionalFields.offset)
230
+ params.offset = additionalFields.offset;
231
+ break;
232
+ }
233
+ case 'getRefDomainsHistoryCount': {
234
+ const target = this.getNodeParameter('target', index);
235
+ const dateFrom = this.getNodeParameter('dateFrom', index);
236
+ const dateTo = this.getNodeParameter('dateTo', index);
237
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
238
+ if (!(0, validators_1.validateDateFormat)(dateFrom) || !(0, validators_1.validateDateFormat)(dateTo)) {
239
+ throw new Error('Date must be in YYYY-MM-DD format');
240
+ }
241
+ endpoint = '/backlinks/refdomains/history/count';
242
+ params.target = target;
243
+ params.date_from = dateFrom;
244
+ params.date_to = dateTo;
245
+ if (additionalFields.mode)
246
+ params.mode = mapMode(additionalFields.mode);
247
+ break;
248
+ }
249
+ case 'getReferringIps': {
250
+ const target = this.getNodeParameter('target', index);
251
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
252
+ endpoint = '/backlinks/referring-ips';
253
+ params.target = target;
254
+ if (additionalFields.mode)
255
+ params.mode = mapMode(additionalFields.mode);
256
+ if (additionalFields.limit)
257
+ params.limit = additionalFields.limit;
258
+ if (additionalFields.offset)
259
+ params.offset = additionalFields.offset;
260
+ break;
261
+ }
262
+ case 'getReferringIpsCount': {
263
+ const target = this.getNodeParameter('target', index);
264
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
265
+ endpoint = '/backlinks/referring-ips/count';
266
+ params.target = target;
267
+ if (additionalFields.mode)
268
+ params.mode = mapMode(additionalFields.mode);
269
+ break;
270
+ }
271
+ case 'getReferringSubnetsCount': {
272
+ const target = this.getNodeParameter('target', index);
273
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
274
+ endpoint = '/backlinks/referring-subnets/count';
275
+ params.target = target;
276
+ if (additionalFields.mode)
277
+ params.mode = mapMode(additionalFields.mode);
278
+ break;
279
+ }
280
+ case 'getIndexedPages': {
281
+ const target = this.getNodeParameter('target', index);
282
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
283
+ endpoint = '/backlinks/indexed-pages';
284
+ params.target = target;
285
+ if (additionalFields.limit)
286
+ params.limit = additionalFields.limit;
287
+ if (additionalFields.offset)
288
+ params.offset = additionalFields.offset;
289
+ break;
290
+ }
291
+ case 'getAuthority': {
292
+ const target = this.getNodeParameter('target', index);
293
+ endpoint = '/backlinks/authority';
294
+ params.target = target;
295
+ break;
296
+ }
297
+ case 'getDomainAuthority': {
298
+ const target = this.getNodeParameter('target', index);
299
+ endpoint = '/backlinks/authority/domain';
300
+ params.target = target;
301
+ break;
302
+ }
303
+ case 'getDomainAuthorityDistribution': {
304
+ const target = this.getNodeParameter('target', index);
305
+ endpoint = '/backlinks/authority/domain/distribution';
306
+ params.target = target;
307
+ break;
308
+ }
309
+ case 'getPageAuthority': {
310
+ const target = this.getNodeParameter('target', index);
311
+ endpoint = '/backlinks/authority/page';
312
+ params.target = target;
313
+ break;
314
+ }
315
+ case 'getPageAuthorityHistory': {
316
+ const target = this.getNodeParameter('target', index);
317
+ const dateFrom = this.getNodeParameter('dateFrom', index);
318
+ const dateTo = this.getNodeParameter('dateTo', index);
319
+ if (!(0, validators_1.validateDateFormat)(dateFrom) || !(0, validators_1.validateDateFormat)(dateTo)) {
320
+ throw new Error('Date must be in YYYY-MM-DD format');
321
+ }
322
+ endpoint = '/backlinks/authority/page/history';
323
+ params.target = target;
324
+ params.date_from = dateFrom;
325
+ params.date_to = dateTo;
326
+ break;
327
+ }
328
+ default:
329
+ throw new Error(`Unknown Backlinks operation: ${operation}`);
330
+ }
331
+ return await apiRequest_1.apiRequest.call(this, method, endpoint, {}, params, index);
332
+ }
@@ -0,0 +1,2 @@
1
+ import { IExecuteFunctions } from 'n8n-workflow';
2
+ export declare function DomainAnalysisOperations(this: IExecuteFunctions, index: number): Promise<any>;
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomainAnalysisOperations = DomainAnalysisOperations;
4
+ const apiRequest_1 = require("../../utils/apiRequest");
5
+ const validators_1 = require("../../utils/validators");
6
+ async function DomainAnalysisOperations(index) {
7
+ const operation = this.getNodeParameter('operation', index);
8
+ let endpoint = '';
9
+ const params = {};
10
+ let method = 'GET';
11
+ switch (operation) {
12
+ case 'getOverviewDb': {
13
+ const domain = this.getNodeParameter('domain', index);
14
+ const source = this.getNodeParameter('source', index);
15
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
16
+ endpoint = '/domain/overview/db';
17
+ params.source = (0, validators_1.validateSource)(source);
18
+ params.domain = (0, validators_1.validateDomain)(domain);
19
+ params.with_subdomains = additionalFields.withSubdomains ? 1 : 0;
20
+ break;
21
+ }
22
+ case 'getOverviewWorldwide': {
23
+ const domain = this.getNodeParameter('domain', index);
24
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
25
+ endpoint = '/domain/overview/worldwide';
26
+ params.domain = (0, validators_1.validateDomain)(domain);
27
+ if (additionalFields.currency)
28
+ params.currency = additionalFields.currency;
29
+ if (additionalFields.fields)
30
+ params.fields = additionalFields.fields.join(',');
31
+ if (additionalFields.showZonesList !== undefined) {
32
+ params.show_zones_list = additionalFields.showZonesList ? 1 : 0;
33
+ }
34
+ const response = await apiRequest_1.apiRequest.call(this, method, endpoint, {}, params, index);
35
+ if (Array.isArray(response)) {
36
+ return response.map(item => ({
37
+ ...item,
38
+ _domain: (0, validators_1.validateDomain)(domain)
39
+ }));
40
+ }
41
+ else if (typeof response === 'object' && response !== null) {
42
+ return {
43
+ ...response,
44
+ _domain: (0, validators_1.validateDomain)(domain)
45
+ };
46
+ }
47
+ return response;
48
+ }
49
+ case 'getOverviewHistory': {
50
+ const domain = this.getNodeParameter('domain', index);
51
+ const source = this.getNodeParameter('source', index);
52
+ const type = this.getNodeParameter('type', index, 'organic');
53
+ endpoint = '/domain/overview/history';
54
+ params.source = (0, validators_1.validateSource)(source);
55
+ params.domain = (0, validators_1.validateDomain)(domain);
56
+ params.type = type;
57
+ break;
58
+ }
59
+ case 'getKeywords': {
60
+ const domain = this.getNodeParameter('domain', index);
61
+ const source = this.getNodeParameter('source', index);
62
+ const type = this.getNodeParameter('type', index);
63
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
64
+ endpoint = '/domain/keywords';
65
+ params.source = (0, validators_1.validateSource)(source);
66
+ params.domain = (0, validators_1.validateDomain)(domain);
67
+ params.type = type;
68
+ if (additionalFields.limit)
69
+ params.limit = additionalFields.limit;
70
+ if (additionalFields.offset)
71
+ params.offset = additionalFields.offset;
72
+ if (additionalFields.withSubdomains !== undefined) {
73
+ params.with_subdomains = additionalFields.withSubdomains ? 1 : 0;
74
+ }
75
+ if (additionalFields.cols)
76
+ params.cols = additionalFields.cols.join(',');
77
+ if (additionalFields.orderField)
78
+ params.order_field = additionalFields.orderField;
79
+ if (additionalFields.orderType)
80
+ params.order_type = additionalFields.orderType;
81
+ if (additionalFields.volumeFrom)
82
+ params['filter[volume][from]'] = additionalFields.volumeFrom;
83
+ if (additionalFields.volumeTo)
84
+ params['filter[volume][to]'] = additionalFields.volumeTo;
85
+ if (additionalFields.positionFrom)
86
+ params['filter[position][from]'] = additionalFields.positionFrom;
87
+ if (additionalFields.positionTo)
88
+ params['filter[position][to]'] = additionalFields.positionTo;
89
+ if (additionalFields.cpcFrom)
90
+ params['filter[cpc][from]'] = additionalFields.cpcFrom;
91
+ if (additionalFields.cpcTo)
92
+ params['filter[cpc][to]'] = additionalFields.cpcTo;
93
+ break;
94
+ }
95
+ case 'getKeywordsComparison': {
96
+ const domain = this.getNodeParameter('domain', index);
97
+ const compareDomain = this.getNodeParameter('compareDomain', index);
98
+ const source = this.getNodeParameter('source', index);
99
+ const type = this.getNodeParameter('type', index);
100
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
101
+ endpoint = '/domain/keywords/comparison';
102
+ params.source = (0, validators_1.validateSource)(source);
103
+ params.domain = (0, validators_1.validateDomain)(domain);
104
+ params.compare = (0, validators_1.validateDomain)(compareDomain);
105
+ params.type = type;
106
+ if (additionalFields.limit)
107
+ params.limit = additionalFields.limit;
108
+ if (additionalFields.offset)
109
+ params.offset = additionalFields.offset;
110
+ if (additionalFields.cols)
111
+ params.cols = additionalFields.cols.join(',');
112
+ if (additionalFields.orderField)
113
+ params.order_field = additionalFields.orderField;
114
+ if (additionalFields.orderType)
115
+ params.order_type = additionalFields.orderType;
116
+ if (additionalFields.volumeFrom)
117
+ params['filter[volume][from]'] = additionalFields.volumeFrom;
118
+ if (additionalFields.volumeTo)
119
+ params['filter[volume][to]'] = additionalFields.volumeTo;
120
+ break;
121
+ }
122
+ case 'getCompetitors': {
123
+ const domain = this.getNodeParameter('domain', index);
124
+ const source = this.getNodeParameter('source', index);
125
+ const type = this.getNodeParameter('type', index);
126
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
127
+ endpoint = '/domain/competitors';
128
+ params.source = (0, validators_1.validateSource)(source);
129
+ params.domain = (0, validators_1.validateDomain)(domain);
130
+ params.type = type;
131
+ if (additionalFields.limit)
132
+ params.limit = additionalFields.limit;
133
+ if (additionalFields.stats !== undefined) {
134
+ params.stats = additionalFields.stats ? 1 : 0;
135
+ }
136
+ if (additionalFields.excludeLeaders !== undefined) {
137
+ params.exclude_leaders = additionalFields.excludeLeaders ? 1 : 0;
138
+ }
139
+ break;
140
+ }
141
+ case 'getAdsForKeyword': {
142
+ const keyword = this.getNodeParameter('keyword', index);
143
+ const source = this.getNodeParameter('source', index);
144
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
145
+ if (!keyword || keyword.trim() === '') {
146
+ throw new Error('Keyword cannot be empty');
147
+ }
148
+ endpoint = '/domain/ads';
149
+ params.source = (0, validators_1.validateSource)(source);
150
+ params.keyword = keyword.trim();
151
+ if (additionalFields.from)
152
+ params.from = additionalFields.from;
153
+ if (additionalFields.to)
154
+ params.to = additionalFields.to;
155
+ if (additionalFields.page)
156
+ params.page = additionalFields.page;
157
+ if (additionalFields.limit)
158
+ params.limit = additionalFields.limit;
159
+ break;
160
+ }
161
+ case 'getAdsForDomain': {
162
+ const domain = this.getNodeParameter('domain', index);
163
+ const source = this.getNodeParameter('source', index);
164
+ const additionalFields = this.getNodeParameter('additionalFields', index, {});
165
+ endpoint = '/domain/ads';
166
+ params.source = (0, validators_1.validateSource)(source);
167
+ params.domain = (0, validators_1.validateDomain)(domain);
168
+ if (additionalFields.from)
169
+ params.from = additionalFields.from;
170
+ if (additionalFields.to)
171
+ params.to = additionalFields.to;
172
+ if (additionalFields.page)
173
+ params.page = additionalFields.page;
174
+ if (additionalFields.limit)
175
+ params.limit = additionalFields.limit;
176
+ break;
177
+ }
178
+ default:
179
+ throw new Error(`Unknown Domain Analysis operation: ${operation}`);
180
+ }
181
+ return await apiRequest_1.apiRequest.call(this, method, endpoint, {}, params, index);
182
+ }
@@ -0,0 +1,2 @@
1
+ import { IExecuteFunctions } from 'n8n-workflow';
2
+ export declare function KeywordResearchOperations(this: IExecuteFunctions, index: number): Promise<any>;