diff --git a/.npmrc b/.npmrc index 42d2964a046..440d391470a 100644 --- a/.npmrc +++ b/.npmrc @@ -6,7 +6,6 @@ strict-peer-dependencies = false prefer-workspace-packages = true link-workspace-packages = deep hoist = true -shamefully-hoist = true hoist-workspace-packages = false loglevel = warn package-manager-strict=false diff --git a/jest.config.js b/jest.config.js index cc751127344..3ee14d038b1 100644 --- a/jest.config.js +++ b/jest.config.js @@ -37,6 +37,7 @@ const esmDependencies = [ 'p-retry', 'is-network-error', 'uuid', + 'change-case', // Add other ESM dependencies that need to be transformed here ]; diff --git a/package.json b/package.json index 2ed594bb958..e582999caee 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,9 @@ "nodemon": "^3.0.1", "npm-run-all2": "^7.0.2", "p-limit": "^3.1.0", + "prettier": "catalog:", "rimraf": "^5.0.1", + "stylelint": "catalog:", "supertest": "^7.1.1", "ts-jest": "^29.4.9", "tsc-alias": "^1.8.10", @@ -118,6 +120,7 @@ "@opentelemetry/core": "2.8.0", "@types/node": "^20.17.50", "chokidar": "4.0.3", + "esbuild": "catalog:", "multer": "^2.2.0", "prebuild-install": "7.1.3", "pug": "^3.0.3", @@ -126,7 +129,7 @@ "tslib": "^2.6.2", "tsconfig-paths": "^4.2.0", "typescript": "catalog:", - "vue-tsc": "^2.2.8", + "vue-tsc": "catalog:frontend", "gaxios": ">=7.1.1", "google-gax": "^4.3.7", "ws": ">=8.20.1", @@ -155,7 +158,6 @@ "bn.js@4": "5.2.3", "bn.js@5": "5.2.3", "lodash": "4.18.1", - "lodash-es": "4.18.1", "minimatch@<=5.1.8": "5.1.8", "minimatch@10": "10.2.3", "@hono/node-server": "1.19.13", @@ -191,7 +193,6 @@ "@turbo/darwin-64@<=2.9.18": "2.9.18", "@turbo/linux-64@<=2.9.18": "2.9.18", "@turbo/windows-64@<=2.9.18": "2.9.18", - "esbuild": "catalog:", "undici@5": "catalog:undici-v6", "undici@6": "catalog:undici-v6", "undici@7": "catalog:undici-v7" diff --git a/packages/@n8n/agents/package.json b/packages/@n8n/agents/package.json index d9510d44cb2..e6c60cd23e5 100644 --- a/packages/@n8n/agents/package.json +++ b/packages/@n8n/agents/package.json @@ -81,7 +81,7 @@ "@opentelemetry/exporter-trace-otlp-http": ">=0.50.0", "@opentelemetry/sdk-trace-base": ">=1.0.0", "@opentelemetry/sdk-trace-node": ">=1.0.0", - "ai": "^6.0.197", + "ai": "catalog:", "ajv": "^8.18.0", "langsmith": "catalog:", "undici": "catalog:undici-v7", @@ -106,8 +106,9 @@ "devDependencies": { "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", - "@types/json-schema": "^7.0.15", + "@types/json-schema": "catalog:", "@vitest/coverage-v8": "catalog:", + "dotenv": "catalog:", "cross-env": "catalog:", "nock": "catalog:", "vitest": "catalog:", diff --git a/packages/@n8n/ai-utilities/package.json b/packages/@n8n/ai-utilities/package.json index b3ff4fcaadb..9a6e56521e7 100644 --- a/packages/@n8n/ai-utilities/package.json +++ b/packages/@n8n/ai-utilities/package.json @@ -85,12 +85,15 @@ "dist" ], "devDependencies": { - "@types/json-schema": "^7.0.15", + "@types/json-schema": "catalog:", "@n8n/vitest-config": "workspace:*", "@vitest/coverage-v8": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:", "@types/mime-types": "catalog:", + "@types/lodash": "catalog:", + "@types/proxy-from-env": "catalog:", + "fast-glob": "catalog:", "tsx": "catalog:", "axios": "catalog:", "nock": "catalog:" diff --git a/packages/@n8n/ai-workflow-builder.ee/package.json b/packages/@n8n/ai-workflow-builder.ee/package.json index 2bc4393a562..0e924efa719 100644 --- a/packages/@n8n/ai-workflow-builder.ee/package.json +++ b/packages/@n8n/ai-workflow-builder.ee/package.json @@ -88,7 +88,10 @@ "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", "@types/cli-progress": "^3.11.5", - "@types/turndown": "^5.0.6", + "@types/jsdom": "catalog:", + "@types/lodash": "catalog:", + "@types/proxy-from-env": "catalog:", + "@types/turndown": "catalog:", "@vitest/coverage-v8": "catalog:", "cli-progress": "^3.12.0", "cli-table3": "^0.6.3", diff --git a/packages/@n8n/api-types/package.json b/packages/@n8n/api-types/package.json index 8c49fde7559..bb58a0d6a77 100644 --- a/packages/@n8n/api-types/package.json +++ b/packages/@n8n/api-types/package.json @@ -32,6 +32,7 @@ "minifaker": "1.34.1" }, "dependencies": { + "@n8n_io/ai-assistant-sdk": "catalog:", "n8n-workflow": "workspace:*", "xss": "catalog:", "@n8n/permissions": "workspace:*", diff --git a/packages/@n8n/backend-common/package.json b/packages/@n8n/backend-common/package.json index 768d6a562c2..9e6cebd171e 100644 --- a/packages/@n8n/backend-common/package.json +++ b/packages/@n8n/backend-common/package.json @@ -29,6 +29,7 @@ "@n8n/di": "workspace:*", "callsites": "catalog:", "flatted": "catalog:", + "logform": "2.6.1", "n8n-workflow": "workspace:*", "stream-json": "catalog:", "picocolors": "catalog:", diff --git a/packages/@n8n/backend-network/package.json b/packages/@n8n/backend-network/package.json index a3a2c084e25..bdbe148fc60 100644 --- a/packages/@n8n/backend-network/package.json +++ b/packages/@n8n/backend-network/package.json @@ -79,6 +79,7 @@ "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", "@types/proxy-from-env": "catalog:", + "@types/qs": "catalog:", "@vitest/coverage-v8": "catalog:", "nock": "catalog:", "vitest": "catalog:", diff --git a/packages/@n8n/benchmark/package.json b/packages/@n8n/benchmark/package.json index bf84bca1c13..fdfde36f8ae 100644 --- a/packages/@n8n/benchmark/package.json +++ b/packages/@n8n/benchmark/package.json @@ -37,7 +37,7 @@ "dependencies": { "@oclif/core": "4.0.7", "axios": "catalog:", - "dotenv": "17.2.3", + "dotenv": "catalog:", "nanoid": "catalog:", "zx": "^8.8.5" }, diff --git a/packages/@n8n/codemirror-lang-html/package.json b/packages/@n8n/codemirror-lang-html/package.json index 73fd4117644..812ba071af9 100644 --- a/packages/@n8n/codemirror-lang-html/package.json +++ b/packages/@n8n/codemirror-lang-html/package.json @@ -38,7 +38,9 @@ "@codemirror/language": "catalog:", "@codemirror/state": "catalog:", "@codemirror/view": "catalog:", - "@lezer/common": "catalog:" + "@lezer/common": "catalog:", + "@lezer/highlight": "catalog:", + "@lezer/lr": "catalog:" }, "devDependencies": { "@codemirror/buildhelper": "^0.1.5", @@ -46,6 +48,7 @@ "@n8n/typescript-config": "workspace:*", "@rollup/plugin-node-resolve": "^9.0.0", "@n8n/vitest-config": "workspace:*", + "ist": "1.1.7", "vitest": "catalog:", "rollup": "^2.52.2" }, diff --git a/packages/@n8n/db/package.json b/packages/@n8n/db/package.json index d7b4bd4db7d..f957faa634c 100644 --- a/packages/@n8n/db/package.json +++ b/packages/@n8n/db/package.json @@ -54,10 +54,11 @@ "devDependencies": { "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", + "@types/express": "catalog:", "@types/lodash": "catalog:", "@testcontainers/postgresql": "catalog:", "@vitest/coverage-v8": "catalog:", - "express": "5.1.0", + "express": "catalog:", "testcontainers": "catalog:", "typescript": "catalog:", "vitest": "catalog:", diff --git a/packages/@n8n/engine/package.json b/packages/@n8n/engine/package.json index 99707c94d0c..75896cf0938 100644 --- a/packages/@n8n/engine/package.json +++ b/packages/@n8n/engine/package.json @@ -26,7 +26,7 @@ "dependencies": { "@n8n/config": "workspace:*", "@n8n/di": "workspace:*", - "express": "5.1.0", + "express": "catalog:", "reflect-metadata": "catalog:" }, "devDependencies": { diff --git a/packages/@n8n/eslint-config/package.json b/packages/@n8n/eslint-config/package.json index 0b3be880cca..5f54c0bf9f7 100644 --- a/packages/@n8n/eslint-config/package.json +++ b/packages/@n8n/eslint-config/package.json @@ -51,6 +51,7 @@ "globals": "^16.2.0", "typescript": "catalog:", "typescript-eslint": "^8.35.0", + "vite": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/@n8n/eslint-config/src/configs/base.ts b/packages/@n8n/eslint-config/src/configs/base.ts index c0234de803b..2fbbbf88c36 100644 --- a/packages/@n8n/eslint-config/src/configs/base.ts +++ b/packages/@n8n/eslint-config/src/configs/base.ts @@ -349,6 +349,7 @@ export const baseConfig = tseslint.config( '**/*.config.js', '**/scripts/*.ts', '**/scripts/*.js', + '**/*.stories.ts', ], optionalDependencies: false, peerDependencies: false, diff --git a/packages/@n8n/eslint-config/src/configs/frontend.ts b/packages/@n8n/eslint-config/src/configs/frontend.ts index 715589dacb3..9889dedd6f7 100644 --- a/packages/@n8n/eslint-config/src/configs/frontend.ts +++ b/packages/@n8n/eslint-config/src/configs/frontend.ts @@ -36,7 +36,6 @@ export const frontendConfig = tseslint.config( { files: ['**/*.test.ts', '**/test/**/*.ts', '**/__tests__/**/*.ts', '**/*.stories.ts'], rules: { - 'import-x/no-extraneous-dependencies': 'warn', 'vue/one-component-per-file': 'off', // TODO: remove these diff --git a/packages/@n8n/eslint-plugin-community-nodes/package.json b/packages/@n8n/eslint-plugin-community-nodes/package.json index fcda5f1ee0f..f6dedb2e666 100644 --- a/packages/@n8n/eslint-plugin-community-nodes/package.json +++ b/packages/@n8n/eslint-plugin-community-nodes/package.json @@ -42,6 +42,7 @@ "eslint-plugin-eslint-plugin": "^7.0.0", "rimraf": "catalog:", "typescript": "catalog:", + "vite": "catalog:", "vitest": "catalog:" }, "peerDependencies": { diff --git a/packages/@n8n/expression-runtime/package.json b/packages/@n8n/expression-runtime/package.json index 016d2ed595f..4c5bab74b17 100644 --- a/packages/@n8n/expression-runtime/package.json +++ b/packages/@n8n/expression-runtime/package.json @@ -51,8 +51,9 @@ "@n8n/vitest-config": "workspace:*", "@types/jmespath": "^0.15.0", "@types/lodash": "catalog:", - "@types/luxon": "3.2.0", + "@types/luxon": "catalog:", "@types/md5": "^2.3.5", + "esbuild": "catalog:", "typescript": "catalog:", "vitest": "catalog:" }, diff --git a/packages/@n8n/imap/package.json b/packages/@n8n/imap/package.json index 07cd662ec23..42019cf7cb2 100644 --- a/packages/@n8n/imap/package.json +++ b/packages/@n8n/imap/package.json @@ -34,6 +34,8 @@ "@types/imap": "^0.8.40", "@types/quoted-printable": "^1.0.2", "@types/utf8": "^3.0.3", + "vite": "catalog:", + "vitest": "catalog:", "vitest-mock-extended": "catalog:" }, "license": "LicenseRef-n8n-sustainable-use" diff --git a/packages/@n8n/instance-ai/package.json b/packages/@n8n/instance-ai/package.json index fe34a509954..0c9afea9117 100644 --- a/packages/@n8n/instance-ai/package.json +++ b/packages/@n8n/instance-ai/package.json @@ -63,6 +63,7 @@ "@n8n/workflow-sdk": "workspace:*", "@opentelemetry/api": "^1.9.0", "@thednp/dommatrix": "^2.0.12", + "ai": "catalog:", "csv-parse": "catalog:", "fast-glob": "catalog:", "flatted": "catalog:", @@ -87,9 +88,9 @@ "@n8n/ai-workflow-builder": "workspace:*", "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", - "@types/luxon": "3.2.0", + "@types/luxon": "catalog:", "@types/psl": "1.1.3", - "@types/turndown": "^5.0.5", + "@types/turndown": "catalog:", "@vitest/coverage-v8": "catalog:", "tsx": "catalog:", "vitest": "catalog:", diff --git a/packages/@n8n/json-schema-to-zod/package.json b/packages/@n8n/json-schema-to-zod/package.json index 71d6a793109..95a9cee299c 100644 --- a/packages/@n8n/json-schema-to-zod/package.json +++ b/packages/@n8n/json-schema-to-zod/package.json @@ -65,7 +65,7 @@ }, "devDependencies": { "@n8n/typescript-config": "workspace:*", - "@types/json-schema": "^7.0.15", + "@types/json-schema": "catalog:", "zod": "catalog:", "@n8n/vitest-config": "workspace:*", "@vitest/coverage-v8": "catalog:", diff --git a/packages/@n8n/mcp-apps/package.json b/packages/@n8n/mcp-apps/package.json index 47e64cbc10b..1ac9956b744 100644 --- a/packages/@n8n/mcp-apps/package.json +++ b/packages/@n8n/mcp-apps/package.json @@ -41,14 +41,16 @@ "@n8n/design-system": "workspace:*", "@n8n/utils": "workspace:*", "vue": "catalog:frontend", - "vue-i18n": "catalog:frontend" + "vue-i18n": "catalog:frontend", + "zod": "catalog:" }, "devDependencies": { + "@iconify-json/lucide": "catalog:", "@modelcontextprotocol/sdk": "catalog:", "@n8n/eslint-config": "workspace:*", "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", - "@types/semver": "^7.7.0", + "@types/semver": "catalog:", "@vitejs/plugin-vue": "catalog:frontend", "@vue/test-utils": "catalog:frontend", "rimraf": "catalog:", diff --git a/packages/@n8n/mcp-browser-extension/package.json b/packages/@n8n/mcp-browser-extension/package.json index 39c8faa6ffd..4317a9ae638 100644 --- a/packages/@n8n/mcp-browser-extension/package.json +++ b/packages/@n8n/mcp-browser-extension/package.json @@ -22,6 +22,7 @@ "vue": "catalog:frontend" }, "devDependencies": { + "@iconify-json/lucide": "catalog:", "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", "@types/chrome": "0.0.300", diff --git a/packages/@n8n/mcp-browser/package.json b/packages/@n8n/mcp-browser/package.json index ca870b31961..fd47c902091 100644 --- a/packages/@n8n/mcp-browser/package.json +++ b/packages/@n8n/mcp-browser/package.json @@ -41,8 +41,9 @@ "devDependencies": { "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", - "@types/turndown": "^5.0.6", - "@types/ws": "^8.18.1", + "@types/jsdom": "catalog:", + "@types/turndown": "catalog:", + "@types/ws": "catalog:", "@types/yargs-parser": "21.0.0", "@vitest/coverage-v8": "catalog:", "vitest": "catalog:" diff --git a/packages/@n8n/node-cli/package.json b/packages/@n8n/node-cli/package.json index a14cc85b3c2..35048ee9432 100644 --- a/packages/@n8n/node-cli/package.json +++ b/packages/@n8n/node-cli/package.json @@ -51,11 +51,11 @@ "@n8n/eslint-plugin-community-nodes": "workspace:*", "@n8n/ai-node-sdk": "workspace:*", "@oclif/core": "^4.5.2", - "change-case": "^5.4.4", + "change-case": "catalog:", "eslint": "catalog:", "eslint-import-resolver-typescript": "^4.4.3", "eslint-plugin-import-x": "^4.15.2", - "eslint-plugin-n8n-nodes-base": "1.16.7", + "eslint-plugin-n8n-nodes-base": "catalog:", "fast-glob": "catalog:", "handlebars": "4.7.9", "picocolors": "catalog:", @@ -70,6 +70,7 @@ "@n8n/vitest-config": "workspace:*", "@oclif/test": "^4.1.13", "typescript": "catalog:", + "vite": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:" }, diff --git a/packages/@n8n/node-cli/src/configs/eslint.ts b/packages/@n8n/node-cli/src/configs/eslint.ts index 43844c658e3..f2d26b77d53 100644 --- a/packages/@n8n/node-cli/src/configs/eslint.ts +++ b/packages/@n8n/node-cli/src/configs/eslint.ts @@ -74,7 +74,7 @@ function createConfig(supportCloud = true): ConfigArray { }, ); } -export const config = createConfig(); -export const configWithoutCloudSupport = createConfig(false); +export const config: ConfigArray = createConfig(); +export const configWithoutCloudSupport: ConfigArray = createConfig(false); export default config; diff --git a/packages/@n8n/nodes-langchain/package.json b/packages/@n8n/nodes-langchain/package.json index 52cbd2282cc..4057fd2acb7 100644 --- a/packages/@n8n/nodes-langchain/package.json +++ b/packages/@n8n/nodes-langchain/package.json @@ -214,13 +214,19 @@ "@n8n/vitest-config": "workspace:*", "@typescript-eslint/typescript-estree": "^8.35.0", "@types/basic-auth": "catalog:", + "@types/cheerio": "^0.22.15", + "@types/express": "catalog:", "@types/html-to-text": "^9.0.1", - "@types/json-schema": "^7.0.15", + "@types/json-schema": "catalog:", + "@types/jsdom": "catalog:", + "@types/lodash": "catalog:", "@types/mime-types": "catalog:", + "@types/oracledb": "catalog:", "@types/pg": "^8.15.6", "@types/sanitize-html": "catalog:", "@types/temp": "^0.9.1", "@vitest/coverage-v8": "catalog:", + "eslint-plugin-n8n-nodes-base": "catalog:", "fast-glob": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:" @@ -243,6 +249,7 @@ "@langchain/cohere": "1.0.1", "@langchain/community": "catalog:", "@langchain/core": "catalog:", + "@langchain/google-common": "2.1.24", "@langchain/google-genai": "2.1.24", "@langchain/google-vertexai": "2.1.24", "@langchain/groq": "1.0.2", @@ -277,6 +284,7 @@ "@pinecone-database/pinecone": "^5.0.2", "@qdrant/js-client-rest": "^1.16.2", "@smithy/node-http-handler": "4.5.0", + "@smithy/types": "4.13.1", "@supabase/supabase-js": "catalog:", "@xata.io/client": "0.28.4", "@zilliz/milvus2-sdk-node": "^2.5.7", @@ -287,6 +295,7 @@ "cohere-ai": "7.14.0", "d3-dsv": "2.0.0", "epub2": "3.0.2", + "express": "catalog:", "form-data": "catalog:", "generate-schema": "2.6.0", "html-to-text": "9.0.5", @@ -303,6 +312,7 @@ "n8n-nodes-base": "workspace:*", "n8n-workflow": "workspace:*", "openai": "^6.34.0", + "oracledb": "catalog:", "pg": "catalog:", "redis": "4.6.14", "sanitize-html": "catalog:", diff --git a/packages/@n8n/stylelint-config/package.json b/packages/@n8n/stylelint-config/package.json index b55a43f68ac..e20e2befcdd 100644 --- a/packages/@n8n/stylelint-config/package.json +++ b/packages/@n8n/stylelint-config/package.json @@ -27,7 +27,7 @@ "watch": "tsc --watch" }, "dependencies": { - "stylelint": "^16.23.0", + "stylelint": "catalog:", "stylelint-config-standard-scss": "^15.0.1", "stylelint-scss": "^6.12.1", "postcss-html": "^1.8.0", @@ -39,11 +39,9 @@ "rimraf": "catalog:", "@n8n/vitest-config": "workspace:*", "@vitest/coverage-v8": "catalog:", + "vite": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:" }, - "peerDependencies": { - "stylelint": ">= 16" - }, "license": "LicenseRef-n8n-sustainable-use" } diff --git a/packages/@n8n/task-runner/package.json b/packages/@n8n/task-runner/package.json index e23716acb12..55df30ea834 100644 --- a/packages/@n8n/task-runner/package.json +++ b/packages/@n8n/task-runner/package.json @@ -40,6 +40,7 @@ "@n8n/config": "workspace:*", "@n8n/di": "workspace:*", "@n8n/errors": "workspace:*", + "@sentry/core": "catalog:sentry", "@sentry/node": "catalog:sentry", "acorn": "8.14.0", "acorn-walk": "8.3.4", @@ -54,6 +55,8 @@ "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", "@types/lodash": "catalog:", + "@types/luxon": "catalog:", + "@types/ws": "catalog:", "@vitest/coverage-v8": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:" diff --git a/packages/@n8n/tournament/package.json b/packages/@n8n/tournament/package.json index 6c641ececd6..471b149d070 100644 --- a/packages/@n8n/tournament/package.json +++ b/packages/@n8n/tournament/package.json @@ -58,10 +58,5 @@ "ast-types": "^0.16.1", "esprima-next": "^5.8.4", "recast": "^0.22.0" - }, - "pnpm": { - "overrides": { - "@babel/traverse": "^7.23.2" - } } } diff --git a/packages/@n8n/utils/src/__tests__/setup.ts b/packages/@n8n/utils/src/__tests__/setup.ts index 7b0828bfa80..bb02c60cd05 100644 --- a/packages/@n8n/utils/src/__tests__/setup.ts +++ b/packages/@n8n/utils/src/__tests__/setup.ts @@ -1 +1 @@ -import '@testing-library/jest-dom'; +import '@testing-library/jest-dom/vitest'; diff --git a/packages/@n8n/workflow-sdk/package.json b/packages/@n8n/workflow-sdk/package.json index 53632b8429c..2b776045ad8 100644 --- a/packages/@n8n/workflow-sdk/package.json +++ b/packages/@n8n/workflow-sdk/package.json @@ -90,7 +90,8 @@ "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", "@types/adm-zip": "^0.5.7", - "@types/estree": "^1.0.8", + "@types/estree": "catalog:", + "@types/lodash": "catalog:", "@vitest/coverage-v8": "catalog:", "adm-zip": "^0.5.16", "vitest": "catalog:" diff --git a/packages/cli/package.json b/packages/cli/package.json index 3e7779f85a0..4b91a680a0c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -77,18 +77,25 @@ "@types/flat": "^5.0.5", "@types/formidable": "^3.4.5", "@types/json-diff": "^1.0.0", + "@types/json-schema": "catalog:", "@types/jsonwebtoken": "catalog:", "@types/lodash": "catalog:", + "@types/luxon": "catalog:", + "@types/ms": "catalog:", + "@types/multer": "^2.1.0", + "@types/nodemailer": "catalog:", "@types/psl": "^1.1.0", "@types/replacestream": "^4.0.1", + "@types/semver": "catalog:", "@types/shelljs": "^0.8.11", "@types/sshpk": "^1.17.4", "@types/superagent": "^8.1.9", "@types/swagger-ui-express": "^4.1.8", "@types/syslog-client": "^1.1.2", + "@types/turndown": "catalog:", "@types/uuid": "catalog:", "@types/validator": "^13.7.0", - "@types/ws": "^8.18.1", + "@types/ws": "catalog:", "@types/xml2js": "catalog:", "@types/yargs-parser": "21.0.0", "@vvo/tzdb": "^6.141.0", @@ -121,6 +128,7 @@ "@chat-adapter/slack": "catalog:", "@chat-adapter/state-memory": "catalog:", "@chat-adapter/telegram": "catalog:", + "@daytona/sdk": "catalog:", "@google-cloud/secret-manager": "5.6.0", "@joplin/turndown-plugin-gfm": "catalog:", "@langchain/core": "catalog:", @@ -168,7 +176,7 @@ "bcryptjs": "2.4.3", "bull": "4.16.4", "cache-manager": "catalog:", - "change-case": "4.1.2", + "change-case": "catalog:", "chat": "catalog:", "class-transformer": "0.5.1", "class-validator": "0.14.0", @@ -178,8 +186,8 @@ "cron": "catalog:", "csrf": "3.1.0", "csv-parse": "catalog:", - "dotenv": "17.2.3", - "express": "5.1.0", + "dotenv": "catalog:", + "express": "catalog:", "express-handlebars": "8.0.1", "express-openapi-validator": "5.5.3", "express-prom-bundle": "8.0.0", @@ -199,6 +207,7 @@ "isolated-vm": "catalog:", "jose": "^6.2.2", "json-diff": "1.0.6", + "json-schema": "catalog:", "jsonschema": "1.4.1", "jsonwebtoken": "catalog:", "langsmith": "catalog:", @@ -207,6 +216,7 @@ "lodash": "catalog:", "luxon": "catalog:", "moment-timezone": "catalog:", + "ms": "catalog:", "multer": "^2.2.0", "n8n-core": "workspace:*", "n8n-editor-ui": "workspace:*", diff --git a/packages/cli/src/controllers/posthog.controller.ts b/packages/cli/src/controllers/posthog.controller.ts index 8e47a325c24..4d77e8f0735 100644 --- a/packages/cli/src/controllers/posthog.controller.ts +++ b/packages/cli/src/controllers/posthog.controller.ts @@ -1,13 +1,13 @@ import { GlobalConfig } from '@n8n/config'; import { AuthenticatedRequest } from '@n8n/db'; -import { RestController } from '@n8n/decorators'; +import { RestController, StaticRouterMetadata } from '@n8n/decorators'; import { Container } from '@n8n/di'; import { Router } from 'express'; import { createProxyMiddleware } from 'http-proxy-middleware'; @RestController('/ph') export class PostHogController { - static routers = [ + static routers: StaticRouterMetadata[] = [ { path: '/', router: (() => { diff --git a/packages/cli/src/modules/agents/agent-knowledge-sandbox.service.ts b/packages/cli/src/modules/agents/agent-knowledge-sandbox.service.ts index bd52f8d0b9e..3b8d7607c68 100644 --- a/packages/cli/src/modules/agents/agent-knowledge-sandbox.service.ts +++ b/packages/cli/src/modules/agents/agent-knowledge-sandbox.service.ts @@ -1,14 +1,13 @@ +import type { Sandbox, SandboxState } from '@daytona/sdk'; import { redactText } from '@n8n/agents'; import { loadDaytona } from '@n8n/agents/sandbox'; import { Logger } from '@n8n/backend-common'; import { AgentsConfig } from '@n8n/config'; import { Service } from '@n8n/di'; -import type { Sandbox, SandboxState } from '@daytona/sdk'; -import { nanoid } from 'nanoid'; import { InstanceSettings } from 'n8n-core'; -import { createHash } from 'node:crypto'; - import { OperationalError } from 'n8n-workflow'; +import { nanoid } from 'nanoid'; +import { createHash } from 'node:crypto'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; @@ -25,13 +24,6 @@ import { parseRipgrepFilesOutput, parseRipgrepOutput, } from './agent-knowledge-commands'; -import { - AGENT_KNOWLEDGE_VOLUME_MOUNT_PATH, - assertKnowledgePathSegment, - buildKnowledgeVolumeSubpath, - fromVolumeStorageReference, - type AgentKnowledgeFilesystem, -} from './agent-knowledge-storage'; import { isAgentKnowledgeBaseEnabled } from './agent-knowledge-gate'; import { assertValidKnowledgeFilePath, @@ -48,6 +40,13 @@ import { type SearchKnowledgeRequest, type SearchKnowledgeResult, } from './agent-knowledge-retrieval'; +import { + AGENT_KNOWLEDGE_VOLUME_MOUNT_PATH, + assertKnowledgePathSegment, + buildKnowledgeVolumeSubpath, + fromVolumeStorageReference, + type AgentKnowledgeFilesystem, +} from './agent-knowledge-storage'; import { AgentFileRepository } from './repositories/agent-file.repository'; import { AgentRepository } from './repositories/agent.repository'; diff --git a/packages/cli/test/integration/insights/insights-vs-workflow-statistics.integration.test.ts b/packages/cli/test/integration/insights/insights-vs-workflow-statistics.integration.test.ts index 544aa283e68..8bb88fd2c49 100644 --- a/packages/cli/test/integration/insights/insights-vs-workflow-statistics.integration.test.ts +++ b/packages/cli/test/integration/insights/insights-vs-workflow-statistics.integration.test.ts @@ -15,7 +15,6 @@ import { InstanceSettings } from 'n8n-core'; import { createRunExecutionData } from 'n8n-workflow'; import { InsightsByPeriodRepository } from '@/modules/insights/database/repositories/insights-by-period.repository'; -import { InsightsRawRepository } from '@/modules/insights/database/repositories/insights-raw.repository'; import { InsightsCollectionService } from '@/modules/insights/insights-collection.service'; import { InsightsCompactionService } from '@/modules/insights/insights-compaction.service'; import { WorkflowStatisticsService } from '@/services/workflow-statistics.service'; @@ -69,7 +68,6 @@ describe('Insights vs Workflow Statistics Integration', () => { let insightsCollectionService: InsightsCollectionService; let insightsCompactionService: InsightsCompactionService; let insightsByPeriodRepository: InsightsByPeriodRepository; - let insightsRawRepository: InsightsRawRepository; let workflowStatisticsRepository: WorkflowStatisticsRepository; let workflowRunner: WorkflowRunner; let executionRepository: ExecutionRepository; @@ -89,7 +87,6 @@ describe('Insights vs Workflow Statistics Integration', () => { insightsCollectionService = Container.get(InsightsCollectionService); insightsCompactionService = Container.get(InsightsCompactionService); insightsByPeriodRepository = Container.get(InsightsByPeriodRepository); - insightsRawRepository = Container.get(InsightsRawRepository); workflowStatisticsRepository = Container.get(WorkflowStatisticsRepository); workflowRunner = Container.get(WorkflowRunner); executionRepository = Container.get(ExecutionRepository); @@ -168,14 +165,20 @@ describe('Insights vs Workflow Statistics Integration', () => { } /** - * Helper to wait for insights to be compacted (raw insights cleared and compacted data available) + * Helper to wait for insights to be compacted. + * + * Polls until the compacted success count reaches the expected total. Waiting on the + * terminal count (rather than "some compacted data exists and raw is drained") avoids a + * race where events still buffered in the collection service haven't been flushed to + * InsightsRaw yet, so compaction runs on a partial set and the count comes up short. */ - async function waitForCompaction(workflowId: string, timeout = 10000): Promise { + async function waitForCompaction( + workflowId: string, + expectedSuccessCount: number, + timeout = 20000, + ): Promise { const start = Date.now(); while (Date.now() - start < timeout) { - // Check if raw insights have been compacted (should be low or zero) - const rawInsights = await insightsRawRepository.find(); - // Check if compacted insights exist for this workflow const compactedInsights = await insightsByPeriodRepository.find({ where: { metadata: { workflowId }, @@ -183,13 +186,18 @@ describe('Insights vs Workflow Statistics Integration', () => { relations: ['metadata'], }); - // Compaction is done if we have compacted data and few/no raw insights - if (compactedInsights.length > 0 && rawInsights.length < 10) { + const successCount = compactedInsights + .filter((insight) => insight.type === 'success') + .reduce((sum, insight) => sum + insight.value, 0); + + if (successCount >= expectedSuccessCount) { return; } - await new Promise((resolve) => setTimeout(resolve, 500)); + await new Promise((resolve) => setTimeout(resolve, 200)); } - throw new Error(`Insights compaction did not complete within ${timeout}ms`); + throw new Error( + `Insights compaction did not reach ${expectedSuccessCount} successes within ${timeout}ms`, + ); } /** @@ -230,7 +238,7 @@ describe('Insights vs Workflow Statistics Integration', () => { await waitForStatistics(workflow.id, 10); // Wait for automatic compaction to complete - await waitForCompaction(workflow.id); + await waitForCompaction(workflow.id, 10); // ============================================================ // ASSERT: Query workflow statistics diff --git a/packages/core/package.json b/packages/core/package.json index e14e9026674..c4bc8f4c496 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -37,7 +37,10 @@ "@types/express": "catalog:", "@types/jsonwebtoken": "catalog:", "@types/lodash": "catalog:", + "@types/luxon": "catalog:", "@types/mime-types": "catalog:", + "@types/ms": "catalog:", + "@types/ssh2": "catalog:", "@types/uuid": "catalog:", "@types/xml2js": "catalog:", "@n8n/vitest-config": "workspace:*", @@ -65,6 +68,7 @@ "@n8n/decorators": "workspace:*", "@n8n/di": "workspace:*", "@n8n/errors": "workspace:*", + "@sentry/core": "catalog:sentry", "@sentry/node": "catalog:sentry", "@sentry/node-native": "catalog:sentry", "@sentry/profiling-node": "catalog:sentry", @@ -79,6 +83,7 @@ "lodash": "catalog:", "luxon": "catalog:", "mime-types": "catalog:", + "ms": "catalog:", "@n8n/workflow-sdk": "workspace:*", "n8n-workflow": "workspace:*", "nanoid": "catalog:", @@ -86,7 +91,7 @@ "p-cancelable": "2.1.1", "picocolors": "catalog:", "pretty-bytes": "5.6.0", - "ssh2": "1.15.0", + "ssh2": "catalog:", "uuid": "catalog:", "winston": "3.14.2", "xml2js": "catalog:", diff --git a/packages/extensions/insights/package.json b/packages/extensions/insights/package.json index 138aba223a4..e4a59525f06 100644 --- a/packages/extensions/insights/package.json +++ b/packages/extensions/insights/package.json @@ -52,9 +52,12 @@ "@n8n/typescript-config": "workspace:*", "@vitejs/plugin-vue": "catalog:frontend", "@vue/tsconfig": "catalog:frontend", + "stylelint": "catalog:", "tsdown": "catalog:", "rimraf": "catalog:", "vite": "catalog:", + "vitest": "catalog:", + "vite-plugin-dts": "catalog:", "vue-tsc": "catalog:frontend" }, "license": "LicenseRef-n8n-sustainable-use" diff --git a/packages/frontend/@n8n/chat/package.json b/packages/frontend/@n8n/chat/package.json index a0e3f2a2f88..c1deec3ff6e 100644 --- a/packages/frontend/@n8n/chat/package.json +++ b/packages/frontend/@n8n/chat/package.json @@ -42,25 +42,33 @@ "@n8n/design-system": "workspace:*", "@vueuse/core": "catalog:frontend", "highlight.js": "catalog:frontend", - "markdown-it-link-attributes": "^4.0.1", + "markdown-it": "catalog:", + "markdown-it-link-attributes": "catalog:", "uuid": "catalog:", "vue": "catalog:frontend", "vue-markdown-render": "catalog:frontend" }, "devDependencies": { - "@iconify-json/mdi": "^1.1.54", + "@iconify-json/lucide": "catalog:", + "@iconify-json/mdi": "catalog:", "@n8n/eslint-config": "workspace:*", "@n8n/playwright-janitor": "workspace:*", "@n8n/stylelint-config": "workspace:*", "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", + "@storybook/vue3": "catalog:storybook", "@storybook/vue3-vite": "catalog:storybook", + "@testing-library/jest-dom": "catalog:frontend", + "@testing-library/vue": "catalog:frontend", + "@types/markdown-it": "catalog:", + "@types/markdown-it-link-attributes": "catalog:", "@vitejs/plugin-vue": "catalog:frontend", "@vitest/coverage-v8": "catalog:", + "@vue/test-utils": "catalog:frontend", "unplugin-icons": "^0.19.0", "vite": "catalog:", - "vitest": "catalog:", "vite-plugin-dts": "catalog:", + "vitest": "catalog:", "vue-tsc": "catalog:frontend" }, "files": [ diff --git a/packages/frontend/@n8n/chat/src/__tests__/plugins/chat.test.ts b/packages/frontend/@n8n/chat/src/__tests__/plugins/chat.test.ts index 8d706695c96..ea7d0583e05 100644 --- a/packages/frontend/@n8n/chat/src/__tests__/plugins/chat.test.ts +++ b/packages/frontend/@n8n/chat/src/__tests__/plugins/chat.test.ts @@ -1,3 +1,4 @@ +import type { Mock } from 'vitest'; import { vi, describe, it, expect } from 'vitest'; import { createApp } from 'vue'; @@ -25,7 +26,7 @@ describe('ChatPlugin', () => { }, }; - (api.sendMessage as jest.Mock).mockResolvedValue({ executionStarted: true }); + (api.sendMessage as Mock).mockResolvedValue({ executionStarted: true }); app.use(ChatPlugin, options); @@ -53,7 +54,7 @@ describe('ChatPlugin', () => { }, }; - (api.sendMessage as jest.Mock).mockResolvedValue({}); + (api.sendMessage as Mock).mockResolvedValue({}); app.use(ChatPlugin, options); diff --git a/packages/frontend/@n8n/chat/src/__tests__/setup.ts b/packages/frontend/@n8n/chat/src/__tests__/setup.ts index c00d8a1d71b..97512941ed4 100644 --- a/packages/frontend/@n8n/chat/src/__tests__/setup.ts +++ b/packages/frontend/@n8n/chat/src/__tests__/setup.ts @@ -1,4 +1,4 @@ -import '@testing-library/jest-dom'; +import '@testing-library/jest-dom/vitest'; import { configure } from '@testing-library/vue'; configure({ testIdAttribute: 'data-test-id' }); diff --git a/packages/frontend/@n8n/chat/tsconfig.json b/packages/frontend/@n8n/chat/tsconfig.json index df31cf572a5..619aa82af57 100644 --- a/packages/frontend/@n8n/chat/tsconfig.json +++ b/packages/frontend/@n8n/chat/tsconfig.json @@ -11,7 +11,7 @@ "incremental": false, "allowSyntheticDefaultImports": true, "resolveJsonModule": true, - "types": ["vitest/globals"], + "types": ["vitest/globals", "vitest/browser", "@testing-library/vue"], "paths": { "@n8n/chat/*": ["./src/*"], "@n8n/design-system*": ["../design-system/src*"] diff --git a/packages/frontend/@n8n/design-system/package.json b/packages/frontend/@n8n/design-system/package.json index d068042b72f..10b0f8f9279 100644 --- a/packages/frontend/@n8n/design-system/package.json +++ b/packages/frontend/@n8n/design-system/package.json @@ -29,25 +29,32 @@ "@n8n/stylelint-config": "workspace:*", "@n8n/typescript-config": "workspace:*", "@n8n/vitest-config": "workspace:*", + "@storybook/addon-docs": "catalog:storybook", + "@storybook/vue3": "catalog:storybook", "@storybook/vue3-vite": "catalog:storybook", "@testing-library/jest-dom": "catalog:frontend", "@testing-library/user-event": "catalog:frontend", "@testing-library/vue": "catalog:frontend", "@types/lodash": "catalog:", - "@types/markdown-it": "^13.0.9", + "@types/markdown-it": "catalog:", "@types/markdown-it-emoji": "^2.0.2", - "@types/markdown-it-link-attributes": "^3.0.5", + "@types/markdown-it-link-attributes": "catalog:", "@types/sanitize-html": "catalog:", "@vitejs/plugin-vue": "catalog:frontend", "@vitest/coverage-v8": "catalog:", "@vue/test-utils": "catalog:frontend", "autoprefixer": "^10.4.19", "emojibase-data": "^17.0.0", + "eslint-plugin-storybook": "catalog:storybook", "postcss": "^8.4.38", "sass": "^1.71.1", + "storybook": "catalog:storybook", + "storybook-addon-vue-mdx": "3.0.0", + "stylelint": "catalog:", "tailwindcss": "^3.4.3", "unplugin-icons": "catalog:frontend", "vite": "catalog:", + "vite-svg-loader": "catalog:frontend", "vitest": "catalog:", "vitest-mock-extended": "catalog:", "vue-tsc": "catalog:frontend" @@ -58,6 +65,7 @@ "@n8n/utils": "workspace:*", "@tanstack/vue-table": "^8.21.2", "@tiptap/core": "catalog:", + "@tiptap/pm": "catalog:", "@tiptap/extension-link": "catalog:", "@tiptap/extension-placeholder": "catalog:", "@tiptap/extension-table": "catalog:", @@ -72,13 +80,15 @@ "@vueuse/core": "catalog:frontend", "clsx": "^2.1.1", "element-plus": "catalog:frontend", + "highlight.js": "catalog:frontend", "is-emoji-supported": "^0.0.5", "lodash": "catalog:", - "markdown-it": "^13.0.2", + "markdown-it": "catalog:", "markdown-it-emoji": "^2.0.2", - "markdown-it-link-attributes": "^4.0.1", + "markdown-it-link-attributes": "catalog:", "markdown-it-task-lists": "^2.1.1", "parse-diff": "^0.11.1", + "pinia": "catalog:frontend", "reka-ui": "^2.5.0", "sanitize-html": "catalog:", "vue": "catalog:frontend", diff --git a/packages/frontend/@n8n/design-system/src/__tests__/setup.ts b/packages/frontend/@n8n/design-system/src/__tests__/setup.ts index 336a2cd4526..6834d7cb79c 100644 --- a/packages/frontend/@n8n/design-system/src/__tests__/setup.ts +++ b/packages/frontend/@n8n/design-system/src/__tests__/setup.ts @@ -1,4 +1,4 @@ -import '@testing-library/jest-dom'; +import '@testing-library/jest-dom/vitest'; import { configure } from '@testing-library/vue'; import { config } from '@vue/test-utils'; import { beforeAll } from 'vitest'; diff --git a/packages/frontend/@n8n/design-system/tsconfig.json b/packages/frontend/@n8n/design-system/tsconfig.json index e5cdbae3abe..069a140bb62 100644 --- a/packages/frontend/@n8n/design-system/tsconfig.json +++ b/packages/frontend/@n8n/design-system/tsconfig.json @@ -5,12 +5,6 @@ "noEmit": true, "moduleResolution": "bundler", "types": ["vite/client", "unplugin-icons/types/vue", "vitest/globals"], - "typeRoots": [ - "./node_modules/@testing-library", - "./node_modules/@types", - "../../../../node_modules", - "../../../../node_modules/@types" - ], "paths": { "@n8n/design-system*": ["./src*"], "@n8n/composables*": ["../composables/src*"], diff --git a/packages/frontend/@n8n/rest-api-client/package.json b/packages/frontend/@n8n/rest-api-client/package.json index 56388177db8..e8c8efdc779 100644 --- a/packages/frontend/@n8n/rest-api-client/package.json +++ b/packages/frontend/@n8n/rest-api-client/package.json @@ -56,7 +56,8 @@ "tsdown": "catalog:", "typescript": "catalog:", "vite": "catalog:", - "vitest": "catalog:" + "vitest": "catalog:", + "vue-tsc": "catalog:frontend" }, "license": "LicenseRef-n8n-sustainable-use" } diff --git a/packages/frontend/@n8n/stores/src/__tests__/setup.ts b/packages/frontend/@n8n/stores/src/__tests__/setup.ts index a0b47663d52..97bf8f3d2c6 100644 --- a/packages/frontend/@n8n/stores/src/__tests__/setup.ts +++ b/packages/frontend/@n8n/stores/src/__tests__/setup.ts @@ -1,4 +1,4 @@ -import '@testing-library/jest-dom'; +import '@testing-library/jest-dom/vitest'; import { configure } from '@testing-library/vue'; // Avoid tests failing because of difference between local and GitHub actions timezone diff --git a/packages/frontend/@n8n/storybook/.storybook/main.ts b/packages/frontend/@n8n/storybook/.storybook/main.ts index 52b8aed25e3..50589c2404d 100644 --- a/packages/frontend/@n8n/storybook/.storybook/main.ts +++ b/packages/frontend/@n8n/storybook/.storybook/main.ts @@ -1,15 +1,13 @@ import type { StorybookConfig } from '@storybook/vue3-vite'; - import { dirname } from 'path'; import remarkGfm from 'remark-gfm'; - import { fileURLToPath } from 'url'; /** * This function is used to resolve the absolute path of a package. * It is needed in projects that use Yarn PnP or are set up within a monorepo. */ -function getAbsolutePath(value: string): any { +function getAbsolutePath(value: string): string { return dirname(fileURLToPath(import.meta.resolve(`${value}/package.json`))); } const config: StorybookConfig = { diff --git a/packages/frontend/@n8n/storybook/.storybook/preview.ts b/packages/frontend/@n8n/storybook/.storybook/preview.ts index 2d7214e2cd9..d8ddcdfdbc6 100644 --- a/packages/frontend/@n8n/storybook/.storybook/preview.ts +++ b/packages/frontend/@n8n/storybook/.storybook/preview.ts @@ -1,3 +1,6 @@ +import { IconBodyLoaderKey, N8nPlugin } from '@n8n/design-system'; +import { loadLucideIconBody } from '@n8n/design-system/icons/lucide'; +import { i18nInstance } from '@n8n/i18n'; import { withThemeByDataAttribute } from '@storybook/addon-themes'; import { setup } from '@storybook/vue3'; import ElementPlus from 'element-plus'; @@ -6,10 +9,6 @@ import lang from 'element-plus/dist/locale/en.mjs'; import { createPinia } from 'pinia'; import { createMemoryHistory, createRouter } from 'vue-router'; -import { IconBodyLoaderKey, N8nPlugin } from '@n8n/design-system'; -import { loadLucideIconBody } from '@n8n/design-system/icons/lucide'; -import { i18nInstance } from '@n8n/i18n'; - import './storybook.scss'; import { allModes } from './modes'; // import '../src/css/tailwind/index.css'; @@ -28,6 +27,7 @@ setup((app) => { app.use(router); app.use(ElementPlus, { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- element-plus locale .mjs ships no types locale: lang, }); diff --git a/packages/frontend/@n8n/storybook/eslint.config.mjs b/packages/frontend/@n8n/storybook/eslint.config.mjs new file mode 100644 index 00000000000..1330acefa1a --- /dev/null +++ b/packages/frontend/@n8n/storybook/eslint.config.mjs @@ -0,0 +1,21 @@ +import storybook from 'eslint-plugin-storybook'; + +import { defineConfig } from 'eslint/config'; +import { frontendConfig } from '@n8n/eslint-config/frontend'; + +export default defineConfig( + frontendConfig, + { + // Storybook entry/config files are build tooling — allow devDependency imports, + // and the Storybook API requires a default export from main.ts. + files: ['.storybook/**'], + rules: { + 'import-x/no-extraneous-dependencies': [ + 'error', + { devDependencies: true, optionalDependencies: false, peerDependencies: false }, + ], + 'import-x/no-default-export': 'off', + }, + }, + storybook.configs['flat/recommended'], +); diff --git a/packages/frontend/@n8n/storybook/package.json b/packages/frontend/@n8n/storybook/package.json index 1ac6303de09..5c4487771aa 100644 --- a/packages/frontend/@n8n/storybook/package.json +++ b/packages/frontend/@n8n/storybook/package.json @@ -8,7 +8,9 @@ "dev": "storybook dev -p 6006", "build": "storybook build", "build:unchecked": "pnpm run build", - "typecheck": "vue-tsc --noEmit -p tsconfig.app.json" + "typecheck": "vue-tsc --noEmit -p tsconfig.app.json", + "lint": "eslint . --quiet", + "lint:fix": "eslint . --fix" }, "dependencies": { "@n8n/chat": "workspace:*", @@ -17,6 +19,7 @@ "@n8n/i18n": "workspace:*", "@n8n/stores": "workspace:*", "@n8n/utils": "workspace:*", + "element-plus": "catalog:frontend", "pinia": "catalog:frontend", "vue": "catalog:frontend", "vue-router": "catalog:frontend", @@ -24,13 +27,16 @@ }, "devDependencies": { "@chromatic-com/storybook": "catalog:storybook", + "@iconify-json/lucide": "catalog:", + "@iconify-json/mdi": "catalog:", + "@n8n/eslint-config": "workspace:*", "@n8n/typescript-config": "workspace:*", "@storybook/addon-a11y": "catalog:storybook", "@storybook/addon-docs": "catalog:storybook", "@storybook/addon-themes": "catalog:storybook", "@storybook/addon-vitest": "catalog:storybook", + "@storybook/vue3": "catalog:storybook", "@storybook/vue3-vite": "catalog:storybook", - "storybook-addon-vue-mdx": "3.0.0", "@types/node": "catalog:", "@vitejs/plugin-vue": "catalog:frontend", "@vitest/browser-playwright": "^4.0.16", @@ -38,19 +44,16 @@ "@vue/tsconfig": "catalog:frontend", "eslint-plugin-storybook": "catalog:storybook", "playwright": "catalog:e2e", + "prettier": "catalog:", + "remark-gfm": "^4.0.1", "storybook": "catalog:storybook", + "storybook-addon-vue-mdx": "3.0.0", "typescript": "catalog:", "unplugin-icons": "catalog:frontend", "vite": "catalog:", "vite-svg-loader": "catalog:frontend", - "remark-gfm": "^4.0.1", "vitest": "catalog:", "vue-tsc": "catalog:frontend" }, - "eslintConfig": { - "extends": [ - "plugin:storybook/recommended" - ] - }, "license": "LicenseRef-n8n-sustainable-use" } diff --git a/packages/frontend/@n8n/storybook/tsconfig.app.json b/packages/frontend/@n8n/storybook/tsconfig.app.json index 02128b26bd2..f135d9713f8 100644 --- a/packages/frontend/@n8n/storybook/tsconfig.app.json +++ b/packages/frontend/@n8n/storybook/tsconfig.app.json @@ -26,6 +26,7 @@ "src/**/*.ts", "src/**/*.tsx", "src/**/*.vue", + ".storybook/**/*.ts", "../chat/src/**/*.stories.ts", "../design-system/src/**/*.stories.ts", "../../editor-ui/src/**/*.stories.ts" diff --git a/packages/frontend/editor-ui/package.json b/packages/frontend/editor-ui/package.json index bc3c72a6842..2f2bbb73635 100644 --- a/packages/frontend/editor-ui/package.json +++ b/packages/frontend/editor-ui/package.json @@ -38,6 +38,7 @@ "@dagrejs/dagre": "^1.1.4", "@internationalized/date": "catalog:frontend", "@lezer/common": "catalog:", + "@lezer/highlight": "catalog:", "@n8n/api-types": "workspace:*", "@n8n/chat": "workspace:*", "@n8n/chat-hub": "workspace:*", @@ -55,7 +56,7 @@ "@pinecone-database/connect": "0.0.4", "@replit/codemirror-indentation-markers": "^6.5.3", "@sentry/vue": "catalog:frontend", - "@types/semver": "^7.7.0", + "@types/semver": "catalog:", "@typescript/vfs": "^1.6.0", "@vscode/markdown-it-katex": "^1.1.2", "@vue-flow/background": "1.3.2", @@ -70,7 +71,7 @@ "array.prototype.tosorted": "1.1.4", "axios": "catalog:", "bowser": "2.11.0", - "change-case": "^5.4.4", + "change-case": "catalog:", "chart.js": "^4.4.0", "comlink": "^4.4.1", "core-js": "^3.40.0", @@ -89,6 +90,7 @@ "katex": "0.16.27", "lodash": "catalog:", "luxon": "catalog:", + "markdown-it": "catalog:", "markdown-it-footnote": "^4.0.0", "n8n-workflow": "workspace:*", "nanoid": "catalog:", @@ -100,6 +102,7 @@ "sanitize-html": "catalog:", "semver": "catalog:", "stream-browserify": "^3.0.0", + "stylelint": "catalog:", "timeago.js": "^4.0.2", "typescript": "catalog:", "uuid": "catalog:", @@ -135,26 +138,37 @@ "@pinia/testing": "^0.1.6", "@sentry/vite-plugin": "^4.3.0", "@storybook/types": "^8.6.14", + "@storybook/vue3-vite": "catalog:storybook", + "@testing-library/dom": "catalog:frontend", + "@testing-library/jest-dom": "catalog:frontend", "@testing-library/user-event": "catalog:frontend", "@testing-library/vue": "catalog:frontend", "@types/dateformat": "^3.0.0", + "@types/estree": "catalog:", "@types/file-saver": "^2.0.1", "@types/humanize-duration": "^3.27.1", - "@types/json-schema": "^7.0.15", + "@types/json-schema": "catalog:", "@types/lodash": "catalog:", + "@types/lodash-es": "catalog:", + "@types/luxon": "catalog:", + "@types/markdown-it": "catalog:", "@types/sanitize-html": "catalog:", "@types/uuid": "catalog:", "@vitejs/plugin-legacy": "^8.0.0", "@vitejs/plugin-vue": "catalog:frontend", "@vitest/coverage-v8": "catalog:", "@vue/test-utils": "catalog:frontend", + "browserslist": "4.28.1", "browserslist-to-esbuild": "^2.1.1", "eslint-plugin-oxlint": "catalog:", "fake-indexeddb": "^6.0.0", + "lodash-es": "catalog:", "miragejs": "^0.1.48", "oxlint": "catalog:", "oxlint-tsgolint": "catalog:", "sass-embedded": "catalog:", + "stylelint": "catalog:", + "storybook": "catalog:storybook", "unplugin-icons": "catalog:frontend", "vite": "catalog:", "vite-plugin-node-polyfills": "^0.25.0", diff --git a/packages/frontend/editor-ui/src/__tests__/setup.ts b/packages/frontend/editor-ui/src/__tests__/setup.ts index 0f475de6ae2..94b26c86352 100644 --- a/packages/frontend/editor-ui/src/__tests__/setup.ts +++ b/packages/frontend/editor-ui/src/__tests__/setup.ts @@ -1,4 +1,4 @@ -import '@testing-library/jest-dom'; +import '@testing-library/jest-dom/vitest'; import 'fake-indexeddb/auto'; import { configure } from '@testing-library/vue'; import 'core-js/proposals/set-methods-v2'; diff --git a/packages/frontend/editor-ui/src/features/execution/logs/__test__/useChatMessaging.test.ts b/packages/frontend/editor-ui/src/features/execution/logs/__test__/useChatMessaging.test.ts index 27ca9695ed4..7bf1fe145b9 100644 --- a/packages/frontend/editor-ui/src/features/execution/logs/__test__/useChatMessaging.test.ts +++ b/packages/frontend/editor-ui/src/features/execution/logs/__test__/useChatMessaging.test.ts @@ -6,7 +6,7 @@ import type { IRunExecutionData } from 'n8n-workflow'; import type { INodeUi } from '@/Interface'; import type { IExecutionPushResponse } from '@/features/execution/executions/executions.types'; import type { RunWorkflowChatPayload } from '../composables/useChatMessaging'; -import { vi } from 'vitest'; +import { Mock, vi } from 'vitest'; import type { ChatMessage } from '@n8n/chat/types'; vi.mock('../logs.utils', () => { @@ -97,7 +97,7 @@ describe('useChatMessaging', () => { parameters: { options: {} }, } as unknown as INodeUi; - (onRunChatWorkflow as jest.Mock).mockResolvedValue({ + (onRunChatWorkflow as Mock).mockResolvedValue({ executionId: 'execution-id', } as IExecutionPushResponse); @@ -125,7 +125,7 @@ describe('useChatMessaging', () => { parameters: { options: { responseMode: 'responseNodes' } }, } as unknown as INodeUi; - (onRunChatWorkflow as jest.Mock).mockResolvedValue({ + (onRunChatWorkflow as Mock).mockResolvedValue({ executionId: 'execution-id', } as IExecutionPushResponse); diff --git a/packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJson.test.ts b/packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJson.test.ts index c576edf9db1..e69c3df8679 100644 --- a/packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJson.test.ts +++ b/packages/frontend/editor-ui/src/features/ndv/runData/components/RunDataJson.test.ts @@ -4,6 +4,9 @@ import { flushPromises } from '@vue/test-utils'; import RunDataJson from '@/features/ndv/runData/components/RunDataJson.vue'; import { createComponentRenderer } from '@/__tests__/render'; import { useElementSize } from '@vueuse/core'; // Import the composable to mock +import { Mock } from 'vitest'; +import { computed } from 'vue'; +import { WorkflowIdKey } from '@/app/constants/injectionKeys'; vi.mock('@vueuse/core', async () => { const originalModule = await vi.importActual('@vueuse/core'); @@ -14,7 +17,7 @@ vi.mock('@vueuse/core', async () => { }; }); -(useElementSize as jest.Mock).mockReturnValue({ +(useElementSize as Mock).mockReturnValue({ height: 500, // Mocked height value width: 300, // Mocked width value }); @@ -59,10 +62,17 @@ describe('RunDataJson.vue', () => { const { container } = renderComponent({ global: { plugins: [createTestingPinia()], + // RunDataJsonActions (lazy child) injects the workflow id on mount. + provide: { + [WorkflowIdKey as unknown as string]: computed(() => '1'), + }, }, }); - // Resolve the defineAsyncComponent import to prevent EnvironmentTeardownError + // Resolve the defineAsyncComponent import to prevent EnvironmentTeardownError. + // flushPromises() only drains microtasks; dynamicImportSettled() waits for the + // dynamic import() itself to finish so it can't resolve after env teardown. await flushPromises(); + await vi.dynamicImportSettled(); expect(container).toMatchSnapshot(); diff --git a/packages/frontend/editor-ui/src/features/ndv/runData/components/__snapshots__/RunDataJson.test.ts.snap b/packages/frontend/editor-ui/src/features/ndv/runData/components/__snapshots__/RunDataJson.test.ts.snap index 492c1a647c5..1d85994cd8f 100644 --- a/packages/frontend/editor-ui/src/features/ndv/runData/components/__snapshots__/RunDataJson.test.ts.snap +++ b/packages/frontend/editor-ui/src/features/ndv/runData/components/__snapshots__/RunDataJson.test.ts.snap @@ -5,7 +5,61 @@ exports[`RunDataJson.vue > renders json values properly 1`] = `
- +
+ +
{ ) { expect(emittedEvent[0].type).toBe(itemType); } else { - fail('Emitted event is not an array or does not have a type property'); + expect.fail('Emitted event is not an array or does not have a type property'); } } } diff --git a/packages/frontend/editor-ui/vite.config.mts b/packages/frontend/editor-ui/vite.config.mts index 5c268bc1a9e..a195d267c65 100644 --- a/packages/frontend/editor-ui/vite.config.mts +++ b/packages/frontend/editor-ui/vite.config.mts @@ -2,7 +2,6 @@ import vue from '@vitejs/plugin-vue'; import { resolve } from 'path'; import { defineConfig, mergeConfig, type UserConfig } from 'vite'; import { viteStaticCopy } from 'vite-plugin-static-copy'; -import { nodePolyfills } from 'vite-plugin-node-polyfills'; import svgLoader from 'vite-svg-loader'; import { sentryVitePlugin } from '@sentry/vite-plugin'; import { codecovVitePlugin } from '@codecov/vite-plugin'; @@ -158,9 +157,9 @@ const plugins: UserConfig['plugins'] = [ }, }, // For sanitize-html - nodePolyfills({ - include: ['fs', 'path', 'url', 'util', 'timers'], - }), + // nodePolyfills({ + // include: ['fs', 'path', 'url', 'util', 'timers'], + // }), { name: 'i18n-locales-hmr', configureServer(server) { diff --git a/packages/node-dev/commands/new.ts b/packages/node-dev/commands/new.ts index a831f039132..3d8a4651485 100644 --- a/packages/node-dev/commands/new.ts +++ b/packages/node-dev/commands/new.ts @@ -29,7 +29,8 @@ export class New extends Command { choices: ['Credentials', 'Node'], }; - const typeAnswers = await inquirer.prompt(typeQuestion); + type TypesAnswer = { type: 'Credentials' | 'Node' }; + const typeAnswers = await inquirer.prompt(typeQuestion); let sourceFolder = ''; const sourceFileName = 'simple.ts'; @@ -49,7 +50,8 @@ export class New extends Command { choices: ['Execute', 'Trigger', 'Webhook'], }; - const nodeTypeAnswers = await inquirer.prompt(nodeTypeQuestion); + type NodeTypeAnswer = { nodeType: 'Trigger' | 'Webhook' }; + const nodeTypeAnswers = await inquirer.prompt(nodeTypeQuestion); // Choose a the template-source-file depending on user input. sourceFolder = 'execute'; @@ -89,7 +91,8 @@ export class New extends Command { }); } - const additionalAnswers = await inquirer.prompt( + type AdditionalAnswer = { name: string; description: string }; + const additionalAnswers = await inquirer.prompt( additionalQuestions as inquirer.QuestionCollection, ); @@ -99,7 +102,6 @@ export class New extends Command { // node file const destinationFilePath = join( process.cwd(), - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access `${changeCase.pascalCase(nodeName)}.${typeAnswers.type.toLowerCase()}.ts`, ); @@ -120,9 +122,10 @@ export class New extends Command { }, ]; - const overwriteAnswers = await inquirer.prompt(overwriteQuestion); + type OverwriteAnswer = { overwrite: boolean }; + const overwriteAnswers = await inquirer.prompt(overwriteQuestion); - if (overwriteAnswers.overwrite === false) { + if (!overwriteAnswers.overwrite) { this.log('\nNode creation got canceled!'); return; } diff --git a/packages/node-dev/package.json b/packages/node-dev/package.json index decfaf6675f..bf6712cdf67 100644 --- a/packages/node-dev/package.json +++ b/packages/node-dev/package.json @@ -41,12 +41,12 @@ ], "devDependencies": { "@n8n/typescript-config": "workspace:*", - "@types/inquirer": "^6.5.0" + "@types/inquirer": "^7.0.1" }, "dependencies": { "@n8n/di": "workspace:*", "@oclif/core": "4.0.7", - "change-case": "^4.1.1", + "change-case": "catalog:", "fast-glob": "catalog:", "inquirer": "^7.0.1", "n8n-core": "workspace:*", diff --git a/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts b/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts index e74a420405c..d02f1dc483b 100644 --- a/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts +++ b/packages/nodes-base/nodes/Aws/S3/V1/AwsS3V1.node.ts @@ -1,4 +1,4 @@ -import { paramCase, snakeCase } from 'change-case'; +import { kebabCase, snakeCase } from 'change-case'; import { createHash } from 'crypto'; import type { IDataObject, @@ -96,7 +96,7 @@ export class AwsS3V1 implements INodeType { const name = this.getNodeParameter('name', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.bucketObjectLockEnabled) { headers['x-amz-bucket-object-lock-enabled'] = @@ -488,7 +488,7 @@ export class AwsS3V1 implements INodeType { ).toUpperCase(); } if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.grantFullControl) { headers['x-amz-grant-full-control'] = ''; @@ -767,7 +767,7 @@ export class AwsS3V1 implements INodeType { ).toUpperCase(); } if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.grantFullControl) { headers['x-amz-grant-full-control'] = ''; diff --git a/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts b/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts index 0945768cb76..6ebc2af2d77 100644 --- a/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts +++ b/packages/nodes-base/nodes/Aws/S3/V2/AwsS3V2.node.ts @@ -1,4 +1,4 @@ -import { paramCase, snakeCase } from 'change-case'; +import { kebabCase, snakeCase } from 'change-case'; import { createHash } from 'crypto'; import type { IDataObject, @@ -96,7 +96,7 @@ export class AwsS3V2 implements INodeType { const name = this.getNodeParameter('name', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.bucketObjectLockEnabled) { headers['x-amz-bucket-object-lock-enabled'] = @@ -508,7 +508,7 @@ export class AwsS3V2 implements INodeType { ).toUpperCase(); } if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.grantFullControl) { headers['x-amz-grant-full-control'] = ''; @@ -805,7 +805,7 @@ export class AwsS3V2 implements INodeType { } if (additionalFields.acl) { - multipartHeaders['x-amz-acl'] = paramCase(additionalFields.acl as string); + multipartHeaders['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.grantFullControl) { multipartHeaders['x-amz-grant-full-control'] = ''; diff --git a/packages/nodes-base/nodes/MySql/v2/helpers/utils.ts b/packages/nodes-base/nodes/MySql/v2/helpers/utils.ts index dd9e716fff3..89d1f0ad51b 100644 --- a/packages/nodes-base/nodes/MySql/v2/helpers/utils.ts +++ b/packages/nodes-base/nodes/MySql/v2/helpers/utils.ts @@ -13,6 +13,7 @@ import type { Mysql2PoolConnection, ParameterMatch, QueryMode, + QueryRunner, QueryValues, QueryWithValues, SortRule, @@ -322,7 +323,7 @@ export function configureQueryRunner( this: IExecuteFunctions, options: IDataObject, pool: Mysql2Pool, -) { +): QueryRunner { return async (queries: QueryWithValues[]) => { if (queries.length === 0) { return []; diff --git a/packages/nodes-base/nodes/Postgres/v2/actions/router.ts b/packages/nodes-base/nodes/Postgres/v2/actions/router.ts index a2d86bb3fb7..9d11cbc5bc6 100644 --- a/packages/nodes-base/nodes/Postgres/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Postgres/v2/actions/router.ts @@ -5,7 +5,11 @@ import * as database from './database/Database.resource'; import type { PostgresType } from './node.type'; import { addExecutionHints } from '../../../../utils/utilities'; import { configurePostgres } from '../../transport'; -import type { PostgresNodeCredentials, PostgresNodeOptions } from '../helpers/interfaces'; +import type { + PostgresNodeCredentials, + PostgresNodeOptions, + QueriesRunner, +} from '../helpers/interfaces'; import { configureQueryRunner } from '../helpers/utils'; export async function router(this: IExecuteFunctions): Promise { @@ -23,7 +27,7 @@ export async function router(this: IExecuteFunctions): Promise { let returnData: INodeExecutionData[] = []; const emptyReturnData: INodeExecutionData[] = diff --git a/packages/nodes-base/nodes/S3/S3.node.ts b/packages/nodes-base/nodes/S3/S3.node.ts index 98df6524f74..2b3a7900d60 100644 --- a/packages/nodes-base/nodes/S3/S3.node.ts +++ b/packages/nodes-base/nodes/S3/S3.node.ts @@ -1,4 +1,4 @@ -import { paramCase, snakeCase } from 'change-case'; +import { kebabCase, snakeCase } from 'change-case'; import { createHash } from 'crypto'; import type { IDataObject, @@ -103,7 +103,7 @@ export class S3 implements INodeType { const name = this.getNodeParameter('name', i) as string; const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.bucketObjectLockEnabled) { headers['x-amz-bucket-object-lock-enabled'] = @@ -497,7 +497,7 @@ export class S3 implements INodeType { ).toUpperCase(); } if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.grantFullControl) { headers['x-amz-grant-full-control'] = ''; @@ -781,7 +781,7 @@ export class S3 implements INodeType { ).toUpperCase(); } if (additionalFields.acl) { - headers['x-amz-acl'] = paramCase(additionalFields.acl as string); + headers['x-amz-acl'] = kebabCase(additionalFields.acl as string); } if (additionalFields.grantFullControl) { headers['x-amz-grant-full-control'] = ''; diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 9f661b5b51a..f35af3e22ab 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -887,30 +887,38 @@ "@types/gm": "^1.25.0", "@types/html-to-text": "^9.0.1", "@types/js-nacl": "^1.3.0", + "@types/jsdom": "catalog:", + "@types/json-schema": "catalog:", "@types/jsonwebtoken": "catalog:", "@types/lodash": "catalog:", "@types/lossless-json": "^1.0.0", + "@types/luxon": "catalog:", "@types/mailparser": "^3.4.4", "@types/mime-types": "catalog:", "@types/mssql": "^9.1.5", - "@types/nodemailer": "^8.0.0", - "@types/oracledb": "^6.10.0", + "@types/nodemailer": "catalog:", + "@types/oracledb": "catalog:", "@types/promise-ftp": "^1.3.4", + "@types/qs": "catalog:", "@types/rfc2047": "^2.0.1", "@types/sanitize-html": "catalog:", + "@types/semver": "catalog:", "@types/showdown": "^1.9.4", "@types/ssh2-sftp-client": "^9.0.5", "@types/uuid": "catalog:", "@types/xml2js": "catalog:", - "eslint-plugin-n8n-nodes-base": "^1.16.7", + "eslint-plugin-n8n-nodes-base": "catalog:", "n8n-containers": "workspace:*", "n8n-core": "workspace:*", + "reflect-metadata": "catalog:", + "vite": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:" }, "dependencies": { "@n8n/backend-network": "workspace:*", "@kafkajs/confluent-schema-registry": "3.8.0", + "@langchain/core": "catalog:", "@mozilla/readability": "catalog:", "@n8n/config": "workspace:*", "@n8n/di": "workspace:*", @@ -922,7 +930,7 @@ "aws4": "1.11.0", "axios": "catalog:", "basic-auth": "catalog:", - "change-case": "4.1.2", + "change-case": "catalog:", "cheerio": "catalog:", "chokidar": "catalog:", "cron": "catalog:", @@ -932,6 +940,7 @@ "fast-glob": "catalog:", "fastest-levenshtein": "catalog:", "fflate": "0.7.4", + "form-data": "catalog:", "generate-schema": "2.6.0", "get-system-fonts": "2.0.2", "gm": "1.25.1", @@ -943,6 +952,7 @@ "isolated-vm": "catalog:", "js-nacl": "1.4.0", "jsdom": "23.0.1", + "json-schema": "catalog:", "jsonwebtoken": "catalog:", "kafkajs": "catalog:", "ldapts": "catalog:", @@ -955,18 +965,20 @@ "moment-timezone": "catalog:", "mongodb": "6.11.0", "mqtt": "5.7.2", + "mqtt-packet": "catalog:", "mssql": "10.0.2", "mysql2": "catalog:", "n8n-workflow": "workspace:*", "node-html-markdown": "1.2.0", "node-ssh": "13.2.0", "nodemailer": "catalog:", - "oracledb": "6.10.0", + "oracledb": "catalog:", "otpauth": "9.1.1", "pdfjs-dist": "5.3.31", "pg": "catalog:", "pg-promise": "11.9.1", "promise-ftp": "1.3.5", + "qs": "catalog:", "redis": "4.6.14", "rfc2047": "4.0.1", "rhea": "3.0.4", @@ -986,7 +998,8 @@ "vm2": "catalog:", "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz", "xml2js": "catalog:", - "xmlhttprequest-ssl": "3.1.0" + "xmlhttprequest-ssl": "3.1.0", + "zod": "catalog:" }, "license": "LicenseRef-n8n-sustainable-use" } diff --git a/packages/workflow/package.json b/packages/workflow/package.json index a9f5a3e74c1..d7cd4171a83 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -54,30 +54,39 @@ "@stryker-mutator/vitest-runner": "catalog:", "@types/express": "catalog:", "@types/jmespath": "^0.15.0", + "@types/json-schema": "catalog:", "@types/lodash": "catalog:", - "@types/luxon": "3.2.0", + "@types/luxon": "catalog:", "@types/md5": "^2.3.5", + "@types/ssh2": "catalog:", "@types/xml2js": "catalog:", "fast-check": "catalog:", + "vite": "catalog:", "vitest": "catalog:", "vitest-mock-extended": "catalog:", "zod": "catalog:" }, "dependencies": { + "@codemirror/autocomplete": "catalog:", "@n8n/errors": "workspace:*", "@n8n/expression-runtime": "workspace:*", "@n8n/tournament": "workspace:*", + "@sentry/core": "catalog:sentry", + "@sentry/node": "catalog:sentry", "ast-types": "0.16.1", + "axios": "catalog:", "callsites": "catalog:", "esprima-next": "5.8.4", "form-data": "catalog:", "jmespath": "0.16.0", "js-base64": "catalog:", "jssha": "3.3.1", + "json-schema": "catalog:", "lodash": "catalog:", "luxon": "catalog:", "md5": "2.3.0", "recast": "0.22.0", + "ssh2": "catalog:", "title-case": "3.0.3", "transliteration": "2.3.5", "uuid": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 263266e0c73..8b392493f5c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,6 +96,12 @@ catalogs: '@daytona/sdk': specifier: 0.187.0 version: 0.187.0 + '@iconify-json/lucide': + specifier: ^1.2.112 + version: 1.2.112 + '@iconify-json/mdi': + specifier: ^1.1.63 + version: 1.1.63 '@joplin/turndown-plugin-gfm': specifier: 1.0.64 version: 1.0.64 @@ -195,6 +201,9 @@ catalogs: '@tiptap/markdown': specifier: 3.22.5 version: 3.22.5 + '@tiptap/pm': + specifier: 3.22.5 + version: 3.22.5 '@tiptap/starter-kit': specifier: 3.22.5 version: 3.22.5 @@ -204,27 +213,72 @@ catalogs: '@types/basic-auth': specifier: ^1.1.3 version: 1.1.3 + '@types/estree': + specifier: ^1.0.8 + version: 1.0.8 '@types/express': specifier: ^5.0.1 version: 5.0.1 + '@types/jsdom': + specifier: ^21.1.7 + version: 21.1.7 + '@types/json-schema': + specifier: ^7.0.15 + version: 7.0.15 '@types/jsonwebtoken': specifier: 9.0.10 version: 9.0.10 '@types/lodash': specifier: 4.17.17 version: 4.17.17 + '@types/lodash-es': + specifier: ^4.17.12 + version: 4.17.12 + '@types/luxon': + specifier: 3.2.0 + version: 3.2.0 + '@types/markdown-it': + specifier: ^13.0.2 + version: 13.0.9 + '@types/markdown-it-link-attributes': + specifier: ^3.0.5 + version: 3.0.5 '@types/mime-types': specifier: 3.0.1 version: 3.0.1 + '@types/ms': + specifier: 2.1.0 + version: 2.1.0 + '@types/nodemailer': + specifier: 8.0.1 + version: 8.0.1 + '@types/oracledb': + specifier: 6.10.3 + version: 6.10.3 '@types/proxy-from-env': specifier: ^1.0.4 version: 1.0.4 + '@types/qs': + specifier: 6.9.15 + version: 6.9.15 '@types/sanitize-html': specifier: ^2.11.0 version: 2.11.0 + '@types/semver': + specifier: ^7.7.0 + version: 7.7.0 + '@types/ssh2': + specifier: 1.15.0 + version: 1.15.0 + '@types/turndown': + specifier: ^5.0.6 + version: 5.0.6 '@types/uuid': specifier: ^11.0.0 version: 11.0.0 + '@types/ws': + specifier: ^8.18.1 + version: 8.18.1 '@types/xml2js': specifier: ^0.4.14 version: 0.4.14 @@ -234,6 +288,9 @@ catalogs: agent-browser: specifier: 0.26.0 version: 0.26.0 + ai: + specifier: ^6.0.197 + version: 6.0.197 babel-jest: specifier: ^29.7.0 version: 29.7.0 @@ -246,6 +303,9 @@ catalogs: callsites: specifier: 3.1.0 version: 3.1.0 + change-case: + specifier: ^5.4.4 + version: 5.4.4 chat: specifier: ^4.28.1 version: 4.28.1 @@ -261,15 +321,24 @@ catalogs: csv-parse: specifier: 6.2.1 version: 6.2.1 + dotenv: + specifier: 17.2.3 + version: 17.2.3 electron: specifier: ^41.7.2 version: 41.7.2 eslint: specifier: 9.29.0 version: 9.29.0 + eslint-plugin-n8n-nodes-base: + specifier: ^1.16.7 + version: 1.16.7 eslint-plugin-oxlint: specifier: ^1.61.0 version: 1.61.0 + express: + specifier: 5.1.0 + version: 5.1.0 fast-check: specifier: ^3.23.2 version: 3.23.2 @@ -303,6 +372,9 @@ catalogs: js-tiktoken: specifier: 1.0.21 version: 1.0.21 + json-schema: + specifier: 0.4.0 + version: 0.4.0 jsonrepair: specifier: 3.13.2 version: 3.13.2 @@ -318,15 +390,30 @@ catalogs: ldapts: specifier: 8.1.7 version: 8.1.7 + lodash-es: + specifier: 4.18.1 + version: 4.18.1 luxon: specifier: 3.7.2 version: 3.7.2 + markdown-it: + specifier: ^13.0.2 + version: 13.0.2 + markdown-it-link-attributes: + specifier: ^4.0.1 + version: 4.0.1 mime-types: specifier: 3.0.2 version: 3.0.2 moment-timezone: specifier: 0.5.48 version: 0.5.48 + mqtt-packet: + specifier: 9.0.0 + version: 9.0.0 + ms: + specifier: 2.1.3 + version: 2.1.3 mysql2: specifier: 3.17.0 version: 3.17.0 @@ -339,6 +426,9 @@ catalogs: openai: specifier: 6.19.0 version: 6.19.0 + oracledb: + specifier: 6.10.0 + version: 6.10.0 oxlint: specifier: ^1.61.0 version: 1.61.0 @@ -381,9 +471,15 @@ catalogs: source-map-support: specifier: 0.5.21 version: 0.5.21 + ssh2: + specifier: 1.15.0 + version: 1.15.0 stream-json: specifier: 1.9.1 version: 1.9.1 + stylelint: + specifier: ^16.23.0 + version: 16.23.0 testcontainers: specifier: ^11.13.0 version: 11.13.0 @@ -455,6 +551,9 @@ catalogs: '@sentry/vue': specifier: ^10.36.0 version: 10.36.0 + '@testing-library/dom': + specifier: ^10.4.0 + version: 10.4.0 '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.6.3 @@ -504,6 +603,9 @@ catalogs: specifier: ^4.5.0 version: 4.5.0 sentry: + '@sentry/core': + specifier: ^10.55.0 + version: 10.55.0 '@sentry/node': specifier: ^10.55.0 version: 10.55.0 @@ -529,6 +631,9 @@ catalogs: '@storybook/addon-vitest': specifier: ^10.1.11 version: 10.1.11 + '@storybook/vue3': + specifier: ^10.1.11 + version: 10.1.11 '@storybook/vue3-vite': specifier: ^10.1.11 version: 10.1.11 @@ -561,6 +666,7 @@ overrides: '@opentelemetry/core': 2.8.0 '@types/node': ^20.17.50 chokidar: 4.0.3 + esbuild: ^0.28.1 multer: ^2.2.0 prebuild-install: 7.1.3 pug: ^3.0.3 @@ -598,7 +704,6 @@ overrides: bn.js@4: 5.2.3 bn.js@5: 5.2.3 lodash: 4.18.1 - lodash-es: 4.18.1 minimatch@<=5.1.8: 5.1.8 minimatch@10: 10.2.3 '@hono/node-server': 1.19.13 @@ -634,7 +739,6 @@ overrides: '@turbo/darwin-64@<=2.9.18': 2.9.18 '@turbo/linux-64@<=2.9.18': 2.9.18 '@turbo/windows-64@<=2.9.18': 2.9.18 - esbuild: ^0.28.1 undici@5: ^6.24.0 undici@6: ^6.24.0 undici@7: ^7.28.0 @@ -756,9 +860,15 @@ importers: p-limit: specifier: ^3.1.0 version: 3.1.0 + prettier: + specifier: 'catalog:' + version: 3.6.2 rimraf: specifier: ^5.0.1 version: 5.0.1 + stylelint: + specifier: 'catalog:' + version: 16.23.0(typescript@6.0.2) supertest: specifier: ^7.1.1 version: 7.1.1 @@ -850,7 +960,7 @@ importers: specifier: '>=1.0.0' version: 2.7.1(@opentelemetry/api@1.9.0) ai: - specifier: ^6.0.197 + specifier: 'catalog:' version: 6.0.197(zod@3.25.67) ajv: specifier: 8.18.0 @@ -878,7 +988,7 @@ importers: specifier: workspace:* version: link:../vitest-config '@types/json-schema': - specifier: ^7.0.15 + specifier: 'catalog:' version: 7.0.15 '@vitest/coverage-v8': specifier: 'catalog:' @@ -886,6 +996,9 @@ importers: cross-env: specifier: 'catalog:' version: 7.0.3 + dotenv: + specifier: 'catalog:' + version: 17.2.3 nock: specifier: 'catalog:' version: 14.0.14 @@ -976,17 +1089,26 @@ importers: specifier: workspace:* version: link:../vitest-config '@types/json-schema': - specifier: ^7.0.15 + specifier: 'catalog:' version: 7.0.15 + '@types/lodash': + specifier: 'catalog:' + version: 4.17.17 '@types/mime-types': specifier: 'catalog:' version: 3.0.1 + '@types/proxy-from-env': + specifier: 'catalog:' + version: 1.0.4 '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) axios: specifier: 1.18.0 version: 1.18.0(debug@4.4.3) + fast-glob: + specifier: 'catalog:' + version: 3.2.12 nock: specifier: 'catalog:' version: 14.0.14 @@ -1093,8 +1215,17 @@ importers: '@types/cli-progress': specifier: ^3.11.5 version: 3.11.6 + '@types/jsdom': + specifier: 'catalog:' + version: 21.1.7 + '@types/lodash': + specifier: 'catalog:' + version: 4.17.17 + '@types/proxy-from-env': + specifier: 'catalog:' + version: 1.0.4 '@types/turndown': - specifier: ^5.0.6 + specifier: 'catalog:' version: 5.0.6 '@vitest/coverage-v8': specifier: 'catalog:' @@ -1120,6 +1251,9 @@ importers: '@n8n/permissions': specifier: workspace:* version: link:../permissions + '@n8n_io/ai-assistant-sdk': + specifier: 'catalog:' + version: 1.22.0 n8n-workflow: specifier: workspace:* version: link:../../workflow @@ -1172,6 +1306,9 @@ importers: flatted: specifier: 3.4.2 version: 3.4.2 + logform: + specifier: 2.6.1 + version: 2.6.1 n8n-workflow: specifier: workspace:* version: link:../../workflow @@ -1276,6 +1413,9 @@ importers: '@types/proxy-from-env': specifier: 'catalog:' version: 1.0.4 + '@types/qs': + specifier: 'catalog:' + version: 6.9.15 '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) @@ -1338,7 +1478,7 @@ importers: specifier: 1.18.0 version: 1.18.0(debug@4.4.3) dotenv: - specifier: 17.2.3 + specifier: 'catalog:' version: 17.2.3 nanoid: specifier: 'catalog:' @@ -1468,6 +1608,12 @@ importers: '@lezer/common': specifier: ^1.2.0 version: 1.2.1 + '@lezer/highlight': + specifier: 'catalog:' + version: 1.2.3(patch_hash=97f85e6fe46f23015ea0dd420e33d584bc2dc71633910cf131321da31b27ca8c) + '@lezer/lr': + specifier: 'catalog:' + version: 1.4.5 devDependencies: '@codemirror/buildhelper': specifier: ^0.1.5 @@ -1484,6 +1630,9 @@ importers: '@rollup/plugin-node-resolve': specifier: ^9.0.0 version: 9.0.0(rollup@2.79.2) + ist: + specifier: 1.1.7 + version: 1.1.7 rollup: specifier: ^2.52.2 version: 2.79.2 @@ -1739,6 +1888,9 @@ importers: '@testcontainers/postgresql': specifier: 'catalog:' version: 11.13.0 + '@types/express': + specifier: 'catalog:' + version: 5.0.1 '@types/lodash': specifier: 'catalog:' version: 4.17.17 @@ -1746,7 +1898,7 @@ importers: specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) express: - specifier: 5.1.0 + specifier: 'catalog:' version: 5.1.0 testcontainers: specifier: 'catalog:' @@ -1832,7 +1984,7 @@ importers: specifier: workspace:* version: link:../di express: - specifier: 5.1.0 + specifier: 'catalog:' version: 5.1.0 reflect-metadata: specifier: 'catalog:' @@ -1936,6 +2088,9 @@ importers: typescript-eslint: specifier: ^8.35.0 version: 8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@6.0.2) + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -1982,6 +2137,9 @@ importers: typescript: specifier: 6.0.2 version: 6.0.2 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -2038,11 +2196,14 @@ importers: specifier: 'catalog:' version: 4.17.17 '@types/luxon': - specifier: 3.2.0 + specifier: 'catalog:' version: 3.2.0 '@types/md5': specifier: ^2.3.5 version: 2.3.5 + esbuild: + specifier: ^0.28.1 + version: 0.28.1 typescript: specifier: 6.0.2 version: 6.0.2 @@ -2123,6 +2284,12 @@ importers: '@types/utf8': specifier: ^3.0.3 version: 3.0.3 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) + vitest: + specifier: 'catalog:' + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) vitest-mock-extended: specifier: 'catalog:' version: 3.1.0(typescript@6.0.2)(vitest@4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3))) @@ -2162,6 +2329,9 @@ importers: '@thednp/dommatrix': specifier: ^2.0.12 version: 2.0.12 + ai: + specifier: 'catalog:' + version: 6.0.197(zod@3.25.67) csv-parse: specifier: 'catalog:' version: 6.2.1 @@ -2230,13 +2400,13 @@ importers: specifier: workspace:* version: link:../vitest-config '@types/luxon': - specifier: 3.2.0 + specifier: 'catalog:' version: 3.2.0 '@types/psl': specifier: 1.1.3 version: 1.1.3 '@types/turndown': - specifier: ^5.0.5 + specifier: 'catalog:' version: 5.0.6 '@vitest/coverage-v8': specifier: 'catalog:' @@ -2264,7 +2434,7 @@ importers: specifier: workspace:* version: link:../vitest-config '@types/json-schema': - specifier: ^7.0.15 + specifier: 'catalog:' version: 7.0.15 '@vitest/coverage-v8': specifier: 'catalog:' @@ -2336,7 +2506,13 @@ importers: vue-i18n: specifier: catalog:frontend version: 11.4.5(vue@3.5.26(typescript@6.0.2)) + zod: + specifier: 3.25.67 + version: 3.25.67 devDependencies: + '@iconify-json/lucide': + specifier: 'catalog:' + version: 1.2.112 '@modelcontextprotocol/sdk': specifier: 'catalog:' version: 1.26.0(zod@3.25.67) @@ -2350,7 +2526,7 @@ importers: specifier: workspace:* version: link:../vitest-config '@types/semver': - specifier: ^7.7.0 + specifier: 'catalog:' version: 7.7.0 '@vitejs/plugin-vue': specifier: catalog:frontend @@ -2434,11 +2610,14 @@ importers: '@n8n/vitest-config': specifier: workspace:* version: link:../vitest-config + '@types/jsdom': + specifier: 'catalog:' + version: 21.1.7 '@types/turndown': - specifier: ^5.0.6 + specifier: 'catalog:' version: 5.0.6 '@types/ws': - specifier: ^8.18.1 + specifier: 'catalog:' version: 8.18.1(patch_hash=682b44b740be55e5d7018e6fe335880851dadf2524b6c723c9ed0c29cb2fa7fb) '@types/yargs-parser': specifier: 21.0.0 @@ -2459,6 +2638,9 @@ importers: specifier: catalog:frontend version: 3.5.26(typescript@6.0.2) devDependencies: + '@iconify-json/lucide': + specifier: 'catalog:' + version: 1.2.112 '@n8n/typescript-config': specifier: workspace:* version: link:../typescript-config @@ -2505,7 +2687,7 @@ importers: specifier: ^4.5.2 version: 4.5.2 change-case: - specifier: ^5.4.4 + specifier: 'catalog:' version: 5.4.4 eslint: specifier: 'catalog:' @@ -2517,7 +2699,7 @@ importers: specifier: ^4.15.2 version: 4.15.2(@typescript-eslint/utils@8.35.0(eslint@9.29.0(jiti@2.6.1))(typescript@6.0.2))(eslint-import-resolver-node@0.3.9)(eslint@9.29.0(jiti@2.6.1)) eslint-plugin-n8n-nodes-base: - specifier: 1.16.7 + specifier: 'catalog:' version: 1.16.7(eslint@9.29.0(jiti@2.6.1))(typescript@6.0.2) fast-glob: specifier: 'catalog:' @@ -2556,6 +2738,9 @@ importers: typescript: specifier: 6.0.2 version: 6.0.2 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -2616,6 +2801,9 @@ importers: '@langchain/core': specifier: 'catalog:' version: 1.1.41(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.217.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.0))(openai@6.34.0(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + '@langchain/google-common': + specifier: 2.1.24 + version: 2.1.24(@langchain/core@1.1.41(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.217.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.0))(openai@6.34.0(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) '@langchain/google-genai': specifier: 2.1.24 version: 2.1.24(@langchain/core@1.1.41(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.217.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.0))(openai@6.34.0(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))) @@ -2718,6 +2906,9 @@ importers: '@smithy/node-http-handler': specifier: 4.5.0 version: 4.5.0 + '@smithy/types': + specifier: 4.13.1 + version: 4.13.1 '@supabase/supabase-js': specifier: 'catalog:' version: 2.50.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -2748,6 +2939,9 @@ importers: epub2: specifier: 3.0.2 version: 3.0.2(ts-toolbelt@9.6.0) + express: + specifier: 'catalog:' + version: 5.1.0 form-data: specifier: 4.0.6 version: 4.0.6 @@ -2796,6 +2990,9 @@ importers: openai: specifier: ^6.34.0 version: 6.34.0(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67) + oracledb: + specifier: 'catalog:' + version: 6.10.0 pg: specifier: 'catalog:' version: 8.17.0 @@ -2839,15 +3036,30 @@ importers: '@types/basic-auth': specifier: 'catalog:' version: 1.1.3 + '@types/cheerio': + specifier: ^0.22.15 + version: 0.22.35 + '@types/express': + specifier: 'catalog:' + version: 5.0.1 '@types/html-to-text': specifier: ^9.0.1 version: 9.0.4 + '@types/jsdom': + specifier: 'catalog:' + version: 21.1.7 '@types/json-schema': - specifier: ^7.0.15 + specifier: 'catalog:' version: 7.0.15 + '@types/lodash': + specifier: 'catalog:' + version: 4.17.17 '@types/mime-types': specifier: 'catalog:' version: 3.0.1 + '@types/oracledb': + specifier: 'catalog:' + version: 6.10.3 '@types/pg': specifier: ^8.15.6 version: 8.15.6 @@ -2863,6 +3075,9 @@ importers: '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) + eslint-plugin-n8n-nodes-base: + specifier: 'catalog:' + version: 1.16.7(eslint@9.29.0(jiti@2.6.1))(typescript@6.0.2) fast-glob: specifier: 'catalog:' version: 3.2.12 @@ -2935,7 +3150,7 @@ importers: specifier: ^4.0.9 version: 4.0.9(postcss@8.5.10) stylelint: - specifier: ^16.23.0 + specifier: 'catalog:' version: 16.23.0(typescript@6.0.2) stylelint-config-standard-scss: specifier: ^15.0.1 @@ -2959,6 +3174,9 @@ importers: typescript: specifier: 6.0.2 version: 6.0.2 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -3002,6 +3220,9 @@ importers: '@n8n/errors': specifier: workspace:* version: link:../errors + '@sentry/core': + specifier: catalog:sentry + version: 10.55.0 '@sentry/node': specifier: catalog:sentry version: 10.55.0(@opentelemetry/exporter-trace-otlp-http@0.217.0(@opentelemetry/api@1.9.0)) @@ -3039,6 +3260,12 @@ importers: '@types/lodash': specifier: 'catalog:' version: 4.17.17 + '@types/luxon': + specifier: 'catalog:' + version: 3.2.0 + '@types/ws': + specifier: 'catalog:' + version: 8.18.1(patch_hash=682b44b740be55e5d7018e6fe335880851dadf2524b6c723c9ed0c29cb2fa7fb) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) @@ -3177,8 +3404,11 @@ importers: specifier: ^0.5.7 version: 0.5.7 '@types/estree': - specifier: ^1.0.8 + specifier: 'catalog:' version: 1.0.8 + '@types/lodash': + specifier: 'catalog:' + version: 4.17.17 '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) @@ -3221,6 +3451,9 @@ importers: '@chat-adapter/telegram': specifier: 'catalog:' version: 4.28.1 + '@daytona/sdk': + specifier: 'catalog:' + version: 0.187.0(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@google-cloud/secret-manager': specifier: 5.6.0 version: 5.6.0(encoding@0.1.13) @@ -3363,8 +3596,8 @@ importers: specifier: 'catalog:' version: 5.2.3 change-case: - specifier: 4.1.2 - version: 4.1.2 + specifier: 'catalog:' + version: 5.4.4 chat: specifier: 'catalog:' version: 4.28.1 @@ -3393,10 +3626,10 @@ importers: specifier: 'catalog:' version: 6.2.1 dotenv: - specifier: 17.2.3 + specifier: 'catalog:' version: 17.2.3 express: - specifier: 5.1.0 + specifier: 'catalog:' version: 5.1.0 express-handlebars: specifier: 8.0.1 @@ -3455,6 +3688,9 @@ importers: json-diff: specifier: 1.0.6 version: 1.0.6 + json-schema: + specifier: 'catalog:' + version: 0.4.0 jsonschema: specifier: 1.4.1 version: 1.4.1 @@ -3479,6 +3715,9 @@ importers: moment-timezone: specifier: 'catalog:' version: 0.5.48 + ms: + specifier: 'catalog:' + version: 2.1.3 multer: specifier: ^2.2.0 version: 2.2.0 @@ -3663,18 +3902,36 @@ importers: '@types/json-diff': specifier: ^1.0.0 version: 1.0.0 + '@types/json-schema': + specifier: 'catalog:' + version: 7.0.15 '@types/jsonwebtoken': specifier: 'catalog:' version: 9.0.10 '@types/lodash': specifier: 'catalog:' version: 4.17.17 + '@types/luxon': + specifier: 'catalog:' + version: 3.2.0 + '@types/ms': + specifier: 'catalog:' + version: 2.1.0 + '@types/multer': + specifier: ^2.1.0 + version: 2.1.0 + '@types/nodemailer': + specifier: 'catalog:' + version: 8.0.1 '@types/psl': specifier: ^1.1.0 version: 1.1.3 '@types/replacestream': specifier: ^4.0.1 version: 4.0.1 + '@types/semver': + specifier: 'catalog:' + version: 7.7.0 '@types/shelljs': specifier: ^0.8.11 version: 0.8.11 @@ -3690,6 +3947,9 @@ importers: '@types/syslog-client': specifier: ^1.1.2 version: 1.1.2 + '@types/turndown': + specifier: 'catalog:' + version: 5.0.6 '@types/uuid': specifier: 'catalog:' version: 11.0.0 @@ -3697,7 +3957,7 @@ importers: specifier: ^13.7.0 version: 13.7.10 '@types/ws': - specifier: ^8.18.1 + specifier: 'catalog:' version: 8.18.1(patch_hash=682b44b740be55e5d7018e6fe335880851dadf2524b6c723c9ed0c29cb2fa7fb) '@types/xml2js': specifier: 'catalog:' @@ -3801,6 +4061,9 @@ importers: '@n8n/workflow-sdk': specifier: workspace:* version: link:../@n8n/workflow-sdk + '@sentry/core': + specifier: catalog:sentry + version: 10.55.0 '@sentry/node': specifier: catalog:sentry version: 10.55.0(@opentelemetry/exporter-trace-otlp-http@0.217.0(@opentelemetry/api@1.9.0)) @@ -3843,6 +4106,9 @@ importers: mime-types: specifier: 'catalog:' version: 3.0.2 + ms: + specifier: 'catalog:' + version: 2.1.3 n8n-workflow: specifier: workspace:* version: link:../workflow @@ -3865,7 +4131,7 @@ importers: specifier: 6.15.2 version: 6.15.2 ssh2: - specifier: 1.15.0 + specifier: 'catalog:' version: 1.15.0 uuid: specifier: 'catalog:' @@ -3901,9 +4167,18 @@ importers: '@types/lodash': specifier: 'catalog:' version: 4.17.17 + '@types/luxon': + specifier: 'catalog:' + version: 3.2.0 '@types/mime-types': specifier: 'catalog:' version: 3.0.1 + '@types/ms': + specifier: 'catalog:' + version: 2.1.0 + '@types/ssh2': + specifier: 'catalog:' + version: 1.15.0 '@types/uuid': specifier: 'catalog:' version: 11.0.0 @@ -3959,12 +4234,21 @@ importers: rimraf: specifier: 'catalog:' version: 6.0.1 + stylelint: + specifier: 'catalog:' + version: 16.23.0(typescript@6.0.2) tsdown: specifier: 'catalog:' version: 0.16.5(typescript@6.0.2)(vue-tsc@2.2.8(patch_hash=e2aee939ccac8a57fe449bfd92bedd8117841579526217bc39aca26c6b8c317f)(typescript@6.0.2)) vite: specifier: 'catalog:' version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) + vite-plugin-dts: + specifier: 'catalog:' + version: 4.5.4(@types/node@20.19.41)(rollup@4.52.4)(typescript@6.0.2)(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) + vitest: + specifier: 'catalog:' + version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) vue-tsc: specifier: ^2.2.8 version: 2.2.8(patch_hash=e2aee939ccac8a57fe449bfd92bedd8117841579526217bc39aca26c6b8c317f)(typescript@6.0.2) @@ -3980,8 +4264,11 @@ importers: highlight.js: specifier: catalog:frontend version: 11.8.0 + markdown-it: + specifier: 'catalog:' + version: 13.0.2 markdown-it-link-attributes: - specifier: ^4.0.1 + specifier: 'catalog:' version: 4.0.1 uuid: specifier: 'catalog:' @@ -3993,8 +4280,11 @@ importers: specifier: catalog:frontend version: 2.2.1(vue@3.5.26(typescript@6.0.2)) devDependencies: + '@iconify-json/lucide': + specifier: 'catalog:' + version: 1.2.112 '@iconify-json/mdi': - specifier: ^1.1.54 + specifier: 'catalog:' version: 1.1.63 '@n8n/eslint-config': specifier: workspace:* @@ -4011,15 +4301,33 @@ importers: '@n8n/vitest-config': specifier: workspace:* version: link:../../../@n8n/vitest-config + '@storybook/vue3': + specifier: catalog:storybook + version: 10.1.11(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vue@3.5.26(typescript@6.0.2)) '@storybook/vue3-vite': specifier: catalog:storybook version: 10.1.11(esbuild@0.28.1)(rollup@4.52.4)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3))(vue@3.5.26(typescript@6.0.2)) + '@testing-library/jest-dom': + specifier: catalog:frontend + version: 6.6.3 + '@testing-library/vue': + specifier: catalog:frontend + version: 8.1.0(@vue/compiler-sfc@3.5.26)(vue@3.5.26(typescript@6.0.2)) + '@types/markdown-it': + specifier: 'catalog:' + version: 13.0.9 + '@types/markdown-it-link-attributes': + specifier: 'catalog:' + version: 3.0.5 '@vitejs/plugin-vue': specifier: catalog:frontend version: 5.2.4(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3))(vue@3.5.26(typescript@6.0.2)) '@vitest/coverage-v8': specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) + '@vue/test-utils': + specifier: catalog:frontend + version: 2.4.6 unplugin-icons: specifier: ^0.19.0 version: 0.19.0(@vue/compiler-sfc@3.5.26) @@ -4132,6 +4440,9 @@ importers: '@tiptap/markdown': specifier: 'catalog:' version: 3.22.5(@tiptap/core@3.22.5(@tiptap/pm@3.22.5))(@tiptap/pm@3.22.5) + '@tiptap/pm': + specifier: 'catalog:' + version: 3.22.5 '@tiptap/starter-kit': specifier: 'catalog:' version: 3.22.5 @@ -4147,6 +4458,9 @@ importers: element-plus: specifier: catalog:frontend version: 2.4.3(patch_hash=fbab57fe3750e430abd5d5e7c04cbf1b6a8f9f1c9676b14c73b77d3e06ba9eee)(vue@3.5.26(typescript@6.0.2)) + highlight.js: + specifier: catalog:frontend + version: 11.8.0 is-emoji-supported: specifier: ^0.0.5 version: 0.0.5 @@ -4154,13 +4468,13 @@ importers: specifier: 4.18.1 version: 4.18.1 markdown-it: - specifier: ^13.0.2 + specifier: 'catalog:' version: 13.0.2 markdown-it-emoji: specifier: ^2.0.2 version: 2.0.2 markdown-it-link-attributes: - specifier: ^4.0.1 + specifier: 'catalog:' version: 4.0.1 markdown-it-task-lists: specifier: ^2.1.1 @@ -4168,6 +4482,9 @@ importers: parse-diff: specifier: ^0.11.1 version: 0.11.1 + pinia: + specifier: catalog:frontend + version: 2.2.4(typescript@6.0.2)(vue@3.5.26(typescript@6.0.2)) reka-ui: specifier: ^2.5.0 version: 2.5.0(typescript@6.0.2)(vue@3.5.26(typescript@6.0.2)) @@ -4205,6 +4522,12 @@ importers: '@n8n/vitest-config': specifier: workspace:* version: link:../../../@n8n/vitest-config + '@storybook/addon-docs': + specifier: catalog:storybook + version: 10.1.11(@types/react@18.0.27)(esbuild@0.28.1)(rollup@4.52.4)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) + '@storybook/vue3': + specifier: catalog:storybook + version: 10.1.11(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vue@3.5.26(typescript@6.0.2)) '@storybook/vue3-vite': specifier: catalog:storybook version: 10.1.11(esbuild@0.28.1)(rollup@4.52.4)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3))(vue@3.5.26(typescript@6.0.2)) @@ -4221,13 +4544,13 @@ importers: specifier: 'catalog:' version: 4.17.17 '@types/markdown-it': - specifier: ^13.0.9 + specifier: 'catalog:' version: 13.0.9 '@types/markdown-it-emoji': specifier: ^2.0.2 version: 2.0.5 '@types/markdown-it-link-attributes': - specifier: ^3.0.5 + specifier: 'catalog:' version: 3.0.5 '@types/sanitize-html': specifier: 'catalog:' @@ -4247,12 +4570,24 @@ importers: emojibase-data: specifier: ^17.0.0 version: 17.0.0(emojibase@17.0.0) + eslint-plugin-storybook: + specifier: catalog:storybook + version: 10.1.11(eslint@9.29.0(jiti@2.6.1))(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(typescript@6.0.2) postcss: specifier: 8.5.10 version: 8.5.10 sass: specifier: ^1.71.1 version: 1.98.0 + storybook: + specifier: catalog:storybook + version: 10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10) + storybook-addon-vue-mdx: + specifier: 3.0.0 + version: 3.0.0(@storybook/addon-docs@10.1.11(@types/react@18.0.27)(esbuild@0.28.1)(rollup@4.52.4)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)))(@storybook/builder-vite@10.1.11(esbuild@0.28.1)(rollup@4.52.4)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vue@3.5.26(typescript@6.0.2)) + stylelint: + specifier: 'catalog:' + version: 16.23.0(typescript@6.0.2) tailwindcss: specifier: ^3.4.3 version: 3.4.3(ts-node@10.9.2(@swc/core@1.15.8(@swc/helpers@0.5.17))(@types/node@20.19.41)(typescript@6.0.2)) @@ -4262,6 +4597,9 @@ importers: vite: specifier: 'catalog:' version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) + vite-svg-loader: + specifier: catalog:frontend + version: 5.1.0(vue@3.5.26(typescript@6.0.2)) vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -4390,6 +4728,9 @@ importers: vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) + vue-tsc: + specifier: ^2.2.8 + version: 2.2.8(patch_hash=e2aee939ccac8a57fe449bfd92bedd8117841579526217bc39aca26c6b8c317f)(typescript@6.0.2) packages/frontend/@n8n/stores: dependencies: @@ -4469,6 +4810,9 @@ importers: '@n8n/utils': specifier: workspace:* version: link:../../../@n8n/utils + element-plus: + specifier: catalog:frontend + version: 2.4.3(patch_hash=fbab57fe3750e430abd5d5e7c04cbf1b6a8f9f1c9676b14c73b77d3e06ba9eee)(vue@3.5.26(typescript@6.0.2)) pinia: specifier: catalog:frontend version: 2.2.4(typescript@6.0.2)(vue@3.5.26(typescript@6.0.2)) @@ -4485,6 +4829,15 @@ importers: '@chromatic-com/storybook': specifier: catalog:storybook version: 4.1.3(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10)) + '@iconify-json/lucide': + specifier: 'catalog:' + version: 1.2.112 + '@iconify-json/mdi': + specifier: 'catalog:' + version: 1.1.63 + '@n8n/eslint-config': + specifier: workspace:* + version: link:../../../@n8n/eslint-config '@n8n/typescript-config': specifier: workspace:* version: link:../../../@n8n/typescript-config @@ -4500,6 +4853,9 @@ importers: '@storybook/addon-vitest': specifier: catalog:storybook version: 10.1.11(@vitest/browser-playwright@4.0.16)(@vitest/runner@4.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vitest@4.1.1) + '@storybook/vue3': + specifier: catalog:storybook + version: 10.1.11(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vue@3.5.26(typescript@6.0.2)) '@storybook/vue3-vite': specifier: catalog:storybook version: 10.1.11(esbuild@0.28.1)(rollup@4.52.4)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3))(vue@3.5.26(typescript@6.0.2)) @@ -4524,6 +4880,9 @@ importers: playwright: specifier: catalog:e2e version: 1.60.0 + prettier: + specifier: 'catalog:' + version: 3.6.2 remark-gfm: specifier: ^4.0.1 version: 4.0.1 @@ -4593,6 +4952,9 @@ importers: '@lezer/common': specifier: ^1.2.0 version: 1.2.1 + '@lezer/highlight': + specifier: 'catalog:' + version: 1.2.3(patch_hash=97f85e6fe46f23015ea0dd420e33d584bc2dc71633910cf131321da31b27ca8c) '@n8n/api-types': specifier: workspace:* version: link:../../@n8n/api-types @@ -4645,7 +5007,7 @@ importers: specifier: catalog:frontend version: 10.36.0(pinia@2.2.4(typescript@6.0.2)(vue@3.5.26(typescript@6.0.2)))(vue@3.5.26(typescript@6.0.2)) '@types/semver': - specifier: ^7.7.0 + specifier: 'catalog:' version: 7.7.0 '@typescript/vfs': specifier: ^1.6.0 @@ -4690,7 +5052,7 @@ importers: specifier: 2.11.0 version: 2.11.0 change-case: - specifier: ^5.4.4 + specifier: 'catalog:' version: 5.4.4 chart.js: specifier: ^4.4.0 @@ -4746,6 +5108,9 @@ importers: luxon: specifier: 'catalog:' version: 3.7.2 + markdown-it: + specifier: 'catalog:' + version: 13.0.2 markdown-it-footnote: specifier: ^4.0.0 version: 4.0.0 @@ -4779,6 +5144,9 @@ importers: stream-browserify: specifier: ^3.0.0 version: 3.0.0 + stylelint: + specifier: 'catalog:' + version: 16.23.0(typescript@6.0.2) timeago.js: specifier: ^4.0.2 version: 4.0.2 @@ -4879,6 +5247,15 @@ importers: '@storybook/types': specifier: ^8.6.14 version: 8.6.14(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10)) + '@storybook/vue3-vite': + specifier: catalog:storybook + version: 10.1.11(esbuild@0.28.1)(rollup@4.52.4)(storybook@10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3))(vue@3.5.26(typescript@6.0.2)) + '@testing-library/dom': + specifier: catalog:frontend + version: 10.4.0 + '@testing-library/jest-dom': + specifier: catalog:frontend + version: 6.6.3 '@testing-library/user-event': specifier: catalog:frontend version: 14.6.1(@testing-library/dom@10.4.0) @@ -4888,6 +5265,9 @@ importers: '@types/dateformat': specifier: ^3.0.0 version: 3.0.1 + '@types/estree': + specifier: 'catalog:' + version: 1.0.8 '@types/file-saver': specifier: ^2.0.1 version: 2.0.5 @@ -4895,11 +5275,20 @@ importers: specifier: ^3.27.1 version: 3.27.1 '@types/json-schema': - specifier: ^7.0.15 + specifier: 'catalog:' version: 7.0.15 '@types/lodash': specifier: 'catalog:' version: 4.17.17 + '@types/lodash-es': + specifier: 'catalog:' + version: 4.17.12 + '@types/luxon': + specifier: 'catalog:' + version: 3.2.0 + '@types/markdown-it': + specifier: 'catalog:' + version: 13.0.9 '@types/sanitize-html': specifier: 'catalog:' version: 2.11.0 @@ -4918,6 +5307,9 @@ importers: '@vue/test-utils': specifier: catalog:frontend version: 2.4.6 + browserslist: + specifier: 4.28.1 + version: 4.28.1 browserslist-to-esbuild: specifier: ^2.1.1 version: 2.1.1(browserslist@4.28.1) @@ -4927,6 +5319,9 @@ importers: fake-indexeddb: specifier: ^6.0.0 version: 6.0.0 + lodash-es: + specifier: 'catalog:' + version: 4.18.1 miragejs: specifier: ^0.1.48 version: 0.1.48 @@ -4939,6 +5334,9 @@ importers: sass-embedded: specifier: 'catalog:' version: 1.98.0 + storybook: + specifier: catalog:storybook + version: 10.1.11(@testing-library/dom@10.4.0)(bufferutil@4.0.9)(prettier@3.6.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(utf-8-validate@5.0.10) unplugin-icons: specifier: catalog:frontend version: 23.0.1(@vue/compiler-sfc@3.5.26) @@ -4973,8 +5371,8 @@ importers: specifier: 4.0.7 version: 4.0.7 change-case: - specifier: ^4.1.1 - version: 4.1.2 + specifier: 'catalog:' + version: 5.4.4 fast-glob: specifier: 'catalog:' version: 3.2.12 @@ -4998,14 +5396,17 @@ importers: specifier: workspace:* version: link:../@n8n/typescript-config '@types/inquirer': - specifier: ^6.5.0 - version: 6.5.0 + specifier: ^7.0.1 + version: 7.3.3 packages/nodes-base: dependencies: '@kafkajs/confluent-schema-registry': specifier: 3.8.0 version: 3.8.0 + '@langchain/core': + specifier: 'catalog:' + version: 1.1.41(@opentelemetry/api@1.9.0)(@opentelemetry/exporter-trace-otlp-proto@0.217.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.7.1(@opentelemetry/api@1.9.0))(openai@6.34.0(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.67))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)) '@mozilla/readability': specifier: 'catalog:' version: 0.6.0 @@ -5043,8 +5444,8 @@ importers: specifier: 'catalog:' version: 2.0.1 change-case: - specifier: 4.1.2 - version: 4.1.2 + specifier: 'catalog:' + version: 5.4.4 cheerio: specifier: 'catalog:' version: 1.1.0 @@ -5072,6 +5473,9 @@ importers: fflate: specifier: 0.7.4 version: 0.7.4 + form-data: + specifier: 4.0.6 + version: 4.0.6 generate-schema: specifier: 2.6.0 version: 2.6.0 @@ -5105,6 +5509,9 @@ importers: jsdom: specifier: 23.0.1 version: 23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + json-schema: + specifier: 'catalog:' + version: 0.4.0 jsonwebtoken: specifier: 'catalog:' version: 9.0.3 @@ -5141,6 +5548,9 @@ importers: mqtt: specifier: 5.7.2 version: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + mqtt-packet: + specifier: 'catalog:' + version: 9.0.0 mssql: specifier: 10.0.2 version: 10.0.2 @@ -5160,7 +5570,7 @@ importers: specifier: 8.0.10 version: 8.0.10 oracledb: - specifier: 6.10.0 + specifier: 'catalog:' version: 6.10.0 otpauth: specifier: 9.1.1 @@ -5177,6 +5587,9 @@ importers: promise-ftp: specifier: 1.3.5 version: 1.3.5(promise-ftp-common@1.1.5) + qs: + specifier: 6.15.2 + version: 6.15.2 redis: specifier: 4.6.14 version: 4.6.14 @@ -5237,6 +5650,9 @@ importers: xmlhttprequest-ssl: specifier: 3.1.0 version: 3.1.0 + zod: + specifier: 3.25.67 + version: 3.25.67 devDependencies: '@n8n/client-oauth2': specifier: workspace:* @@ -5277,6 +5693,12 @@ importers: '@types/js-nacl': specifier: ^1.3.0 version: 1.3.0 + '@types/jsdom': + specifier: 'catalog:' + version: 21.1.7 + '@types/json-schema': + specifier: 'catalog:' + version: 7.0.15 '@types/jsonwebtoken': specifier: 'catalog:' version: 9.0.10 @@ -5286,6 +5708,9 @@ importers: '@types/lossless-json': specifier: ^1.0.0 version: 1.0.1 + '@types/luxon': + specifier: 'catalog:' + version: 3.2.0 '@types/mailparser': specifier: ^3.4.4 version: 3.4.4 @@ -5296,20 +5721,26 @@ importers: specifier: ^9.1.5 version: 9.1.5 '@types/nodemailer': - specifier: ^8.0.0 - version: 8.0.0 + specifier: 'catalog:' + version: 8.0.1 '@types/oracledb': - specifier: ^6.10.0 + specifier: 'catalog:' version: 6.10.3 '@types/promise-ftp': specifier: ^1.3.4 version: 1.3.4 + '@types/qs': + specifier: 'catalog:' + version: 6.9.15 '@types/rfc2047': specifier: ^2.0.1 version: 2.0.1 '@types/sanitize-html': specifier: 'catalog:' version: 2.11.0 + '@types/semver': + specifier: 'catalog:' + version: 7.7.0 '@types/showdown': specifier: ^1.9.4 version: 1.9.4 @@ -5326,7 +5757,7 @@ importers: specifier: 'catalog:' version: 4.1.1(vitest@4.1.1) eslint-plugin-n8n-nodes-base: - specifier: ^1.16.7 + specifier: 'catalog:' version: 1.16.7(eslint@9.29.0(jiti@2.6.1))(typescript@6.0.2) n8n-containers: specifier: workspace:* @@ -5334,6 +5765,12 @@ importers: n8n-core: specifier: workspace:* version: link:../core + reflect-metadata: + specifier: 'catalog:' + version: 0.2.2 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -5617,6 +6054,9 @@ importers: packages/workflow: dependencies: + '@codemirror/autocomplete': + specifier: 'catalog:' + version: 6.20.0 '@n8n/errors': specifier: workspace:* version: link:../@n8n/errors @@ -5626,9 +6066,18 @@ importers: '@n8n/tournament': specifier: workspace:* version: link:../@n8n/tournament + '@sentry/core': + specifier: catalog:sentry + version: 10.55.0 + '@sentry/node': + specifier: catalog:sentry + version: 10.55.0(@opentelemetry/exporter-trace-otlp-http@0.217.0(@opentelemetry/api@1.9.0)) ast-types: specifier: 0.16.1 version: 0.16.1 + axios: + specifier: 1.18.0 + version: 1.18.0(debug@4.4.3) callsites: specifier: 'catalog:' version: 3.1.0 @@ -5644,6 +6093,9 @@ importers: js-base64: specifier: 'catalog:' version: 3.7.8 + json-schema: + specifier: 'catalog:' + version: 0.4.0 jsonrepair: specifier: 'catalog:' version: 3.13.2 @@ -5662,6 +6114,9 @@ importers: recast: specifier: 0.22.0 version: 0.22.0 + ssh2: + specifier: 'catalog:' + version: 1.15.0 title-case: specifier: 3.0.3 version: 3.0.3 @@ -5705,21 +6160,30 @@ importers: '@types/jmespath': specifier: ^0.15.0 version: 0.15.0 + '@types/json-schema': + specifier: 'catalog:' + version: 7.0.15 '@types/lodash': specifier: 'catalog:' version: 4.17.17 '@types/luxon': - specifier: 3.2.0 + specifier: 'catalog:' version: 3.2.0 '@types/md5': specifier: ^2.3.5 version: 2.3.5 + '@types/ssh2': + specifier: 'catalog:' + version: 1.15.0 '@types/xml2js': specifier: 'catalog:' version: 0.4.14 fast-check: specifier: 'catalog:' version: 3.23.2 + vite: + specifier: 'catalog:' + version: 8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3) vitest: specifier: 'catalog:' version: 4.1.1(@opentelemetry/api@1.9.0)(@types/node@20.19.41)(@vitest/browser-playwright@4.0.16)(jsdom@23.0.1(bufferutil@4.0.9)(utf-8-validate@5.0.10))(vite@8.0.2(@types/node@20.19.41)(esbuild@0.28.1)(jiti@2.6.1)(sass-embedded@1.98.0)(sass@1.98.0)(terser@5.16.1)(tsx@4.19.3)(yaml@2.8.3)) @@ -7617,6 +8081,9 @@ packages: resolution: {integrity: sha512-RxSa9VjcDWgWCYsaLdZItdCnJj7p4LxggaEk+Y3MP0dHKoxez8ioG07DVekVbZZqccsrL+oPB/N9AzVPxj4blg==} engines: {node: '>=0.8.0'} + '@iconify-json/lucide@1.2.112': + resolution: {integrity: sha512-B4sYH2Sm/UPNJYrhh4i+GFHeHfrYPQF9evX2QduJv08iSWw9Mfn1VvF28iIh6pBtZpYlMnuB8/P51mDYlYBYWg==} + '@iconify-json/mdi@1.1.63': resolution: {integrity: sha512-b07dRM5LYdwJqd/lm+1+JDNDNSWHvpZ7ujb73oJxx3lmK1J0giDS0BSc4yia0hixNV0Z2q/4GyxAu/A8XqDnbg==} @@ -11231,6 +11698,9 @@ packages: '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/cheerio@0.22.35': + resolution: {integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==} + '@types/chrome@0.0.300': resolution: {integrity: sha512-vS5bUmNjMrbPut43Q8plS8GTAiJE+pBOxw1ovGC4LcwiGNKTithAH7TxhzHeX4wNq/FsaLj5KaW7riI0CgYjIg==} @@ -11335,8 +11805,8 @@ packages: '@types/imap@0.8.40': resolution: {integrity: sha512-kWFwOc88CGwWZlHqCnZiceS6EralsAHdjpQyk1+fIA875NQdIHvLpdD5NU3Pi1yZ8FKFdOF81UDNAo8/XS6HiQ==} - '@types/inquirer@6.5.0': - resolution: {integrity: sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==} + '@types/inquirer@7.3.3': + resolution: {integrity: sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==} '@types/ioredis-mock@8.2.2': resolution: {integrity: sha512-bnbPHOjxy4TUDjRh61MMoK2QvDNZqrMDXJYrEDZP/HPFvBubR24CQ0DBi5lgWhLxG4lvVsXPRDXtZ03+JgonoQ==} @@ -11362,6 +11832,9 @@ packages: '@types/jsdom@20.0.1': resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + '@types/jsdom@21.1.7': + resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} + '@types/json-diff@1.0.0': resolution: {integrity: sha512-dCXC1F73Sqriz2d8Wt/sP/DztE+rlfIRPxW9WSYheHp/l3gvkeSvM6l4vhm7t4Dgn8AJAxNKajx/eobbPdP6Wg==} @@ -11449,14 +11922,17 @@ packages: '@types/multer@1.4.12': resolution: {integrity: sha512-pQ2hoqvXiJt2FP9WQVLPRO+AmiIm/ZYkavPlIQnx282u4ZrVdztx0pkh3jjpQt0Kz+YI0YhSG264y08UJKoUQg==} + '@types/multer@2.1.0': + resolution: {integrity: sha512-zYZb0+nJhOHtPpGDb3vqPjwpdeGlGC157VpkqNQL+UU2qwoacoQ7MpsAmUptI/0Oa127X32JzWDqQVEXp2RcIA==} + '@types/node-fetch@2.6.13': resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} '@types/node@20.19.41': resolution: {integrity: sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==} - '@types/nodemailer@8.0.0': - resolution: {integrity: sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA==} + '@types/nodemailer@8.0.1': + resolution: {integrity: sha512-PxpaInm8V1JQDd4j0ds5HfvWQk8JupS1C0Picb96QJsrrRDjBH+DlK7L4ZdNSqNULhiZRQHc40nLVShaGxXAMw==} '@types/oracledb@6.10.3': resolution: {integrity: sha512-8SCGQF/VSiXnifVFTajmRNtjHUDTNxkd9SrBrvG2A/80uwLVee5xmv/juH4hnDNTfU9qxfd6HR4Mfmg2nC3RVw==} @@ -11548,8 +12024,8 @@ packages: '@types/ssh2@0.5.52': resolution: {integrity: sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==} - '@types/ssh2@1.11.6': - resolution: {integrity: sha512-8Mf6bhzYYBLEB/G6COux7DS/F5bCWwojv/qFo2yH/e4cLzAavJnxvFXrYW59iKfXdhG6OmzJcXDasgOb/s0rxw==} + '@types/ssh2@1.15.0': + resolution: {integrity: sha512-YcT8jP5F8NzWeevWvcyrrLB3zcneVjzYY9ZDSMAMboI+2zR1qYWFhwsyOFVzT7Jorn67vqxC0FRiw8YyG9P1ww==} '@types/sshpk@1.17.4': resolution: {integrity: sha512-5gI/7eJn6wmkuIuFY8JZJ1g5b30H9K5U5vKrvOuYu+hoZLb2xcVEgxhYZ2Vhbs0w/ACyzyfkJq0hQtBfSCugjw==} @@ -12928,9 +13404,6 @@ packages: caniuse-lite@1.0.30001781: resolution: {integrity: sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==} - capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -12954,9 +13427,6 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} - change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} @@ -13346,9 +13816,6 @@ packages: console-grid@2.2.4: resolution: {integrity: sha512-OLjCRTiHhOpTRo9lQp/2FgJDyq5uQHwkEmVJulEnQ6JVf27oKKzXHZnNOv/e72V4++UdMZCrDWtvXW5sx4lyQg==} - constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} @@ -14008,9 +14475,6 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dot-prop@6.0.1: resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} engines: {node: '>=10'} @@ -15275,9 +15739,6 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} @@ -16591,7 +17052,7 @@ packages: peerDependencies: '@types/lodash-es': '*' lodash: 4.18.1 - lodash-es: 4.18.1 + lodash-es: '*' lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -18123,9 +18584,6 @@ packages: param-case@2.1.1: resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -18181,9 +18639,6 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} - path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} @@ -19680,9 +20135,6 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - snowflake-sdk@2.1.0: resolution: {integrity: sha512-daRZRj1y631Y2pK8N85Jm1aBadHVqMU3uIOrqS/6XQ+PYMjV0oDpZsJ0TBRSYdJ0ChFR8Fd+QnUgQ/j2NYkdRQ==} peerDependencies: @@ -20769,9 +21221,6 @@ packages: upper-case@1.1.3: resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} - uri-js-replace@1.0.1: resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} @@ -24391,7 +24840,7 @@ snapshots: '@opentelemetry/semantic-conventions': 1.40.0 axios: 1.18.0(debug@4.4.3) busboy: 1.6.0 - dotenv: 17.2.3 + dotenv: 17.4.2 expand-tilde: 2.0.2 fast-glob: 3.3.3 form-data: 4.0.6 @@ -24425,7 +24874,7 @@ snapshots: '@dotenvx/dotenvx@1.55.1': dependencies: commander: 11.1.0 - dotenv: 17.2.3 + dotenv: 17.4.2 eciesjs: 0.4.18 execa: 5.1.1 fdir: 6.5.0(picomatch@4.0.4) @@ -24868,6 +25317,10 @@ snapshots: readable-stream: 1.1.14 xregexp: 2.0.0 + '@iconify-json/lucide@1.2.112': + dependencies: + '@iconify/types': 2.0.0 + '@iconify-json/mdi@1.1.63': dependencies: '@iconify/types': 2.0.0 @@ -28768,6 +29221,10 @@ snapshots: dependencies: '@types/deep-eql': 4.0.2 + '@types/cheerio@0.22.35': + dependencies: + '@types/node': 20.19.41 + '@types/chrome@0.0.300': dependencies: '@types/filesystem': 0.0.36 @@ -28806,13 +29263,13 @@ snapshots: '@types/docker-modem@3.0.6': dependencies: '@types/node': 20.19.41 - '@types/ssh2': 1.11.6 + '@types/ssh2': 1.15.0 '@types/dockerode@4.0.1': dependencies: '@types/docker-modem': 3.0.6 '@types/node': 20.19.41 - '@types/ssh2': 1.11.6 + '@types/ssh2': 1.15.0 '@types/eslint@9.6.1': dependencies: @@ -28889,7 +29346,7 @@ snapshots: dependencies: '@types/node': 20.19.41 - '@types/inquirer@6.5.0': + '@types/inquirer@7.3.3': dependencies: '@types/through': 0.0.30 rxjs: 6.6.7 @@ -28925,6 +29382,12 @@ snapshots: '@types/tough-cookie': 4.0.5 parse5: 7.3.0 + '@types/jsdom@21.1.7': + dependencies: + '@types/node': 20.19.41 + '@types/tough-cookie': 4.0.5 + parse5: 7.3.0 + '@types/json-diff@1.0.0': {} '@types/json-schema@7.0.15': {} @@ -29008,6 +29471,10 @@ snapshots: dependencies: '@types/express': 5.0.1 + '@types/multer@2.1.0': + dependencies: + '@types/express': 5.0.1 + '@types/node-fetch@2.6.13': dependencies: '@types/node': 20.19.41 @@ -29017,7 +29484,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/nodemailer@8.0.0': + '@types/nodemailer@8.0.1': dependencies: '@types/node': 20.19.41 @@ -29121,7 +29588,7 @@ snapshots: '@types/ssh2-sftp-client@9.0.5': dependencies: - '@types/ssh2': 1.11.6 + '@types/ssh2': 1.15.0 '@types/ssh2-streams@0.1.12': dependencies: @@ -29132,7 +29599,7 @@ snapshots: '@types/node': 20.19.41 '@types/ssh2-streams': 0.1.12 - '@types/ssh2@1.11.6': + '@types/ssh2@1.15.0': dependencies: '@types/node': 20.19.41 @@ -30836,12 +31303,6 @@ snapshots: caniuse-lite@1.0.30001781: {} - capital-case@1.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case-first: 2.0.2 - ccount@2.0.1: {} chai@5.2.0: @@ -30866,21 +31327,6 @@ snapshots: chalk@5.6.2: {} - change-case@4.1.2: - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.8.1 - change-case@5.4.4: {} char-regex@1.0.2: {} @@ -31260,12 +31706,6 @@ snapshots: console-grid@2.2.4: {} - constant-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - upper-case: 2.0.2 - constantinople@4.0.1: dependencies: '@babel/parser': 7.29.2 @@ -31925,7 +32365,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) readable-stream: 3.6.0 split-ca: 1.0.1 - ssh2: 1.15.0 + ssh2: 1.16.0 transitivePeerDependencies: - supports-color @@ -31997,11 +32437,6 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - dot-prop@6.0.1: dependencies: is-obj: 2.0.0 @@ -32281,7 +32716,7 @@ snapshots: has-property-descriptors: 1.0.2 has-proto: 1.2.0 has-symbols: 1.1.0 - hasown: 2.0.2 + hasown: 2.0.4 internal-slot: 1.1.0 is-array-buffer: 3.0.5 is-callable: 1.2.7 @@ -32358,7 +32793,7 @@ snapshots: es-shim-unscopables@1.1.0: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 es-to-primitive@1.3.0: dependencies: @@ -33287,7 +33722,7 @@ snapshots: call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 - hasown: 2.0.2 + hasown: 2.0.4 is-callable: 1.2.7 functions-have-names@1.2.3: {} @@ -33704,11 +34139,6 @@ snapshots: he@1.2.0: {} - header-case@2.0.4: - dependencies: - capital-case: 1.0.4 - tslib: 2.8.1 - heap@0.2.7: {} helmet@8.1.0: {} @@ -34046,7 +34476,7 @@ snapshots: internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.2 + hasown: 2.0.4 side-channel: 1.1.0 interpret@1.4.0: {} @@ -34130,7 +34560,7 @@ snapshots: is-core-module@2.16.1: dependencies: - hasown: 2.0.2 + hasown: 2.0.4 is-data-view@1.0.2: dependencies: @@ -34231,7 +34661,7 @@ snapshots: call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 - hasown: 2.0.2 + hasown: 2.0.4 is-regexp@1.0.0: {} @@ -36761,7 +37191,7 @@ snapshots: sb-promise-queue: 2.1.0 sb-scandir: 3.1.0 shell-escape: 0.2.0 - ssh2: 1.15.0 + ssh2: 1.16.0 node-stdlib-browser@1.3.1: dependencies: @@ -37232,11 +37662,6 @@ snapshots: dependencies: no-case: 2.3.2 - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -37298,11 +37723,6 @@ snapshots: path-browserify@1.0.1: {} - path-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - path-exists@3.0.0: {} path-exists@4.0.0: {} @@ -39081,11 +39501,6 @@ snapshots: smart-buffer@4.2.0: {} - snake-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - snowflake-sdk@2.1.0(asn1.js@5.4.1)(encoding@0.1.13): dependencies: '@aws-sdk/client-s3': 3.808.0 @@ -39206,7 +39621,7 @@ snapshots: ssh-remote-port-forward@1.0.4: dependencies: '@types/ssh2': 0.5.52 - ssh2: 1.15.0 + ssh2: 1.16.0 ssh2-sftp-client@12.1.0: dependencies: @@ -40388,10 +40803,6 @@ snapshots: upper-case@1.1.3: {} - upper-case@2.0.2: - dependencies: - tslib: 2.8.1 - uri-js-replace@1.0.1: {} uri-js@4.4.1: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6d561b40510..14df564b3cb 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -37,6 +37,8 @@ catalog: '@codemirror/state': 6.5.3 '@codemirror/view': 6.39.8 '@daytona/sdk': 0.187.0 + '@iconify-json/lucide': ^1.2.112 + '@iconify-json/mdi': ^1.1.63 '@joplin/turndown-plugin-gfm': 1.0.64 '@langchain/anthropic': 1.3.27 '@langchain/community': 1.1.27 @@ -66,6 +68,7 @@ catalog: '@testcontainers/postgresql': ^11.13.0 '@testcontainers/redis': ^11.13.0 '@tiptap/core': 3.22.5 + '@tiptap/pm': 3.22.5 '@tiptap/extension-link': 3.22.5 '@tiptap/extension-placeholder': 3.22.5 '@tiptap/extension-strike': 3.22.5 @@ -79,32 +82,52 @@ catalog: '@tiptap/starter-kit': 3.22.5 '@tiptap/vue-3': 3.22.5 '@types/basic-auth': ^1.1.3 + '@types/estree': ^1.0.8 '@types/express': ^5.0.1 + '@types/jsdom': ^21.1.7 + '@types/json-schema': ^7.0.15 '@types/jsonwebtoken': 9.0.10 '@types/lodash': 4.17.17 + '@types/lodash-es': ^4.17.12 + '@types/luxon': 3.2.0 + '@types/markdown-it': ^13.0.2 + '@types/markdown-it-link-attributes': "^3.0.5" '@types/mime-types': 3.0.1 + '@types/ms': 2.1.0 '@types/node': 24.10.1 + '@types/nodemailer': 8.0.1 + '@types/oracledb': 6.10.3 '@types/proxy-from-env': ^1.0.4 + '@types/qs': 6.9.15 '@types/sanitize-html': ^2.11.0 + '@types/semver': ^7.7.0 + '@types/ssh2': 1.15.0 + '@types/turndown': ^5.0.6 '@types/uuid': ^11.0.0 + '@types/ws': ^8.18.1 '@types/xml2js': ^0.4.14 '@vitest/coverage-v8': 4.1.1 agent-browser: 0.26.0 + ai: ^6.0.197 axios: 1.18.0 babel-jest: ^29.7.0 basic-auth: 2.0.1 cache-manager: 5.2.3 callsites: 3.1.0 + change-case: ^5.4.4 chat: ^4.28.1 cheerio: 1.1.0 chokidar: 4.0.3 cron: 4.4.0 cross-env: ^7.0.3 csv-parse: 6.2.1 + dotenv: 17.2.3 electron: ^41.7.2 esbuild: ^0.28.1 eslint: 9.29.0 eslint-plugin-oxlint: ^1.61.0 + eslint-plugin-n8n-nodes-base: ^1.16.7 + express: 5.1.0 fast-check: ^3.23.2 fast-glob: 3.2.12 fast-json-patch: ^3.1.1 @@ -118,6 +141,7 @@ catalog: isolated-vm: ^6.1.2 js-base64: 3.7.8 js-tiktoken: 1.0.21 + json-schema: 0.4.0 jsonrepair: 3.13.2 jsonwebtoken: 9.0.3 kafkajs: 2.2.4 @@ -125,14 +149,20 @@ catalog: langsmith: 0.6.0 ldapts: 8.1.7 lodash: 4.18.1 + lodash-es: 4.18.1 luxon: 3.7.2 + markdown-it: ^13.0.2 + markdown-it-link-attributes: ^4.0.1 mime-types: 3.0.2 moment-timezone: 0.5.48 + mqtt-packet: 9.0.0 + ms: 2.1.3 mysql2: 3.17.0 nanoid: 3.3.8 nock: 14.0.14 nodemailer: 8.0.10 openai: 6.19.0 + oracledb: 6.10.0 oxlint: ^1.61.0 oxlint-tsgolint: ^0.21.1 pdf-parse: 2.4.5 @@ -150,7 +180,9 @@ catalog: semver: 7.7.3 simple-git: 3.36.0 source-map-support: 0.5.21 + ssh2: 1.15.0 stream-json: 1.9.1 + stylelint: ^16.23.0 tar: ^7.5.16 testcontainers: ^11.13.0 ts-morph: ^27.0.2 @@ -185,6 +217,7 @@ catalogs: '@internationalized/date': ^3.9.0 '@sentry/vue': ^10.36.0 '@testing-library/jest-dom': ^6.6.3 + '@testing-library/dom': ^10.4.0 '@testing-library/user-event': ^14.6.1 '@testing-library/vue': ^8.1.0 '@vitejs/plugin-vue': ^5.2.4 @@ -202,6 +235,7 @@ catalogs: vue-router: ^4.5.0 vue-tsc: ^2.2.8 sentry: + '@sentry/core': ^10.55.0 '@sentry/node': ^10.55.0 '@sentry/node-native': ^10.55.0 '@sentry/profiling-node': ^10.55.0 @@ -211,6 +245,7 @@ catalogs: '@storybook/addon-docs': ^10.1.11 '@storybook/addon-themes': ^10.1.11 '@storybook/addon-vitest': ^10.1.11 + '@storybook/vue3': ^10.1.11 '@storybook/vue3-vite': ^10.1.11 eslint-plugin-storybook: ^10.1.11 storybook: ^10.1.11