@kaia-team/n8n-nodes-kaia
Version:
n8n nodes for Kaia LLM integration
215 lines • 6.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.crawlsApiProperties = void 0;
exports.handleCrawlsApi = handleCrawlsApi;
const n8n_workflow_1 = require("n8n-workflow");
const utils_1 = require("../utils");
/**
* Crawls API Properties
* Properties specific to the crawls API resource (web crawling)
*/
exports.crawlsApiProperties = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['crawls'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create a crawl',
},
{
name: 'Delete',
value: 'delete',
action: 'Delete a crawl',
},
{
name: 'List',
value: 'list',
action: 'List crawls',
},
{
name: 'Read',
value: 'read',
action: 'Read a crawl',
},
{
name: 'Tree View',
value: 'treeView',
action: 'Get tree view of a crawl',
},
{
name: 'Update',
value: 'update',
action: 'Update a crawl',
},
],
default: 'list',
},
{
displayName: 'Crawl ID',
name: 'crawlId',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['crawls'],
operation: ['read', 'update', 'delete', 'treeView'],
},
},
description: 'The ID of the crawl',
required: true,
},
{
displayName: 'URL',
name: 'url',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['crawls'],
operation: ['create', 'update'],
},
},
description: 'URL to crawl',
},
{
displayName: 'Depth Limit',
name: 'depthlimit',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['crawls'],
operation: ['create', 'update'],
},
},
description: 'Depth limit for crawling',
},
{
displayName: 'Chunk Size',
name: 'chunk_size',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['crawls'],
operation: ['create', 'update'],
},
},
description: 'Chunk size for processing',
},
{
displayName: 'Chunk Overlap',
name: 'chunk_overlap',
type: 'number',
default: 0,
displayOptions: {
show: {
resource: ['crawls'],
operation: ['create', 'update'],
},
},
description: 'Chunk overlap for processing',
},
{
displayName: 'Dividers',
name: 'dividers',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['crawls'],
operation: ['create', 'update'],
},
},
description: 'Dividers for text processing',
},
];
/**
* Crawls API Handler
* Handles requests to the crawls API (web crawling)
*/
async function handleCrawlsApi(executeFunctions, itemIndex, adminUrl, adminToken) {
const operation = executeFunctions.getNodeParameter('operation', itemIndex);
const additionalFields = executeFunctions.getNodeParameter('additionalFields', itemIndex, {});
const headers = (0, utils_1.createHeaders)(adminToken, additionalFields);
if (operation === 'list') {
const response = await executeFunctions.helpers.httpRequest({
method: 'GET',
url: `${adminUrl}/crawls.json`,
headers,
});
return executeFunctions.helpers.returnJsonArray(response);
}
else if (operation === 'read') {
let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex);
crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls');
const response = await executeFunctions.helpers.httpRequest({
method: 'GET',
url: `${adminUrl}/crawls/${crawlId}.json`,
headers,
});
return response;
}
else if (operation === 'create' || operation === 'update') {
const payload = { crawl: {} };
const addIfSet = (key, param, defaultVal = '') => {
const val = executeFunctions.getNodeParameter(param, itemIndex, defaultVal);
if (val !== defaultVal && (typeof val !== 'string' || val.trim() !== '')) {
payload.crawl[key] = val;
}
};
addIfSet('url', 'url');
addIfSet('depthlimit', 'depthlimit', 0);
addIfSet('chunk_size', 'chunk_size', 0);
addIfSet('chunk_overlap', 'chunk_overlap', 0);
addIfSet('dividers', 'dividers');
const method = operation === 'create' ? 'post' : 'patch';
let url;
if (operation === 'create') {
url = `${adminUrl}/crawls.json`;
}
else {
let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex);
crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls');
url = `${adminUrl}/crawls/${crawlId}.json`;
}
const response = await executeFunctions.helpers.httpRequest({
method: method.toUpperCase(),
url,
body: payload,
headers,
});
return response;
}
else if (operation === 'delete') {
let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex);
crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls');
const response = await executeFunctions.helpers.httpRequest({
method: 'DELETE',
url: `${adminUrl}/crawls/${crawlId}.json`,
headers,
});
return { success: true, deletedId: crawlId };
}
else if (operation === 'treeView') {
let crawlId = executeFunctions.getNodeParameter('crawlId', itemIndex);
crawlId = (0, utils_1.extractIdFromUrlOrId)(crawlId, 'crawls');
const response = await executeFunctions.helpers.httpRequest({
method: 'GET',
url: `${adminUrl}/crawls/${crawlId}/tree_view.json`,
headers,
});
return response;
}
throw new n8n_workflow_1.NodeOperationError(executeFunctions.getNode(), `Unknown crawls operation: ${operation}`);
}
//# sourceMappingURL=crawlsApi.js.map