@tuanltntu/n8n-nodes-bitrix24
Version:
Comprehensive n8n community node for Bitrix24 API integration with CRM, Tasks, Chat, Telephony, and more
264 lines • 9.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Bitrix24FieldRegistry = void 0;
/**
* Bitrix24 Field Registry - Smart field management without circular deps
*
* This registry:
* 1. Loads field definitions on-demand
* 2. Avoids importing all description files at once
* 3. Provides clean separation between resources
* 4. Eliminates circular dependency issues
*/
class Bitrix24FieldRegistry {
/**
* Get available operations for a resource
*/
getOperationsForResource(resource) {
switch (resource) {
case "crm":
return [
{
name: "Create",
value: "create",
description: "Create a CRM entity",
},
{ name: "Get", value: "get", description: "Get a CRM entity" },
{
name: "Get All",
value: "getAll",
description: "Get all CRM entities",
},
{
name: "Update",
value: "update",
description: "Update a CRM entity",
},
{
name: "Delete",
value: "delete",
description: "Delete a CRM entity",
},
{
name: "Get Fields",
value: "getFields",
description: "Get CRM entity fields",
},
];
case "task":
return [
{ name: "Create", value: "create", description: "Create a task" },
{ name: "Get", value: "get", description: "Get a task" },
{ name: "Get All", value: "getAll", description: "Get all tasks" },
{ name: "Update", value: "update", description: "Update a task" },
{ name: "Delete", value: "delete", description: "Delete a task" },
{
name: "Complete",
value: "complete",
description: "Complete a task",
},
];
case "user":
return [
{ name: "Get", value: "get", description: "Get user information" },
{ name: "Get All", value: "getAll", description: "Get all users" },
{
name: "Get Current",
value: "getCurrent",
description: "Get current user",
},
{ name: "Search", value: "search", description: "Search users" },
];
case "file":
return [
{ name: "Upload", value: "upload", description: "Upload a file" },
{
name: "Download",
value: "download",
description: "Download a file",
},
{ name: "Delete", value: "delete", description: "Delete a file" },
{ name: "Get All", value: "getAll", description: "Get all files" },
];
case "calendar":
return [
{
name: "Create",
value: "create",
description: "Create calendar event",
},
{ name: "Get", value: "get", description: "Get calendar event" },
{ name: "Get All", value: "getAll", description: "Get all events" },
{
name: "Update",
value: "update",
description: "Update calendar event",
},
{
name: "Delete",
value: "delete",
description: "Delete calendar event",
},
];
case "directapi":
return [
{ name: "Call", value: "call", description: "Make direct API call" },
];
default:
return [];
}
}
/**
* Get fields for a specific resource and operation
*/
getFieldsForOperation(resource, operation) {
// For now, return basic fields - this can be expanded later
const basicFields = [
{ name: "ID", value: "id", description: "Entity ID" },
{
name: "Access Token",
value: "accessToken",
description: "Custom access token",
},
];
switch (resource) {
case "crm":
return this.getCrmFields(operation);
case "task":
return this.getTaskFields(operation);
case "user":
return this.getUserFields(operation);
case "file":
return this.getFileFields(operation);
case "calendar":
return this.getCalendarFields(operation);
case "directapi":
return this.getDirectApiFields(operation);
default:
return basicFields;
}
}
getCrmFields(operation) {
const baseFields = [
{
name: "CRM Resource",
value: "crmResource",
description: "Type of CRM entity",
},
{ name: "ID", value: "id", description: "Entity ID" },
];
switch (operation) {
case "create":
return [
...baseFields,
{ name: "Title", value: "title", description: "Entity title" },
{
name: "Assigned User ID",
value: "assignedUserId",
description: "Assigned user",
},
];
case "update":
return [
...baseFields,
{
name: "Fields to Update",
value: "fieldsToUpdate",
description: "Fields to update",
},
];
default:
return baseFields;
}
}
getTaskFields(operation) {
const baseFields = [
{ name: "Task ID", value: "taskId", description: "Task ID" },
];
switch (operation) {
case "create":
return [
...baseFields,
{ name: "Title", value: "title", description: "Task title" },
{
name: "Description",
value: "description",
description: "Task description",
},
{
name: "Responsible User ID",
value: "responsibleUserId",
description: "Responsible user",
},
];
default:
return baseFields;
}
}
getUserFields(operation) {
return [
{ name: "User ID", value: "userId", description: "User ID" },
{
name: "Search Query",
value: "searchQuery",
description: "Search term",
},
];
}
getFileFields(operation) {
const baseFields = [
{ name: "File ID", value: "fileId", description: "File ID" },
];
switch (operation) {
case "upload":
return [
...baseFields,
{ name: "File Data", value: "fileData", description: "File content" },
{ name: "File Name", value: "fileName", description: "File name" },
];
default:
return baseFields;
}
}
getCalendarFields(operation) {
const baseFields = [
{ name: "Event ID", value: "eventId", description: "Calendar event ID" },
];
switch (operation) {
case "create":
return [
...baseFields,
{ name: "Title", value: "title", description: "Event title" },
{
name: "Start Date",
value: "startDate",
description: "Start date and time",
},
{
name: "End Date",
value: "endDate",
description: "End date and time",
},
];
default:
return baseFields;
}
}
getDirectApiFields(operation) {
return [
{
name: "Endpoint",
value: "endpoint",
description: "API endpoint to call",
},
{ name: "Method", value: "method", description: "HTTP method" },
{
name: "Parameters",
value: "parameters",
description: "API parameters",
},
];
}
}
exports.Bitrix24FieldRegistry = Bitrix24FieldRegistry;
//# sourceMappingURL=Bitrix24FieldRegistry.js.map