This is page 32 of 46. Use http://codebase.md/czlonkowski/n8n-mcp?lines=false&page={x} to view the full context. # Directory Structure ``` ├── _config.yml ├── .claude │ └── agents │ ├── code-reviewer.md │ ├── context-manager.md │ ├── debugger.md │ ├── deployment-engineer.md │ ├── mcp-backend-engineer.md │ ├── n8n-mcp-tester.md │ ├── technical-researcher.md │ └── test-automator.md ├── .dockerignore ├── .env.docker ├── .env.example ├── .env.n8n.example ├── .env.test ├── .env.test.example ├── .github │ ├── ABOUT.md │ ├── BENCHMARK_THRESHOLDS.md │ ├── FUNDING.yml │ ├── gh-pages.yml │ ├── secret_scanning.yml │ └── workflows │ ├── benchmark-pr.yml │ ├── benchmark.yml │ ├── docker-build-fast.yml │ ├── docker-build-n8n.yml │ ├── docker-build.yml │ ├── release.yml │ ├── test.yml │ └── update-n8n-deps.yml ├── .gitignore ├── .npmignore ├── ATTRIBUTION.md ├── CHANGELOG.md ├── CLAUDE.md ├── codecov.yml ├── coverage.json ├── data │ ├── .gitkeep │ ├── nodes.db │ ├── nodes.db-shm │ ├── nodes.db-wal │ └── templates.db ├── deploy │ └── quick-deploy-n8n.sh ├── docker │ ├── docker-entrypoint.sh │ ├── n8n-mcp │ ├── parse-config.js │ └── README.md ├── docker-compose.buildkit.yml ├── docker-compose.extract.yml ├── docker-compose.n8n.yml ├── docker-compose.override.yml.example ├── docker-compose.test-n8n.yml ├── docker-compose.yml ├── Dockerfile ├── Dockerfile.railway ├── Dockerfile.test ├── docs │ ├── AUTOMATED_RELEASES.md │ ├── BENCHMARKS.md │ ├── CHANGELOG.md │ ├── CLAUDE_CODE_SETUP.md │ ├── CLAUDE_INTERVIEW.md │ ├── CODECOV_SETUP.md │ ├── CODEX_SETUP.md │ ├── CURSOR_SETUP.md │ ├── DEPENDENCY_UPDATES.md │ ├── DOCKER_README.md │ ├── DOCKER_TROUBLESHOOTING.md │ ├── FINAL_AI_VALIDATION_SPEC.md │ ├── FLEXIBLE_INSTANCE_CONFIGURATION.md │ ├── HTTP_DEPLOYMENT.md │ ├── img │ │ ├── cc_command.png │ │ ├── cc_connected.png │ │ ├── codex_connected.png │ │ ├── cursor_tut.png │ │ ├── Railway_api.png │ │ ├── Railway_server_address.png │ │ ├── vsc_ghcp_chat_agent_mode.png │ │ ├── vsc_ghcp_chat_instruction_files.png │ │ ├── vsc_ghcp_chat_thinking_tool.png │ │ └── windsurf_tut.png │ ├── INSTALLATION.md │ ├── LIBRARY_USAGE.md │ ├── local │ │ ├── DEEP_DIVE_ANALYSIS_2025-10-02.md │ │ ├── DEEP_DIVE_ANALYSIS_README.md │ │ ├── Deep_dive_p1_p2.md │ │ ├── integration-testing-plan.md │ │ ├── integration-tests-phase1-summary.md │ │ ├── N8N_AI_WORKFLOW_BUILDER_ANALYSIS.md │ │ ├── P0_IMPLEMENTATION_PLAN.md │ │ └── TEMPLATE_MINING_ANALYSIS.md │ ├── MCP_ESSENTIALS_README.md │ ├── MCP_QUICK_START_GUIDE.md │ ├── N8N_DEPLOYMENT.md │ ├── RAILWAY_DEPLOYMENT.md │ ├── README_CLAUDE_SETUP.md │ ├── README.md │ ├── tools-documentation-usage.md │ ├── VS_CODE_PROJECT_SETUP.md │ ├── WINDSURF_SETUP.md │ └── workflow-diff-examples.md ├── examples │ └── enhanced-documentation-demo.js ├── fetch_log.txt ├── LICENSE ├── MEMORY_N8N_UPDATE.md ├── MEMORY_TEMPLATE_UPDATE.md ├── monitor_fetch.sh ├── N8N_HTTP_STREAMABLE_SETUP.md ├── n8n-nodes.db ├── P0-R3-TEST-PLAN.md ├── package-lock.json ├── package.json ├── package.runtime.json ├── PRIVACY.md ├── railway.json ├── README.md ├── renovate.json ├── scripts │ ├── analyze-optimization.sh │ ├── audit-schema-coverage.ts │ ├── build-optimized.sh │ ├── compare-benchmarks.js │ ├── demo-optimization.sh │ ├── deploy-http.sh │ ├── deploy-to-vm.sh │ ├── export-webhook-workflows.ts │ ├── extract-changelog.js │ ├── extract-from-docker.js │ ├── extract-nodes-docker.sh │ ├── extract-nodes-simple.sh │ ├── format-benchmark-results.js │ ├── generate-benchmark-stub.js │ ├── generate-detailed-reports.js │ ├── generate-test-summary.js │ ├── http-bridge.js │ ├── mcp-http-client.js │ ├── migrate-nodes-fts.ts │ ├── migrate-tool-docs.ts │ ├── n8n-docs-mcp.service │ ├── nginx-n8n-mcp.conf │ ├── prebuild-fts5.ts │ ├── prepare-release.js │ ├── publish-npm-quick.sh │ ├── publish-npm.sh │ ├── quick-test.ts │ ├── run-benchmarks-ci.js │ ├── sync-runtime-version.js │ ├── test-ai-validation-debug.ts │ ├── test-code-node-enhancements.ts │ ├── test-code-node-fixes.ts │ ├── test-docker-config.sh │ ├── test-docker-fingerprint.ts │ ├── test-docker-optimization.sh │ ├── test-docker.sh │ ├── test-empty-connection-validation.ts │ ├── test-error-message-tracking.ts │ ├── test-error-output-validation.ts │ ├── test-error-validation.js │ ├── test-essentials.ts │ ├── test-expression-code-validation.ts │ ├── test-expression-format-validation.js │ ├── test-fts5-search.ts │ ├── test-fuzzy-fix.ts │ ├── test-fuzzy-simple.ts │ ├── test-helpers-validation.ts │ ├── test-http-search.ts │ ├── test-http.sh │ ├── test-jmespath-validation.ts │ ├── test-multi-tenant-simple.ts │ ├── test-multi-tenant.ts │ ├── test-n8n-integration.sh │ ├── test-node-info.js │ ├── test-node-type-validation.ts │ ├── test-nodes-base-prefix.ts │ ├── test-operation-validation.ts │ ├── test-optimized-docker.sh │ ├── test-release-automation.js │ ├── test-search-improvements.ts │ ├── test-security.ts │ ├── test-single-session.sh │ ├── test-sqljs-triggers.ts │ ├── test-telemetry-debug.ts │ ├── test-telemetry-direct.ts │ ├── test-telemetry-env.ts │ ├── test-telemetry-integration.ts │ ├── test-telemetry-no-select.ts │ ├── test-telemetry-security.ts │ ├── test-telemetry-simple.ts │ ├── test-typeversion-validation.ts │ ├── test-url-configuration.ts │ ├── test-user-id-persistence.ts │ ├── test-webhook-validation.ts │ ├── test-workflow-insert.ts │ ├── test-workflow-sanitizer.ts │ ├── test-workflow-tracking-debug.ts │ ├── update-and-publish-prep.sh │ ├── update-n8n-deps.js │ ├── update-readme-version.js │ ├── vitest-benchmark-json-reporter.js │ └── vitest-benchmark-reporter.ts ├── SECURITY.md ├── src │ ├── config │ │ └── n8n-api.ts │ ├── data │ │ └── canonical-ai-tool-examples.json │ ├── database │ │ ├── database-adapter.ts │ │ ├── migrations │ │ │ └── add-template-node-configs.sql │ │ ├── node-repository.ts │ │ ├── nodes.db │ │ ├── schema-optimized.sql │ │ └── schema.sql │ ├── errors │ │ └── validation-service-error.ts │ ├── http-server-single-session.ts │ ├── http-server.ts │ ├── index.ts │ ├── loaders │ │ └── node-loader.ts │ ├── mappers │ │ └── docs-mapper.ts │ ├── mcp │ │ ├── handlers-n8n-manager.ts │ │ ├── handlers-workflow-diff.ts │ │ ├── index.ts │ │ ├── server.ts │ │ ├── stdio-wrapper.ts │ │ ├── tool-docs │ │ │ ├── configuration │ │ │ │ ├── get-node-as-tool-info.ts │ │ │ │ ├── get-node-documentation.ts │ │ │ │ ├── get-node-essentials.ts │ │ │ │ ├── get-node-info.ts │ │ │ │ ├── get-property-dependencies.ts │ │ │ │ ├── index.ts │ │ │ │ └── search-node-properties.ts │ │ │ ├── discovery │ │ │ │ ├── get-database-statistics.ts │ │ │ │ ├── index.ts │ │ │ │ ├── list-ai-tools.ts │ │ │ │ ├── list-nodes.ts │ │ │ │ └── search-nodes.ts │ │ │ ├── guides │ │ │ │ ├── ai-agents-guide.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── system │ │ │ │ ├── index.ts │ │ │ │ ├── n8n-diagnostic.ts │ │ │ │ ├── n8n-health-check.ts │ │ │ │ ├── n8n-list-available-tools.ts │ │ │ │ └── tools-documentation.ts │ │ │ ├── templates │ │ │ │ ├── get-template.ts │ │ │ │ ├── get-templates-for-task.ts │ │ │ │ ├── index.ts │ │ │ │ ├── list-node-templates.ts │ │ │ │ ├── list-tasks.ts │ │ │ │ ├── search-templates-by-metadata.ts │ │ │ │ └── search-templates.ts │ │ │ ├── types.ts │ │ │ ├── validation │ │ │ │ ├── index.ts │ │ │ │ ├── validate-node-minimal.ts │ │ │ │ ├── validate-node-operation.ts │ │ │ │ ├── validate-workflow-connections.ts │ │ │ │ ├── validate-workflow-expressions.ts │ │ │ │ └── validate-workflow.ts │ │ │ └── workflow_management │ │ │ ├── index.ts │ │ │ ├── n8n-autofix-workflow.ts │ │ │ ├── n8n-create-workflow.ts │ │ │ ├── n8n-delete-execution.ts │ │ │ ├── n8n-delete-workflow.ts │ │ │ ├── n8n-get-execution.ts │ │ │ ├── n8n-get-workflow-details.ts │ │ │ ├── n8n-get-workflow-minimal.ts │ │ │ ├── n8n-get-workflow-structure.ts │ │ │ ├── n8n-get-workflow.ts │ │ │ ├── n8n-list-executions.ts │ │ │ ├── n8n-list-workflows.ts │ │ │ ├── n8n-trigger-webhook-workflow.ts │ │ │ ├── n8n-update-full-workflow.ts │ │ │ ├── n8n-update-partial-workflow.ts │ │ │ └── n8n-validate-workflow.ts │ │ ├── tools-documentation.ts │ │ ├── tools-n8n-friendly.ts │ │ ├── tools-n8n-manager.ts │ │ ├── tools.ts │ │ └── workflow-examples.ts │ ├── mcp-engine.ts │ ├── mcp-tools-engine.ts │ ├── n8n │ │ ├── MCPApi.credentials.ts │ │ └── MCPNode.node.ts │ ├── parsers │ │ ├── node-parser.ts │ │ ├── property-extractor.ts │ │ └── simple-parser.ts │ ├── scripts │ │ ├── debug-http-search.ts │ │ ├── extract-from-docker.ts │ │ ├── fetch-templates-robust.ts │ │ ├── fetch-templates.ts │ │ ├── rebuild-database.ts │ │ ├── rebuild-optimized.ts │ │ ├── rebuild.ts │ │ ├── sanitize-templates.ts │ │ ├── seed-canonical-ai-examples.ts │ │ ├── test-autofix-documentation.ts │ │ ├── test-autofix-workflow.ts │ │ ├── test-execution-filtering.ts │ │ ├── test-node-suggestions.ts │ │ ├── test-protocol-negotiation.ts │ │ ├── test-summary.ts │ │ ├── test-webhook-autofix.ts │ │ ├── validate.ts │ │ └── validation-summary.ts │ ├── services │ │ ├── ai-node-validator.ts │ │ ├── ai-tool-validators.ts │ │ ├── confidence-scorer.ts │ │ ├── config-validator.ts │ │ ├── enhanced-config-validator.ts │ │ ├── example-generator.ts │ │ ├── execution-processor.ts │ │ ├── expression-format-validator.ts │ │ ├── expression-validator.ts │ │ ├── n8n-api-client.ts │ │ ├── n8n-validation.ts │ │ ├── node-documentation-service.ts │ │ ├── node-sanitizer.ts │ │ ├── node-similarity-service.ts │ │ ├── node-specific-validators.ts │ │ ├── operation-similarity-service.ts │ │ ├── property-dependencies.ts │ │ ├── property-filter.ts │ │ ├── resource-similarity-service.ts │ │ ├── sqlite-storage-service.ts │ │ ├── task-templates.ts │ │ ├── universal-expression-validator.ts │ │ ├── workflow-auto-fixer.ts │ │ ├── workflow-diff-engine.ts │ │ └── workflow-validator.ts │ ├── telemetry │ │ ├── batch-processor.ts │ │ ├── config-manager.ts │ │ ├── early-error-logger.ts │ │ ├── error-sanitization-utils.ts │ │ ├── error-sanitizer.ts │ │ ├── event-tracker.ts │ │ ├── event-validator.ts │ │ ├── index.ts │ │ ├── performance-monitor.ts │ │ ├── rate-limiter.ts │ │ ├── startup-checkpoints.ts │ │ ├── telemetry-error.ts │ │ ├── telemetry-manager.ts │ │ ├── telemetry-types.ts │ │ └── workflow-sanitizer.ts │ ├── templates │ │ ├── batch-processor.ts │ │ ├── metadata-generator.ts │ │ ├── README.md │ │ ├── template-fetcher.ts │ │ ├── template-repository.ts │ │ └── template-service.ts │ ├── types │ │ ├── index.ts │ │ ├── instance-context.ts │ │ ├── n8n-api.ts │ │ ├── node-types.ts │ │ └── workflow-diff.ts │ └── utils │ ├── auth.ts │ ├── bridge.ts │ ├── cache-utils.ts │ ├── console-manager.ts │ ├── documentation-fetcher.ts │ ├── enhanced-documentation-fetcher.ts │ ├── error-handler.ts │ ├── example-generator.ts │ ├── fixed-collection-validator.ts │ ├── logger.ts │ ├── mcp-client.ts │ ├── n8n-errors.ts │ ├── node-source-extractor.ts │ ├── node-type-normalizer.ts │ ├── node-type-utils.ts │ ├── node-utils.ts │ ├── npm-version-checker.ts │ ├── protocol-version.ts │ ├── simple-cache.ts │ ├── ssrf-protection.ts │ ├── template-node-resolver.ts │ ├── template-sanitizer.ts │ ├── url-detector.ts │ ├── validation-schemas.ts │ └── version.ts ├── test-output.txt ├── test-reinit-fix.sh ├── tests │ ├── __snapshots__ │ │ └── .gitkeep │ ├── auth.test.ts │ ├── benchmarks │ │ ├── database-queries.bench.ts │ │ ├── index.ts │ │ ├── mcp-tools.bench.ts │ │ ├── mcp-tools.bench.ts.disabled │ │ ├── mcp-tools.bench.ts.skip │ │ ├── node-loading.bench.ts.disabled │ │ ├── README.md │ │ ├── search-operations.bench.ts.disabled │ │ └── validation-performance.bench.ts.disabled │ ├── bridge.test.ts │ ├── comprehensive-extraction-test.js │ ├── data │ │ └── .gitkeep │ ├── debug-slack-doc.js │ ├── demo-enhanced-documentation.js │ ├── docker-tests-README.md │ ├── error-handler.test.ts │ ├── examples │ │ └── using-database-utils.test.ts │ ├── extracted-nodes-db │ │ ├── database-import.json │ │ ├── extraction-report.json │ │ ├── insert-nodes.sql │ │ ├── n8n-nodes-base__Airtable.json │ │ ├── n8n-nodes-base__Discord.json │ │ ├── n8n-nodes-base__Function.json │ │ ├── n8n-nodes-base__HttpRequest.json │ │ ├── n8n-nodes-base__If.json │ │ ├── n8n-nodes-base__Slack.json │ │ ├── n8n-nodes-base__SplitInBatches.json │ │ └── n8n-nodes-base__Webhook.json │ ├── factories │ │ ├── node-factory.ts │ │ └── property-definition-factory.ts │ ├── fixtures │ │ ├── .gitkeep │ │ ├── database │ │ │ └── test-nodes.json │ │ ├── factories │ │ │ ├── node.factory.ts │ │ │ └── parser-node.factory.ts │ │ └── template-configs.ts │ ├── helpers │ │ └── env-helpers.ts │ ├── http-server-auth.test.ts │ ├── integration │ │ ├── ai-validation │ │ │ ├── ai-agent-validation.test.ts │ │ │ ├── ai-tool-validation.test.ts │ │ │ ├── chat-trigger-validation.test.ts │ │ │ ├── e2e-validation.test.ts │ │ │ ├── helpers.ts │ │ │ ├── llm-chain-validation.test.ts │ │ │ ├── README.md │ │ │ └── TEST_REPORT.md │ │ ├── ci │ │ │ └── database-population.test.ts │ │ ├── database │ │ │ ├── connection-management.test.ts │ │ │ ├── empty-database.test.ts │ │ │ ├── fts5-search.test.ts │ │ │ ├── node-fts5-search.test.ts │ │ │ ├── node-repository.test.ts │ │ │ ├── performance.test.ts │ │ │ ├── sqljs-memory-leak.test.ts │ │ │ ├── template-node-configs.test.ts │ │ │ ├── template-repository.test.ts │ │ │ ├── test-utils.ts │ │ │ └── transactions.test.ts │ │ ├── database-integration.test.ts │ │ ├── docker │ │ │ ├── docker-config.test.ts │ │ │ ├── docker-entrypoint.test.ts │ │ │ └── test-helpers.ts │ │ ├── flexible-instance-config.test.ts │ │ ├── mcp │ │ │ └── template-examples-e2e.test.ts │ │ ├── mcp-protocol │ │ │ ├── basic-connection.test.ts │ │ │ ├── error-handling.test.ts │ │ │ ├── performance.test.ts │ │ │ ├── protocol-compliance.test.ts │ │ │ ├── README.md │ │ │ ├── session-management.test.ts │ │ │ ├── test-helpers.ts │ │ │ ├── tool-invocation.test.ts │ │ │ └── workflow-error-validation.test.ts │ │ ├── msw-setup.test.ts │ │ ├── n8n-api │ │ │ ├── executions │ │ │ │ ├── delete-execution.test.ts │ │ │ │ ├── get-execution.test.ts │ │ │ │ ├── list-executions.test.ts │ │ │ │ └── trigger-webhook.test.ts │ │ │ ├── scripts │ │ │ │ └── cleanup-orphans.ts │ │ │ ├── system │ │ │ │ ├── diagnostic.test.ts │ │ │ │ ├── health-check.test.ts │ │ │ │ └── list-tools.test.ts │ │ │ ├── test-connection.ts │ │ │ ├── types │ │ │ │ └── mcp-responses.ts │ │ │ ├── utils │ │ │ │ ├── cleanup-helpers.ts │ │ │ │ ├── credentials.ts │ │ │ │ ├── factories.ts │ │ │ │ ├── fixtures.ts │ │ │ │ ├── mcp-context.ts │ │ │ │ ├── n8n-client.ts │ │ │ │ ├── node-repository.ts │ │ │ │ ├── response-types.ts │ │ │ │ ├── test-context.ts │ │ │ │ └── webhook-workflows.ts │ │ │ └── workflows │ │ │ ├── autofix-workflow.test.ts │ │ │ ├── create-workflow.test.ts │ │ │ ├── delete-workflow.test.ts │ │ │ ├── get-workflow-details.test.ts │ │ │ ├── get-workflow-minimal.test.ts │ │ │ ├── get-workflow-structure.test.ts │ │ │ ├── get-workflow.test.ts │ │ │ ├── list-workflows.test.ts │ │ │ ├── smart-parameters.test.ts │ │ │ ├── update-partial-workflow.test.ts │ │ │ ├── update-workflow.test.ts │ │ │ └── validate-workflow.test.ts │ │ ├── security │ │ │ ├── command-injection-prevention.test.ts │ │ │ └── rate-limiting.test.ts │ │ ├── setup │ │ │ ├── integration-setup.ts │ │ │ └── msw-test-server.ts │ │ ├── telemetry │ │ │ ├── docker-user-id-stability.test.ts │ │ │ └── mcp-telemetry.test.ts │ │ ├── templates │ │ │ └── metadata-operations.test.ts │ │ └── workflow-creation-node-type-format.test.ts │ ├── logger.test.ts │ ├── MOCKING_STRATEGY.md │ ├── mocks │ │ ├── n8n-api │ │ │ ├── data │ │ │ │ ├── credentials.ts │ │ │ │ ├── executions.ts │ │ │ │ └── workflows.ts │ │ │ ├── handlers.ts │ │ │ └── index.ts │ │ └── README.md │ ├── node-storage-export.json │ ├── setup │ │ ├── global-setup.ts │ │ ├── msw-setup.ts │ │ ├── TEST_ENV_DOCUMENTATION.md │ │ └── test-env.ts │ ├── test-database-extraction.js │ ├── test-direct-extraction.js │ ├── test-enhanced-documentation.js │ ├── test-enhanced-integration.js │ ├── test-mcp-extraction.js │ ├── test-mcp-server-extraction.js │ ├── test-mcp-tools-integration.js │ ├── test-node-documentation-service.js │ ├── test-node-list.js │ ├── test-package-info.js │ ├── test-parsing-operations.js │ ├── test-slack-node-complete.js │ ├── test-small-rebuild.js │ ├── test-sqlite-search.js │ ├── test-storage-system.js │ ├── unit │ │ ├── __mocks__ │ │ │ ├── n8n-nodes-base.test.ts │ │ │ ├── n8n-nodes-base.ts │ │ │ └── README.md │ │ ├── database │ │ │ ├── __mocks__ │ │ │ │ └── better-sqlite3.ts │ │ │ ├── database-adapter-unit.test.ts │ │ │ ├── node-repository-core.test.ts │ │ │ ├── node-repository-operations.test.ts │ │ │ ├── node-repository-outputs.test.ts │ │ │ ├── README.md │ │ │ └── template-repository-core.test.ts │ │ ├── docker │ │ │ ├── config-security.test.ts │ │ │ ├── edge-cases.test.ts │ │ │ ├── parse-config.test.ts │ │ │ └── serve-command.test.ts │ │ ├── errors │ │ │ └── validation-service-error.test.ts │ │ ├── examples │ │ │ └── using-n8n-nodes-base-mock.test.ts │ │ ├── flexible-instance-security-advanced.test.ts │ │ ├── flexible-instance-security.test.ts │ │ ├── http-server │ │ │ └── multi-tenant-support.test.ts │ │ ├── http-server-n8n-mode.test.ts │ │ ├── http-server-n8n-reinit.test.ts │ │ ├── http-server-session-management.test.ts │ │ ├── loaders │ │ │ └── node-loader.test.ts │ │ ├── mappers │ │ │ └── docs-mapper.test.ts │ │ ├── mcp │ │ │ ├── get-node-essentials-examples.test.ts │ │ │ ├── handlers-n8n-manager-simple.test.ts │ │ │ ├── handlers-n8n-manager.test.ts │ │ │ ├── handlers-workflow-diff.test.ts │ │ │ ├── lru-cache-behavior.test.ts │ │ │ ├── multi-tenant-tool-listing.test.ts.disabled │ │ │ ├── parameter-validation.test.ts │ │ │ ├── search-nodes-examples.test.ts │ │ │ ├── tools-documentation.test.ts │ │ │ └── tools.test.ts │ │ ├── monitoring │ │ │ └── cache-metrics.test.ts │ │ ├── MULTI_TENANT_TEST_COVERAGE.md │ │ ├── multi-tenant-integration.test.ts │ │ ├── parsers │ │ │ ├── node-parser-outputs.test.ts │ │ │ ├── node-parser.test.ts │ │ │ ├── property-extractor.test.ts │ │ │ └── simple-parser.test.ts │ │ ├── scripts │ │ │ └── fetch-templates-extraction.test.ts │ │ ├── services │ │ │ ├── ai-node-validator.test.ts │ │ │ ├── ai-tool-validators.test.ts │ │ │ ├── confidence-scorer.test.ts │ │ │ ├── config-validator-basic.test.ts │ │ │ ├── config-validator-edge-cases.test.ts │ │ │ ├── config-validator-node-specific.test.ts │ │ │ ├── config-validator-security.test.ts │ │ │ ├── debug-validator.test.ts │ │ │ ├── enhanced-config-validator-integration.test.ts │ │ │ ├── enhanced-config-validator-operations.test.ts │ │ │ ├── enhanced-config-validator.test.ts │ │ │ ├── example-generator.test.ts │ │ │ ├── execution-processor.test.ts │ │ │ ├── expression-format-validator.test.ts │ │ │ ├── expression-validator-edge-cases.test.ts │ │ │ ├── expression-validator.test.ts │ │ │ ├── fixed-collection-validation.test.ts │ │ │ ├── loop-output-edge-cases.test.ts │ │ │ ├── n8n-api-client.test.ts │ │ │ ├── n8n-validation.test.ts │ │ │ ├── node-sanitizer.test.ts │ │ │ ├── node-similarity-service.test.ts │ │ │ ├── node-specific-validators.test.ts │ │ │ ├── operation-similarity-service-comprehensive.test.ts │ │ │ ├── operation-similarity-service.test.ts │ │ │ ├── property-dependencies.test.ts │ │ │ ├── property-filter-edge-cases.test.ts │ │ │ ├── property-filter.test.ts │ │ │ ├── resource-similarity-service-comprehensive.test.ts │ │ │ ├── resource-similarity-service.test.ts │ │ │ ├── task-templates.test.ts │ │ │ ├── template-service.test.ts │ │ │ ├── universal-expression-validator.test.ts │ │ │ ├── validation-fixes.test.ts │ │ │ ├── workflow-auto-fixer.test.ts │ │ │ ├── workflow-diff-engine.test.ts │ │ │ ├── workflow-fixed-collection-validation.test.ts │ │ │ ├── workflow-validator-comprehensive.test.ts │ │ │ ├── workflow-validator-edge-cases.test.ts │ │ │ ├── workflow-validator-error-outputs.test.ts │ │ │ ├── workflow-validator-expression-format.test.ts │ │ │ ├── workflow-validator-loops-simple.test.ts │ │ │ ├── workflow-validator-loops.test.ts │ │ │ ├── workflow-validator-mocks.test.ts │ │ │ ├── workflow-validator-performance.test.ts │ │ │ ├── workflow-validator-with-mocks.test.ts │ │ │ └── workflow-validator.test.ts │ │ ├── telemetry │ │ │ ├── batch-processor.test.ts │ │ │ ├── config-manager.test.ts │ │ │ ├── event-tracker.test.ts │ │ │ ├── event-validator.test.ts │ │ │ ├── rate-limiter.test.ts │ │ │ ├── telemetry-error.test.ts │ │ │ ├── telemetry-manager.test.ts │ │ │ ├── v2.18.3-fixes-verification.test.ts │ │ │ └── workflow-sanitizer.test.ts │ │ ├── templates │ │ │ ├── batch-processor.test.ts │ │ │ ├── metadata-generator.test.ts │ │ │ ├── template-repository-metadata.test.ts │ │ │ └── template-repository-security.test.ts │ │ ├── test-env-example.test.ts │ │ ├── test-infrastructure.test.ts │ │ ├── types │ │ │ ├── instance-context-coverage.test.ts │ │ │ └── instance-context-multi-tenant.test.ts │ │ ├── utils │ │ │ ├── auth-timing-safe.test.ts │ │ │ ├── cache-utils.test.ts │ │ │ ├── console-manager.test.ts │ │ │ ├── database-utils.test.ts │ │ │ ├── fixed-collection-validator.test.ts │ │ │ ├── n8n-errors.test.ts │ │ │ ├── node-type-normalizer.test.ts │ │ │ ├── node-type-utils.test.ts │ │ │ ├── node-utils.test.ts │ │ │ ├── simple-cache-memory-leak-fix.test.ts │ │ │ ├── ssrf-protection.test.ts │ │ │ └── template-node-resolver.test.ts │ │ └── validation-fixes.test.ts │ └── utils │ ├── assertions.ts │ ├── builders │ │ └── workflow.builder.ts │ ├── data-generators.ts │ ├── database-utils.ts │ ├── README.md │ └── test-helpers.ts ├── thumbnail.png ├── tsconfig.build.json ├── tsconfig.json ├── types │ ├── mcp.d.ts │ └── test-env.d.ts ├── verify-telemetry-fix.js ├── versioned-nodes.md ├── vitest.config.benchmark.ts ├── vitest.config.integration.ts └── vitest.config.ts ``` # Files -------------------------------------------------------------------------------- /docs/local/integration-testing-plan.md: -------------------------------------------------------------------------------- ```markdown # Comprehensive Integration Testing Plan ## Status **Phase 1: Foundation** ✅ **COMPLETE** (October 3, 2025) - All utility files created and tested - Webhook workflows created on `https://n8n-test.n8n-mcp.com` - GitHub secrets configured - Critical fix: Updated credentials to use webhook URLs instead of IDs - Environment loading fixed to support real n8n API integration tests **Phase 2: Workflow Creation Tests** ✅ **COMPLETE** (October 3, 2025) - 15 test scenarios implemented and passing - P0 bug verification confirmed (FULL node type format) - All test categories covered: base nodes, advanced features, error scenarios, edge cases - Documented actual n8n API behavior (validation at execution time, not creation time) - Test file: `tests/integration/n8n-api/workflows/create-workflow.test.ts` (484 lines) **Phase 3: Workflow Retrieval Tests** ✅ **COMPLETE** (October 3, 2025) - 11 test scenarios implemented and passing - All MCP retrieval handlers tested: handleGetWorkflow, handleGetWorkflowDetails, handleGetWorkflowStructure, handleGetWorkflowMinimal - Test files: - `get-workflow.test.ts` (3 scenarios) - `get-workflow-details.test.ts` (4 scenarios) - `get-workflow-structure.test.ts` (2 scenarios) - `get-workflow-minimal.test.ts` (2 scenarios) **Phase 4: Workflow Update Tests** ✅ **COMPLETE** (October 4, 2025) - 42 test scenarios implemented and passing - Enhanced settings filtering (whitelist approach) to enable updates while maintaining Issue #248 protection - All update operations tested: - Full workflow updates: 7 scenarios (update-workflow.test.ts) - Partial/diff-based updates: 32 scenarios covering all 15 operations (update-partial-workflow.test.ts) - Validation error scenarios: 3 scenarios - Critical fixes: - Settings filtering uses OpenAPI spec whitelist (filters callerPolicy, preserves safe properties) - All tests comply with n8n API requirements (name, nodes, connections, settings fields) - Removed invalid "Update Connections" test (empty connections invalid for multi-node workflows) - Version 2.15.4 released with comprehensive CHANGELOG entry **Phase 5: Workflow Management Tests** ✅ **COMPLETE** (October 4, 2025) - 16 test scenarios implemented and passing - All workflow management operations tested: - Delete workflow: 3 scenarios (delete-workflow.test.ts) - List workflows: 13 scenarios (list-workflows.test.ts) - Critical API compliance fixes: - handleDeleteWorkflow: Now returns deleted workflow data (per n8n API spec) - handleListWorkflows: Fixed tags parameter format (array → CSV string conversion) - N8nApiClient.deleteWorkflow: Return type corrected (void → Workflow) - WorkflowListParams.tags: Type corrected (string[] → string per n8n OpenAPI spec) - Unit test coverage: Added 9 unit tests for handler coverage (100% coverage achieved) - n8n-mcp-tester validation: All tools tested and working correctly in production - Version 2.15.5 released with comprehensive CHANGELOG entry - Test results: 71/71 integration tests passing (Phase 1-5 complete) **Phase 6A: Workflow Validation Tests** ✅ **COMPLETE** (October 5, 2025) - 12 test scenarios implemented and passing - NodeRepository utility created for tests requiring node validation - All validation profiles tested: strict, runtime, ai-friendly, minimal - Test coverage: - Valid workflows across all 4 profiles (4 scenarios) - Invalid workflow detection (2 scenarios - bad node types, missing connections) - Selective validation (3 scenarios - nodes only, connections only, expressions only) - Error handling (2 scenarios - non-existent workflow, invalid profile) - Response format verification (1 scenario) - Critical discoveries: - Response only includes errors/warnings fields when they exist (not empty arrays) - Field name is errorCount, not totalErrors - Tests require NodeRepository instance (added singleton utility) - Test file: validate-workflow.test.ts (431 lines) - Test results: 83/83 integration tests passing (Phase 1-5, 6A complete) **Phase 6B: Workflow Autofix Tests** ✅ **COMPLETE** (October 5, 2025) - 16 test scenarios implemented and passing - All autofix operations tested: preview mode, apply mode, fix types, confidence filtering - Test coverage: - Preview mode (2 scenarios - expression-format, multiple fix types) - Apply mode (2 scenarios - expression-format, webhook-missing-path) - Fix type filtering (2 scenarios - single type, multiple types) - Confidence thresholds (3 scenarios - high, medium, low) - Max fixes parameter (1 scenario) - No fixes available (1 scenario) - Error handling (3 scenarios - non-existent workflow, invalid parameters) - Response format verification (2 scenarios - preview and apply modes) - Fix types tested: - expression-format (missing = prefix for resource locators) - typeversion-correction (outdated typeVersion values) - error-output-config (error output configuration issues) - node-type-correction (incorrect node types) - webhook-missing-path (missing webhook path parameters) - Code quality improvements: - Fixed database resource leak in NodeRepository utility - Added TypeScript interfaces (ValidationResponse, AutofixResponse) - Replaced unsafe `as any` casts with proper type definitions - All lint and typecheck errors resolved - Test file: autofix-workflow.test.ts (855 lines) - Test results: 99/99 integration tests passing (Phase 1-6 complete) **Phase 7: Execution Management Tests** ✅ **COMPLETE** (October 5, 2025) - 54 test scenarios implemented and passing - All 4 execution management handlers tested against real n8n instance - Test coverage: - handleTriggerWebhookWorkflow (20 tests): All HTTP methods (GET/POST/PUT/DELETE), query params, JSON body, custom headers, error handling - handleGetExecution (16 tests): All 4 retrieval modes (preview/summary/filtered/full), node filtering, item limits, input data inclusion, legacy compatibility - handleListExecutions (13 tests): Status filtering (success/error/waiting), pagination with cursor, various limits (1/10/50/100), data inclusion control - handleDeleteExecution (5 tests): Successful deletion, verification via fetch attempt, error handling - Critical fix: Corrected response structure expectations (executions/returned vs data/count) - Test files: - trigger-webhook.test.ts (375 lines, 20 tests) - get-execution.test.ts (429 lines, 16 tests) - list-executions.test.ts (264 lines, 13 tests) - delete-execution.test.ts (149 lines, 5 tests) - Code review: APPROVED (9.5/10 quality score) - Test results: 153/153 integration tests passing (Phase 1-7 complete) **Phase 8: System Tools Tests** ✅ **COMPLETE** (October 5, 2025) - 19 test scenarios implemented and passing - All 3 system tool handlers tested against real n8n instance - Test coverage: - handleHealthCheck (3 tests): API connectivity verification, version information, feature availability - handleListAvailableTools (7 tests): Complete tool inventory by category, configuration status, API limitations - handleDiagnostic (9 tests): Environment checks, API connectivity, tools availability, verbose mode with debug info - TypeScript type safety improvements: - Created response-types.ts with comprehensive interfaces for all response types - Replaced all 'as any' casts with proper TypeScript interfaces - Added null-safety checks and non-null assertions - Full type safety and IDE autocomplete support - Test files: - health-check.test.ts (117 lines, 3 tests) - list-tools.test.ts (181 lines, 7 tests) - diagnostic.test.ts (243 lines, 9 tests) - response-types.ts (241 lines, comprehensive type definitions) - Code review: APPROVED - Test results: 172/172 integration tests passing (Phase 1-8 complete) **🎉 INTEGRATION TEST SUITE COMPLETE**: All 18 MCP handlers fully tested **Next Phase**: Update documentation and finalize integration testing plan --- ## Overview Transform the test suite to test all 17 **MCP handlers** against a **real n8n instance** instead of mocks. This plan ensures 100% coverage of every tool, operation, and parameter combination to prevent bugs like the P0 workflow creation issue from slipping through. ### What We Test: MCP Handlers (The Product Layer) **IMPORTANT**: These integration tests validate the **MCP handler layer** (the actual product that AI assistants interact with), not just the raw n8n API client. **Architecture:** ``` AI Assistant (Claude) ↓ MCP Tools (What AI sees) ↓ MCP Handlers (What we test) ← INTEGRATION TESTS TARGET THIS LAYER ↓ N8nApiClient (Low-level HTTP) ↓ n8n REST API ``` **Why This Matters:** - **MCP handlers** wrap API responses in `McpToolResponse` format: `{ success: boolean, data?: any, error?: string }` - **MCP handlers** transform and enrich API responses (e.g., `handleGetWorkflowDetails` adds execution stats) - **MCP handlers** provide the exact interface that AI assistants consume - Testing raw API client bypasses the product layer and misses MCP-specific logic **Test Pattern:** ```typescript // ❌ WRONG: Testing raw API client (low-level service) const result = await client.createWorkflow(workflow); // ✅ CORRECT: Testing MCP handler (product layer) const response = await handleCreateWorkflow({ ...workflow }, mcpContext); expect(response.success).toBe(true); const result = response.data; ``` ## Critical Requirements 1. **Credentials**: - Local development: Read from `.env` file - CI/GitHub Actions: Use GitHub secrets (`N8N_URL`, `N8N_API_KEY`) 2. **Pre-activated Webhook Workflows**: - n8n API doesn't support workflow activation via API - Need pre-created, activated workflows for webhook testing - Store webhook URLs (not workflow IDs) in `.env`: - `N8N_TEST_WEBHOOK_GET_URL` - GET method webhook URL - `N8N_TEST_WEBHOOK_POST_URL` - POST method webhook URL - `N8N_TEST_WEBHOOK_PUT_URL` - PUT method webhook URL - `N8N_TEST_WEBHOOK_DELETE_URL` - DELETE method webhook URL - **Rationale**: Webhook URLs are what the `n8n_trigger_webhook_workflow` tool needs. Workflow IDs are only for workflow management tests (which create workflows dynamically during test execution). 3. **100% Coverage Goal**: Test EVERY tool, EVERY operation, EVERY parameter combination --- ## Complete Test Coverage Matrix ### Total Test Scenarios: ~150+ #### Workflow Management (10 MCP handlers) **1. `handleCreateWorkflow`** - 15+ scenarios (MCP handler testing) - Create workflow with base nodes (webhook, httpRequest, set) - Create workflow with langchain nodes (agent, aiChain) - Invalid node types (error handling) - Complex multi-node workflows - Complex connection patterns - **P0 Bug Verification**: SHORT vs FULL node type handling - Missing required parameters - Duplicate node names - Invalid connection references - Settings variations **2. `handleGetWorkflow`** - 3 scenarios - Successful retrieval - Not found (invalid ID) - Malformed ID **3. `handleGetWorkflowDetails`** - 4 scenarios - Basic workflow - Workflow with metadata - Workflow with version history - Workflow with execution stats **4. `handleGetWorkflowStructure`** - 2 scenarios - Simple workflow - Complex workflow (verify no parameter data) **5. `handleGetWorkflowMinimal`** - 2 scenarios - Active workflow - Inactive workflow **6. `handleUpdateWorkflow`** - 8+ scenarios - Full workflow replacement - Update nodes - Update connections - Update settings - Update tags - Validation errors - Concurrent update conflicts - Large workflow updates **7. `handleUpdatePartialWorkflow`** - 30+ scenarios (15 operations × 2 paths) **Node Operations (12 scenarios):** - `addNode`: Success, duplicate name, invalid type, missing position - `removeNode`: By ID, by name, not found, with connection cleanup - `updateNode`: By ID, by name, invalid updates, nested parameter updates - `moveNode`: Valid position, boundary positions - `enableNode`: Success, already enabled - `disableNode`: Success, already disabled **Connection Operations (10 scenarios):** - `addConnection`: Default ports, custom ports, invalid nodes - `removeConnection`: Success, not found, with ignoreErrors - `updateConnection`: Change ports, change indices - `cleanStaleConnections`: Dry run, actual cleanup - `replaceConnections`: Full replacement, validation **Metadata Operations (8 scenarios):** - `updateSettings`: Timezone, execution order, error workflow - `updateName`: Valid, duplicate, empty - `addTag`: New tag, existing tag - `removeTag`: Existing, non-existing **8. `handleDeleteWorkflow`** - 3 scenarios - Successful deletion - Not found - Verify cleanup (workflow actually deleted) **9. `handleListWorkflows`** - 12+ scenarios - No filters (all workflows) - Filter by active status (true/false) - Filter by tags (single, multiple) - Filter by projectId (enterprise feature) - Pagination: first page, next page, last page - Pagination: cursor handling - Exclude pinned data - Limit variations (1, 50, 100) - Empty results - Sort order verification **10. `handleValidateWorkflow`** - 16 scenarios (4 profiles × 4 validation types) **Validation Profiles:** - `strict`: All validations enabled, strictest rules - `runtime`: Production-ready validation - `ai-friendly`: Relaxed rules for AI-generated workflows - `minimal`: Basic structure validation only **Validation Types (for each profile):** - All validations enabled (default) - Nodes only (`validateNodes: true`, others false) - Connections only (`validateConnections: true`, others false) - Expressions only (`validateExpressions: true`, others false) **11. `handleAutofixWorkflow`** - 20+ scenarios **Fix Types (5):** - `expression-format`: Fix `{{}}` syntax issues - `typeversion-correction`: Fix outdated typeVersion - `error-output-config`: Fix error output configuration - `node-type-correction`: Fix incorrect node types - `webhook-missing-path`: Add missing webhook paths **Confidence Levels (3):** - `high`: Only apply high-confidence fixes - `medium`: Apply high + medium confidence fixes - `low`: Apply all fixes **Test Matrix:** - Each fix type with preview mode (`applyFixes: false`) - Each fix type with apply mode (`applyFixes: true`) - Confidence threshold filtering - `maxFixes` parameter limiting - Multiple fix types in single workflow - No fixes available scenario --- #### Execution Management (4 handlers) **12. `handleTriggerWebhookWorkflow`** - 16+ scenarios **HTTP Methods (4):** - GET: Query parameters, no data - POST: JSON body, form data, headers - PUT: Update data, custom headers - DELETE: Query parameters, headers **Scenarios per method:** - Basic trigger (no data) - With request data - With custom headers - Wait for response (true/false) - Workflow not found - Invalid webhook URL **13. `handleGetExecution`** - 20+ scenarios **Execution Modes (4):** - `preview`: Structure & counts only (no data) - `summary`: 2 samples per node (default) - `filtered`: Custom limits and node filters - `full`: Complete execution data **Scenarios per mode:** - Successful execution - Failed execution - Running execution - With input data (`includeInputData: true`) - Node filters (`nodeNames: ['Node1', 'Node2']`) - Item limits (`itemsLimit: 0, 2, 5, -1`) - Not found **14. `handleListExecutions`** - 10+ scenarios - No filters (all executions) - Filter by workflowId - Filter by status (success, error, waiting) - Filter by projectId - Pagination: first page, next page, last page - Include execution data (`includeData: true/false`) - Limit variations (1, 50, 100) - Empty results **15. `handleDeleteExecution`** - 3 scenarios - Successful deletion - Not found - Verify cleanup --- #### System/Utility (3 handlers) **16. `handleHealthCheck`** - 2 scenarios - API available - Feature availability check **17. `handleListAvailableTools`** - 1 scenario - List all tools **18. `handleDiagnostic`** - 3 scenarios - Basic diagnostic - Verbose mode (`verbose: true`) - Configuration display --- ## Implementation Phases ### Phase 1: Foundation (Branch: `feat/integration-tests-foundation`) #### 1.1 Environment Configuration **Update `.env.example`:** ```bash # ======================================== # INTEGRATION TESTING CONFIGURATION # ======================================== # n8n API Configuration for Integration Tests N8N_API_URL=http://localhost:5678 N8N_API_KEY=your-api-key-here # Pre-activated Webhook URLs for Testing # Create these workflows manually in n8n and activate them # Store the full webhook URLs (not workflow IDs) N8N_TEST_WEBHOOK_GET_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-get N8N_TEST_WEBHOOK_POST_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-post N8N_TEST_WEBHOOK_PUT_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-put N8N_TEST_WEBHOOK_DELETE_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-delete # Test Configuration N8N_TEST_CLEANUP_ENABLED=true # Enable automatic cleanup N8N_TEST_TAG=mcp-integration-test # Tag for test workflows N8N_TEST_NAME_PREFIX=[MCP-TEST] # Name prefix for test workflows ``` **GitHub Secrets (for CI):** - `N8N_URL`: n8n instance URL (e.g., `https://n8n-test.n8n-mcp.com`) - `N8N_API_KEY`: n8n API key (JWT token from n8n Settings > API) - `N8N_TEST_WEBHOOK_GET_URL`: Pre-activated GET webhook URL - `N8N_TEST_WEBHOOK_POST_URL`: Pre-activated POST webhook URL - `N8N_TEST_WEBHOOK_PUT_URL`: Pre-activated PUT webhook URL - `N8N_TEST_WEBHOOK_DELETE_URL`: Pre-activated DELETE webhook URL **Note**: Webhook URLs can be stored as repository secrets (not environment secrets) since they don't grant API access. The real secret is `N8N_API_KEY`. #### 1.2 Directory Structure ``` tests/integration/n8n-api/ ├── workflows/ │ ├── create-workflow.test.ts (10+ scenarios) │ ├── get-workflow.test.ts (3 scenarios) │ ├── get-workflow-details.test.ts (4 scenarios) │ ├── get-workflow-structure.test.ts (2 scenarios) │ ├── get-workflow-minimal.test.ts (2 scenarios) │ ├── update-workflow.test.ts (8+ scenarios) │ ├── update-partial-workflow.test.ts (30+ scenarios - 15 operations) │ ├── delete-workflow.test.ts (3 scenarios) │ ├── list-workflows.test.ts (12+ scenarios) │ ├── validate-workflow.test.ts (16 scenarios - 4 profiles × 4 types) │ └── autofix-workflow.test.ts (20+ scenarios - 5 types × modes) ├── executions/ │ ├── trigger-webhook.test.ts (16+ scenarios - 4 methods) │ ├── get-execution.test.ts (20+ scenarios - 4 modes) │ ├── list-executions.test.ts (10+ scenarios) │ └── delete-execution.test.ts (3 scenarios) ├── system/ │ ├── health-check.test.ts (2 scenarios) │ ├── list-tools.test.ts (1 scenario) │ └── diagnostic.test.ts (3 scenarios) └── utils/ ├── credentials.ts # Environment-aware credential loader ├── n8n-client.ts # Pre-configured API client ├── cleanup-helpers.ts # Multi-level cleanup ├── test-context.ts # Resource tracking ├── fixtures.ts # Reusable workflow templates ├── factories.ts # Test data generators └── webhook-workflows.ts # Webhook workflow configurations ``` #### 1.3 Core Utilities **mcp-context.ts** - MCP context configuration for handler testing: ```typescript import { InstanceContext } from '../../../../src/types/instance-context'; import { getN8nCredentials } from './credentials'; /** * Creates MCP context for testing MCP handlers against real n8n instance * This is what gets passed to MCP handlers (handleCreateWorkflow, etc.) */ export function createMcpContext(): InstanceContext { const creds = getN8nCredentials(); return { n8nApiUrl: creds.url, n8nApiKey: creds.apiKey }; } ``` **credentials.ts** - Environment-aware credential loader: ```typescript import dotenv from 'dotenv'; dotenv.config(); export interface N8nTestCredentials { url: string; apiKey: string; webhookUrls: { get: string; post: string; put: string; delete: string; }; cleanup: { enabled: boolean; tag: string; namePrefix: string; }; } export function getN8nCredentials(): N8nTestCredentials { if (process.env.CI) { // CI: Use GitHub secrets const url = process.env.N8N_URL; const apiKey = process.env.N8N_API_KEY; if (!url || !apiKey) { throw new Error( 'Missing required CI credentials:\n' + ` N8N_URL: ${url ? 'set' : 'MISSING'}\n` + ` N8N_API_KEY: ${apiKey ? 'set' : 'MISSING'}\n` + 'Please configure GitHub secrets for integration tests.' ); } return { url, apiKey, webhookUrls: { get: process.env.N8N_TEST_WEBHOOK_GET_URL || '', post: process.env.N8N_TEST_WEBHOOK_POST_URL || '', put: process.env.N8N_TEST_WEBHOOK_PUT_URL || '', delete: process.env.N8N_TEST_WEBHOOK_DELETE_URL || '' }, cleanup: { enabled: true, tag: 'mcp-integration-test', namePrefix: '[MCP-TEST]' } }; } else { // Local: Use .env file const url = process.env.N8N_API_URL; const apiKey = process.env.N8N_API_KEY; if (!url || !apiKey) { throw new Error( 'Missing required credentials in .env:\n' + ` N8N_API_URL: ${url ? 'set' : 'MISSING'}\n` + ` N8N_API_KEY: ${apiKey ? 'set' : 'MISSING'}\n\n` + 'Please add these to your .env file.\n' + 'See .env.example for configuration details.' ); } return { url, apiKey, webhookUrls: { get: process.env.N8N_TEST_WEBHOOK_GET_URL || '', post: process.env.N8N_TEST_WEBHOOK_POST_URL || '', put: process.env.N8N_TEST_WEBHOOK_PUT_URL || '', delete: process.env.N8N_TEST_WEBHOOK_DELETE_URL || '' }, cleanup: { enabled: process.env.N8N_TEST_CLEANUP_ENABLED !== 'false', tag: process.env.N8N_TEST_TAG || 'mcp-integration-test', namePrefix: process.env.N8N_TEST_NAME_PREFIX || '[MCP-TEST]' } }; } } export function validateCredentials(creds: N8nTestCredentials): void { if (!creds.url) throw new Error('N8N_API_URL is required'); if (!creds.apiKey) throw new Error('N8N_API_KEY is required'); } export function validateWebhookUrls(creds: N8nTestCredentials): void { const missing: string[] = []; if (!creds.webhookUrls.get) missing.push('GET'); if (!creds.webhookUrls.post) missing.push('POST'); if (!creds.webhookUrls.put) missing.push('PUT'); if (!creds.webhookUrls.delete) missing.push('DELETE'); if (missing.length > 0) { throw new Error( `Missing webhook URLs for HTTP methods: ${missing.join(', ')}\n` + `Please create and activate webhook workflows, then set:\n` + missing.map(m => ` N8N_TEST_WEBHOOK_${m}_URL`).join('\n') ); } } ``` **n8n-client.ts** - Pre-configured API client (for test utilities only): ```typescript import { N8nApiClient } from '../../../src/services/n8n-api-client'; import { getN8nCredentials } from './credentials'; /** * IMPORTANT: This client is ONLY used for test setup/cleanup utilities. * DO NOT use this in actual test cases - use MCP handlers instead! * * Test utilities that need direct API access: * - cleanupOrphanedWorkflows() - bulk cleanup * - Fixture setup/teardown * - Pre-test verification * * Actual tests MUST use MCP handlers: * - handleCreateWorkflow() * - handleGetWorkflow() * - etc. */ let client: N8nApiClient | null = null; export function getTestN8nClient(): N8nApiClient { if (!client) { const creds = getN8nCredentials(); client = new N8nApiClient(creds.url, creds.apiKey); } return client; } export function resetTestN8nClient(): void { client = null; } ``` **test-context.ts** - Resource tracking for cleanup: ```typescript import { getN8nCredentials } from './credentials'; export interface TestContext { workflowIds: string[]; executionIds: string[]; cleanup: () => Promise<void>; } export function createTestContext(): TestContext { const context: TestContext = { workflowIds: [], executionIds: [], cleanup: async () => { const creds = getN8nCredentials(); if (!creds.cleanup.enabled) return; const client = getTestN8nClient(); // Delete executions first for (const id of context.executionIds) { try { await client.deleteExecution(id); } catch (error) { console.warn(`Failed to delete execution ${id}:`, error); } } // Then delete workflows for (const id of context.workflowIds) { try { await client.deleteWorkflow(id); } catch (error) { console.warn(`Failed to delete workflow ${id}:`, error); } } context.workflowIds = []; context.executionIds = []; } }; return context; } ``` **cleanup-helpers.ts** - Multi-level cleanup strategies: ```typescript import { N8nApiClient } from '../../../src/services/n8n-api-client'; import { getN8nCredentials, getTestN8nClient } from './credentials'; /** * Clean up orphaned test workflows * Run this periodically in CI to clean up failed test runs */ export async function cleanupOrphanedWorkflows(): Promise<void> { const creds = getN8nCredentials(); const client = getTestN8nClient(); let allWorkflows: any[] = []; let cursor: string | undefined; // Fetch all workflows with pagination do { const response = await client.listWorkflows({ cursor, limit: 100 }); allWorkflows.push(...response.data); cursor = response.nextCursor; } while (cursor); // Find test workflows const testWorkflows = allWorkflows.filter(w => w.tags?.includes(creds.cleanup.tag) || w.name?.startsWith(creds.cleanup.namePrefix) ); console.log(`Found ${testWorkflows.length} orphaned test workflows`); // Delete them for (const workflow of testWorkflows) { try { await client.deleteWorkflow(workflow.id); console.log(`Deleted orphaned workflow: ${workflow.name} (${workflow.id})`); } catch (error) { console.warn(`Failed to delete workflow ${workflow.id}:`, error); } } } /** * Clean up old executions (older than 24 hours) */ export async function cleanupOldExecutions(): Promise<void> { const client = getTestN8nClient(); let allExecutions: any[] = []; let cursor: string | undefined; // Fetch all executions do { const response = await client.listExecutions({ cursor, limit: 100 }); allExecutions.push(...response.data); cursor = response.nextCursor; } while (cursor); const oneDayAgo = Date.now() - 24 * 60 * 60 * 1000; const oldExecutions = allExecutions.filter(e => new Date(e.startedAt).getTime() < oneDayAgo ); console.log(`Found ${oldExecutions.length} old executions`); for (const execution of oldExecutions) { try { await client.deleteExecution(execution.id); } catch (error) { console.warn(`Failed to delete execution ${execution.id}:`, error); } } } ``` **fixtures.ts** - Reusable workflow templates: ```typescript import { Workflow } from '../../../src/types/n8n-api'; export const SIMPLE_WEBHOOK_WORKFLOW: Partial<Workflow> = { name: '[MCP-TEST] Simple Webhook', nodes: [ { id: 'webhook-1', name: 'Webhook', type: 'n8n-nodes-base.webhook', typeVersion: 2, position: [250, 300], parameters: { httpMethod: 'GET', path: 'test-webhook' } } ], connections: {} }; export const SIMPLE_HTTP_WORKFLOW: Partial<Workflow> = { name: '[MCP-TEST] Simple HTTP Request', nodes: [ { id: 'webhook-1', name: 'Webhook', type: 'n8n-nodes-base.webhook', typeVersion: 2, position: [250, 300], parameters: { httpMethod: 'GET', path: 'trigger' } }, { id: 'http-1', name: 'HTTP Request', type: 'n8n-nodes-base.httpRequest', typeVersion: 4.2, position: [450, 300], parameters: { url: 'https://httpbin.org/get', method: 'GET' } } ], connections: { Webhook: { main: [[{ node: 'HTTP Request', type: 'main', index: 0 }]] } } }; // Add more fixtures for complex workflows ``` **webhook-workflows.ts** - Webhook workflow setup guide: ```typescript /** * Guide for setting up webhook workflows manually in n8n * * These workflows must be created manually and activated because * n8n API doesn't support workflow activation. * * For each HTTP method, create a workflow with: * 1. Single Webhook node * 2. Configured for the specific HTTP method * 3. Unique webhook path * 4. Activated in n8n UI * 5. Workflow ID added to .env */ export const WEBHOOK_WORKFLOW_CONFIGS = { GET: { name: '[MCP-TEST] Webhook GET', description: 'Pre-activated webhook for GET method testing', nodes: [ { name: 'Webhook', type: 'n8n-nodes-base.webhook', typeVersion: 2, parameters: { httpMethod: 'GET', path: 'mcp-test-get', responseMode: 'lastNode' } } ] }, POST: { name: '[MCP-TEST] Webhook POST', description: 'Pre-activated webhook for POST method testing', nodes: [ { name: 'Webhook', type: 'n8n-nodes-base.webhook', typeVersion: 2, parameters: { httpMethod: 'POST', path: 'mcp-test-post', responseMode: 'lastNode' } } ] }, PUT: { name: '[MCP-TEST] Webhook PUT', description: 'Pre-activated webhook for PUT method testing', nodes: [ { name: 'Webhook', type: 'n8n-nodes-base.webhook', typeVersion: 2, parameters: { httpMethod: 'PUT', path: 'mcp-test-put', responseMode: 'lastNode' } } ] }, DELETE: { name: '[MCP-TEST] Webhook DELETE', description: 'Pre-activated webhook for DELETE method testing', nodes: [ { name: 'Webhook', type: 'n8n-nodes-base.webhook', typeVersion: 2, parameters: { httpMethod: 'DELETE', path: 'mcp-test-delete', responseMode: 'lastNode' } } ] } }; export function printSetupInstructions(): void { console.log(` ╔════════════════════════════════════════════════════════════════╗ ║ WEBHOOK WORKFLOW SETUP REQUIRED ║ ╠════════════════════════════════════════════════════════════════╣ ║ ║ ║ Integration tests require 4 pre-activated webhook workflows: ║ ║ ║ ║ 1. Create workflows manually in n8n UI ║ ║ 2. Use the configurations shown below ║ ║ 3. ACTIVATE each workflow in n8n UI ║ ║ 4. Copy workflow IDs to .env file ║ ║ ║ ╚════════════════════════════════════════════════════════════════╝ Required workflows: `); Object.entries(WEBHOOK_WORKFLOW_CONFIGS).forEach(([method, config]) => { console.log(` ${method} Method: Name: ${config.name} Path: ${config.nodes[0].parameters.path} .env variable: N8N_TEST_WEBHOOK_${method}_ID `); }); } ``` --- ### Phase 2: Workflow Creation Tests (P0) **Branch**: `feat/integration-tests-phase-2` **File**: `tests/integration/n8n-api/workflows/create-workflow.test.ts` **Test Approach**: Tests the `handleCreateWorkflow` MCP handler against real n8n instance **MCP Handler Test Pattern:** ```typescript import { handleCreateWorkflow } from '../../../../src/mcp/handlers-n8n-manager'; import { createMcpContext } from '../utils/mcp-context'; import { InstanceContext } from '../../../../src/types/instance-context'; describe('Integration: handleCreateWorkflow', () => { let mcpContext: InstanceContext; beforeEach(() => { mcpContext = createMcpContext(); }); it('should create workflow using MCP handler', async () => { const workflow = { name: 'Test', nodes: [...], connections: {} }; // Test MCP handler (the product layer) const response = await handleCreateWorkflow({ ...workflow }, mcpContext); // Verify MCP response structure expect(response.success).toBe(true); expect(response.data).toBeDefined(); // Extract actual workflow from MCP response const result = response.data; expect(result.id).toBeTruthy(); }); }); ``` **15 Test Scenarios** (all testing MCP handlers): 1. Create workflow with base webhook node (verify P0 bug fix) 2. Create workflow with base HTTP request node 3. Create workflow with langchain agent node 4. Create complex multi-node workflow 5. Create workflow with complex connections 6. Create workflow with custom settings 7. Create workflow with n8n expressions 8. Create workflow with error handling 9. Error: Invalid node type (documents API behavior) 10. Error: Missing required parameters (documents API behavior) 11. Error: Duplicate node names (documents API behavior) 12. Error: Invalid connection references (documents API behavior) 13. Edge case: Minimal single node workflow 14. Edge case: Empty connections object 15. Edge case: Workflow without settings --- ### Phase 3: Workflow Retrieval Tests (P1) **Branch**: `feat/integration-tests-phase-3` **Test Approach**: Tests MCP handlers (`handleGetWorkflow`, `handleGetWorkflowDetails`, `handleGetWorkflowStructure`, `handleGetWorkflowMinimal`) **MCP Handler Pattern:** ```typescript import { handleGetWorkflow, handleGetWorkflowDetails, handleGetWorkflowStructure, handleGetWorkflowMinimal } from '../../../../src/mcp/handlers-n8n-manager'; // Test MCP handler const response = await handleGetWorkflow({ id: workflowId }, mcpContext); expect(response.success).toBe(true); const workflow = response.data; // Note: handleGetWorkflowDetails returns nested structure const detailsResponse = await handleGetWorkflowDetails({ id }, mcpContext); const workflow = detailsResponse.data.workflow; // Extract from nested structure const stats = detailsResponse.data.executionStats; ``` **Files**: - `get-workflow.test.ts` (3 scenarios - tests handleGetWorkflow) - `get-workflow-details.test.ts` (4 scenarios - tests handleGetWorkflowDetails) - `get-workflow-structure.test.ts` (2 scenarios - tests handleGetWorkflowStructure) - `get-workflow-minimal.test.ts` (2 scenarios - tests handleGetWorkflowMinimal) --- ### Phase 4: Workflow Update Tests (P1) **Branch**: `feat/integration-tests-workflow-updates` **Files**: - `update-workflow.test.ts` (8+ scenarios) - `update-partial-workflow.test.ts` (30+ scenarios covering all 15 operations) --- ### Phase 5: Workflow Management Tests (P2) **Branch**: `feat/integration-tests-workflow-management` **Files**: - `delete-workflow.test.ts` (3 scenarios) - `list-workflows.test.ts` (12+ scenarios with all filters and pagination) --- ### Phase 6A: Workflow Validation Tests (P2) ✅ COMPLETE **Branch**: `feat/integration-tests-phase-6` **Files**: - ✅ `tests/integration/n8n-api/utils/node-repository.ts` - NodeRepository singleton for validation tests - ✅ `validate-workflow.test.ts` (12 scenarios: 4 profiles + invalid detection + selective validation + error handling) **Implementation Notes**: - Created NodeRepository utility since handleValidateWorkflow requires repository parameter - Tests cover all 4 validation profiles (strict, runtime, ai-friendly, minimal) - Invalid workflow detection tests (bad node types, missing connections) - Selective validation tests (nodes only, connections only, expressions only) - Response structure correctly handles conditional errors/warnings fields ### Phase 6B: Workflow Autofix Tests (P2) **Branch**: `feat/integration-tests-phase-6b` (or continue on `feat/integration-tests-phase-6`) **Files**: - `autofix-workflow.test.ts` (15-20 scenarios: 5 fix types × modes × confidence levels) **Test Coverage Required**: - 5 fix types: expression-format, typeversion-correction, error-output-config, node-type-correction, webhook-missing-path - Preview mode (applyFixes: false) vs Apply mode (applyFixes: true) - Confidence threshold filtering (high, medium, low) - maxFixes parameter limiting - Multiple fix types in single workflow - No fixes available scenario --- ### Phase 7: Execution Management Tests (P2) **Branch**: `feat/integration-tests-executions` **Files**: - `trigger-webhook.test.ts` (16+ scenarios: 4 HTTP methods × variations) - `get-execution.test.ts` (20+ scenarios: 4 modes × filters) - `list-executions.test.ts` (10+ scenarios) - `delete-execution.test.ts` (3 scenarios) **Special Considerations for Webhook Testing**: - Use pre-activated workflows from `.env` - Each HTTP method uses a different workflow ID - Test both successful triggers and error cases - Verify response data for synchronous executions --- ### Phase 8: System Tools Tests (P3) **Branch**: `feat/integration-tests-system` **Files**: - `health-check.test.ts` (2 scenarios) - `list-tools.test.ts` (1 scenario) - `diagnostic.test.ts` (3 scenarios) --- ### Phase 9: CI/CD Integration **Branch**: `feat/integration-tests-ci` **GitHub Actions Workflow** (`.github/workflows/integration-tests.yml`): ```yaml name: Integration Tests on: pull_request: push: branches: [main] schedule: - cron: '0 2 * * *' # Daily at 2 AM workflow_dispatch: jobs: integration-tests: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Build project run: npm run build - name: Run integration tests env: N8N_URL: ${{ secrets.N8N_URL }} N8N_API_KEY: ${{ secrets.N8N_API_KEY }} N8N_TEST_WEBHOOK_GET_URL: ${{ secrets.N8N_TEST_WEBHOOK_GET_URL }} N8N_TEST_WEBHOOK_POST_URL: ${{ secrets.N8N_TEST_WEBHOOK_POST_URL }} N8N_TEST_WEBHOOK_PUT_URL: ${{ secrets.N8N_TEST_WEBHOOK_PUT_URL }} N8N_TEST_WEBHOOK_DELETE_URL: ${{ secrets.N8N_TEST_WEBHOOK_DELETE_URL }} CI: true run: npm run test:integration:n8n - name: Cleanup orphaned workflows if: always() env: N8N_URL: ${{ secrets.N8N_URL }} N8N_API_KEY: ${{ secrets.N8N_API_KEY }} run: npm run test:cleanup:orphans ``` **Add npm scripts to `package.json`**: ```json { "scripts": { "test:integration:n8n": "vitest run tests/integration/n8n-api", "test:cleanup:orphans": "tsx tests/integration/n8n-api/utils/cleanup-orphans.ts" } } ``` --- ## Test Isolation Strategy ### Workflow Naming Convention - Prefix: `[MCP-TEST]` - Include test name: `[MCP-TEST] Create Workflow - Base Nodes` - Include timestamp for uniqueness: `[MCP-TEST] Test Name ${Date.now()}` ### Workflow Tagging - All test workflows tagged with: `mcp-integration-test` - Enables bulk cleanup queries ### Cleanup Levels 1. **Test-level**: After each test via `afterEach` hook 2. **Suite-level**: After each test file via `afterAll` hook 3. **CI-level**: After CI job completes (always run) 4. **Orphan cleanup**: Periodic job to clean up failed test runs --- ## Pre-Test Setup Checklist ### Local Development 1. ✅ Install n8n locally or use Docker 2. ✅ Start n8n instance: `npx n8n start` 3. ✅ Create 4 webhook workflows (GET, POST, PUT, DELETE) 4. ✅ Activate all 4 webhook workflows in n8n UI 5. ✅ Get webhook URLs from the workflow's Webhook node 6. ✅ Copy `.env.example` to `.env` 7. ✅ Set `N8N_API_URL=<your-n8n-url>` 8. ✅ Generate API key in n8n Settings > API 9. ✅ Set `N8N_API_KEY=<your-key>` 10. ✅ Set all 4 `N8N_TEST_WEBHOOK_*_URL` variables with full webhook URLs ### CI/GitHub Actions (✅ COMPLETED) 1. ✅ Set up cloud n8n instance: `https://n8n-test.n8n-mcp.com` 2. ✅ Create 4 webhook workflows (GET, POST, PUT, DELETE) 3. ✅ Activate all 4 webhook workflows 4. ✅ Add GitHub secrets: `N8N_URL`, `N8N_API_KEY` 5. ✅ Add webhook URL secrets: - `N8N_TEST_WEBHOOK_GET_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-get` - `N8N_TEST_WEBHOOK_POST_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-post` - `N8N_TEST_WEBHOOK_PUT_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-put` - `N8N_TEST_WEBHOOK_DELETE_URL=https://n8n-test.n8n-mcp.com/webhook/mcp-test-delete` --- ## Success Criteria ### Phase 1: Foundation ✅ COMPLETE - ✅ Environment configuration (.env, GitHub secrets) - ✅ All utility files created (8 files, ~1,520 lines of code) - ✅ Pre-activated webhook workflows created and tested - ✅ Cleanup helpers with pagination safety - ✅ Resource tracking with TestContext - ✅ Fixtures and factories for test data - ✅ Documentation updated - ✅ Environment loading fixed (loads .env before test defaults) - ✅ Vitest integration config updated (removed MSW for n8n-api tests) ### Phase 2: Workflow Creation Tests ✅ COMPLETE - ✅ 15 test scenarios implemented (all passing) - ✅ Tests the `handleCreateWorkflow` MCP handler (product layer) - ✅ All tests use MCP handler pattern with McpToolResponse validation - ✅ P0 bug verification (FULL vs SHORT node type format) - ✅ Base node tests (webhook, HTTP, langchain, multi-node) - ✅ Advanced features (connections, settings, expressions, error handling) - ✅ Error scenarios (4 tests documenting actual API behavior) - ✅ Edge cases (3 tests for minimal/empty configurations) - ✅ Test file: 563 lines covering all handleCreateWorkflow scenarios - ✅ All tests passing against real n8n instance ### Overall Project (In Progress) - ⏳ All 17 handlers have integration tests (11 of 17 complete) - ⏳ All operations/parameters covered (99 of 150+ scenarios complete) - ✅ Tests run successfully locally (Phases 1-6 verified) - ⏳ Tests run successfully in CI (pending Phase 9) - ✅ No manual cleanup required (automatic) - ✅ Test coverage catches P0-level bugs (verified in Phase 2) - ⏳ CI runs on every PR and daily (pending Phase 9) - ✅ Clear error messages when tests fail - ✅ Documentation for webhook workflow setup - ✅ Code quality maintained (lint, typecheck, type safety) --- ## Timeline Estimate - **Phase 1 (Foundation)**: ✅ COMPLETE (October 3, 2025) - **Phase 2 (Workflow Creation)**: ✅ COMPLETE (October 3, 2025) - **Phase 3 (Retrieval)**: ✅ COMPLETE (October 3, 2025) - **Phase 4 (Updates)**: ✅ COMPLETE (October 4, 2025) - **Phase 5 (Management)**: ✅ COMPLETE (October 4, 2025) - **Phase 6A (Validation)**: ✅ COMPLETE (October 5, 2025) - **Phase 6B (Autofix)**: ✅ COMPLETE (October 5, 2025) - **Phase 7 (Executions)**: 2 days - **Phase 8 (System)**: 1 day - **Phase 9 (CI/CD)**: 1 day **Total**: 6 days complete, ~4 days remaining --- ## Notes - Each phase should be developed on a separate branch - Phases can be parallelized where dependencies allow - Run local tests frequently to catch issues early - Document any n8n API quirks discovered during testing ## Key Learnings from Implementation ### Critical Testing Principle: Test the Product Layer **The Mistake**: Initially, Phase 2 tests called `client.createWorkflow()` (raw API client) instead of `handleCreateWorkflow()` (MCP handler). **Why This Was Wrong**: - AI assistants interact with MCP handlers, not raw API client - MCP handlers wrap responses in `McpToolResponse` format - MCP handlers may transform/enrich API responses - Bypassing MCP layer misses product-specific logic and bugs **The Fix**: All tests updated to use MCP handlers: ```typescript // ❌ BEFORE: Testing wrong layer const result = await client.createWorkflow(workflow); // ✅ AFTER: Testing the actual product const response = await handleCreateWorkflow({ ...workflow }, mcpContext); expect(response.success).toBe(true); const result = response.data; ``` **Lesson Learned**: Always test the layer closest to the user/consumer. For n8n-mcp, that's the MCP handler layer. ### n8n API Behavior Discoveries 1. **Validation Timing**: n8n API accepts workflows with invalid node types and connection references at creation time. Validation only happens at execution time. 2. **Node Type Format**: FULL node type format (`n8n-nodes-base.*`) must be used in API requests. The P0 bug was confirmed fixed. 3. **Missing Parameters**: n8n accepts workflows with missing required parameters. They fail during execution, not creation. 4. **Duplicate Names**: n8n API handles duplicate node names gracefully (may auto-rename). ### Technical Implementation Insights 1. **MSW Interference**: Integration tests that need real network requests must NOT load MSW setup. Removed from vitest.config.integration.ts. 2. **Environment Loading**: Must load `.env` file BEFORE test defaults in global setup to preserve real credentials. 3. **Cleanup Safety**: TestContext pattern works well for tracking and cleaning up test resources. 4. **Test Isolation**: Each test creates unique workflows with timestamps to avoid conflicts. ``` -------------------------------------------------------------------------------- /tests/extracted-nodes-db/n8n-nodes-base__Airtable.json: -------------------------------------------------------------------------------- ```json { "node_type": "n8n-nodes-base.Airtable", "name": "Airtable", "package_name": "n8n-nodes-base", "code_hash": "2d67e72931697178946f5127b43e954649c4c5e7ad9e29764796404ae96e7db5", "code_length": 936, "source_location": "node_modules/n8n-nodes-base/dist/nodes/Airtable/Airtable.node.js", "has_credentials": false, "source_code": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Airtable = void 0;\nconst n8n_workflow_1 = require(\"n8n-workflow\");\nconst AirtableV1_node_1 = require(\"./v1/AirtableV1.node\");\nconst AirtableV2_node_1 = require(\"./v2/AirtableV2.node\");\nclass Airtable extends n8n_workflow_1.VersionedNodeType {\n constructor() {\n const baseDescription = {\n displayName: 'Airtable',\n name: 'airtable',\n icon: 'file:airtable.svg',\n group: ['input'],\n description: 'Read, update, write and delete data from Airtable',\n defaultVersion: 2,\n };\n const nodeVersions = {\n 1: new AirtableV1_node_1.AirtableV1(baseDescription),\n 2: new AirtableV2_node_1.AirtableV2(baseDescription),\n };\n super(nodeVersions, baseDescription);\n }\n}\nexports.Airtable = Airtable;\n//# sourceMappingURL=Airtable.node.js.map", "package_info": { "name": "n8n-nodes-base", "version": "1.14.1", "description": "Base nodes of n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", "author": { "name": "Jan Oberhauser", "email": "[email protected]" }, "main": "index.js", "repository": { "type": "git", "url": "git+https://github.com/n8n-io/n8n.git" }, "files": [ "dist" ], "n8n": { "credentials": [ "dist/credentials/ActionNetworkApi.credentials.js", "dist/credentials/ActiveCampaignApi.credentials.js", "dist/credentials/AcuitySchedulingApi.credentials.js", "dist/credentials/AcuitySchedulingOAuth2Api.credentials.js", "dist/credentials/AdaloApi.credentials.js", "dist/credentials/AffinityApi.credentials.js", "dist/credentials/AgileCrmApi.credentials.js", "dist/credentials/AirtableApi.credentials.js", "dist/credentials/AirtableOAuth2Api.credentials.js", "dist/credentials/AirtableTokenApi.credentials.js", "dist/credentials/AlienVaultApi.credentials.js", "dist/credentials/Amqp.credentials.js", "dist/credentials/ApiTemplateIoApi.credentials.js", "dist/credentials/AsanaApi.credentials.js", "dist/credentials/AsanaOAuth2Api.credentials.js", "dist/credentials/Auth0ManagementApi.credentials.js", "dist/credentials/AutomizyApi.credentials.js", "dist/credentials/AutopilotApi.credentials.js", "dist/credentials/Aws.credentials.js", "dist/credentials/BambooHrApi.credentials.js", "dist/credentials/BannerbearApi.credentials.js", "dist/credentials/BaserowApi.credentials.js", "dist/credentials/BeeminderApi.credentials.js", "dist/credentials/BitbucketApi.credentials.js", "dist/credentials/BitlyApi.credentials.js", "dist/credentials/BitlyOAuth2Api.credentials.js", "dist/credentials/BitwardenApi.credentials.js", "dist/credentials/BoxOAuth2Api.credentials.js", "dist/credentials/BrandfetchApi.credentials.js", "dist/credentials/BubbleApi.credentials.js", "dist/credentials/CalApi.credentials.js", "dist/credentials/CalendlyApi.credentials.js", "dist/credentials/CarbonBlackApi.credentials.js", "dist/credentials/ChargebeeApi.credentials.js", "dist/credentials/CircleCiApi.credentials.js", "dist/credentials/CiscoMerakiApi.credentials.js", "dist/credentials/CiscoSecureEndpointApi.credentials.js", "dist/credentials/CiscoWebexOAuth2Api.credentials.js", "dist/credentials/CiscoUmbrellaApi.credentials.js", "dist/credentials/CitrixAdcApi.credentials.js", "dist/credentials/CloudflareApi.credentials.js", "dist/credentials/ClearbitApi.credentials.js", "dist/credentials/ClickUpApi.credentials.js", "dist/credentials/ClickUpOAuth2Api.credentials.js", "dist/credentials/ClockifyApi.credentials.js", "dist/credentials/CockpitApi.credentials.js", "dist/credentials/CodaApi.credentials.js", "dist/credentials/ContentfulApi.credentials.js", "dist/credentials/ConvertKitApi.credentials.js", "dist/credentials/CopperApi.credentials.js", "dist/credentials/CortexApi.credentials.js", "dist/credentials/CrateDb.credentials.js", "dist/credentials/CrowdStrikeOAuth2Api.credentials.js", "dist/credentials/CrowdDevApi.credentials.js", "dist/credentials/CustomerIoApi.credentials.js", "dist/credentials/DeepLApi.credentials.js", "dist/credentials/DemioApi.credentials.js", "dist/credentials/DhlApi.credentials.js", "dist/credentials/DiscourseApi.credentials.js", "dist/credentials/DisqusApi.credentials.js", "dist/credentials/DriftApi.credentials.js", "dist/credentials/DriftOAuth2Api.credentials.js", "dist/credentials/DropboxApi.credentials.js", "dist/credentials/DropboxOAuth2Api.credentials.js", "dist/credentials/DropcontactApi.credentials.js", "dist/credentials/EgoiApi.credentials.js", "dist/credentials/ElasticsearchApi.credentials.js", "dist/credentials/ElasticSecurityApi.credentials.js", "dist/credentials/EmeliaApi.credentials.js", "dist/credentials/ERPNextApi.credentials.js", "dist/credentials/EventbriteApi.credentials.js", "dist/credentials/EventbriteOAuth2Api.credentials.js", "dist/credentials/F5BigIpApi.credentials.js", "dist/credentials/FacebookGraphApi.credentials.js", "dist/credentials/FacebookGraphAppApi.credentials.js", "dist/credentials/FacebookLeadAdsOAuth2Api.credentials.js", "dist/credentials/FigmaApi.credentials.js", "dist/credentials/FileMaker.credentials.js", "dist/credentials/FlowApi.credentials.js", "dist/credentials/FormIoApi.credentials.js", "dist/credentials/FormstackApi.credentials.js", "dist/credentials/FormstackOAuth2Api.credentials.js", "dist/credentials/FortiGateApi.credentials.js", "dist/credentials/FreshdeskApi.credentials.js", "dist/credentials/FreshserviceApi.credentials.js", "dist/credentials/FreshworksCrmApi.credentials.js", "dist/credentials/Ftp.credentials.js", "dist/credentials/GetResponseApi.credentials.js", "dist/credentials/GetResponseOAuth2Api.credentials.js", "dist/credentials/GhostAdminApi.credentials.js", "dist/credentials/GhostContentApi.credentials.js", "dist/credentials/GithubApi.credentials.js", "dist/credentials/GithubOAuth2Api.credentials.js", "dist/credentials/GitlabApi.credentials.js", "dist/credentials/GitlabOAuth2Api.credentials.js", "dist/credentials/GitPassword.credentials.js", "dist/credentials/GmailOAuth2Api.credentials.js", "dist/credentials/GoogleAdsOAuth2Api.credentials.js", "dist/credentials/GoogleAnalyticsOAuth2Api.credentials.js", "dist/credentials/GoogleApi.credentials.js", "dist/credentials/GoogleBigQueryOAuth2Api.credentials.js", "dist/credentials/GoogleBooksOAuth2Api.credentials.js", "dist/credentials/GoogleCalendarOAuth2Api.credentials.js", "dist/credentials/GoogleCloudNaturalLanguageOAuth2Api.credentials.js", "dist/credentials/GoogleCloudStorageOAuth2Api.credentials.js", "dist/credentials/GoogleContactsOAuth2Api.credentials.js", "dist/credentials/GoogleDocsOAuth2Api.credentials.js", "dist/credentials/GoogleDriveOAuth2Api.credentials.js", "dist/credentials/GoogleFirebaseCloudFirestoreOAuth2Api.credentials.js", "dist/credentials/GoogleFirebaseRealtimeDatabaseOAuth2Api.credentials.js", "dist/credentials/GoogleOAuth2Api.credentials.js", "dist/credentials/GooglePerspectiveOAuth2Api.credentials.js", "dist/credentials/GoogleSheetsOAuth2Api.credentials.js", "dist/credentials/GoogleSheetsTriggerOAuth2Api.credentials.js", "dist/credentials/GoogleSlidesOAuth2Api.credentials.js", "dist/credentials/GoogleTasksOAuth2Api.credentials.js", "dist/credentials/GoogleTranslateOAuth2Api.credentials.js", "dist/credentials/GotifyApi.credentials.js", "dist/credentials/GoToWebinarOAuth2Api.credentials.js", "dist/credentials/GristApi.credentials.js", "dist/credentials/GrafanaApi.credentials.js", "dist/credentials/GSuiteAdminOAuth2Api.credentials.js", "dist/credentials/GumroadApi.credentials.js", "dist/credentials/HaloPSAApi.credentials.js", "dist/credentials/HarvestApi.credentials.js", "dist/credentials/HarvestOAuth2Api.credentials.js", "dist/credentials/HelpScoutOAuth2Api.credentials.js", "dist/credentials/HighLevelApi.credentials.js", "dist/credentials/HomeAssistantApi.credentials.js", "dist/credentials/HttpBasicAuth.credentials.js", "dist/credentials/HttpDigestAuth.credentials.js", "dist/credentials/HttpHeaderAuth.credentials.js", "dist/credentials/HttpCustomAuth.credentials.js", "dist/credentials/HttpQueryAuth.credentials.js", "dist/credentials/HubspotApi.credentials.js", "dist/credentials/HubspotAppToken.credentials.js", "dist/credentials/HubspotDeveloperApi.credentials.js", "dist/credentials/HubspotOAuth2Api.credentials.js", "dist/credentials/HumanticAiApi.credentials.js", "dist/credentials/HunterApi.credentials.js", "dist/credentials/HybridAnalysisApi.credentials.js", "dist/credentials/Imap.credentials.js", "dist/credentials/ImpervaWafApi.credentials.js", "dist/credentials/IntercomApi.credentials.js", "dist/credentials/InvoiceNinjaApi.credentials.js", "dist/credentials/IterableApi.credentials.js", "dist/credentials/JenkinsApi.credentials.js", "dist/credentials/JiraSoftwareCloudApi.credentials.js", "dist/credentials/JiraSoftwareServerApi.credentials.js", "dist/credentials/JotFormApi.credentials.js", "dist/credentials/Kafka.credentials.js", "dist/credentials/KeapOAuth2Api.credentials.js", "dist/credentials/KibanaApi.credentials.js", "dist/credentials/KitemakerApi.credentials.js", "dist/credentials/KoBoToolboxApi.credentials.js", "dist/credentials/Ldap.credentials.js", "dist/credentials/LemlistApi.credentials.js", "dist/credentials/LinearApi.credentials.js", "dist/credentials/LinearOAuth2Api.credentials.js", "dist/credentials/LineNotifyOAuth2Api.credentials.js", "dist/credentials/LingvaNexApi.credentials.js", "dist/credentials/LinkedInOAuth2Api.credentials.js", "dist/credentials/LoneScaleApi.credentials.js", "dist/credentials/Magento2Api.credentials.js", "dist/credentials/MailcheckApi.credentials.js", "dist/credentials/MailchimpApi.credentials.js", "dist/credentials/MailchimpOAuth2Api.credentials.js", "dist/credentials/MailerLiteApi.credentials.js", "dist/credentials/MailgunApi.credentials.js", "dist/credentials/MailjetEmailApi.credentials.js", "dist/credentials/MailjetSmsApi.credentials.js", "dist/credentials/MandrillApi.credentials.js", "dist/credentials/MarketstackApi.credentials.js", "dist/credentials/MatrixApi.credentials.js", "dist/credentials/MattermostApi.credentials.js", "dist/credentials/MauticApi.credentials.js", "dist/credentials/MauticOAuth2Api.credentials.js", "dist/credentials/MediumApi.credentials.js", "dist/credentials/MediumOAuth2Api.credentials.js", "dist/credentials/MetabaseApi.credentials.js", "dist/credentials/MessageBirdApi.credentials.js", "dist/credentials/MetabaseApi.credentials.js", "dist/credentials/MicrosoftDynamicsOAuth2Api.credentials.js", "dist/credentials/MicrosoftEntraOAuth2Api.credentials.js", "dist/credentials/MicrosoftExcelOAuth2Api.credentials.js", "dist/credentials/MicrosoftGraphSecurityOAuth2Api.credentials.js", "dist/credentials/MicrosoftOAuth2Api.credentials.js", "dist/credentials/MicrosoftOneDriveOAuth2Api.credentials.js", "dist/credentials/MicrosoftOutlookOAuth2Api.credentials.js", "dist/credentials/MicrosoftSql.credentials.js", "dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js", "dist/credentials/MicrosoftToDoOAuth2Api.credentials.js", "dist/credentials/MindeeInvoiceApi.credentials.js", "dist/credentials/MindeeReceiptApi.credentials.js", "dist/credentials/MispApi.credentials.js", "dist/credentials/MistApi.credentials.js", "dist/credentials/MoceanApi.credentials.js", "dist/credentials/MondayComApi.credentials.js", "dist/credentials/MondayComOAuth2Api.credentials.js", "dist/credentials/MongoDb.credentials.js", "dist/credentials/MonicaCrmApi.credentials.js", "dist/credentials/Mqtt.credentials.js", "dist/credentials/Msg91Api.credentials.js", "dist/credentials/MySql.credentials.js", "dist/credentials/N8nApi.credentials.js", "dist/credentials/NasaApi.credentials.js", "dist/credentials/NetlifyApi.credentials.js", "dist/credentials/NextCloudApi.credentials.js", "dist/credentials/NextCloudOAuth2Api.credentials.js", "dist/credentials/NocoDb.credentials.js", "dist/credentials/NocoDbApiToken.credentials.js", "dist/credentials/NotionApi.credentials.js", "dist/credentials/NotionOAuth2Api.credentials.js", "dist/credentials/NpmApi.credentials.js", "dist/credentials/OAuth1Api.credentials.js", "dist/credentials/OAuth2Api.credentials.js", "dist/credentials/OdooApi.credentials.js", "dist/credentials/OktaApi.credentials.js", "dist/credentials/OneSimpleApi.credentials.js", "dist/credentials/OnfleetApi.credentials.js", "dist/credentials/OpenAiApi.credentials.js", "dist/credentials/OpenCTIApi.credentials.js", "dist/credentials/OpenWeatherMapApi.credentials.js", "dist/credentials/OrbitApi.credentials.js", "dist/credentials/OuraApi.credentials.js", "dist/credentials/PaddleApi.credentials.js", "dist/credentials/PagerDutyApi.credentials.js", "dist/credentials/PagerDutyOAuth2Api.credentials.js", "dist/credentials/PayPalApi.credentials.js", "dist/credentials/PeekalinkApi.credentials.js", "dist/credentials/PhantombusterApi.credentials.js", "dist/credentials/PhilipsHueOAuth2Api.credentials.js", "dist/credentials/PipedriveApi.credentials.js", "dist/credentials/PipedriveOAuth2Api.credentials.js", "dist/credentials/PlivoApi.credentials.js", "dist/credentials/Postgres.credentials.js", "dist/credentials/PostHogApi.credentials.js", "dist/credentials/PostmarkApi.credentials.js", "dist/credentials/ProfitWellApi.credentials.js", "dist/credentials/PushbulletOAuth2Api.credentials.js", "dist/credentials/PushcutApi.credentials.js", "dist/credentials/PushoverApi.credentials.js", "dist/credentials/QRadarApi.credentials.js", "dist/credentials/QualysApi.credentials.js", "dist/credentials/QuestDb.credentials.js", "dist/credentials/QuickBaseApi.credentials.js", "dist/credentials/QuickBooksOAuth2Api.credentials.js", "dist/credentials/RabbitMQ.credentials.js", "dist/credentials/RaindropOAuth2Api.credentials.js", "dist/credentials/RecordedFutureApi.credentials.js", "dist/credentials/RedditOAuth2Api.credentials.js", "dist/credentials/Redis.credentials.js", "dist/credentials/RocketchatApi.credentials.js", "dist/credentials/RundeckApi.credentials.js", "dist/credentials/S3.credentials.js", "dist/credentials/SalesforceJwtApi.credentials.js", "dist/credentials/SalesforceOAuth2Api.credentials.js", "dist/credentials/SalesmateApi.credentials.js", "dist/credentials/SeaTableApi.credentials.js", "dist/credentials/SecurityScorecardApi.credentials.js", "dist/credentials/SegmentApi.credentials.js", "dist/credentials/SekoiaApi.credentials.js", "dist/credentials/SendGridApi.credentials.js", "dist/credentials/BrevoApi.credentials.js", "dist/credentials/SendyApi.credentials.js", "dist/credentials/SentryIoApi.credentials.js", "dist/credentials/SentryIoOAuth2Api.credentials.js", "dist/credentials/SentryIoServerApi.credentials.js", "dist/credentials/ServiceNowOAuth2Api.credentials.js", "dist/credentials/ServiceNowBasicApi.credentials.js", "dist/credentials/Sftp.credentials.js", "dist/credentials/ShopifyApi.credentials.js", "dist/credentials/ShopifyAccessTokenApi.credentials.js", "dist/credentials/ShopifyOAuth2Api.credentials.js", "dist/credentials/Signl4Api.credentials.js", "dist/credentials/SlackApi.credentials.js", "dist/credentials/SlackOAuth2Api.credentials.js", "dist/credentials/Sms77Api.credentials.js", "dist/credentials/Smtp.credentials.js", "dist/credentials/Snowflake.credentials.js", "dist/credentials/SplunkApi.credentials.js", "dist/credentials/SpontitApi.credentials.js", "dist/credentials/SpotifyOAuth2Api.credentials.js", "dist/credentials/ShufflerApi.credentials.js", "dist/credentials/SshPassword.credentials.js", "dist/credentials/SshPrivateKey.credentials.js", "dist/credentials/StackbyApi.credentials.js", "dist/credentials/StoryblokContentApi.credentials.js", "dist/credentials/StoryblokManagementApi.credentials.js", "dist/credentials/StrapiApi.credentials.js", "dist/credentials/StrapiTokenApi.credentials.js", "dist/credentials/StravaOAuth2Api.credentials.js", "dist/credentials/StripeApi.credentials.js", "dist/credentials/SupabaseApi.credentials.js", "dist/credentials/SurveyMonkeyApi.credentials.js", "dist/credentials/SurveyMonkeyOAuth2Api.credentials.js", "dist/credentials/SyncroMspApi.credentials.js", "dist/credentials/TaigaApi.credentials.js", "dist/credentials/TapfiliateApi.credentials.js", "dist/credentials/TelegramApi.credentials.js", "dist/credentials/TheHiveProjectApi.credentials.js", "dist/credentials/TheHiveApi.credentials.js", "dist/credentials/TimescaleDb.credentials.js", "dist/credentials/TodoistApi.credentials.js", "dist/credentials/TodoistOAuth2Api.credentials.js", "dist/credentials/TogglApi.credentials.js", "dist/credentials/TotpApi.credentials.js", "dist/credentials/TravisCiApi.credentials.js", "dist/credentials/TrellixEpoApi.credentials.js", "dist/credentials/TrelloApi.credentials.js", "dist/credentials/TwakeCloudApi.credentials.js", "dist/credentials/TwakeServerApi.credentials.js", "dist/credentials/TwilioApi.credentials.js", "dist/credentials/TwistOAuth2Api.credentials.js", "dist/credentials/TwitterOAuth1Api.credentials.js", "dist/credentials/TwitterOAuth2Api.credentials.js", "dist/credentials/TypeformApi.credentials.js", "dist/credentials/TypeformOAuth2Api.credentials.js", "dist/credentials/UnleashedSoftwareApi.credentials.js", "dist/credentials/UpleadApi.credentials.js", "dist/credentials/UProcApi.credentials.js", "dist/credentials/UptimeRobotApi.credentials.js", "dist/credentials/UrlScanIoApi.credentials.js", "dist/credentials/VeroApi.credentials.js", "dist/credentials/VirusTotalApi.credentials.js", "dist/credentials/VonageApi.credentials.js", "dist/credentials/VenafiTlsProtectCloudApi.credentials.js", "dist/credentials/VenafiTlsProtectDatacenterApi.credentials.js", "dist/credentials/WebflowApi.credentials.js", "dist/credentials/WebflowOAuth2Api.credentials.js", "dist/credentials/WekanApi.credentials.js", "dist/credentials/WhatsAppApi.credentials.js", "dist/credentials/WiseApi.credentials.js", "dist/credentials/WooCommerceApi.credentials.js", "dist/credentials/WordpressApi.credentials.js", "dist/credentials/WorkableApi.credentials.js", "dist/credentials/WufooApi.credentials.js", "dist/credentials/XeroOAuth2Api.credentials.js", "dist/credentials/YourlsApi.credentials.js", "dist/credentials/YouTubeOAuth2Api.credentials.js", "dist/credentials/ZammadBasicAuthApi.credentials.js", "dist/credentials/ZammadTokenAuthApi.credentials.js", "dist/credentials/ZendeskApi.credentials.js", "dist/credentials/ZendeskOAuth2Api.credentials.js", "dist/credentials/ZohoOAuth2Api.credentials.js", "dist/credentials/ZoomApi.credentials.js", "dist/credentials/ZoomOAuth2Api.credentials.js", "dist/credentials/ZscalerZiaApi.credentials.js", "dist/credentials/ZulipApi.credentials.js" ], "nodes": [ "dist/nodes/ActionNetwork/ActionNetwork.node.js", "dist/nodes/ActiveCampaign/ActiveCampaign.node.js", "dist/nodes/ActiveCampaign/ActiveCampaignTrigger.node.js", "dist/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.js", "dist/nodes/Adalo/Adalo.node.js", "dist/nodes/Affinity/Affinity.node.js", "dist/nodes/Affinity/AffinityTrigger.node.js", "dist/nodes/AgileCrm/AgileCrm.node.js", "dist/nodes/Airtable/Airtable.node.js", "dist/nodes/Airtable/AirtableTrigger.node.js", "dist/nodes/Amqp/Amqp.node.js", "dist/nodes/Amqp/AmqpTrigger.node.js", "dist/nodes/ApiTemplateIo/ApiTemplateIo.node.js", "dist/nodes/Asana/Asana.node.js", "dist/nodes/Asana/AsanaTrigger.node.js", "dist/nodes/Automizy/Automizy.node.js", "dist/nodes/Autopilot/Autopilot.node.js", "dist/nodes/Autopilot/AutopilotTrigger.node.js", "dist/nodes/Aws/AwsLambda.node.js", "dist/nodes/Aws/AwsSns.node.js", "dist/nodes/Aws/AwsSnsTrigger.node.js", "dist/nodes/Aws/CertificateManager/AwsCertificateManager.node.js", "dist/nodes/Aws/Comprehend/AwsComprehend.node.js", "dist/nodes/Aws/DynamoDB/AwsDynamoDB.node.js", "dist/nodes/Aws/ELB/AwsElb.node.js", "dist/nodes/Aws/Rekognition/AwsRekognition.node.js", "dist/nodes/Aws/S3/AwsS3.node.js", "dist/nodes/Aws/SES/AwsSes.node.js", "dist/nodes/Aws/SQS/AwsSqs.node.js", "dist/nodes/Aws/Textract/AwsTextract.node.js", "dist/nodes/Aws/Transcribe/AwsTranscribe.node.js", "dist/nodes/BambooHr/BambooHr.node.js", "dist/nodes/Bannerbear/Bannerbear.node.js", "dist/nodes/Baserow/Baserow.node.js", "dist/nodes/Beeminder/Beeminder.node.js", "dist/nodes/Bitbucket/BitbucketTrigger.node.js", "dist/nodes/Bitly/Bitly.node.js", "dist/nodes/Bitwarden/Bitwarden.node.js", "dist/nodes/Box/Box.node.js", "dist/nodes/Box/BoxTrigger.node.js", "dist/nodes/Brandfetch/Brandfetch.node.js", "dist/nodes/Bubble/Bubble.node.js", "dist/nodes/Cal/CalTrigger.node.js", "dist/nodes/Calendly/CalendlyTrigger.node.js", "dist/nodes/Chargebee/Chargebee.node.js", "dist/nodes/Chargebee/ChargebeeTrigger.node.js", "dist/nodes/CircleCi/CircleCi.node.js", "dist/nodes/Cisco/Webex/CiscoWebex.node.js", "dist/nodes/Citrix/ADC/CitrixAdc.node.js", "dist/nodes/Cisco/Webex/CiscoWebexTrigger.node.js", "dist/nodes/Cloudflare/Cloudflare.node.js", "dist/nodes/Clearbit/Clearbit.node.js", "dist/nodes/ClickUp/ClickUp.node.js", "dist/nodes/ClickUp/ClickUpTrigger.node.js", "dist/nodes/Clockify/Clockify.node.js", "dist/nodes/Clockify/ClockifyTrigger.node.js", "dist/nodes/Cockpit/Cockpit.node.js", "dist/nodes/Coda/Coda.node.js", "dist/nodes/Code/Code.node.js", "dist/nodes/CoinGecko/CoinGecko.node.js", "dist/nodes/CompareDatasets/CompareDatasets.node.js", "dist/nodes/Compression/Compression.node.js", "dist/nodes/Contentful/Contentful.node.js", "dist/nodes/ConvertKit/ConvertKit.node.js", "dist/nodes/ConvertKit/ConvertKitTrigger.node.js", "dist/nodes/Copper/Copper.node.js", "dist/nodes/Copper/CopperTrigger.node.js", "dist/nodes/Cortex/Cortex.node.js", "dist/nodes/CrateDb/CrateDb.node.js", "dist/nodes/Cron/Cron.node.js", "dist/nodes/CrowdDev/CrowdDev.node.js", "dist/nodes/CrowdDev/CrowdDevTrigger.node.js", "dist/nodes/Crypto/Crypto.node.js", "dist/nodes/CustomerIo/CustomerIo.node.js", "dist/nodes/CustomerIo/CustomerIoTrigger.node.js", "dist/nodes/DateTime/DateTime.node.js", "dist/nodes/DebugHelper/DebugHelper.node.js", "dist/nodes/DeepL/DeepL.node.js", "dist/nodes/Demio/Demio.node.js", "dist/nodes/Dhl/Dhl.node.js", "dist/nodes/Discord/Discord.node.js", "dist/nodes/Discourse/Discourse.node.js", "dist/nodes/Disqus/Disqus.node.js", "dist/nodes/Drift/Drift.node.js", "dist/nodes/Dropbox/Dropbox.node.js", "dist/nodes/Dropcontact/Dropcontact.node.js", "dist/nodes/EditImage/EditImage.node.js", "dist/nodes/E2eTest/E2eTest.node.js", "dist/nodes/Egoi/Egoi.node.js", "dist/nodes/Elastic/Elasticsearch/Elasticsearch.node.js", "dist/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.js", "dist/nodes/EmailReadImap/EmailReadImap.node.js", "dist/nodes/EmailSend/EmailSend.node.js", "dist/nodes/Emelia/Emelia.node.js", "dist/nodes/Emelia/EmeliaTrigger.node.js", "dist/nodes/ERPNext/ERPNext.node.js", "dist/nodes/ErrorTrigger/ErrorTrigger.node.js", "dist/nodes/Eventbrite/EventbriteTrigger.node.js", "dist/nodes/ExecuteCommand/ExecuteCommand.node.js", "dist/nodes/ExecuteWorkflow/ExecuteWorkflow.node.js", "dist/nodes/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js", "dist/nodes/ExecutionData/ExecutionData.node.js", "dist/nodes/Facebook/FacebookGraphApi.node.js", "dist/nodes/Facebook/FacebookTrigger.node.js", "dist/nodes/FacebookLeadAds/FacebookLeadAdsTrigger.node.js", "dist/nodes/Figma/FigmaTrigger.node.js", "dist/nodes/FileMaker/FileMaker.node.js", "dist/nodes/Filter/Filter.node.js", "dist/nodes/Flow/Flow.node.js", "dist/nodes/Flow/FlowTrigger.node.js", "dist/nodes/Form/FormTrigger.node.js", "dist/nodes/FormIo/FormIoTrigger.node.js", "dist/nodes/Formstack/FormstackTrigger.node.js", "dist/nodes/Freshdesk/Freshdesk.node.js", "dist/nodes/Freshservice/Freshservice.node.js", "dist/nodes/FreshworksCrm/FreshworksCrm.node.js", "dist/nodes/Ftp/Ftp.node.js", "dist/nodes/Function/Function.node.js", "dist/nodes/FunctionItem/FunctionItem.node.js", "dist/nodes/GetResponse/GetResponse.node.js", "dist/nodes/GetResponse/GetResponseTrigger.node.js", "dist/nodes/Ghost/Ghost.node.js", "dist/nodes/Git/Git.node.js", "dist/nodes/Github/Github.node.js", "dist/nodes/Github/GithubTrigger.node.js", "dist/nodes/Gitlab/Gitlab.node.js", "dist/nodes/Gitlab/GitlabTrigger.node.js", "dist/nodes/Google/Ads/GoogleAds.node.js", "dist/nodes/Google/Analytics/GoogleAnalytics.node.js", "dist/nodes/Google/BigQuery/GoogleBigQuery.node.js", "dist/nodes/Google/Books/GoogleBooks.node.js", "dist/nodes/Google/Calendar/GoogleCalendar.node.js", "dist/nodes/Google/Calendar/GoogleCalendarTrigger.node.js", "dist/nodes/Google/Chat/GoogleChat.node.js", "dist/nodes/Google/CloudNaturalLanguage/GoogleCloudNaturalLanguage.node.js", "dist/nodes/Google/CloudStorage/GoogleCloudStorage.node.js", "dist/nodes/Google/Contacts/GoogleContacts.node.js", "dist/nodes/Google/Docs/GoogleDocs.node.js", "dist/nodes/Google/Drive/GoogleDrive.node.js", "dist/nodes/Google/Drive/GoogleDriveTrigger.node.js", "dist/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.js", "dist/nodes/Google/Firebase/RealtimeDatabase/GoogleFirebaseRealtimeDatabase.node.js", "dist/nodes/Google/Gmail/Gmail.node.js", "dist/nodes/Google/Gmail/GmailTrigger.node.js", "dist/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.js", "dist/nodes/Google/Perspective/GooglePerspective.node.js", "dist/nodes/Google/Sheet/GoogleSheets.node.js", "dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js", "dist/nodes/Google/Slides/GoogleSlides.node.js", "dist/nodes/Google/Task/GoogleTasks.node.js", "dist/nodes/Google/Translate/GoogleTranslate.node.js", "dist/nodes/Google/YouTube/YouTube.node.js", "dist/nodes/Gotify/Gotify.node.js", "dist/nodes/GoToWebinar/GoToWebinar.node.js", "dist/nodes/Grafana/Grafana.node.js", "dist/nodes/GraphQL/GraphQL.node.js", "dist/nodes/Grist/Grist.node.js", "dist/nodes/Gumroad/GumroadTrigger.node.js", "dist/nodes/HackerNews/HackerNews.node.js", "dist/nodes/HaloPSA/HaloPSA.node.js", "dist/nodes/Harvest/Harvest.node.js", "dist/nodes/HelpScout/HelpScout.node.js", "dist/nodes/HelpScout/HelpScoutTrigger.node.js", "dist/nodes/HighLevel/HighLevel.node.js", "dist/nodes/HomeAssistant/HomeAssistant.node.js", "dist/nodes/HtmlExtract/HtmlExtract.node.js", "dist/nodes/Html/Html.node.js", "dist/nodes/HttpRequest/HttpRequest.node.js", "dist/nodes/Hubspot/Hubspot.node.js", "dist/nodes/Hubspot/HubspotTrigger.node.js", "dist/nodes/HumanticAI/HumanticAi.node.js", "dist/nodes/Hunter/Hunter.node.js", "dist/nodes/ICalendar/ICalendar.node.js", "dist/nodes/If/If.node.js", "dist/nodes/Intercom/Intercom.node.js", "dist/nodes/Interval/Interval.node.js", "dist/nodes/InvoiceNinja/InvoiceNinja.node.js", "dist/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.js", "dist/nodes/ItemLists/ItemLists.node.js", "dist/nodes/Iterable/Iterable.node.js", "dist/nodes/Jenkins/Jenkins.node.js", "dist/nodes/Jira/Jira.node.js", "dist/nodes/Jira/JiraTrigger.node.js", "dist/nodes/JotForm/JotFormTrigger.node.js", "dist/nodes/Kafka/Kafka.node.js", "dist/nodes/Kafka/KafkaTrigger.node.js", "dist/nodes/Keap/Keap.node.js", "dist/nodes/Keap/KeapTrigger.node.js", "dist/nodes/Kitemaker/Kitemaker.node.js", "dist/nodes/KoBoToolbox/KoBoToolbox.node.js", "dist/nodes/KoBoToolbox/KoBoToolboxTrigger.node.js", "dist/nodes/Ldap/Ldap.node.js", "dist/nodes/Lemlist/Lemlist.node.js", "dist/nodes/Lemlist/LemlistTrigger.node.js", "dist/nodes/Line/Line.node.js", "dist/nodes/Linear/Linear.node.js", "dist/nodes/Linear/LinearTrigger.node.js", "dist/nodes/LingvaNex/LingvaNex.node.js", "dist/nodes/LinkedIn/LinkedIn.node.js", "dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js", "dist/nodes/LoneScale/LoneScaleTrigger.node.js", "dist/nodes/LoneScale/LoneScale.node.js", "dist/nodes/Magento/Magento2.node.js", "dist/nodes/Mailcheck/Mailcheck.node.js", "dist/nodes/Mailchimp/Mailchimp.node.js", "dist/nodes/Mailchimp/MailchimpTrigger.node.js", "dist/nodes/MailerLite/MailerLite.node.js", "dist/nodes/MailerLite/MailerLiteTrigger.node.js", "dist/nodes/Mailgun/Mailgun.node.js", "dist/nodes/Mailjet/Mailjet.node.js", "dist/nodes/Mailjet/MailjetTrigger.node.js", "dist/nodes/Mandrill/Mandrill.node.js", "dist/nodes/ManualTrigger/ManualTrigger.node.js", "dist/nodes/Markdown/Markdown.node.js", "dist/nodes/Marketstack/Marketstack.node.js", "dist/nodes/Matrix/Matrix.node.js", "dist/nodes/Mattermost/Mattermost.node.js", "dist/nodes/Mautic/Mautic.node.js", "dist/nodes/Mautic/MauticTrigger.node.js", "dist/nodes/Medium/Medium.node.js", "dist/nodes/Merge/Merge.node.js", "dist/nodes/MessageBird/MessageBird.node.js", "dist/nodes/Metabase/Metabase.node.js", "dist/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.js", "dist/nodes/Microsoft/Excel/MicrosoftExcel.node.js", "dist/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.js", "dist/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.js", "dist/nodes/Microsoft/Outlook/MicrosoftOutlook.node.js", "dist/nodes/Microsoft/Sql/MicrosoftSql.node.js", "dist/nodes/Microsoft/Teams/MicrosoftTeams.node.js", "dist/nodes/Microsoft/ToDo/MicrosoftToDo.node.js", "dist/nodes/Mindee/Mindee.node.js", "dist/nodes/Misp/Misp.node.js", "dist/nodes/Mocean/Mocean.node.js", "dist/nodes/MondayCom/MondayCom.node.js", "dist/nodes/MongoDb/MongoDb.node.js", "dist/nodes/MonicaCrm/MonicaCrm.node.js", "dist/nodes/MoveBinaryData/MoveBinaryData.node.js", "dist/nodes/MQTT/Mqtt.node.js", "dist/nodes/MQTT/MqttTrigger.node.js", "dist/nodes/Msg91/Msg91.node.js", "dist/nodes/MySql/MySql.node.js", "dist/nodes/N8n/N8n.node.js", "dist/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.js", "dist/nodes/N8nTrainingCustomerMessenger/N8nTrainingCustomerMessenger.node.js", "dist/nodes/N8nTrigger/N8nTrigger.node.js", "dist/nodes/Nasa/Nasa.node.js", "dist/nodes/Netlify/Netlify.node.js", "dist/nodes/Netlify/NetlifyTrigger.node.js", "dist/nodes/NextCloud/NextCloud.node.js", "dist/nodes/NocoDB/NocoDB.node.js", "dist/nodes/Brevo/Brevo.node.js", "dist/nodes/Brevo/BrevoTrigger.node.js", "dist/nodes/StickyNote/StickyNote.node.js", "dist/nodes/NoOp/NoOp.node.js", "dist/nodes/Onfleet/Onfleet.node.js", "dist/nodes/Onfleet/OnfleetTrigger.node.js", "dist/nodes/Notion/Notion.node.js", "dist/nodes/Notion/NotionTrigger.node.js", "dist/nodes/Npm/Npm.node.js", "dist/nodes/Odoo/Odoo.node.js", "dist/nodes/OneSimpleApi/OneSimpleApi.node.js", "dist/nodes/OpenAi/OpenAi.node.js", "dist/nodes/OpenThesaurus/OpenThesaurus.node.js", "dist/nodes/OpenWeatherMap/OpenWeatherMap.node.js", "dist/nodes/Orbit/Orbit.node.js", "dist/nodes/Oura/Oura.node.js", "dist/nodes/Paddle/Paddle.node.js", "dist/nodes/PagerDuty/PagerDuty.node.js", "dist/nodes/PayPal/PayPal.node.js", "dist/nodes/PayPal/PayPalTrigger.node.js", "dist/nodes/Peekalink/Peekalink.node.js", "dist/nodes/Phantombuster/Phantombuster.node.js", "dist/nodes/PhilipsHue/PhilipsHue.node.js", "dist/nodes/Pipedrive/Pipedrive.node.js", "dist/nodes/Pipedrive/PipedriveTrigger.node.js", "dist/nodes/Plivo/Plivo.node.js", "dist/nodes/PostBin/PostBin.node.js", "dist/nodes/Postgres/Postgres.node.js", "dist/nodes/Postgres/PostgresTrigger.node.js", "dist/nodes/PostHog/PostHog.node.js", "dist/nodes/Postmark/PostmarkTrigger.node.js", "dist/nodes/ProfitWell/ProfitWell.node.js", "dist/nodes/Pushbullet/Pushbullet.node.js", "dist/nodes/Pushcut/Pushcut.node.js", "dist/nodes/Pushcut/PushcutTrigger.node.js", "dist/nodes/Pushover/Pushover.node.js", "dist/nodes/QuestDb/QuestDb.node.js", "dist/nodes/QuickBase/QuickBase.node.js", "dist/nodes/QuickBooks/QuickBooks.node.js", "dist/nodes/QuickChart/QuickChart.node.js", "dist/nodes/RabbitMQ/RabbitMQ.node.js", "dist/nodes/RabbitMQ/RabbitMQTrigger.node.js", "dist/nodes/Raindrop/Raindrop.node.js", "dist/nodes/ReadBinaryFile/ReadBinaryFile.node.js", "dist/nodes/ReadBinaryFiles/ReadBinaryFiles.node.js", "dist/nodes/ReadPdf/ReadPDF.node.js", "dist/nodes/Reddit/Reddit.node.js", "dist/nodes/Redis/Redis.node.js", "dist/nodes/Redis/RedisTrigger.node.js", "dist/nodes/RenameKeys/RenameKeys.node.js", "dist/nodes/RespondToWebhook/RespondToWebhook.node.js", "dist/nodes/Rocketchat/Rocketchat.node.js", "dist/nodes/RssFeedRead/RssFeedRead.node.js", "dist/nodes/RssFeedRead/RssFeedReadTrigger.node.js", "dist/nodes/Rundeck/Rundeck.node.js", "dist/nodes/S3/S3.node.js", "dist/nodes/Salesforce/Salesforce.node.js", "dist/nodes/Salesmate/Salesmate.node.js", "dist/nodes/Schedule/ScheduleTrigger.node.js", "dist/nodes/SeaTable/SeaTable.node.js", "dist/nodes/SeaTable/SeaTableTrigger.node.js", "dist/nodes/SecurityScorecard/SecurityScorecard.node.js", "dist/nodes/Segment/Segment.node.js", "dist/nodes/SendGrid/SendGrid.node.js", "dist/nodes/Sendy/Sendy.node.js", "dist/nodes/SentryIo/SentryIo.node.js", "dist/nodes/ServiceNow/ServiceNow.node.js", "dist/nodes/Set/Set.node.js", "dist/nodes/Shopify/Shopify.node.js", "dist/nodes/Shopify/ShopifyTrigger.node.js", "dist/nodes/Signl4/Signl4.node.js", "dist/nodes/Slack/Slack.node.js", "dist/nodes/Sms77/Sms77.node.js", "dist/nodes/Snowflake/Snowflake.node.js", "dist/nodes/SplitInBatches/SplitInBatches.node.js", "dist/nodes/Splunk/Splunk.node.js", "dist/nodes/Spontit/Spontit.node.js", "dist/nodes/Spotify/Spotify.node.js", "dist/nodes/SpreadsheetFile/SpreadsheetFile.node.js", "dist/nodes/SseTrigger/SseTrigger.node.js", "dist/nodes/Ssh/Ssh.node.js", "dist/nodes/Stackby/Stackby.node.js", "dist/nodes/Start/Start.node.js", "dist/nodes/StopAndError/StopAndError.node.js", "dist/nodes/Storyblok/Storyblok.node.js", "dist/nodes/Strapi/Strapi.node.js", "dist/nodes/Strava/Strava.node.js", "dist/nodes/Strava/StravaTrigger.node.js", "dist/nodes/Stripe/Stripe.node.js", "dist/nodes/Stripe/StripeTrigger.node.js", "dist/nodes/Supabase/Supabase.node.js", "dist/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.js", "dist/nodes/Switch/Switch.node.js", "dist/nodes/SyncroMSP/SyncroMsp.node.js", "dist/nodes/Taiga/Taiga.node.js", "dist/nodes/Taiga/TaigaTrigger.node.js", "dist/nodes/Tapfiliate/Tapfiliate.node.js", "dist/nodes/Telegram/Telegram.node.js", "dist/nodes/Telegram/TelegramTrigger.node.js", "dist/nodes/TheHiveProject/TheHiveProject.node.js", "dist/nodes/TheHiveProject/TheHiveProjectTrigger.node.js", "dist/nodes/TheHive/TheHive.node.js", "dist/nodes/TheHive/TheHiveTrigger.node.js", "dist/nodes/TimescaleDb/TimescaleDb.node.js", "dist/nodes/Todoist/Todoist.node.js", "dist/nodes/Toggl/TogglTrigger.node.js", "dist/nodes/Totp/Totp.node.js", "dist/nodes/TravisCi/TravisCi.node.js", "dist/nodes/Trello/Trello.node.js", "dist/nodes/Trello/TrelloTrigger.node.js", "dist/nodes/Twake/Twake.node.js", "dist/nodes/Twilio/Twilio.node.js", "dist/nodes/Twist/Twist.node.js", "dist/nodes/Twitter/Twitter.node.js", "dist/nodes/Typeform/TypeformTrigger.node.js", "dist/nodes/UnleashedSoftware/UnleashedSoftware.node.js", "dist/nodes/Uplead/Uplead.node.js", "dist/nodes/UProc/UProc.node.js", "dist/nodes/UptimeRobot/UptimeRobot.node.js", "dist/nodes/UrlScanIo/UrlScanIo.node.js", "dist/nodes/Vero/Vero.node.js", "dist/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloud.node.js", "dist/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloudTrigger.node.js", "dist/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenter.node.js", "dist/nodes/Vonage/Vonage.node.js", "dist/nodes/Wait/Wait.node.js", "dist/nodes/Webflow/Webflow.node.js", "dist/nodes/Webflow/WebflowTrigger.node.js", "dist/nodes/Webhook/Webhook.node.js", "dist/nodes/Wekan/Wekan.node.js", "dist/nodes/WhatsApp/WhatsApp.node.js", "dist/nodes/Wise/Wise.node.js", "dist/nodes/Wise/WiseTrigger.node.js", "dist/nodes/WooCommerce/WooCommerce.node.js", "dist/nodes/WooCommerce/WooCommerceTrigger.node.js", "dist/nodes/Wordpress/Wordpress.node.js", "dist/nodes/Workable/WorkableTrigger.node.js", "dist/nodes/WorkflowTrigger/WorkflowTrigger.node.js", "dist/nodes/WriteBinaryFile/WriteBinaryFile.node.js", "dist/nodes/Wufoo/WufooTrigger.node.js", "dist/nodes/Xero/Xero.node.js", "dist/nodes/Xml/Xml.node.js", "dist/nodes/Yourls/Yourls.node.js", "dist/nodes/Zammad/Zammad.node.js", "dist/nodes/Zendesk/Zendesk.node.js", "dist/nodes/Zendesk/ZendeskTrigger.node.js", "dist/nodes/Zoho/ZohoCrm.node.js", "dist/nodes/Zoom/Zoom.node.js", "dist/nodes/Zulip/Zulip.node.js" ] }, "devDependencies": { "@types/amqplib": "^0.10.1", "@types/aws4": "^1.5.1", "@types/basic-auth": "^1.1.3", "@types/cheerio": "^0.22.15", "@types/cron": "~1.7.1", "@types/eventsource": "^1.1.2", "@types/express": "^4.17.6", "@types/gm": "^1.25.0", "@types/imap-simple": "^4.2.0", "@types/js-nacl": "^1.3.0", "@types/jsonwebtoken": "^9.0.1", "@types/lodash": "^4.14.195", "@types/lossless-json": "^1.0.0", "@types/mailparser": "^2.7.3", "@types/mime-types": "^2.1.0", "@types/mssql": "^6.0.2", "@types/node-ssh": "^7.0.1", "@types/nodemailer": "^6.4.0", "@types/promise-ftp": "^1.3.4", "@types/redis": "^2.8.11", "@types/request-promise-native": "~1.0.15", "@types/rfc2047": "^2.0.1", "@types/showdown": "^1.9.4", "@types/snowflake-sdk": "^1.6.12", "@types/ssh2-sftp-client": "^5.1.0", "@types/tmp": "^0.2.0", "@types/uuid": "^8.3.2", "@types/xml2js": "^0.4.11", "eslint-plugin-n8n-nodes-base": "^1.16.0", "gulp": "^4.0.0", "n8n-core": "1.14.1" }, "dependencies": { "@kafkajs/confluent-schema-registry": "1.0.6", "@n8n/vm2": "^3.9.20", "amqplib": "^0.10.3", "aws4": "^1.8.0", "basic-auth": "^2.0.1", "change-case": "^4.1.1", "cheerio": "1.0.0-rc.6", "chokidar": "3.5.2", "cron": "~1.7.2", "csv-parse": "^5.5.0", "currency-codes": "^2.1.0", "eventsource": "^2.0.2", "fast-glob": "^3.2.5", "fflate": "^0.7.0", "get-system-fonts": "^2.0.2", "gm": "^1.25.0", "iconv-lite": "^0.6.2", "ics": "^2.27.0", "imap-simple": "^4.3.0", "isbot": "^3.6.13", "iso-639-1": "^2.1.3", "js-nacl": "^1.4.0", "jsonwebtoken": "^9.0.0", "kafkajs": "^1.14.0", "ldapts": "^4.2.6", "lodash": "^4.17.21", "lossless-json": "^1.0.4", "luxon": "^3.3.0", "mailparser": "^3.2.0", "minifaker": "^1.34.1", "moment": "~2.29.2", "moment-timezone": "^0.5.28", "mongodb": "^4.17.1", "mqtt": "^5.0.2", "mssql": "^8.1.2", "mysql2": "~2.3.0", "nanoid": "^3.3.6", "node-html-markdown": "^1.1.3", "node-ssh": "^12.0.0", "nodemailer": "^6.7.1", "otpauth": "^9.1.1", "pdfjs-dist": "^2.16.105", "pg": "^8.3.0", "pg-promise": "^10.5.8", "pretty-bytes": "^5.6.0", "promise-ftp": "^1.3.5", "pyodide": "^0.23.4", "redis": "^3.1.1", "rfc2047": "^4.0.1", "rhea": "^1.0.11", "rss-parser": "^3.7.0", "semver": "^7.5.4", "showdown": "^2.0.3", "simple-git": "^3.17.0", "snowflake-sdk": "^1.8.0", "ssh2-sftp-client": "^7.0.0", "tmp-promise": "^3.0.2", "typedi": "^0.10.0", "uuid": "^8.3.2", "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", "xml2js": "^0.5.0", "n8n-workflow": "1.14.1" }, "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", "typecheck": "tsc", "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && gulp build:icons && gulp build:translations && pnpm build:metadata", "build:translations": "gulp build:translations", "build:metadata": "pnpm n8n-generate-known && pnpm n8n-generate-ui-types", "format": "prettier --write . --ignore-path ../../.prettierignore", "lint": "eslint . --quiet && node ./scripts/validate-load-options-methods.js", "lintfix": "eslint . --fix", "watch": "tsc-watch -p tsconfig.build.json --onCompilationComplete \"tsc-alias -p tsconfig.build.json\" --onSuccess \"pnpm n8n-generate-ui-types\"", "test": "jest" } }, "extraction_time_ms": 5, "extracted_at": "2025-06-07T17:49:22.782Z" } ``` -------------------------------------------------------------------------------- /tests/extracted-nodes-db/n8n-nodes-base__Slack.json: -------------------------------------------------------------------------------- ```json { "node_type": "n8n-nodes-base.Slack", "name": "Slack", "package_name": "n8n-nodes-base", "code_hash": "0ed10d0646f3c595406359edfa2c293dac41991cee59ad4fb3ccf2bb70eca6fc", "code_length": 1007, "source_location": "node_modules/n8n-nodes-base/dist/nodes/Slack/Slack.node.js", "has_credentials": false, "source_code": "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Slack = void 0;\nconst n8n_workflow_1 = require(\"n8n-workflow\");\nconst SlackV1_node_1 = require(\"./V1/SlackV1.node\");\nconst SlackV2_node_1 = require(\"./V2/SlackV2.node\");\nclass Slack extends n8n_workflow_1.VersionedNodeType {\n constructor() {\n const baseDescription = {\n displayName: 'Slack',\n name: 'slack',\n icon: 'file:slack.svg',\n group: ['output'],\n subtitle: '={{$parameter[\"operation\"] + \": \" + $parameter[\"resource\"]}}',\n description: 'Consume Slack API',\n defaultVersion: 2.1,\n };\n const nodeVersions = {\n 1: new SlackV1_node_1.SlackV1(baseDescription),\n 2: new SlackV2_node_1.SlackV2(baseDescription),\n 2.1: new SlackV2_node_1.SlackV2(baseDescription),\n };\n super(nodeVersions, baseDescription);\n }\n}\nexports.Slack = Slack;\n//# sourceMappingURL=Slack.node.js.map", "package_info": { "name": "n8n-nodes-base", "version": "1.14.1", "description": "Base nodes of n8n", "license": "SEE LICENSE IN LICENSE.md", "homepage": "https://n8n.io", "author": { "name": "Jan Oberhauser", "email": "[email protected]" }, "main": "index.js", "repository": { "type": "git", "url": "git+https://github.com/n8n-io/n8n.git" }, "files": [ "dist" ], "n8n": { "credentials": [ "dist/credentials/ActionNetworkApi.credentials.js", "dist/credentials/ActiveCampaignApi.credentials.js", "dist/credentials/AcuitySchedulingApi.credentials.js", "dist/credentials/AcuitySchedulingOAuth2Api.credentials.js", "dist/credentials/AdaloApi.credentials.js", "dist/credentials/AffinityApi.credentials.js", "dist/credentials/AgileCrmApi.credentials.js", "dist/credentials/AirtableApi.credentials.js", "dist/credentials/AirtableOAuth2Api.credentials.js", "dist/credentials/AirtableTokenApi.credentials.js", "dist/credentials/AlienVaultApi.credentials.js", "dist/credentials/Amqp.credentials.js", "dist/credentials/ApiTemplateIoApi.credentials.js", "dist/credentials/AsanaApi.credentials.js", "dist/credentials/AsanaOAuth2Api.credentials.js", "dist/credentials/Auth0ManagementApi.credentials.js", "dist/credentials/AutomizyApi.credentials.js", "dist/credentials/AutopilotApi.credentials.js", "dist/credentials/Aws.credentials.js", "dist/credentials/BambooHrApi.credentials.js", "dist/credentials/BannerbearApi.credentials.js", "dist/credentials/BaserowApi.credentials.js", "dist/credentials/BeeminderApi.credentials.js", "dist/credentials/BitbucketApi.credentials.js", "dist/credentials/BitlyApi.credentials.js", "dist/credentials/BitlyOAuth2Api.credentials.js", "dist/credentials/BitwardenApi.credentials.js", "dist/credentials/BoxOAuth2Api.credentials.js", "dist/credentials/BrandfetchApi.credentials.js", "dist/credentials/BubbleApi.credentials.js", "dist/credentials/CalApi.credentials.js", "dist/credentials/CalendlyApi.credentials.js", "dist/credentials/CarbonBlackApi.credentials.js", "dist/credentials/ChargebeeApi.credentials.js", "dist/credentials/CircleCiApi.credentials.js", "dist/credentials/CiscoMerakiApi.credentials.js", "dist/credentials/CiscoSecureEndpointApi.credentials.js", "dist/credentials/CiscoWebexOAuth2Api.credentials.js", "dist/credentials/CiscoUmbrellaApi.credentials.js", "dist/credentials/CitrixAdcApi.credentials.js", "dist/credentials/CloudflareApi.credentials.js", "dist/credentials/ClearbitApi.credentials.js", "dist/credentials/ClickUpApi.credentials.js", "dist/credentials/ClickUpOAuth2Api.credentials.js", "dist/credentials/ClockifyApi.credentials.js", "dist/credentials/CockpitApi.credentials.js", "dist/credentials/CodaApi.credentials.js", "dist/credentials/ContentfulApi.credentials.js", "dist/credentials/ConvertKitApi.credentials.js", "dist/credentials/CopperApi.credentials.js", "dist/credentials/CortexApi.credentials.js", "dist/credentials/CrateDb.credentials.js", "dist/credentials/CrowdStrikeOAuth2Api.credentials.js", "dist/credentials/CrowdDevApi.credentials.js", "dist/credentials/CustomerIoApi.credentials.js", "dist/credentials/DeepLApi.credentials.js", "dist/credentials/DemioApi.credentials.js", "dist/credentials/DhlApi.credentials.js", "dist/credentials/DiscourseApi.credentials.js", "dist/credentials/DisqusApi.credentials.js", "dist/credentials/DriftApi.credentials.js", "dist/credentials/DriftOAuth2Api.credentials.js", "dist/credentials/DropboxApi.credentials.js", "dist/credentials/DropboxOAuth2Api.credentials.js", "dist/credentials/DropcontactApi.credentials.js", "dist/credentials/EgoiApi.credentials.js", "dist/credentials/ElasticsearchApi.credentials.js", "dist/credentials/ElasticSecurityApi.credentials.js", "dist/credentials/EmeliaApi.credentials.js", "dist/credentials/ERPNextApi.credentials.js", "dist/credentials/EventbriteApi.credentials.js", "dist/credentials/EventbriteOAuth2Api.credentials.js", "dist/credentials/F5BigIpApi.credentials.js", "dist/credentials/FacebookGraphApi.credentials.js", "dist/credentials/FacebookGraphAppApi.credentials.js", "dist/credentials/FacebookLeadAdsOAuth2Api.credentials.js", "dist/credentials/FigmaApi.credentials.js", "dist/credentials/FileMaker.credentials.js", "dist/credentials/FlowApi.credentials.js", "dist/credentials/FormIoApi.credentials.js", "dist/credentials/FormstackApi.credentials.js", "dist/credentials/FormstackOAuth2Api.credentials.js", "dist/credentials/FortiGateApi.credentials.js", "dist/credentials/FreshdeskApi.credentials.js", "dist/credentials/FreshserviceApi.credentials.js", "dist/credentials/FreshworksCrmApi.credentials.js", "dist/credentials/Ftp.credentials.js", "dist/credentials/GetResponseApi.credentials.js", "dist/credentials/GetResponseOAuth2Api.credentials.js", "dist/credentials/GhostAdminApi.credentials.js", "dist/credentials/GhostContentApi.credentials.js", "dist/credentials/GithubApi.credentials.js", "dist/credentials/GithubOAuth2Api.credentials.js", "dist/credentials/GitlabApi.credentials.js", "dist/credentials/GitlabOAuth2Api.credentials.js", "dist/credentials/GitPassword.credentials.js", "dist/credentials/GmailOAuth2Api.credentials.js", "dist/credentials/GoogleAdsOAuth2Api.credentials.js", "dist/credentials/GoogleAnalyticsOAuth2Api.credentials.js", "dist/credentials/GoogleApi.credentials.js", "dist/credentials/GoogleBigQueryOAuth2Api.credentials.js", "dist/credentials/GoogleBooksOAuth2Api.credentials.js", "dist/credentials/GoogleCalendarOAuth2Api.credentials.js", "dist/credentials/GoogleCloudNaturalLanguageOAuth2Api.credentials.js", "dist/credentials/GoogleCloudStorageOAuth2Api.credentials.js", "dist/credentials/GoogleContactsOAuth2Api.credentials.js", "dist/credentials/GoogleDocsOAuth2Api.credentials.js", "dist/credentials/GoogleDriveOAuth2Api.credentials.js", "dist/credentials/GoogleFirebaseCloudFirestoreOAuth2Api.credentials.js", "dist/credentials/GoogleFirebaseRealtimeDatabaseOAuth2Api.credentials.js", "dist/credentials/GoogleOAuth2Api.credentials.js", "dist/credentials/GooglePerspectiveOAuth2Api.credentials.js", "dist/credentials/GoogleSheetsOAuth2Api.credentials.js", "dist/credentials/GoogleSheetsTriggerOAuth2Api.credentials.js", "dist/credentials/GoogleSlidesOAuth2Api.credentials.js", "dist/credentials/GoogleTasksOAuth2Api.credentials.js", "dist/credentials/GoogleTranslateOAuth2Api.credentials.js", "dist/credentials/GotifyApi.credentials.js", "dist/credentials/GoToWebinarOAuth2Api.credentials.js", "dist/credentials/GristApi.credentials.js", "dist/credentials/GrafanaApi.credentials.js", "dist/credentials/GSuiteAdminOAuth2Api.credentials.js", "dist/credentials/GumroadApi.credentials.js", "dist/credentials/HaloPSAApi.credentials.js", "dist/credentials/HarvestApi.credentials.js", "dist/credentials/HarvestOAuth2Api.credentials.js", "dist/credentials/HelpScoutOAuth2Api.credentials.js", "dist/credentials/HighLevelApi.credentials.js", "dist/credentials/HomeAssistantApi.credentials.js", "dist/credentials/HttpBasicAuth.credentials.js", "dist/credentials/HttpDigestAuth.credentials.js", "dist/credentials/HttpHeaderAuth.credentials.js", "dist/credentials/HttpCustomAuth.credentials.js", "dist/credentials/HttpQueryAuth.credentials.js", "dist/credentials/HubspotApi.credentials.js", "dist/credentials/HubspotAppToken.credentials.js", "dist/credentials/HubspotDeveloperApi.credentials.js", "dist/credentials/HubspotOAuth2Api.credentials.js", "dist/credentials/HumanticAiApi.credentials.js", "dist/credentials/HunterApi.credentials.js", "dist/credentials/HybridAnalysisApi.credentials.js", "dist/credentials/Imap.credentials.js", "dist/credentials/ImpervaWafApi.credentials.js", "dist/credentials/IntercomApi.credentials.js", "dist/credentials/InvoiceNinjaApi.credentials.js", "dist/credentials/IterableApi.credentials.js", "dist/credentials/JenkinsApi.credentials.js", "dist/credentials/JiraSoftwareCloudApi.credentials.js", "dist/credentials/JiraSoftwareServerApi.credentials.js", "dist/credentials/JotFormApi.credentials.js", "dist/credentials/Kafka.credentials.js", "dist/credentials/KeapOAuth2Api.credentials.js", "dist/credentials/KibanaApi.credentials.js", "dist/credentials/KitemakerApi.credentials.js", "dist/credentials/KoBoToolboxApi.credentials.js", "dist/credentials/Ldap.credentials.js", "dist/credentials/LemlistApi.credentials.js", "dist/credentials/LinearApi.credentials.js", "dist/credentials/LinearOAuth2Api.credentials.js", "dist/credentials/LineNotifyOAuth2Api.credentials.js", "dist/credentials/LingvaNexApi.credentials.js", "dist/credentials/LinkedInOAuth2Api.credentials.js", "dist/credentials/LoneScaleApi.credentials.js", "dist/credentials/Magento2Api.credentials.js", "dist/credentials/MailcheckApi.credentials.js", "dist/credentials/MailchimpApi.credentials.js", "dist/credentials/MailchimpOAuth2Api.credentials.js", "dist/credentials/MailerLiteApi.credentials.js", "dist/credentials/MailgunApi.credentials.js", "dist/credentials/MailjetEmailApi.credentials.js", "dist/credentials/MailjetSmsApi.credentials.js", "dist/credentials/MandrillApi.credentials.js", "dist/credentials/MarketstackApi.credentials.js", "dist/credentials/MatrixApi.credentials.js", "dist/credentials/MattermostApi.credentials.js", "dist/credentials/MauticApi.credentials.js", "dist/credentials/MauticOAuth2Api.credentials.js", "dist/credentials/MediumApi.credentials.js", "dist/credentials/MediumOAuth2Api.credentials.js", "dist/credentials/MetabaseApi.credentials.js", "dist/credentials/MessageBirdApi.credentials.js", "dist/credentials/MetabaseApi.credentials.js", "dist/credentials/MicrosoftDynamicsOAuth2Api.credentials.js", "dist/credentials/MicrosoftEntraOAuth2Api.credentials.js", "dist/credentials/MicrosoftExcelOAuth2Api.credentials.js", "dist/credentials/MicrosoftGraphSecurityOAuth2Api.credentials.js", "dist/credentials/MicrosoftOAuth2Api.credentials.js", "dist/credentials/MicrosoftOneDriveOAuth2Api.credentials.js", "dist/credentials/MicrosoftOutlookOAuth2Api.credentials.js", "dist/credentials/MicrosoftSql.credentials.js", "dist/credentials/MicrosoftTeamsOAuth2Api.credentials.js", "dist/credentials/MicrosoftToDoOAuth2Api.credentials.js", "dist/credentials/MindeeInvoiceApi.credentials.js", "dist/credentials/MindeeReceiptApi.credentials.js", "dist/credentials/MispApi.credentials.js", "dist/credentials/MistApi.credentials.js", "dist/credentials/MoceanApi.credentials.js", "dist/credentials/MondayComApi.credentials.js", "dist/credentials/MondayComOAuth2Api.credentials.js", "dist/credentials/MongoDb.credentials.js", "dist/credentials/MonicaCrmApi.credentials.js", "dist/credentials/Mqtt.credentials.js", "dist/credentials/Msg91Api.credentials.js", "dist/credentials/MySql.credentials.js", "dist/credentials/N8nApi.credentials.js", "dist/credentials/NasaApi.credentials.js", "dist/credentials/NetlifyApi.credentials.js", "dist/credentials/NextCloudApi.credentials.js", "dist/credentials/NextCloudOAuth2Api.credentials.js", "dist/credentials/NocoDb.credentials.js", "dist/credentials/NocoDbApiToken.credentials.js", "dist/credentials/NotionApi.credentials.js", "dist/credentials/NotionOAuth2Api.credentials.js", "dist/credentials/NpmApi.credentials.js", "dist/credentials/OAuth1Api.credentials.js", "dist/credentials/OAuth2Api.credentials.js", "dist/credentials/OdooApi.credentials.js", "dist/credentials/OktaApi.credentials.js", "dist/credentials/OneSimpleApi.credentials.js", "dist/credentials/OnfleetApi.credentials.js", "dist/credentials/OpenAiApi.credentials.js", "dist/credentials/OpenCTIApi.credentials.js", "dist/credentials/OpenWeatherMapApi.credentials.js", "dist/credentials/OrbitApi.credentials.js", "dist/credentials/OuraApi.credentials.js", "dist/credentials/PaddleApi.credentials.js", "dist/credentials/PagerDutyApi.credentials.js", "dist/credentials/PagerDutyOAuth2Api.credentials.js", "dist/credentials/PayPalApi.credentials.js", "dist/credentials/PeekalinkApi.credentials.js", "dist/credentials/PhantombusterApi.credentials.js", "dist/credentials/PhilipsHueOAuth2Api.credentials.js", "dist/credentials/PipedriveApi.credentials.js", "dist/credentials/PipedriveOAuth2Api.credentials.js", "dist/credentials/PlivoApi.credentials.js", "dist/credentials/Postgres.credentials.js", "dist/credentials/PostHogApi.credentials.js", "dist/credentials/PostmarkApi.credentials.js", "dist/credentials/ProfitWellApi.credentials.js", "dist/credentials/PushbulletOAuth2Api.credentials.js", "dist/credentials/PushcutApi.credentials.js", "dist/credentials/PushoverApi.credentials.js", "dist/credentials/QRadarApi.credentials.js", "dist/credentials/QualysApi.credentials.js", "dist/credentials/QuestDb.credentials.js", "dist/credentials/QuickBaseApi.credentials.js", "dist/credentials/QuickBooksOAuth2Api.credentials.js", "dist/credentials/RabbitMQ.credentials.js", "dist/credentials/RaindropOAuth2Api.credentials.js", "dist/credentials/RecordedFutureApi.credentials.js", "dist/credentials/RedditOAuth2Api.credentials.js", "dist/credentials/Redis.credentials.js", "dist/credentials/RocketchatApi.credentials.js", "dist/credentials/RundeckApi.credentials.js", "dist/credentials/S3.credentials.js", "dist/credentials/SalesforceJwtApi.credentials.js", "dist/credentials/SalesforceOAuth2Api.credentials.js", "dist/credentials/SalesmateApi.credentials.js", "dist/credentials/SeaTableApi.credentials.js", "dist/credentials/SecurityScorecardApi.credentials.js", "dist/credentials/SegmentApi.credentials.js", "dist/credentials/SekoiaApi.credentials.js", "dist/credentials/SendGridApi.credentials.js", "dist/credentials/BrevoApi.credentials.js", "dist/credentials/SendyApi.credentials.js", "dist/credentials/SentryIoApi.credentials.js", "dist/credentials/SentryIoOAuth2Api.credentials.js", "dist/credentials/SentryIoServerApi.credentials.js", "dist/credentials/ServiceNowOAuth2Api.credentials.js", "dist/credentials/ServiceNowBasicApi.credentials.js", "dist/credentials/Sftp.credentials.js", "dist/credentials/ShopifyApi.credentials.js", "dist/credentials/ShopifyAccessTokenApi.credentials.js", "dist/credentials/ShopifyOAuth2Api.credentials.js", "dist/credentials/Signl4Api.credentials.js", "dist/credentials/SlackApi.credentials.js", "dist/credentials/SlackOAuth2Api.credentials.js", "dist/credentials/Sms77Api.credentials.js", "dist/credentials/Smtp.credentials.js", "dist/credentials/Snowflake.credentials.js", "dist/credentials/SplunkApi.credentials.js", "dist/credentials/SpontitApi.credentials.js", "dist/credentials/SpotifyOAuth2Api.credentials.js", "dist/credentials/ShufflerApi.credentials.js", "dist/credentials/SshPassword.credentials.js", "dist/credentials/SshPrivateKey.credentials.js", "dist/credentials/StackbyApi.credentials.js", "dist/credentials/StoryblokContentApi.credentials.js", "dist/credentials/StoryblokManagementApi.credentials.js", "dist/credentials/StrapiApi.credentials.js", "dist/credentials/StrapiTokenApi.credentials.js", "dist/credentials/StravaOAuth2Api.credentials.js", "dist/credentials/StripeApi.credentials.js", "dist/credentials/SupabaseApi.credentials.js", "dist/credentials/SurveyMonkeyApi.credentials.js", "dist/credentials/SurveyMonkeyOAuth2Api.credentials.js", "dist/credentials/SyncroMspApi.credentials.js", "dist/credentials/TaigaApi.credentials.js", "dist/credentials/TapfiliateApi.credentials.js", "dist/credentials/TelegramApi.credentials.js", "dist/credentials/TheHiveProjectApi.credentials.js", "dist/credentials/TheHiveApi.credentials.js", "dist/credentials/TimescaleDb.credentials.js", "dist/credentials/TodoistApi.credentials.js", "dist/credentials/TodoistOAuth2Api.credentials.js", "dist/credentials/TogglApi.credentials.js", "dist/credentials/TotpApi.credentials.js", "dist/credentials/TravisCiApi.credentials.js", "dist/credentials/TrellixEpoApi.credentials.js", "dist/credentials/TrelloApi.credentials.js", "dist/credentials/TwakeCloudApi.credentials.js", "dist/credentials/TwakeServerApi.credentials.js", "dist/credentials/TwilioApi.credentials.js", "dist/credentials/TwistOAuth2Api.credentials.js", "dist/credentials/TwitterOAuth1Api.credentials.js", "dist/credentials/TwitterOAuth2Api.credentials.js", "dist/credentials/TypeformApi.credentials.js", "dist/credentials/TypeformOAuth2Api.credentials.js", "dist/credentials/UnleashedSoftwareApi.credentials.js", "dist/credentials/UpleadApi.credentials.js", "dist/credentials/UProcApi.credentials.js", "dist/credentials/UptimeRobotApi.credentials.js", "dist/credentials/UrlScanIoApi.credentials.js", "dist/credentials/VeroApi.credentials.js", "dist/credentials/VirusTotalApi.credentials.js", "dist/credentials/VonageApi.credentials.js", "dist/credentials/VenafiTlsProtectCloudApi.credentials.js", "dist/credentials/VenafiTlsProtectDatacenterApi.credentials.js", "dist/credentials/WebflowApi.credentials.js", "dist/credentials/WebflowOAuth2Api.credentials.js", "dist/credentials/WekanApi.credentials.js", "dist/credentials/WhatsAppApi.credentials.js", "dist/credentials/WiseApi.credentials.js", "dist/credentials/WooCommerceApi.credentials.js", "dist/credentials/WordpressApi.credentials.js", "dist/credentials/WorkableApi.credentials.js", "dist/credentials/WufooApi.credentials.js", "dist/credentials/XeroOAuth2Api.credentials.js", "dist/credentials/YourlsApi.credentials.js", "dist/credentials/YouTubeOAuth2Api.credentials.js", "dist/credentials/ZammadBasicAuthApi.credentials.js", "dist/credentials/ZammadTokenAuthApi.credentials.js", "dist/credentials/ZendeskApi.credentials.js", "dist/credentials/ZendeskOAuth2Api.credentials.js", "dist/credentials/ZohoOAuth2Api.credentials.js", "dist/credentials/ZoomApi.credentials.js", "dist/credentials/ZoomOAuth2Api.credentials.js", "dist/credentials/ZscalerZiaApi.credentials.js", "dist/credentials/ZulipApi.credentials.js" ], "nodes": [ "dist/nodes/ActionNetwork/ActionNetwork.node.js", "dist/nodes/ActiveCampaign/ActiveCampaign.node.js", "dist/nodes/ActiveCampaign/ActiveCampaignTrigger.node.js", "dist/nodes/AcuityScheduling/AcuitySchedulingTrigger.node.js", "dist/nodes/Adalo/Adalo.node.js", "dist/nodes/Affinity/Affinity.node.js", "dist/nodes/Affinity/AffinityTrigger.node.js", "dist/nodes/AgileCrm/AgileCrm.node.js", "dist/nodes/Airtable/Airtable.node.js", "dist/nodes/Airtable/AirtableTrigger.node.js", "dist/nodes/Amqp/Amqp.node.js", "dist/nodes/Amqp/AmqpTrigger.node.js", "dist/nodes/ApiTemplateIo/ApiTemplateIo.node.js", "dist/nodes/Asana/Asana.node.js", "dist/nodes/Asana/AsanaTrigger.node.js", "dist/nodes/Automizy/Automizy.node.js", "dist/nodes/Autopilot/Autopilot.node.js", "dist/nodes/Autopilot/AutopilotTrigger.node.js", "dist/nodes/Aws/AwsLambda.node.js", "dist/nodes/Aws/AwsSns.node.js", "dist/nodes/Aws/AwsSnsTrigger.node.js", "dist/nodes/Aws/CertificateManager/AwsCertificateManager.node.js", "dist/nodes/Aws/Comprehend/AwsComprehend.node.js", "dist/nodes/Aws/DynamoDB/AwsDynamoDB.node.js", "dist/nodes/Aws/ELB/AwsElb.node.js", "dist/nodes/Aws/Rekognition/AwsRekognition.node.js", "dist/nodes/Aws/S3/AwsS3.node.js", "dist/nodes/Aws/SES/AwsSes.node.js", "dist/nodes/Aws/SQS/AwsSqs.node.js", "dist/nodes/Aws/Textract/AwsTextract.node.js", "dist/nodes/Aws/Transcribe/AwsTranscribe.node.js", "dist/nodes/BambooHr/BambooHr.node.js", "dist/nodes/Bannerbear/Bannerbear.node.js", "dist/nodes/Baserow/Baserow.node.js", "dist/nodes/Beeminder/Beeminder.node.js", "dist/nodes/Bitbucket/BitbucketTrigger.node.js", "dist/nodes/Bitly/Bitly.node.js", "dist/nodes/Bitwarden/Bitwarden.node.js", "dist/nodes/Box/Box.node.js", "dist/nodes/Box/BoxTrigger.node.js", "dist/nodes/Brandfetch/Brandfetch.node.js", "dist/nodes/Bubble/Bubble.node.js", "dist/nodes/Cal/CalTrigger.node.js", "dist/nodes/Calendly/CalendlyTrigger.node.js", "dist/nodes/Chargebee/Chargebee.node.js", "dist/nodes/Chargebee/ChargebeeTrigger.node.js", "dist/nodes/CircleCi/CircleCi.node.js", "dist/nodes/Cisco/Webex/CiscoWebex.node.js", "dist/nodes/Citrix/ADC/CitrixAdc.node.js", "dist/nodes/Cisco/Webex/CiscoWebexTrigger.node.js", "dist/nodes/Cloudflare/Cloudflare.node.js", "dist/nodes/Clearbit/Clearbit.node.js", "dist/nodes/ClickUp/ClickUp.node.js", "dist/nodes/ClickUp/ClickUpTrigger.node.js", "dist/nodes/Clockify/Clockify.node.js", "dist/nodes/Clockify/ClockifyTrigger.node.js", "dist/nodes/Cockpit/Cockpit.node.js", "dist/nodes/Coda/Coda.node.js", "dist/nodes/Code/Code.node.js", "dist/nodes/CoinGecko/CoinGecko.node.js", "dist/nodes/CompareDatasets/CompareDatasets.node.js", "dist/nodes/Compression/Compression.node.js", "dist/nodes/Contentful/Contentful.node.js", "dist/nodes/ConvertKit/ConvertKit.node.js", "dist/nodes/ConvertKit/ConvertKitTrigger.node.js", "dist/nodes/Copper/Copper.node.js", "dist/nodes/Copper/CopperTrigger.node.js", "dist/nodes/Cortex/Cortex.node.js", "dist/nodes/CrateDb/CrateDb.node.js", "dist/nodes/Cron/Cron.node.js", "dist/nodes/CrowdDev/CrowdDev.node.js", "dist/nodes/CrowdDev/CrowdDevTrigger.node.js", "dist/nodes/Crypto/Crypto.node.js", "dist/nodes/CustomerIo/CustomerIo.node.js", "dist/nodes/CustomerIo/CustomerIoTrigger.node.js", "dist/nodes/DateTime/DateTime.node.js", "dist/nodes/DebugHelper/DebugHelper.node.js", "dist/nodes/DeepL/DeepL.node.js", "dist/nodes/Demio/Demio.node.js", "dist/nodes/Dhl/Dhl.node.js", "dist/nodes/Discord/Discord.node.js", "dist/nodes/Discourse/Discourse.node.js", "dist/nodes/Disqus/Disqus.node.js", "dist/nodes/Drift/Drift.node.js", "dist/nodes/Dropbox/Dropbox.node.js", "dist/nodes/Dropcontact/Dropcontact.node.js", "dist/nodes/EditImage/EditImage.node.js", "dist/nodes/E2eTest/E2eTest.node.js", "dist/nodes/Egoi/Egoi.node.js", "dist/nodes/Elastic/Elasticsearch/Elasticsearch.node.js", "dist/nodes/Elastic/ElasticSecurity/ElasticSecurity.node.js", "dist/nodes/EmailReadImap/EmailReadImap.node.js", "dist/nodes/EmailSend/EmailSend.node.js", "dist/nodes/Emelia/Emelia.node.js", "dist/nodes/Emelia/EmeliaTrigger.node.js", "dist/nodes/ERPNext/ERPNext.node.js", "dist/nodes/ErrorTrigger/ErrorTrigger.node.js", "dist/nodes/Eventbrite/EventbriteTrigger.node.js", "dist/nodes/ExecuteCommand/ExecuteCommand.node.js", "dist/nodes/ExecuteWorkflow/ExecuteWorkflow.node.js", "dist/nodes/ExecuteWorkflowTrigger/ExecuteWorkflowTrigger.node.js", "dist/nodes/ExecutionData/ExecutionData.node.js", "dist/nodes/Facebook/FacebookGraphApi.node.js", "dist/nodes/Facebook/FacebookTrigger.node.js", "dist/nodes/FacebookLeadAds/FacebookLeadAdsTrigger.node.js", "dist/nodes/Figma/FigmaTrigger.node.js", "dist/nodes/FileMaker/FileMaker.node.js", "dist/nodes/Filter/Filter.node.js", "dist/nodes/Flow/Flow.node.js", "dist/nodes/Flow/FlowTrigger.node.js", "dist/nodes/Form/FormTrigger.node.js", "dist/nodes/FormIo/FormIoTrigger.node.js", "dist/nodes/Formstack/FormstackTrigger.node.js", "dist/nodes/Freshdesk/Freshdesk.node.js", "dist/nodes/Freshservice/Freshservice.node.js", "dist/nodes/FreshworksCrm/FreshworksCrm.node.js", "dist/nodes/Ftp/Ftp.node.js", "dist/nodes/Function/Function.node.js", "dist/nodes/FunctionItem/FunctionItem.node.js", "dist/nodes/GetResponse/GetResponse.node.js", "dist/nodes/GetResponse/GetResponseTrigger.node.js", "dist/nodes/Ghost/Ghost.node.js", "dist/nodes/Git/Git.node.js", "dist/nodes/Github/Github.node.js", "dist/nodes/Github/GithubTrigger.node.js", "dist/nodes/Gitlab/Gitlab.node.js", "dist/nodes/Gitlab/GitlabTrigger.node.js", "dist/nodes/Google/Ads/GoogleAds.node.js", "dist/nodes/Google/Analytics/GoogleAnalytics.node.js", "dist/nodes/Google/BigQuery/GoogleBigQuery.node.js", "dist/nodes/Google/Books/GoogleBooks.node.js", "dist/nodes/Google/Calendar/GoogleCalendar.node.js", "dist/nodes/Google/Calendar/GoogleCalendarTrigger.node.js", "dist/nodes/Google/Chat/GoogleChat.node.js", "dist/nodes/Google/CloudNaturalLanguage/GoogleCloudNaturalLanguage.node.js", "dist/nodes/Google/CloudStorage/GoogleCloudStorage.node.js", "dist/nodes/Google/Contacts/GoogleContacts.node.js", "dist/nodes/Google/Docs/GoogleDocs.node.js", "dist/nodes/Google/Drive/GoogleDrive.node.js", "dist/nodes/Google/Drive/GoogleDriveTrigger.node.js", "dist/nodes/Google/Firebase/CloudFirestore/GoogleFirebaseCloudFirestore.node.js", "dist/nodes/Google/Firebase/RealtimeDatabase/GoogleFirebaseRealtimeDatabase.node.js", "dist/nodes/Google/Gmail/Gmail.node.js", "dist/nodes/Google/Gmail/GmailTrigger.node.js", "dist/nodes/Google/GSuiteAdmin/GSuiteAdmin.node.js", "dist/nodes/Google/Perspective/GooglePerspective.node.js", "dist/nodes/Google/Sheet/GoogleSheets.node.js", "dist/nodes/Google/Sheet/GoogleSheetsTrigger.node.js", "dist/nodes/Google/Slides/GoogleSlides.node.js", "dist/nodes/Google/Task/GoogleTasks.node.js", "dist/nodes/Google/Translate/GoogleTranslate.node.js", "dist/nodes/Google/YouTube/YouTube.node.js", "dist/nodes/Gotify/Gotify.node.js", "dist/nodes/GoToWebinar/GoToWebinar.node.js", "dist/nodes/Grafana/Grafana.node.js", "dist/nodes/GraphQL/GraphQL.node.js", "dist/nodes/Grist/Grist.node.js", "dist/nodes/Gumroad/GumroadTrigger.node.js", "dist/nodes/HackerNews/HackerNews.node.js", "dist/nodes/HaloPSA/HaloPSA.node.js", "dist/nodes/Harvest/Harvest.node.js", "dist/nodes/HelpScout/HelpScout.node.js", "dist/nodes/HelpScout/HelpScoutTrigger.node.js", "dist/nodes/HighLevel/HighLevel.node.js", "dist/nodes/HomeAssistant/HomeAssistant.node.js", "dist/nodes/HtmlExtract/HtmlExtract.node.js", "dist/nodes/Html/Html.node.js", "dist/nodes/HttpRequest/HttpRequest.node.js", "dist/nodes/Hubspot/Hubspot.node.js", "dist/nodes/Hubspot/HubspotTrigger.node.js", "dist/nodes/HumanticAI/HumanticAi.node.js", "dist/nodes/Hunter/Hunter.node.js", "dist/nodes/ICalendar/ICalendar.node.js", "dist/nodes/If/If.node.js", "dist/nodes/Intercom/Intercom.node.js", "dist/nodes/Interval/Interval.node.js", "dist/nodes/InvoiceNinja/InvoiceNinja.node.js", "dist/nodes/InvoiceNinja/InvoiceNinjaTrigger.node.js", "dist/nodes/ItemLists/ItemLists.node.js", "dist/nodes/Iterable/Iterable.node.js", "dist/nodes/Jenkins/Jenkins.node.js", "dist/nodes/Jira/Jira.node.js", "dist/nodes/Jira/JiraTrigger.node.js", "dist/nodes/JotForm/JotFormTrigger.node.js", "dist/nodes/Kafka/Kafka.node.js", "dist/nodes/Kafka/KafkaTrigger.node.js", "dist/nodes/Keap/Keap.node.js", "dist/nodes/Keap/KeapTrigger.node.js", "dist/nodes/Kitemaker/Kitemaker.node.js", "dist/nodes/KoBoToolbox/KoBoToolbox.node.js", "dist/nodes/KoBoToolbox/KoBoToolboxTrigger.node.js", "dist/nodes/Ldap/Ldap.node.js", "dist/nodes/Lemlist/Lemlist.node.js", "dist/nodes/Lemlist/LemlistTrigger.node.js", "dist/nodes/Line/Line.node.js", "dist/nodes/Linear/Linear.node.js", "dist/nodes/Linear/LinearTrigger.node.js", "dist/nodes/LingvaNex/LingvaNex.node.js", "dist/nodes/LinkedIn/LinkedIn.node.js", "dist/nodes/LocalFileTrigger/LocalFileTrigger.node.js", "dist/nodes/LoneScale/LoneScaleTrigger.node.js", "dist/nodes/LoneScale/LoneScale.node.js", "dist/nodes/Magento/Magento2.node.js", "dist/nodes/Mailcheck/Mailcheck.node.js", "dist/nodes/Mailchimp/Mailchimp.node.js", "dist/nodes/Mailchimp/MailchimpTrigger.node.js", "dist/nodes/MailerLite/MailerLite.node.js", "dist/nodes/MailerLite/MailerLiteTrigger.node.js", "dist/nodes/Mailgun/Mailgun.node.js", "dist/nodes/Mailjet/Mailjet.node.js", "dist/nodes/Mailjet/MailjetTrigger.node.js", "dist/nodes/Mandrill/Mandrill.node.js", "dist/nodes/ManualTrigger/ManualTrigger.node.js", "dist/nodes/Markdown/Markdown.node.js", "dist/nodes/Marketstack/Marketstack.node.js", "dist/nodes/Matrix/Matrix.node.js", "dist/nodes/Mattermost/Mattermost.node.js", "dist/nodes/Mautic/Mautic.node.js", "dist/nodes/Mautic/MauticTrigger.node.js", "dist/nodes/Medium/Medium.node.js", "dist/nodes/Merge/Merge.node.js", "dist/nodes/MessageBird/MessageBird.node.js", "dist/nodes/Metabase/Metabase.node.js", "dist/nodes/Microsoft/Dynamics/MicrosoftDynamicsCrm.node.js", "dist/nodes/Microsoft/Excel/MicrosoftExcel.node.js", "dist/nodes/Microsoft/GraphSecurity/MicrosoftGraphSecurity.node.js", "dist/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.js", "dist/nodes/Microsoft/Outlook/MicrosoftOutlook.node.js", "dist/nodes/Microsoft/Sql/MicrosoftSql.node.js", "dist/nodes/Microsoft/Teams/MicrosoftTeams.node.js", "dist/nodes/Microsoft/ToDo/MicrosoftToDo.node.js", "dist/nodes/Mindee/Mindee.node.js", "dist/nodes/Misp/Misp.node.js", "dist/nodes/Mocean/Mocean.node.js", "dist/nodes/MondayCom/MondayCom.node.js", "dist/nodes/MongoDb/MongoDb.node.js", "dist/nodes/MonicaCrm/MonicaCrm.node.js", "dist/nodes/MoveBinaryData/MoveBinaryData.node.js", "dist/nodes/MQTT/Mqtt.node.js", "dist/nodes/MQTT/MqttTrigger.node.js", "dist/nodes/Msg91/Msg91.node.js", "dist/nodes/MySql/MySql.node.js", "dist/nodes/N8n/N8n.node.js", "dist/nodes/N8nTrainingCustomerDatastore/N8nTrainingCustomerDatastore.node.js", "dist/nodes/N8nTrainingCustomerMessenger/N8nTrainingCustomerMessenger.node.js", "dist/nodes/N8nTrigger/N8nTrigger.node.js", "dist/nodes/Nasa/Nasa.node.js", "dist/nodes/Netlify/Netlify.node.js", "dist/nodes/Netlify/NetlifyTrigger.node.js", "dist/nodes/NextCloud/NextCloud.node.js", "dist/nodes/NocoDB/NocoDB.node.js", "dist/nodes/Brevo/Brevo.node.js", "dist/nodes/Brevo/BrevoTrigger.node.js", "dist/nodes/StickyNote/StickyNote.node.js", "dist/nodes/NoOp/NoOp.node.js", "dist/nodes/Onfleet/Onfleet.node.js", "dist/nodes/Onfleet/OnfleetTrigger.node.js", "dist/nodes/Notion/Notion.node.js", "dist/nodes/Notion/NotionTrigger.node.js", "dist/nodes/Npm/Npm.node.js", "dist/nodes/Odoo/Odoo.node.js", "dist/nodes/OneSimpleApi/OneSimpleApi.node.js", "dist/nodes/OpenAi/OpenAi.node.js", "dist/nodes/OpenThesaurus/OpenThesaurus.node.js", "dist/nodes/OpenWeatherMap/OpenWeatherMap.node.js", "dist/nodes/Orbit/Orbit.node.js", "dist/nodes/Oura/Oura.node.js", "dist/nodes/Paddle/Paddle.node.js", "dist/nodes/PagerDuty/PagerDuty.node.js", "dist/nodes/PayPal/PayPal.node.js", "dist/nodes/PayPal/PayPalTrigger.node.js", "dist/nodes/Peekalink/Peekalink.node.js", "dist/nodes/Phantombuster/Phantombuster.node.js", "dist/nodes/PhilipsHue/PhilipsHue.node.js", "dist/nodes/Pipedrive/Pipedrive.node.js", "dist/nodes/Pipedrive/PipedriveTrigger.node.js", "dist/nodes/Plivo/Plivo.node.js", "dist/nodes/PostBin/PostBin.node.js", "dist/nodes/Postgres/Postgres.node.js", "dist/nodes/Postgres/PostgresTrigger.node.js", "dist/nodes/PostHog/PostHog.node.js", "dist/nodes/Postmark/PostmarkTrigger.node.js", "dist/nodes/ProfitWell/ProfitWell.node.js", "dist/nodes/Pushbullet/Pushbullet.node.js", "dist/nodes/Pushcut/Pushcut.node.js", "dist/nodes/Pushcut/PushcutTrigger.node.js", "dist/nodes/Pushover/Pushover.node.js", "dist/nodes/QuestDb/QuestDb.node.js", "dist/nodes/QuickBase/QuickBase.node.js", "dist/nodes/QuickBooks/QuickBooks.node.js", "dist/nodes/QuickChart/QuickChart.node.js", "dist/nodes/RabbitMQ/RabbitMQ.node.js", "dist/nodes/RabbitMQ/RabbitMQTrigger.node.js", "dist/nodes/Raindrop/Raindrop.node.js", "dist/nodes/ReadBinaryFile/ReadBinaryFile.node.js", "dist/nodes/ReadBinaryFiles/ReadBinaryFiles.node.js", "dist/nodes/ReadPdf/ReadPDF.node.js", "dist/nodes/Reddit/Reddit.node.js", "dist/nodes/Redis/Redis.node.js", "dist/nodes/Redis/RedisTrigger.node.js", "dist/nodes/RenameKeys/RenameKeys.node.js", "dist/nodes/RespondToWebhook/RespondToWebhook.node.js", "dist/nodes/Rocketchat/Rocketchat.node.js", "dist/nodes/RssFeedRead/RssFeedRead.node.js", "dist/nodes/RssFeedRead/RssFeedReadTrigger.node.js", "dist/nodes/Rundeck/Rundeck.node.js", "dist/nodes/S3/S3.node.js", "dist/nodes/Salesforce/Salesforce.node.js", "dist/nodes/Salesmate/Salesmate.node.js", "dist/nodes/Schedule/ScheduleTrigger.node.js", "dist/nodes/SeaTable/SeaTable.node.js", "dist/nodes/SeaTable/SeaTableTrigger.node.js", "dist/nodes/SecurityScorecard/SecurityScorecard.node.js", "dist/nodes/Segment/Segment.node.js", "dist/nodes/SendGrid/SendGrid.node.js", "dist/nodes/Sendy/Sendy.node.js", "dist/nodes/SentryIo/SentryIo.node.js", "dist/nodes/ServiceNow/ServiceNow.node.js", "dist/nodes/Set/Set.node.js", "dist/nodes/Shopify/Shopify.node.js", "dist/nodes/Shopify/ShopifyTrigger.node.js", "dist/nodes/Signl4/Signl4.node.js", "dist/nodes/Slack/Slack.node.js", "dist/nodes/Sms77/Sms77.node.js", "dist/nodes/Snowflake/Snowflake.node.js", "dist/nodes/SplitInBatches/SplitInBatches.node.js", "dist/nodes/Splunk/Splunk.node.js", "dist/nodes/Spontit/Spontit.node.js", "dist/nodes/Spotify/Spotify.node.js", "dist/nodes/SpreadsheetFile/SpreadsheetFile.node.js", "dist/nodes/SseTrigger/SseTrigger.node.js", "dist/nodes/Ssh/Ssh.node.js", "dist/nodes/Stackby/Stackby.node.js", "dist/nodes/Start/Start.node.js", "dist/nodes/StopAndError/StopAndError.node.js", "dist/nodes/Storyblok/Storyblok.node.js", "dist/nodes/Strapi/Strapi.node.js", "dist/nodes/Strava/Strava.node.js", "dist/nodes/Strava/StravaTrigger.node.js", "dist/nodes/Stripe/Stripe.node.js", "dist/nodes/Stripe/StripeTrigger.node.js", "dist/nodes/Supabase/Supabase.node.js", "dist/nodes/SurveyMonkey/SurveyMonkeyTrigger.node.js", "dist/nodes/Switch/Switch.node.js", "dist/nodes/SyncroMSP/SyncroMsp.node.js", "dist/nodes/Taiga/Taiga.node.js", "dist/nodes/Taiga/TaigaTrigger.node.js", "dist/nodes/Tapfiliate/Tapfiliate.node.js", "dist/nodes/Telegram/Telegram.node.js", "dist/nodes/Telegram/TelegramTrigger.node.js", "dist/nodes/TheHiveProject/TheHiveProject.node.js", "dist/nodes/TheHiveProject/TheHiveProjectTrigger.node.js", "dist/nodes/TheHive/TheHive.node.js", "dist/nodes/TheHive/TheHiveTrigger.node.js", "dist/nodes/TimescaleDb/TimescaleDb.node.js", "dist/nodes/Todoist/Todoist.node.js", "dist/nodes/Toggl/TogglTrigger.node.js", "dist/nodes/Totp/Totp.node.js", "dist/nodes/TravisCi/TravisCi.node.js", "dist/nodes/Trello/Trello.node.js", "dist/nodes/Trello/TrelloTrigger.node.js", "dist/nodes/Twake/Twake.node.js", "dist/nodes/Twilio/Twilio.node.js", "dist/nodes/Twist/Twist.node.js", "dist/nodes/Twitter/Twitter.node.js", "dist/nodes/Typeform/TypeformTrigger.node.js", "dist/nodes/UnleashedSoftware/UnleashedSoftware.node.js", "dist/nodes/Uplead/Uplead.node.js", "dist/nodes/UProc/UProc.node.js", "dist/nodes/UptimeRobot/UptimeRobot.node.js", "dist/nodes/UrlScanIo/UrlScanIo.node.js", "dist/nodes/Vero/Vero.node.js", "dist/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloud.node.js", "dist/nodes/Venafi/ProtectCloud/VenafiTlsProtectCloudTrigger.node.js", "dist/nodes/Venafi/Datacenter/VenafiTlsProtectDatacenter.node.js", "dist/nodes/Vonage/Vonage.node.js", "dist/nodes/Wait/Wait.node.js", "dist/nodes/Webflow/Webflow.node.js", "dist/nodes/Webflow/WebflowTrigger.node.js", "dist/nodes/Webhook/Webhook.node.js", "dist/nodes/Wekan/Wekan.node.js", "dist/nodes/WhatsApp/WhatsApp.node.js", "dist/nodes/Wise/Wise.node.js", "dist/nodes/Wise/WiseTrigger.node.js", "dist/nodes/WooCommerce/WooCommerce.node.js", "dist/nodes/WooCommerce/WooCommerceTrigger.node.js", "dist/nodes/Wordpress/Wordpress.node.js", "dist/nodes/Workable/WorkableTrigger.node.js", "dist/nodes/WorkflowTrigger/WorkflowTrigger.node.js", "dist/nodes/WriteBinaryFile/WriteBinaryFile.node.js", "dist/nodes/Wufoo/WufooTrigger.node.js", "dist/nodes/Xero/Xero.node.js", "dist/nodes/Xml/Xml.node.js", "dist/nodes/Yourls/Yourls.node.js", "dist/nodes/Zammad/Zammad.node.js", "dist/nodes/Zendesk/Zendesk.node.js", "dist/nodes/Zendesk/ZendeskTrigger.node.js", "dist/nodes/Zoho/ZohoCrm.node.js", "dist/nodes/Zoom/Zoom.node.js", "dist/nodes/Zulip/Zulip.node.js" ] }, "devDependencies": { "@types/amqplib": "^0.10.1", "@types/aws4": "^1.5.1", "@types/basic-auth": "^1.1.3", "@types/cheerio": "^0.22.15", "@types/cron": "~1.7.1", "@types/eventsource": "^1.1.2", "@types/express": "^4.17.6", "@types/gm": "^1.25.0", "@types/imap-simple": "^4.2.0", "@types/js-nacl": "^1.3.0", "@types/jsonwebtoken": "^9.0.1", "@types/lodash": "^4.14.195", "@types/lossless-json": "^1.0.0", "@types/mailparser": "^2.7.3", "@types/mime-types": "^2.1.0", "@types/mssql": "^6.0.2", "@types/node-ssh": "^7.0.1", "@types/nodemailer": "^6.4.0", "@types/promise-ftp": "^1.3.4", "@types/redis": "^2.8.11", "@types/request-promise-native": "~1.0.15", "@types/rfc2047": "^2.0.1", "@types/showdown": "^1.9.4", "@types/snowflake-sdk": "^1.6.12", "@types/ssh2-sftp-client": "^5.1.0", "@types/tmp": "^0.2.0", "@types/uuid": "^8.3.2", "@types/xml2js": "^0.4.11", "eslint-plugin-n8n-nodes-base": "^1.16.0", "gulp": "^4.0.0", "n8n-core": "1.14.1" }, "dependencies": { "@kafkajs/confluent-schema-registry": "1.0.6", "@n8n/vm2": "^3.9.20", "amqplib": "^0.10.3", "aws4": "^1.8.0", "basic-auth": "^2.0.1", "change-case": "^4.1.1", "cheerio": "1.0.0-rc.6", "chokidar": "3.5.2", "cron": "~1.7.2", "csv-parse": "^5.5.0", "currency-codes": "^2.1.0", "eventsource": "^2.0.2", "fast-glob": "^3.2.5", "fflate": "^0.7.0", "get-system-fonts": "^2.0.2", "gm": "^1.25.0", "iconv-lite": "^0.6.2", "ics": "^2.27.0", "imap-simple": "^4.3.0", "isbot": "^3.6.13", "iso-639-1": "^2.1.3", "js-nacl": "^1.4.0", "jsonwebtoken": "^9.0.0", "kafkajs": "^1.14.0", "ldapts": "^4.2.6", "lodash": "^4.17.21", "lossless-json": "^1.0.4", "luxon": "^3.3.0", "mailparser": "^3.2.0", "minifaker": "^1.34.1", "moment": "~2.29.2", "moment-timezone": "^0.5.28", "mongodb": "^4.17.1", "mqtt": "^5.0.2", "mssql": "^8.1.2", "mysql2": "~2.3.0", "nanoid": "^3.3.6", "node-html-markdown": "^1.1.3", "node-ssh": "^12.0.0", "nodemailer": "^6.7.1", "otpauth": "^9.1.1", "pdfjs-dist": "^2.16.105", "pg": "^8.3.0", "pg-promise": "^10.5.8", "pretty-bytes": "^5.6.0", "promise-ftp": "^1.3.5", "pyodide": "^0.23.4", "redis": "^3.1.1", "rfc2047": "^4.0.1", "rhea": "^1.0.11", "rss-parser": "^3.7.0", "semver": "^7.5.4", "showdown": "^2.0.3", "simple-git": "^3.17.0", "snowflake-sdk": "^1.8.0", "ssh2-sftp-client": "^7.0.0", "tmp-promise": "^3.0.2", "typedi": "^0.10.0", "uuid": "^8.3.2", "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", "xml2js": "^0.5.0", "n8n-workflow": "1.14.1" }, "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", "typecheck": "tsc", "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && gulp build:icons && gulp build:translations && pnpm build:metadata", "build:translations": "gulp build:translations", "build:metadata": "pnpm n8n-generate-known && pnpm n8n-generate-ui-types", "format": "prettier --write . --ignore-path ../../.prettierignore", "lint": "eslint . --quiet && node ./scripts/validate-load-options-methods.js", "lintfix": "eslint . --fix", "watch": "tsc-watch -p tsconfig.build.json --onCompilationComplete \"tsc-alias -p tsconfig.build.json\" --onSuccess \"pnpm n8n-generate-ui-types\"", "test": "jest" } }, "extraction_time_ms": 4, "extracted_at": "2025-06-07T17:49:22.884Z" } ```