UNPKG

@tuanltntu/n8n-nodes-bitrix24

Version:

Comprehensive n8n community node for Bitrix24 API integration with CRM, Tasks, Chat, Telephony, and more

170 lines 6.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MODULE_REGISTRY = exports.ModuleOperationsManager = void 0; /** * Smart Module Organization Manager * Tổ chức modules hoàn toàn độc lập, không bị ảnh hưởng bởi nhau */ class ModuleOperationsManager { /** * Tạo namespace riêng biệt cho mỗi module để tránh xung đột hoàn toàn */ static createIsolatedModule(moduleName, operations) { return operations.map((op) => { var _a; // Clone để tránh mutation const isolatedOp = JSON.parse(JSON.stringify(op)); // Đảm bảo mỗi operation có namespace riêng if (isolatedOp.name === "operation") { // Tạo displayOptions cô lập hoàn toàn isolatedOp.displayOptions = { show: { resource: [moduleName.toLowerCase()], }, }; // Không sử dụng hide để tránh circular dependency // Chỉ dựa vào show conditions duy nhất } // Đảm bảo tất cả fields khác cũng có namespace riêng if ((_a = isolatedOp.displayOptions) === null || _a === void 0 ? void 0 : _a.show) { if (!isolatedOp.displayOptions.show.resource) { isolatedOp.displayOptions.show.resource = [moduleName.toLowerCase()]; } } return isolatedOp; }); } /** * Tạo sub-resource operations (như crmActivityOperation) * với namespace riêng biệt để tránh xung đột */ static createSubResourceOperations(parentResource, subResource, operations, operationName) { return { displayName: `${this.capitalize(subResource)} Operation`, name: operationName, type: "options", noDataExpression: true, displayOptions: { show: { resource: [parentResource.toLowerCase()], [`${parentResource.toLowerCase()}Resource`]: [ subResource.toLowerCase(), ], }, }, options: operations.map((op) => ({ name: this.capitalize(op), value: op, description: `${this.capitalize(op)} ${subResource}`, action: `${this.capitalize(op)} a ${subResource}`, })), default: operations[0] || "get", }; } /** * Tạo field với isolation hoàn toàn */ static createIsolatedField(fieldConfig, moduleName, additionalConditions = {}) { const field = JSON.parse(JSON.stringify(fieldConfig)); // Đảm bảo displayOptions có namespace riêng if (!field.displayOptions) { field.displayOptions = {}; } if (!field.displayOptions.show) { field.displayOptions.show = {}; } // Thêm resource condition field.displayOptions.show.resource = [moduleName.toLowerCase()]; // Thêm các conditions khác Object.assign(field.displayOptions.show, additionalConditions); // Không sử dụng hide để tránh dependencies if (field.displayOptions.hide) { delete field.displayOptions.hide; } return field; } /** * Tạo collection options cô lập */ static createIsolatedCollection(collectionName, moduleName, showConditions, options) { return { displayName: collectionName, name: collectionName.toLowerCase().replace(/\s+/g, ""), type: "collection", placeholder: "Add Option", default: {}, displayOptions: { show: { resource: [moduleName.toLowerCase()], ...showConditions, }, }, options: options.map((opt) => { // Đảm bảo các options con không có displayOptions để tránh nested dependencies const cleanOpt = JSON.parse(JSON.stringify(opt)); if (cleanOpt.displayOptions) { delete cleanOpt.displayOptions; } return cleanOpt; }), }; } /** * Utility function để capitalize strings */ static capitalize(str) { return str.charAt(0).toUpperCase() + str.slice(1); } /** * Tạo resource selector với options riêng biệt */ static createResourceSelector(resources) { var _a; return { displayName: "Resource", name: "resource", type: "options", noDataExpression: true, options: resources.map((resource) => ({ name: resource.name, value: resource.value, description: resource.description || `Work with ${resource.name}`, })), default: ((_a = resources[0]) === null || _a === void 0 ? void 0 : _a.value) || "crm", }; } } exports.ModuleOperationsManager = ModuleOperationsManager; /** * Module Registry - đăng ký tất cả modules có sẵn */ exports.MODULE_REGISTRY = { CRM: "crm", TASK: "task", CALENDAR: "calendar", CHAT: "chat", FILE: "file", BIZPROC: "bizproc", DISK: "disk", DOCUMENT_GENERATOR: "documentGenerator", EVENTS: "events", LISTS: "lists", MESSAGE_SERVICE: "messageService", OPEN_LINES: "openLines", SPA: "spa", TELEPHONY: "telephony", TIMELINE: "timeline", USER_FIELD: "userField", USER_FIELD_CONFIG: "userFieldConfig", ACTIVITY: "activity", AUTOMATION: "automation", STATUS: "status", PRODUCT: "product", CATALOG: "catalog", ENTITY: "entity", CHATBOT: "chatbot", DUPLICATE: "duplicate", DIRECTAPI: "directapi", USER: "user", }; //# sourceMappingURL=ModuleOperationsManager.js.map