UNPKG

n8n

Version:

n8n Workflow Automation Tool

104 lines 4.56 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.InstanceAiExamplesController = void 0; const api_types_1 = require("@n8n/api-types"); const decorators_1 = require("@n8n/decorators"); const node_fs_1 = require("node:fs"); const node_path_1 = require("node:path"); const n8n_workflow_1 = require("n8n-workflow"); const constants_1 = require("../constants"); const NATIVE_NODE_PREFIXES = ['@n8n/n8n-nodes-langchain.']; const NATIVE_NODES = new Set([ 'n8n-nodes-base.code', 'n8n-nodes-base.httpRequest', 'n8n-nodes-base.html', 'n8n-nodes-base.crypto', 'n8n-nodes-base.editImage', 'n8n-nodes-base.ftp', 'n8n-nodes-base.evaluation', 'n8n-nodes-base.emailSend', 'n8n-nodes-base.sms77', 'n8n-nodes-base.apiTemplateIo', ]); function hasVisibleNodes(nodes) { return nodes.some((n) => !NATIVE_NODES.has(n.name) && !NATIVE_NODE_PREFIXES.some((p) => n.name.startsWith(p))); } let InstanceAiExamplesController = class InstanceAiExamplesController { constructor() { this.cachedData = null; } getExamples(_req, _res, query) { const data = this.loadData(); const { category, subcategory, page, limit } = query; let workflows = data.workflows; if (category) { workflows = workflows.filter((w) => w.category === category); } if (subcategory) { workflows = workflows.filter((w) => w.subcategory === subcategory); } const totalWorkflows = workflows.length; const offset = (page - 1) * limit; const paginatedWorkflows = workflows.slice(offset, offset + limit); return { categories: data.categories, subcategories: data.subcategories, totalWorkflows, workflows: paginatedWorkflows, }; } loadData() { if (this.cachedData) { return this.cachedData; } const filePath = (0, node_path_1.resolve)(constants_1.CLI_DIR, 'dist', 'instance-ai-examples.data.json'); const raw = (0, node_fs_1.readFileSync)(filePath, 'utf-8'); const rawData = (0, n8n_workflow_1.jsonParse)(raw); const workflows = rawData.workflows.map((w) => ({ ...w, nodes: w.nodes.map((n) => ({ ...n, iconData: rawData.nodeIcons[n.name], })), })); workflows.sort((a, b) => { const scoreDiff = (b.relevanceScore ?? 0) - (a.relevanceScore ?? 0); if (scoreDiff !== 0) return scoreDiff; const aVisible = hasVisibleNodes(a.nodes) ? 1 : 0; const bVisible = hasVisibleNodes(b.nodes) ? 1 : 0; return bVisible - aVisible; }); this.cachedData = { categories: rawData.categories, subcategories: rawData.subcategories, totalWorkflows: rawData.totalWorkflows, workflows, }; return this.cachedData; } }; exports.InstanceAiExamplesController = InstanceAiExamplesController; __decorate([ (0, decorators_1.Get)('/', { skipAuth: true }), __param(2, decorators_1.Query), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object, api_types_1.InstanceAiExamplesQueryDto]), __metadata("design:returntype", void 0) ], InstanceAiExamplesController.prototype, "getExamples", null); exports.InstanceAiExamplesController = InstanceAiExamplesController = __decorate([ (0, decorators_1.RestController)('/instance-ai-examples') ], InstanceAiExamplesController); //# sourceMappingURL=instance-ai-examples.controller.js.map