diff --git a/.github/workflows/docker-images-benchmark.yml b/.github/workflows/docker-images-benchmark.yml new file mode 100644 index 0000000000000..cf9d7359a5fe2 --- /dev/null +++ b/.github/workflows/docker-images-benchmark.yml @@ -0,0 +1,43 @@ +name: Benchmark Docker Image CI + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - 'packages/@n8n/benchmark/**' + - 'pnpm-lock.yaml' + - 'pnpm-workspace.yaml' + - '.github/workflows/docker-images-benchmark.yml' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4.1.1 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.0.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.0.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.0.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build + uses: docker/build-push-action@v5.1.0 + with: + context: . + file: ./packages/@n8n/benchmark/Dockerfile + platforms: linux/amd64 + provenance: false + push: true + tags: | + ghcr.io/${{ github.repository_owner }}/n8n-benchmark:latest diff --git a/packages/@n8n/benchmark/Dockerfile b/packages/@n8n/benchmark/Dockerfile new file mode 100644 index 0000000000000..5fa1aeae935b1 --- /dev/null +++ b/packages/@n8n/benchmark/Dockerfile @@ -0,0 +1,62 @@ +# syntax=docker/dockerfile:1 +FROM node:20.16.0 AS base + +# Install required dependencies +RUN apt-get update && apt-get install -y gnupg2 curl + +# Add k6 GPG key and repository +RUN mkdir -p /etc/apt/keyrings && \ + curl -sS https://dl.k6.io/key.gpg | gpg --dearmor --yes -o /etc/apt/keyrings/k6.gpg && \ + chmod a+x /etc/apt/keyrings/k6.gpg && \ + echo "deb [signed-by=/etc/apt/keyrings/k6.gpg] https://dl.k6.io/deb stable main" | tee /etc/apt/sources.list.d/k6.list + +# Update and install k6 +RUN apt-get update && \ + apt-get install -y k6 tini && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +# +# Builder +FROM base AS builder + +WORKDIR /app + +COPY --chown=node:node ./pnpm-lock.yaml /app/pnpm-lock.yaml +COPY --chown=node:node ./pnpm-workspace.yaml /app/pnpm-workspace.yaml +COPY --chown=node:node ./package.json /app/package.json +COPY --chown=node:node ./packages/@n8n/benchmark/package.json /app/packages/@n8n/benchmark/package.json +COPY --chown=node:node ./patches /app/patches +COPY --chown=node:node ./scripts /app/scripts + +RUN pnpm install --frozen-lockfile + +# TS config files +COPY --chown=node:node ./tsconfig.json /app/tsconfig.json +COPY --chown=node:node ./tsconfig.build.json /app/tsconfig.build.json +COPY --chown=node:node ./tsconfig.backend.json /app/tsconfig.backend.json +COPY --chown=node:node ./packages/@n8n/benchmark/tsconfig.json /app/packages/@n8n/benchmark/tsconfig.json +COPY --chown=node:node ./packages/@n8n/benchmark/tsconfig.build.json /app/packages/@n8n/benchmark/tsconfig.build.json + +# Source files +COPY --chown=node:node ./packages/@n8n/benchmark/src /app/packages/@n8n/benchmark/src +COPY --chown=node:node ./packages/@n8n/benchmark/bin /app/packages/@n8n/benchmark/bin +COPY --chown=node:node ./packages/@n8n/benchmark/scenarios /app/packages/@n8n/benchmark/scenarios + +WORKDIR /app/packages/@n8n/benchmark +RUN pnpm build + +# +# Runner +FROM base AS runner + +COPY --from=builder /app /app + +WORKDIR /app/packages/@n8n/benchmark +USER node + +ENTRYPOINT [ "/app/packages/@n8n/benchmark/bin/n8n-benchmark" ] diff --git a/packages/@n8n/benchmark/README.md b/packages/@n8n/benchmark/README.md new file mode 100644 index 0000000000000..569bcf897febd --- /dev/null +++ b/packages/@n8n/benchmark/README.md @@ -0,0 +1,55 @@ +# n8n benchmarking tool + +Tool for executing benchmarks against an n8n instance. + +## Running locally with Docker + +Build the Docker image: + +```sh +# Must be run in the repository root +# k6 doesn't have an arm64 build available for linux, we need to build against amd64 +docker build --platform linux/amd64 -t n8n-benchmark -f packages/@n8n/benchmark/Dockerfile . +``` + +Run the image + +```sh +docker run \ + -e N8N_USER_EMAIL=user@n8n.io \ + -e N8N_USER_PASSWORD=password \ + # For macos, n8n running outside docker + -e N8N_BASE_URL=http://host.docker.internal:5678 \ + n8n-benchmark +``` + +## Running locally without Docker + +Requirements: + +- [k6](https://grafana.com/docs/k6/latest/set-up/install-k6/) +- Node.js v20 or higher + +```sh +pnpm build + +# Run tests against http://localhost:5678 with specified email and password +N8N_USER_EMAIL=user@n8n.io N8N_USER_PASSWORD=password ./bin/n8n-benchmark run + +# If you installed k6 using brew, you might have to specify it explicitly +K6_PATH=/opt/homebrew/bin/k6 N8N_USER_EMAIL=user@n8n.io N8N_USER_PASSWORD=password ./bin/n8n-benchmark run +``` + +## Configuration + +The configuration options the cli accepts can be seen from [config.ts](./src/config/config.ts) + +## Benchmark scenarios + +A benchmark scenario defines one or multiple steps to execute and measure. It consists of: + +- Manifest file which describes and configures the scenario +- Any test data that is imported before the scenario is run +- A [`k6`](https://grafana.com/docs/k6/latest/using-k6/http-requests/) script which executes the steps and receives `API_BASE_URL` environment variable in runtime. + +Available scenarios are located in [`./scenarios`](./scenarios/). diff --git a/packages/@n8n/benchmark/bin/n8n-benchmark b/packages/@n8n/benchmark/bin/n8n-benchmark new file mode 100755 index 0000000000000..c7f0996f09476 --- /dev/null +++ b/packages/@n8n/benchmark/bin/n8n-benchmark @@ -0,0 +1,13 @@ +#!/usr/bin/env node + +// Check if version should be displayed +const versionFlags = ['-v', '-V', '--version']; +if (versionFlags.includes(process.argv.slice(-1)[0])) { + console.log(require('../package').version); + process.exit(0); +} + +(async () => { + const oclif = require('@oclif/core'); + await oclif.execute({ dir: __dirname }); +})(); diff --git a/packages/@n8n/benchmark/package.json b/packages/@n8n/benchmark/package.json new file mode 100644 index 0000000000000..3a7afb50a3624 --- /dev/null +++ b/packages/@n8n/benchmark/package.json @@ -0,0 +1,48 @@ +{ + "name": "@n8n/n8n-benchmark", + "version": "1.0.0", + "description": "Cli for running benchmark tests for n8n", + "main": "dist/index", + "scripts": { + "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json", + "start": "./bin/n8n-benchmark", + "test": "echo \"Error: no test specified\" && exit 1", + "typecheck": "tsc --noEmit", + "watch": "concurrently \"tsc -w -p tsconfig.build.json\" \"tsc-alias -w -p tsconfig.build.json\"" + }, + "engines": { + "node": ">=20.10" + }, + "keywords": [ + "automate", + "automation", + "IaaS", + "iPaaS", + "n8n", + "workflow", + "benchmark", + "performance" + ], + "dependencies": { + "@oclif/core": "4.0.7", + "axios": "catalog:", + "convict": "6.2.4", + "dotenv": "8.6.0", + "zx": "^8.1.4" + }, + "devDependencies": { + "@types/convict": "^6.1.1", + "@types/k6": "^0.52.0", + "@types/node": "^20.14.8", + "tsc-alias": "^1.8.7", + "typescript": "^5.5.2" + }, + "bin": { + "n8n-benchmark": "./bin/n8n-benchmark" + }, + "oclif": { + "bin": "n8n-benchmark", + "commands": "./dist/commands", + "topicSeparator": " " + } +} diff --git a/packages/@n8n/benchmark/scenarios/scenario.schema.json b/packages/@n8n/benchmark/scenarios/scenario.schema.json new file mode 100644 index 0000000000000..661fc054b6eee --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/scenario.schema.json @@ -0,0 +1,42 @@ +{ + "definitions": { + "ScenarioData": { + "type": "object", + "properties": { + "workflowFiles": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [], + "additionalProperties": false + } + }, + "type": "object", + "properties": { + "$schema": { + "type": "string", + "description": "The JSON schema to validate this file" + }, + "name": { + "type": "string", + "description": "The name of the scenario" + }, + "description": { + "type": "string", + "description": "A longer description of the scenario" + }, + "scriptPath": { + "type": "string", + "description": "Relative path to the k6 test script" + }, + "scenarioData": { + "$ref": "#/definitions/ScenarioData", + "description": "Data to import before running the scenario" + } + }, + "required": ["name", "description", "scriptPath", "scenarioData"], + "additionalProperties": false +} diff --git a/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.json b/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.json new file mode 100644 index 0000000000000..cba1aa5832f70 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.json @@ -0,0 +1,25 @@ +{ + "createdAt": "2024-08-06T12:19:51.268Z", + "updatedAt": "2024-08-06T12:20:45.000Z", + "name": "Single Webhook", + "active": true, + "nodes": [ + { + "parameters": { "path": "single-webhook", "options": {} }, + "id": "7587ab0e-cc15-424f-83c0-c887a0eb97fb", + "name": "Webhook", + "type": "n8n-nodes-base.webhook", + "typeVersion": 2, + "position": [760, 400], + "webhookId": "fa563fc2-c73f-4631-99a1-39c16f1f858f" + } + ], + "connections": {}, + "settings": { "executionOrder": "v1" }, + "staticData": null, + "meta": { "templateCredsSetupCompleted": true, "responseMode": "lastNode", "options": {} }, + "pinData": {}, + "versionId": "840a38a1-ba37-433d-9f20-de73f5131a2b", + "triggerCount": 1, + "tags": [] +} diff --git a/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.manifest.json b/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.manifest.json new file mode 100644 index 0000000000000..e9b4664a96502 --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.manifest.json @@ -0,0 +1,7 @@ +{ + "$schema": "../scenario.schema.json", + "name": "SingleWebhook", + "description": "A single webhook trigger that responds with a 200 status code", + "scenarioData": { "workflowFiles": ["singleWebhook.json"] }, + "scriptPath": "singleWebhook.script.ts" +} diff --git a/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.script.ts b/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.script.ts new file mode 100644 index 0000000000000..72e2563cbea9f --- /dev/null +++ b/packages/@n8n/benchmark/scenarios/singleWebhook/singleWebhook.script.ts @@ -0,0 +1,11 @@ +import http from 'k6/http'; +import { check } from 'k6'; + +const apiBaseUrl = __ENV.API_BASE_URL; + +export default function () { + const res = http.get(`${apiBaseUrl}/webhook/single-webhook`); + check(res, { + 'is status 200': (r) => r.status === 200, + }); +} diff --git a/packages/@n8n/benchmark/src/commands/list.ts b/packages/@n8n/benchmark/src/commands/list.ts new file mode 100644 index 0000000000000..fcc60b1b81882 --- /dev/null +++ b/packages/@n8n/benchmark/src/commands/list.ts @@ -0,0 +1,21 @@ +import { Command } from '@oclif/core'; +import { ScenarioLoader } from '@/scenario/scenarioLoader'; +import { loadConfig } from '@/config/config'; + +export default class ListCommand extends Command { + static description = 'List all available scenarios'; + + async run() { + const config = loadConfig(); + const scenarioLoader = new ScenarioLoader(); + + const allScenarios = scenarioLoader.loadAll(config.get('testScenariosPath')); + + console.log('Available test scenarios:'); + console.log(''); + + for (const scenario of allScenarios) { + console.log('\t', scenario.name, ':', scenario.description); + } + } +} diff --git a/packages/@n8n/benchmark/src/commands/run.ts b/packages/@n8n/benchmark/src/commands/run.ts new file mode 100644 index 0000000000000..d69b4a54d4afd --- /dev/null +++ b/packages/@n8n/benchmark/src/commands/run.ts @@ -0,0 +1,39 @@ +import { Command, Flags } from '@oclif/core'; +import { loadConfig } from '@/config/config'; +import { ScenarioLoader } from '@/scenario/scenarioLoader'; +import { ScenarioRunner } from '@/testExecution/scenarioRunner'; +import { N8nApiClient } from '@/n8nApiClient/n8nApiClient'; +import { ScenarioDataFileLoader } from '@/scenario/scenarioDataLoader'; +import { K6Executor } from '@/testExecution/k6Executor'; + +export default class RunCommand extends Command { + static description = 'Run all (default) or specified test scenarios'; + + // TODO: Add support for filtering scenarios + static flags = { + scenarios: Flags.string({ + char: 't', + description: 'Comma-separated list of test scenarios to run', + required: false, + }), + }; + + async run() { + const config = loadConfig(); + const scenarioLoader = new ScenarioLoader(); + + const scenarioRunner = new ScenarioRunner( + new N8nApiClient(config.get('n8n.baseUrl')), + new ScenarioDataFileLoader(), + new K6Executor(config.get('k6ExecutablePath'), config.get('n8n.baseUrl')), + { + email: config.get('n8n.user.email'), + password: config.get('n8n.user.password'), + }, + ); + + const allScenarios = scenarioLoader.loadAll(config.get('testScenariosPath')); + + await scenarioRunner.runManyScenarios(allScenarios); + } +} diff --git a/packages/@n8n/benchmark/src/config/config.ts b/packages/@n8n/benchmark/src/config/config.ts new file mode 100644 index 0000000000000..896ecc9296da0 --- /dev/null +++ b/packages/@n8n/benchmark/src/config/config.ts @@ -0,0 +1,50 @@ +import convict from 'convict'; +import dotenv from 'dotenv'; + +dotenv.config(); + +const configSchema = { + testScenariosPath: { + doc: 'The path to the scenarios', + format: String, + default: 'scenarios', + }, + n8n: { + baseUrl: { + doc: 'The base URL for the n8n instance', + format: String, + default: 'http://localhost:5678', + env: 'N8N_BASE_URL', + }, + user: { + email: { + doc: 'The email address of the n8n user', + format: String, + default: 'benchmark-user@n8n.io', + env: 'N8N_USER_EMAIL', + }, + password: { + doc: 'The password of the n8n user', + format: String, + default: 'VerySecret!123', + env: 'N8N_USER_PASSWORD', + }, + }, + }, + k6ExecutablePath: { + doc: 'The path to the k6 binary', + format: String, + default: 'k6', + env: 'K6_PATH', + }, +}; + +export type Config = ReturnType; + +export function loadConfig() { + const config = convict(configSchema); + + config.validate({ allowed: 'strict' }); + + return config; +} diff --git a/packages/@n8n/benchmark/src/n8nApiClient/authenticatedN8nApiClient.ts b/packages/@n8n/benchmark/src/n8nApiClient/authenticatedN8nApiClient.ts new file mode 100644 index 0000000000000..93cd767347f2c --- /dev/null +++ b/packages/@n8n/benchmark/src/n8nApiClient/authenticatedN8nApiClient.ts @@ -0,0 +1,67 @@ +import { strict as assert } from 'node:assert'; +import { N8nApiClient } from './n8nApiClient'; +import { AxiosRequestConfig } from 'axios'; + +export class AuthenticatedN8nApiClient extends N8nApiClient { + constructor( + apiBaseUrl: string, + private readonly authCookie: string, + ) { + super(apiBaseUrl); + } + + static async createUsingUsernameAndPassword( + apiClient: N8nApiClient, + loginDetails: { + email: string; + password: string; + }, + ) { + const response = await apiClient.restApiRequest('/login', { + method: 'POST', + data: loginDetails, + }); + + const cookieHeader = response.headers['set-cookie']; + const authCookie = Array.isArray(cookieHeader) ? cookieHeader.join('; ') : cookieHeader; + assert(authCookie); + + return new AuthenticatedN8nApiClient(apiClient.apiBaseUrl, authCookie); + } + + async get(endpoint: string) { + return await this.authenticatedRequest(endpoint, { + method: 'GET', + }); + } + + async post(endpoint: string, data: unknown) { + return await this.authenticatedRequest(endpoint, { + method: 'POST', + data, + }); + } + + async patch(endpoint: string, data: unknown) { + return await this.authenticatedRequest(endpoint, { + method: 'PATCH', + data, + }); + } + + async delete(endpoint: string) { + return await this.authenticatedRequest(endpoint, { + method: 'DELETE', + }); + } + + protected async authenticatedRequest(endpoint: string, init: Omit) { + return await this.restApiRequest(endpoint, { + ...init, + headers: { + ...init.headers, + cookie: this.authCookie, + }, + }); + } +} diff --git a/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.ts b/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.ts new file mode 100644 index 0000000000000..86ca52aff8159 --- /dev/null +++ b/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.ts @@ -0,0 +1,78 @@ +import axios, { AxiosError, AxiosRequestConfig } from 'axios'; + +export class N8nApiClient { + constructor(public readonly apiBaseUrl: string) {} + + async waitForInstanceToBecomeOnline(): Promise { + const HEALTH_ENDPOINT = 'healthz'; + const START_TIME = Date.now(); + const INTERVAL_MS = 1000; + const TIMEOUT_MS = 60_000; + + while (Date.now() - START_TIME < TIMEOUT_MS) { + try { + const response = await axios.request({ + url: `${this.apiBaseUrl}/${HEALTH_ENDPOINT}`, + method: 'GET', + }); + + if (response.status === 200 && response.data.status === 'ok') { + return; + } + } catch {} + + console.log(`n8n instance not online yet, retrying in ${INTERVAL_MS / 1000} seconds...`); + await this.delay(INTERVAL_MS); + } + + throw new Error(`n8n instance did not come online within ${TIMEOUT_MS / 1000} seconds`); + } + + async setupOwnerIfNeeded(loginDetails: { email: string; password: string }) { + const response = await this.restApiRequest<{ message: string }>('/owner/setup', { + method: 'POST', + data: { + email: loginDetails.email, + password: loginDetails.password, + firstName: 'Test', + lastName: 'User', + }, + // Don't throw on non-2xx responses + validateStatus: () => true, + }); + + const responsePayload = response.data; + + if (response.status === 200) { + console.log('Owner setup successful'); + } else if (response.status === 400) { + if (responsePayload.message === 'Instance owner already setup') + console.log('Owner already set up'); + } else { + throw new Error( + `Owner setup failed with status ${response.status}: ${responsePayload.message}`, + ); + } + } + + async restApiRequest(endpoint: string, init: Omit) { + try { + return await axios.request({ + ...init, + url: this.getRestEndpointUrl(endpoint), + }); + } catch (e) { + const error = e as AxiosError; + console.error(`[ERROR] Request failed ${init.method} ${endpoint}`, error?.response?.data); + throw error; + } + } + + protected getRestEndpointUrl(endpoint: string) { + return `${this.apiBaseUrl}/rest${endpoint}`; + } + + private delay(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); + } +} diff --git a/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.types.ts b/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.types.ts new file mode 100644 index 0000000000000..ff6aa6930bf0e --- /dev/null +++ b/packages/@n8n/benchmark/src/n8nApiClient/n8nApiClient.types.ts @@ -0,0 +1,8 @@ +/** + * n8n workflow. This is a simplified version of the actual workflow object. + */ +export type Workflow = { + id: string; + name: string; + tags?: string[]; +}; diff --git a/packages/@n8n/benchmark/src/n8nApiClient/workflowsApiClient.ts b/packages/@n8n/benchmark/src/n8nApiClient/workflowsApiClient.ts new file mode 100644 index 0000000000000..18f2ecbcda2c2 --- /dev/null +++ b/packages/@n8n/benchmark/src/n8nApiClient/workflowsApiClient.ts @@ -0,0 +1,31 @@ +import { Workflow } from '@/n8nApiClient/n8nApiClient.types'; +import { AuthenticatedN8nApiClient } from './authenticatedN8nApiClient'; + +export class WorkflowApiClient { + constructor(private readonly apiClient: AuthenticatedN8nApiClient) {} + + async getAllWorkflows(): Promise { + const response = await this.apiClient.get<{ count: number; data: Workflow[] }>('/workflows'); + + return response.data.data; + } + + async createWorkflow(workflow: unknown): Promise { + const response = await this.apiClient.post<{ data: Workflow }>('/workflows', workflow); + + return response.data.data; + } + + async activateWorkflow(workflow: Workflow): Promise { + const response = await this.apiClient.patch<{ data: Workflow }>(`/workflows/${workflow.id}`, { + ...workflow, + active: true, + }); + + return response.data.data; + } + + async deleteWorkflow(workflowId: Workflow['id']): Promise { + await this.apiClient.delete(`/workflows/${workflowId}`); + } +} diff --git a/packages/@n8n/benchmark/src/scenario/scenarioDataLoader.ts b/packages/@n8n/benchmark/src/scenario/scenarioDataLoader.ts new file mode 100644 index 0000000000000..43638a2e00092 --- /dev/null +++ b/packages/@n8n/benchmark/src/scenario/scenarioDataLoader.ts @@ -0,0 +1,35 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { Scenario } from '@/types/scenario'; +import { Workflow } from '@/n8nApiClient/n8nApiClient.types'; + +/** + * Loads scenario data files from FS + */ +export class ScenarioDataFileLoader { + async loadDataForScenario(scenario: Scenario): Promise<{ + workflows: Workflow[]; + }> { + const workflows = await Promise.all( + scenario.scenarioData.workflowFiles?.map((workflowFilePath) => + this.loadSingleWorkflowFromFile(path.join(scenario.scenarioDirPath, workflowFilePath)), + ) ?? [], + ); + + return { + workflows, + }; + } + + private loadSingleWorkflowFromFile(workflowFilePath: string): Workflow { + const fileContent = fs.readFileSync(workflowFilePath, 'utf8'); + + try { + return JSON.parse(fileContent); + } catch (error) { + throw new Error( + `Failed to parse workflow file ${workflowFilePath}: ${error instanceof Error ? error.message : error}`, + ); + } + } +} diff --git a/packages/@n8n/benchmark/src/scenario/scenarioLoader.ts b/packages/@n8n/benchmark/src/scenario/scenarioLoader.ts new file mode 100644 index 0000000000000..475ce495ac6bf --- /dev/null +++ b/packages/@n8n/benchmark/src/scenario/scenarioLoader.ts @@ -0,0 +1,67 @@ +import * as fs from 'node:fs'; +import * as path from 'path'; +import { createHash } from 'node:crypto'; +import type { Scenario, ScenarioManifest } from '@/types/scenario'; + +export class ScenarioLoader { + /** + * Loads all scenarios from the given path + */ + loadAll(pathToScenarios: string): Scenario[] { + pathToScenarios = path.resolve(pathToScenarios); + const scenarioFolders = fs + .readdirSync(pathToScenarios, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); + + const scenarios: Scenario[] = []; + + for (const folder of scenarioFolders) { + const scenarioPath = path.join(pathToScenarios, folder); + const manifestFileName = `${folder}.manifest.json`; + const scenarioManifestPath = path.join(pathToScenarios, folder, manifestFileName); + if (!fs.existsSync(scenarioManifestPath)) { + console.warn(`Scenario at ${scenarioPath} is missing the ${manifestFileName} file`); + continue; + } + + // Load the scenario manifest file + const [scenario, validationErrors] = + this.loadAndValidateScenarioManifest(scenarioManifestPath); + if (validationErrors) { + console.warn( + `Scenario at ${scenarioPath} has the following validation errors: ${validationErrors.join(', ')}`, + ); + continue; + } + + scenarios.push({ + ...scenario, + id: this.formScenarioId(scenarioPath), + scenarioDirPath: scenarioPath, + }); + } + + return scenarios; + } + + private loadAndValidateScenarioManifest( + scenarioManifestPath: string, + ): [ScenarioManifest, null] | [null, string[]] { + const scenario = JSON.parse(fs.readFileSync(scenarioManifestPath, 'utf8')); + const validationErrors: string[] = []; + + if (!scenario.name) { + validationErrors.push(`Scenario at ${scenarioManifestPath} is missing a name`); + } + if (!scenario.description) { + validationErrors.push(`Scenario at ${scenarioManifestPath} is missing a description`); + } + + return validationErrors.length === 0 ? [scenario, null] : [null, validationErrors]; + } + + private formScenarioId(scenarioPath: string): string { + return createHash('sha256').update(scenarioPath).digest('hex'); + } +} diff --git a/packages/@n8n/benchmark/src/testExecution/k6Executor.ts b/packages/@n8n/benchmark/src/testExecution/k6Executor.ts new file mode 100644 index 0000000000000..903d06ca74765 --- /dev/null +++ b/packages/@n8n/benchmark/src/testExecution/k6Executor.ts @@ -0,0 +1,28 @@ +import { $ } from 'zx'; +import { Scenario } from '@/types/scenario'; + +/** + * Executes test scenarios using k6 + */ +export class K6Executor { + constructor( + private readonly k6ExecutablePath: string, + private readonly n8nApiBaseUrl: string, + ) {} + + async executeTestScenario(scenario: Scenario) { + // For 1 min with 5 virtual users + const stage = '1m:5'; + + const processPromise = $({ + cwd: scenario.scenarioDirPath, + env: { + API_BASE_URL: this.n8nApiBaseUrl, + }, + })`${this.k6ExecutablePath} run --quiet --stage ${stage} ${scenario.scriptPath}`; + + for await (const chunk of processPromise.stdout) { + console.log(chunk.toString()); + } + } +} diff --git a/packages/@n8n/benchmark/src/testExecution/scenarioDataImporter.ts b/packages/@n8n/benchmark/src/testExecution/scenarioDataImporter.ts new file mode 100644 index 0000000000000..1c1ec3777e1bc --- /dev/null +++ b/packages/@n8n/benchmark/src/testExecution/scenarioDataImporter.ts @@ -0,0 +1,56 @@ +import { AuthenticatedN8nApiClient } from '@/n8nApiClient/authenticatedN8nApiClient'; +import { Workflow } from '@/n8nApiClient/n8nApiClient.types'; +import { WorkflowApiClient } from '@/n8nApiClient/workflowsApiClient'; + +/** + * Imports scenario data into an n8n instance + */ +export class ScenarioDataImporter { + private readonly workflowApiClient: WorkflowApiClient; + + constructor(n8nApiClient: AuthenticatedN8nApiClient) { + this.workflowApiClient = new WorkflowApiClient(n8nApiClient); + } + + async importTestScenarioData(workflows: Workflow[]) { + const existingWorkflows = await this.workflowApiClient.getAllWorkflows(); + + for (const workflow of workflows) { + await this.importWorkflow({ existingWorkflows, workflow }); + } + } + + /** + * Imports a single workflow into n8n removing any existing workflows with the same name + */ + private async importWorkflow(opts: { existingWorkflows: Workflow[]; workflow: Workflow }) { + const existingWorkflows = this.findExistingWorkflows(opts.existingWorkflows, opts.workflow); + if (existingWorkflows.length > 0) { + for (const toDelete of existingWorkflows) { + await this.workflowApiClient.deleteWorkflow(toDelete.id); + } + } + + const createdWorkflow = await this.workflowApiClient.createWorkflow({ + ...opts.workflow, + name: this.getBenchmarkWorkflowName(opts.workflow), + }); + + return await this.workflowApiClient.activateWorkflow(createdWorkflow); + } + + private findExistingWorkflows( + existingWorkflows: Workflow[], + workflowToImport: Workflow, + ): Workflow[] { + const benchmarkWorkflowName = this.getBenchmarkWorkflowName(workflowToImport); + + return existingWorkflows.filter( + (existingWorkflow) => existingWorkflow.name === benchmarkWorkflowName, + ); + } + + private getBenchmarkWorkflowName(workflow: Workflow) { + return `[BENCHMARK] ${workflow.name}`; + } +} diff --git a/packages/@n8n/benchmark/src/testExecution/scenarioRunner.ts b/packages/@n8n/benchmark/src/testExecution/scenarioRunner.ts new file mode 100644 index 0000000000000..83e1077680215 --- /dev/null +++ b/packages/@n8n/benchmark/src/testExecution/scenarioRunner.ts @@ -0,0 +1,50 @@ +import { Scenario } from '@/types/scenario'; +import { N8nApiClient } from '@/n8nApiClient/n8nApiClient'; +import { ScenarioDataFileLoader } from '@/scenario/scenarioDataLoader'; +import { K6Executor } from './k6Executor'; +import { ScenarioDataImporter } from '@/testExecution/scenarioDataImporter'; +import { AuthenticatedN8nApiClient } from '@/n8nApiClient/authenticatedN8nApiClient'; + +/** + * Runs scenarios + */ +export class ScenarioRunner { + constructor( + private readonly n8nClient: N8nApiClient, + private readonly dataLoader: ScenarioDataFileLoader, + private readonly k6Executor: K6Executor, + private readonly ownerConfig: { + email: string; + password: string; + }, + ) {} + + async runManyScenarios(scenarios: Scenario[]) { + console.log(`Waiting for n8n ${this.n8nClient.apiBaseUrl} to become online`); + await this.n8nClient.waitForInstanceToBecomeOnline(); + + console.log('Setting up owner'); + await this.n8nClient.setupOwnerIfNeeded(this.ownerConfig); + + const authenticatedN8nClient = await AuthenticatedN8nApiClient.createUsingUsernameAndPassword( + this.n8nClient, + this.ownerConfig, + ); + const testDataImporter = new ScenarioDataImporter(authenticatedN8nClient); + + for (const scenario of scenarios) { + await this.runSingleTestScenario(testDataImporter, scenario); + } + } + + private async runSingleTestScenario(testDataImporter: ScenarioDataImporter, scenario: Scenario) { + console.log('Running scenario:', scenario.name); + + console.log('Loading and importing data'); + const testData = await this.dataLoader.loadDataForScenario(scenario); + await testDataImporter.importTestScenarioData(testData.workflows); + + console.log('Executing scenario script'); + await this.k6Executor.executeTestScenario(scenario); + } +} diff --git a/packages/@n8n/benchmark/src/types/scenario.ts b/packages/@n8n/benchmark/src/types/scenario.ts new file mode 100644 index 0000000000000..19c52fd45b7fd --- /dev/null +++ b/packages/@n8n/benchmark/src/types/scenario.ts @@ -0,0 +1,27 @@ +export type ScenarioData = { + /** Relative paths to the workflow files */ + workflowFiles?: string[]; +}; + +/** + * Configuration that defines the benchmark scenario + */ +export type ScenarioManifest = { + /** The name of the scenario */ + name: string; + /** A longer description of the scenario */ + description: string; + /** Relative path to the k6 script */ + scriptPath: string; + /** Data to import before running the scenario */ + scenarioData: ScenarioData; +}; + +/** + * Scenario with additional metadata + */ +export type Scenario = ScenarioManifest & { + id: string; + /** Path to the directory containing the scenario */ + scenarioDirPath: string; +}; diff --git a/packages/@n8n/benchmark/tsconfig.build.json b/packages/@n8n/benchmark/tsconfig.build.json new file mode 100644 index 0000000000000..b91db37a4a882 --- /dev/null +++ b/packages/@n8n/benchmark/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": ["./tsconfig.json", "../../../tsconfig.build.json"], + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/@n8n/benchmark/tsconfig.json b/packages/@n8n/benchmark/tsconfig.json new file mode 100644 index 0000000000000..58a1b48f657df --- /dev/null +++ b/packages/@n8n/benchmark/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": ["../../../tsconfig.json", "../../../tsconfig.backend.json"], + "compilerOptions": { + "rootDir": ".", + "baseUrl": "src", + "paths": { + "@/*": ["./*"] + } + }, + "include": ["src/**/*.ts"] +} diff --git a/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts b/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts index b7bd13e870322..62761742b0ede 100644 --- a/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts +++ b/packages/@n8n/nodes-langchain/nodes/agents/Agent/Agent.node.ts @@ -9,7 +9,6 @@ import type { INodeTypeDescription, INodeProperties, } from 'n8n-workflow'; -import { getTemplateNoticeField } from '../../../utils/sharedFields'; import { promptTypeOptions, textInput } from '../../../utils/descriptions'; import { conversationalAgentProperties } from './agents/ConversationalAgent/description'; import { conversationalAgentExecute } from './agents/ConversationalAgent/execute'; @@ -83,6 +82,7 @@ function getInputs( filter: { nodes: [ '@n8n/n8n-nodes-langchain.lmChatAnthropic', + '@n8n/n8n-nodes-langchain.lmChatAwsBedrock', '@n8n/n8n-nodes-langchain.lmChatGroq', '@n8n/n8n-nodes-langchain.lmChatOllama', '@n8n/n8n-nodes-langchain.lmChatOpenAi', @@ -305,10 +305,14 @@ export class Agent implements INodeType { ], properties: [ { - ...getTemplateNoticeField(1954), + displayName: + 'Tip: Get a feel for agents with our quick tutorial or see an example of how this node works', + name: 'notice_tip', + type: 'notice', + default: '', displayOptions: { show: { - agent: ['conversationalAgent'], + agent: ['conversationalAgent', 'toolsAgent'], }, }, }, diff --git a/packages/cli/scripts/build.mjs b/packages/cli/scripts/build.mjs index b1f5f5bd8fd56..36076ccfd4f04 100644 --- a/packages/cli/scripts/build.mjs +++ b/packages/cli/scripts/build.mjs @@ -23,8 +23,8 @@ if (publicApiEnabled) { function copyUserManagementEmailTemplates() { const templates = { - source: path.resolve(ROOT_DIR, 'src', 'UserManagement', 'email', 'templates'), - destination: path.resolve(ROOT_DIR, 'dist', 'UserManagement', 'email'), + source: path.resolve(ROOT_DIR, 'src', 'user-management', 'email', 'templates'), + destination: path.resolve(ROOT_DIR, 'dist', 'user-management', 'email'), }; shell.cp('-r', templates.source, templates.destination); diff --git a/packages/cli/src/Interfaces.ts b/packages/cli/src/Interfaces.ts index 73b1e99ec6559..f6c3f4670fb74 100644 --- a/packages/cli/src/Interfaces.ts +++ b/packages/cli/src/Interfaces.ts @@ -25,7 +25,7 @@ import type { StartNodeData, } from 'n8n-workflow'; -import type { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import type { ActiveWorkflowManager } from '@/active-workflow-manager'; import type { WorkflowExecute } from 'n8n-core'; @@ -39,7 +39,7 @@ import type { CredentialsRepository } from '@db/repositories/credentials.reposit import type { SettingsRepository } from '@db/repositories/settings.repository'; import type { UserRepository } from '@db/repositories/user.repository'; import type { WorkflowRepository } from '@db/repositories/workflow.repository'; -import type { ExternalHooks } from './ExternalHooks'; +import type { ExternalHooks } from './external-hooks'; import type { LICENSE_FEATURES, LICENSE_QUOTAS } from './constants'; import type { WorkflowWithSharingsAndCredentials } from './workflows/workflows.types'; import type { RunningJobSummary } from './scaling/types'; diff --git a/packages/cli/src/PublicApi/index.ts b/packages/cli/src/PublicApi/index.ts index af4fc97fc7907..35c6d9862ea97 100644 --- a/packages/cli/src/PublicApi/index.ts +++ b/packages/cli/src/PublicApi/index.ts @@ -10,7 +10,7 @@ import type { HttpError } from 'express-openapi-validator/dist/framework/types'; import type { OpenAPIV3 } from 'openapi-types'; import type { JsonObject } from 'swagger-ui-express'; -import { License } from '@/License'; +import { License } from '@/license'; import { UserRepository } from '@db/repositories/user.repository'; import { UrlService } from '@/services/url.service'; import type { AuthenticatedRequest } from '@/requests'; diff --git a/packages/cli/src/PublicApi/v1/handlers/audit/audit.handler.ts b/packages/cli/src/PublicApi/v1/handlers/audit/audit.handler.ts index caf3750ad4953..8aa09cb902d40 100644 --- a/packages/cli/src/PublicApi/v1/handlers/audit/audit.handler.ts +++ b/packages/cli/src/PublicApi/v1/handlers/audit/audit.handler.ts @@ -8,7 +8,7 @@ export = { globalScope('securityAudit:generate'), async (req: AuditRequest.Generate, res: Response): Promise => { try { - const { SecurityAuditService } = await import('@/security-audit/SecurityAudit.service'); + const { SecurityAuditService } = await import('@/security-audit/security-audit.service'); const result = await Container.get(SecurityAuditService).run( req.body?.additionalOptions?.categories, req.body?.additionalOptions?.daysAbandonedWorkflow, diff --git a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.handler.ts b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.handler.ts index 57b6bd66f6841..2c13f6de56507 100644 --- a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.handler.ts +++ b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.handler.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-unsafe-argument */ import type express from 'express'; -import { CredentialsHelper } from '@/CredentialsHelper'; -import { CredentialTypes } from '@/CredentialTypes'; +import { CredentialsHelper } from '@/credentials-helper'; +import { CredentialTypes } from '@/credential-types'; import type { CredentialsEntity } from '@db/entities/CredentialsEntity'; import type { CredentialTypeRequest, CredentialRequest } from '../../../types'; import { projectScope } from '../../shared/middlewares/global.middleware'; diff --git a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.middleware.ts b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.middleware.ts index b7c2412923ecd..8583c866b8fe0 100644 --- a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.middleware.ts +++ b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.middleware.ts @@ -3,8 +3,8 @@ import type express from 'express'; import { validate } from 'jsonschema'; -import { CredentialsHelper } from '@/CredentialsHelper'; -import { CredentialTypes } from '@/CredentialTypes'; +import { CredentialsHelper } from '@/credentials-helper'; +import { CredentialTypes } from '@/credential-types'; import type { CredentialRequest } from '../../../types'; import { toJsonSchema } from './credentials.service'; import { Container } from 'typedi'; diff --git a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.service.ts b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.service.ts index 2c4a35a6aa177..075c7fcf118d6 100644 --- a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.service.ts +++ b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.service.ts @@ -10,7 +10,7 @@ import type { ICredentialsDb } from '@/Interfaces'; import { CredentialsEntity } from '@db/entities/CredentialsEntity'; import { SharedCredentials } from '@db/entities/SharedCredentials'; import type { User } from '@db/entities/User'; -import { ExternalHooks } from '@/ExternalHooks'; +import { ExternalHooks } from '@/external-hooks'; import type { IDependency, IJsonSchema } from '../../../types'; import type { CredentialRequest } from '@/requests'; import { Container } from 'typedi'; diff --git a/packages/cli/src/PublicApi/v1/handlers/executions/executions.handler.ts b/packages/cli/src/PublicApi/v1/handlers/executions/executions.handler.ts index ab6927724c1aa..beba4606aa7b1 100644 --- a/packages/cli/src/PublicApi/v1/handlers/executions/executions.handler.ts +++ b/packages/cli/src/PublicApi/v1/handlers/executions/executions.handler.ts @@ -2,7 +2,7 @@ import type express from 'express'; import { Container } from 'typedi'; import { replaceCircularReferences } from 'n8n-workflow'; -import { ActiveExecutions } from '@/ActiveExecutions'; +import { ActiveExecutions } from '@/active-executions'; import { validCursor } from '../../shared/middlewares/global.middleware'; import type { ExecutionRequest } from '../../../types'; import { getSharedWorkflowIds } from '../workflows/workflows.service'; diff --git a/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.handler.ts b/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.handler.ts index 8515548dea16b..42c3e269ab3d3 100644 --- a/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.handler.ts +++ b/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.handler.ts @@ -7,11 +7,11 @@ import type { FindOptionsWhere } from '@n8n/typeorm'; import { In, Like, QueryFailedError } from '@n8n/typeorm'; import { v4 as uuid } from 'uuid'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import config from '@/config'; import { WorkflowEntity } from '@db/entities/WorkflowEntity'; -import { ExternalHooks } from '@/ExternalHooks'; -import { addNodeIds, replaceInvalidCredentials } from '@/WorkflowHelpers'; +import { ExternalHooks } from '@/external-hooks'; +import { addNodeIds, replaceInvalidCredentials } from '@/workflow-helpers'; import type { WorkflowRequest } from '../../../types'; import { projectScope, validCursor } from '../../shared/middlewares/global.middleware'; import { encodeNextCursor } from '../../shared/services/pagination.service'; @@ -26,7 +26,7 @@ import { updateTags, } from './workflows.service'; import { WorkflowService } from '@/workflows/workflow.service'; -import { WorkflowHistoryService } from '@/workflows/workflowHistory/workflowHistory.service.ee'; +import { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service.ee'; import { SharedWorkflowRepository } from '@/databases/repositories/sharedWorkflow.repository'; import { TagRepository } from '@/databases/repositories/tag.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; diff --git a/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.service.ts b/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.service.ts index 3e3afc078ed92..5fba88ff16f77 100644 --- a/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.service.ts +++ b/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.service.ts @@ -8,8 +8,8 @@ import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import type { Project } from '@/databases/entities/Project'; import { TagRepository } from '@db/repositories/tag.repository'; -import { License } from '@/License'; -import { WorkflowSharingService } from '@/workflows/workflowSharing.service'; +import { License } from '@/license'; +import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; import type { Scope } from '@n8n/permissions'; import config from '@/config'; diff --git a/packages/cli/src/PublicApi/v1/shared/middlewares/global.middleware.ts b/packages/cli/src/PublicApi/v1/shared/middlewares/global.middleware.ts index 7e8c39bb91a3d..1b70b9770d13d 100644 --- a/packages/cli/src/PublicApi/v1/shared/middlewares/global.middleware.ts +++ b/packages/cli/src/PublicApi/v1/shared/middlewares/global.middleware.ts @@ -2,13 +2,13 @@ import type express from 'express'; import { Container } from 'typedi'; -import { License } from '@/License'; +import { License } from '@/license'; import type { AuthenticatedRequest } from '@/requests'; import type { PaginatedRequest } from '../../../types'; import { decodeCursor } from '../services/pagination.service'; import type { Scope } from '@n8n/permissions'; -import { userHasScope } from '@/permissions/checkAccess'; +import { userHasScope } from '@/permissions/check-access'; import type { BooleanLicenseFeature } from '@/Interfaces'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; diff --git a/packages/cli/src/UserManagement/email/index.ts b/packages/cli/src/UserManagement/email/index.ts deleted file mode 100644 index 8c94805eb669a..0000000000000 --- a/packages/cli/src/UserManagement/email/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { UserManagementMailer } from './UserManagementMailer'; - -export { UserManagementMailer }; diff --git a/packages/cli/src/__tests__/License.test.ts b/packages/cli/src/__tests__/License.test.ts index 31effecc0eba4..712340664f3cd 100644 --- a/packages/cli/src/__tests__/License.test.ts +++ b/packages/cli/src/__tests__/License.test.ts @@ -2,8 +2,8 @@ import { LicenseManager } from '@n8n_io/license-sdk'; import { InstanceSettings } from 'n8n-core'; import { mock } from 'jest-mock-extended'; import config from '@/config'; -import { License } from '@/License'; -import { Logger } from '@/Logger'; +import { License } from '@/license'; +import { Logger } from '@/logger'; import { N8N_VERSION } from '@/constants'; import { mockInstance } from '@test/mocking'; import { OrchestrationService } from '@/services/orchestration.service'; diff --git a/packages/cli/src/__tests__/ActiveExecutions.test.ts b/packages/cli/src/__tests__/active-executions.test.ts similarity index 99% rename from packages/cli/src/__tests__/ActiveExecutions.test.ts rename to packages/cli/src/__tests__/active-executions.test.ts index 0cc70a10a4e61..539c16070070a 100644 --- a/packages/cli/src/__tests__/ActiveExecutions.test.ts +++ b/packages/cli/src/__tests__/active-executions.test.ts @@ -1,4 +1,4 @@ -import { ActiveExecutions } from '@/ActiveExecutions'; +import { ActiveExecutions } from '@/active-executions'; import PCancelable from 'p-cancelable'; import { v4 as uuid } from 'uuid'; import type { IExecuteResponsePromiseData, IRun } from 'n8n-workflow'; diff --git a/packages/cli/src/__tests__/CredentialTypes.test.ts b/packages/cli/src/__tests__/credential-types.test.ts similarity index 89% rename from packages/cli/src/__tests__/CredentialTypes.test.ts rename to packages/cli/src/__tests__/credential-types.test.ts index 2a8e6a939a045..b65e5a4aa3d2d 100644 --- a/packages/cli/src/__tests__/CredentialTypes.test.ts +++ b/packages/cli/src/__tests__/credential-types.test.ts @@ -1,6 +1,6 @@ -import { CredentialTypes } from '@/CredentialTypes'; +import { CredentialTypes } from '@/credential-types'; import { Container } from 'typedi'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { mockInstance } from '@test/mocking'; describe('CredentialTypes', () => { diff --git a/packages/cli/src/__tests__/CredentialsHelper.test.ts b/packages/cli/src/__tests__/credentials-helper.test.ts similarity index 97% rename from packages/cli/src/__tests__/CredentialsHelper.test.ts rename to packages/cli/src/__tests__/credentials-helper.test.ts index 88cd19ad3dc5d..61c3f930136bf 100644 --- a/packages/cli/src/__tests__/CredentialsHelper.test.ts +++ b/packages/cli/src/__tests__/credentials-helper.test.ts @@ -9,9 +9,9 @@ import type { } from 'n8n-workflow'; import { deepCopy } from 'n8n-workflow'; import { Workflow } from 'n8n-workflow'; -import { CredentialsHelper } from '@/CredentialsHelper'; -import { NodeTypes } from '@/NodeTypes'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { CredentialsHelper } from '@/credentials-helper'; +import { NodeTypes } from '@/node-types'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; import { mockInstance } from '@test/mocking'; diff --git a/packages/cli/src/__tests__/WaitTracker.test.ts b/packages/cli/src/__tests__/wait-tracker.test.ts similarity index 98% rename from packages/cli/src/__tests__/WaitTracker.test.ts rename to packages/cli/src/__tests__/wait-tracker.test.ts index fb51d2e25bd30..ee0697e110e99 100644 --- a/packages/cli/src/__tests__/WaitTracker.test.ts +++ b/packages/cli/src/__tests__/wait-tracker.test.ts @@ -1,4 +1,4 @@ -import { WaitTracker } from '@/WaitTracker'; +import { WaitTracker } from '@/wait-tracker'; import { mock } from 'jest-mock-extended'; import type { ExecutionRepository } from '@/databases/repositories/execution.repository'; import type { IExecutionResponse } from '@/Interfaces'; diff --git a/packages/cli/src/__tests__/WorkflowExecuteAdditionalData.test.ts b/packages/cli/src/__tests__/workflow-execute-additional-data.test.ts similarity index 88% rename from packages/cli/src/__tests__/WorkflowExecuteAdditionalData.test.ts rename to packages/cli/src/__tests__/workflow-execute-additional-data.test.ts index eca60e56c5216..f51d994493cc4 100644 --- a/packages/cli/src/__tests__/WorkflowExecuteAdditionalData.test.ts +++ b/packages/cli/src/__tests__/workflow-execute-additional-data.test.ts @@ -1,10 +1,10 @@ import { VariablesService } from '@/environments/variables/variables.service.ee'; import { mockInstance } from '@test/mocking'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { getBase } from '@/WorkflowExecuteAdditionalData'; +import { getBase } from '@/workflow-execute-additional-data'; import Container from 'typedi'; -import { CredentialsHelper } from '@/CredentialsHelper'; -import { SecretsHelper } from '@/SecretsHelpers'; +import { CredentialsHelper } from '@/credentials-helper'; +import { SecretsHelper } from '@/secrets-helpers'; describe('WorkflowExecuteAdditionalData', () => { const messageEventBus = mockInstance(MessageEventBus); diff --git a/packages/cli/src/__tests__/WorkflowHelpers.test.ts b/packages/cli/src/__tests__/workflow-helpers.test.ts similarity index 95% rename from packages/cli/src/__tests__/WorkflowHelpers.test.ts rename to packages/cli/src/__tests__/workflow-helpers.test.ts index 1b5da0a4de1bc..32f49333496ae 100644 --- a/packages/cli/src/__tests__/WorkflowHelpers.test.ts +++ b/packages/cli/src/__tests__/workflow-helpers.test.ts @@ -1,5 +1,5 @@ import { type Workflow } from 'n8n-workflow'; -import { getExecutionStartNode } from '@/WorkflowHelpers'; +import { getExecutionStartNode } from '@/workflow-helpers'; import type { IWorkflowExecutionDataProcess } from '@/Interfaces'; describe('WorkflowHelpers', () => { diff --git a/packages/cli/src/__tests__/WorkflowRunner.test.ts b/packages/cli/src/__tests__/workflow-runner.test.ts similarity index 97% rename from packages/cli/src/__tests__/WorkflowRunner.test.ts rename to packages/cli/src/__tests__/workflow-runner.test.ts index 668150092f60a..56dcf97c7c58c 100644 --- a/packages/cli/src/__tests__/WorkflowRunner.test.ts +++ b/packages/cli/src/__tests__/workflow-runner.test.ts @@ -1,7 +1,7 @@ import Container from 'typedi'; import { WorkflowHooks, type ExecutionError, type IWorkflowExecuteHooks } from 'n8n-workflow'; import type { User } from '@db/entities/User'; -import { WorkflowRunner } from '@/WorkflowRunner'; +import { WorkflowRunner } from '@/workflow-runner'; import config from '@/config'; import * as testDb from '@test-integration/testDb'; diff --git a/packages/cli/src/AbstractServer.ts b/packages/cli/src/abstract-server.ts similarity index 93% rename from packages/cli/src/AbstractServer.ts rename to packages/cli/src/abstract-server.ts index 93ecb500c698c..f9080080d0cdb 100644 --- a/packages/cli/src/AbstractServer.ts +++ b/packages/cli/src/abstract-server.ts @@ -10,18 +10,18 @@ import config from '@/config'; import { N8N_VERSION, TEMPLATES_DIR, inDevelopment, inTest } from '@/constants'; import * as Db from '@/Db'; import { N8nInstanceType } from '@/Interfaces'; -import { ExternalHooks } from '@/ExternalHooks'; -import { send, sendErrorResponse } from '@/ResponseHelper'; +import { ExternalHooks } from '@/external-hooks'; +import { send, sendErrorResponse } from '@/response-helper'; import { rawBodyReader, bodyParser, corsMiddleware } from '@/middlewares'; -import { WaitingForms } from '@/WaitingForms'; -import { TestWebhooks } from '@/webhooks/TestWebhooks'; -import { WaitingWebhooks } from '@/webhooks/WaitingWebhooks'; -import { createWebhookHandlerFor } from '@/webhooks/WebhookRequestHandler'; -import { LiveWebhooks } from '@/webhooks/LiveWebhooks'; +import { WaitingForms } from '@/waiting-forms'; +import { TestWebhooks } from '@/webhooks/test-webhooks'; +import { WaitingWebhooks } from '@/webhooks/waiting-webhooks'; +import { createWebhookHandlerFor } from '@/webhooks/webhook-request-handler'; +import { LiveWebhooks } from '@/webhooks/live-webhooks'; import { generateHostInstanceId } from './databases/utils/generators'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { ServiceUnavailableError } from './errors/response-errors/service-unavailable.error'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { OnShutdown } from '@/decorators/on-shutdown'; import { GlobalConfig } from '@n8n/config'; @Service() diff --git a/packages/cli/src/ActivationErrors.service.ts b/packages/cli/src/activation-errors.service.ts similarity index 100% rename from packages/cli/src/ActivationErrors.service.ts rename to packages/cli/src/activation-errors.service.ts diff --git a/packages/cli/src/ActiveExecutions.ts b/packages/cli/src/active-executions.ts similarity index 99% rename from packages/cli/src/ActiveExecutions.ts rename to packages/cli/src/active-executions.ts index c1a6e8ffd65a9..32f8aac0a7ed5 100644 --- a/packages/cli/src/ActiveExecutions.ts +++ b/packages/cli/src/active-executions.ts @@ -23,7 +23,7 @@ import type { } from '@/Interfaces'; import { isWorkflowIdValid } from '@/utils'; import { ExecutionRepository } from '@db/repositories/execution.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { ConcurrencyControlService } from './concurrency/concurrency-control.service'; import config from './config'; diff --git a/packages/cli/src/ActiveWorkflowManager.ts b/packages/cli/src/active-workflow-manager.ts similarity index 97% rename from packages/cli/src/ActiveWorkflowManager.ts rename to packages/cli/src/active-workflow-manager.ts index fac6e9d9faa2e..0db162a06eadc 100644 --- a/packages/cli/src/ActiveWorkflowManager.ts +++ b/packages/cli/src/active-workflow-manager.ts @@ -27,28 +27,28 @@ import { } from 'n8n-workflow'; import type { IWorkflowDb } from '@/Interfaces'; -import * as WebhookHelpers from '@/webhooks/WebhookHelpers'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as WebhookHelpers from '@/webhooks/webhook-helpers'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; -import { ActiveExecutions } from '@/ActiveExecutions'; +import { ActiveExecutions } from '@/active-executions'; import { ExecutionService } from './executions/execution.service'; import { STARTING_NODES, WORKFLOW_REACTIVATE_INITIAL_TIMEOUT, WORKFLOW_REACTIVATE_MAX_TIMEOUT, } from '@/constants'; -import { NodeTypes } from '@/NodeTypes'; -import { ExternalHooks } from '@/ExternalHooks'; +import { NodeTypes } from '@/node-types'; +import { ExternalHooks } from '@/external-hooks'; import { WebhookService } from '@/webhooks/webhook.service'; -import { Logger } from './Logger'; +import { Logger } from './logger'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { OrchestrationService } from '@/services/orchestration.service'; -import { ActivationErrorsService } from '@/ActivationErrors.service'; +import { ActivationErrorsService } from '@/activation-errors.service'; import { ActiveWorkflowsService } from '@/services/activeWorkflows.service'; -import { WorkflowExecutionService } from '@/workflows/workflowExecution.service'; -import { WorkflowStaticDataService } from '@/workflows/workflowStaticData.service'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { WorkflowExecutionService } from '@/workflows/workflow-execution.service'; +import { WorkflowStaticDataService } from '@/workflows/workflow-static-data.service'; +import { OnShutdown } from '@/decorators/on-shutdown'; interface QueuedActivation { activationMode: WorkflowActivateMode; diff --git a/packages/cli/src/auth/__tests__/auth.service.test.ts b/packages/cli/src/auth/__tests__/auth.service.test.ts index 60fdd121266db..82c820ac9e168 100644 --- a/packages/cli/src/auth/__tests__/auth.service.test.ts +++ b/packages/cli/src/auth/__tests__/auth.service.test.ts @@ -6,6 +6,7 @@ import { AuthService } from '@/auth/auth.service'; import config from '@/config'; import { AUTH_COOKIE_NAME, Time } from '@/constants'; import type { User } from '@db/entities/User'; +import type { InvalidAuthTokenRepository } from '@db/repositories/invalidAuthToken.repository'; import type { UserRepository } from '@db/repositories/user.repository'; import { JwtService } from '@/services/jwt.service'; import type { UrlService } from '@/services/url.service'; @@ -26,7 +27,15 @@ describe('AuthService', () => { const jwtService = new JwtService(mock()); const urlService = mock(); const userRepository = mock(); - const authService = new AuthService(mock(), mock(), jwtService, urlService, userRepository); + const invalidAuthTokenRepository = mock(); + const authService = new AuthService( + mock(), + mock(), + jwtService, + urlService, + userRepository, + invalidAuthTokenRepository, + ); const now = new Date('2024-02-01T01:23:45.678Z'); jest.useFakeTimers({ now }); @@ -70,16 +79,36 @@ describe('AuthService', () => { it('should 401 if no cookie is set', async () => { req.cookies[AUTH_COOKIE_NAME] = undefined; + await authService.authMiddleware(req, res, next); + + expect(invalidAuthTokenRepository.existsBy).not.toHaveBeenCalled(); expect(next).not.toHaveBeenCalled(); expect(res.status).toHaveBeenCalledWith(401); }); it('should 401 and clear the cookie if the JWT is expired', async () => { req.cookies[AUTH_COOKIE_NAME] = validToken; + invalidAuthTokenRepository.existsBy.mockResolvedValue(false); jest.advanceTimersByTime(365 * Time.days.toMilliseconds); await authService.authMiddleware(req, res, next); + + expect(invalidAuthTokenRepository.existsBy).toHaveBeenCalled(); + expect(userRepository.findOne).not.toHaveBeenCalled(); + expect(next).not.toHaveBeenCalled(); + expect(res.status).toHaveBeenCalledWith(401); + expect(res.clearCookie).toHaveBeenCalledWith(AUTH_COOKIE_NAME); + }); + + it('should 401 and clear the cookie if the JWT has been invalidated', async () => { + req.cookies[AUTH_COOKIE_NAME] = validToken; + invalidAuthTokenRepository.existsBy.mockResolvedValue(true); + + await authService.authMiddleware(req, res, next); + + expect(invalidAuthTokenRepository.existsBy).toHaveBeenCalled(); + expect(userRepository.findOne).not.toHaveBeenCalled(); expect(next).not.toHaveBeenCalled(); expect(res.status).toHaveBeenCalledWith(401); expect(res.clearCookie).toHaveBeenCalledWith(AUTH_COOKIE_NAME); @@ -88,9 +117,11 @@ describe('AuthService', () => { it('should refresh the cookie before it expires', async () => { req.cookies[AUTH_COOKIE_NAME] = validToken; jest.advanceTimersByTime(6 * Time.days.toMilliseconds); + invalidAuthTokenRepository.existsBy.mockResolvedValue(false); userRepository.findOne.mockResolvedValue(user); await authService.authMiddleware(req, res, next); + expect(next).toHaveBeenCalled(); expect(res.cookie).toHaveBeenCalledWith('n8n-auth', expect.any(String), { httpOnly: true, @@ -302,4 +333,21 @@ describe('AuthService', () => { expect(resolvedUser).toEqual(user); }); }); + + describe('invalidateToken', () => { + const req = mock({ + cookies: { + [AUTH_COOKIE_NAME]: validToken, + }, + }); + + it('should invalidate the token', async () => { + await authService.invalidateToken(req); + + expect(invalidAuthTokenRepository.insert).toHaveBeenCalledWith({ + token: validToken, + expiresAt: new Date('2024-02-08T01:23:45.000Z'), + }); + }); + }); }); diff --git a/packages/cli/src/auth/auth.service.ts b/packages/cli/src/auth/auth.service.ts index e2487e6f6f9a6..7e83393f271b3 100644 --- a/packages/cli/src/auth/auth.service.ts +++ b/packages/cli/src/auth/auth.service.ts @@ -6,11 +6,12 @@ import { JsonWebTokenError, TokenExpiredError } from 'jsonwebtoken'; import config from '@/config'; import { AUTH_COOKIE_NAME, RESPONSE_ERROR_MESSAGES, Time } from '@/constants'; import type { User } from '@db/entities/User'; +import { InvalidAuthTokenRepository } from '@db/repositories/invalidAuthToken.repository'; import { UserRepository } from '@db/repositories/user.repository'; import { AuthError } from '@/errors/response-errors/auth.error'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { License } from '@/License'; -import { Logger } from '@/Logger'; +import { License } from '@/license'; +import { Logger } from '@/logger'; import type { AuthenticatedRequest } from '@/requests'; import { JwtService } from '@/services/jwt.service'; import { UrlService } from '@/services/url.service'; @@ -53,6 +54,7 @@ export class AuthService { private readonly jwtService: JwtService, private readonly urlService: UrlService, private readonly userRepository: UserRepository, + private readonly invalidAuthTokenRepository: InvalidAuthTokenRepository, ) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment this.authMiddleware = this.authMiddleware.bind(this); @@ -62,6 +64,8 @@ export class AuthService { const token = req.cookies[AUTH_COOKIE_NAME]; if (token) { try { + const isInvalid = await this.invalidAuthTokenRepository.existsBy({ token }); + if (isInvalid) throw new AuthError('Unauthorized'); req.user = await this.resolveJwt(token, req, res); } catch (error) { if (error instanceof JsonWebTokenError || error instanceof AuthError) { @@ -80,6 +84,22 @@ export class AuthService { res.clearCookie(AUTH_COOKIE_NAME); } + async invalidateToken(req: AuthenticatedRequest) { + const token = req.cookies[AUTH_COOKIE_NAME]; + if (!token) return; + try { + const { exp } = this.jwtService.decode(token); + if (exp) { + await this.invalidAuthTokenRepository.insert({ + token, + expiresAt: new Date(exp * 1000), + }); + } + } catch (e) { + this.logger.warn('failed to invalidate auth token', { error: (e as Error).message }); + } + } + issueCookie(res: Response, user: User, browserId?: string) { // TODO: move this check to the login endpoint in AuthController // If the instance has exceeded its user quota, prevent non-owners from logging in diff --git a/packages/cli/src/auth/methods/email.ts b/packages/cli/src/auth/methods/email.ts index f954991974570..fb7213ef3bc4e 100644 --- a/packages/cli/src/auth/methods/email.ts +++ b/packages/cli/src/auth/methods/email.ts @@ -1,7 +1,7 @@ import type { User } from '@db/entities/User'; import { PasswordUtility } from '@/services/password.utility'; import { Container } from 'typedi'; -import { isLdapLoginEnabled } from '@/Ldap/helpers.ee'; +import { isLdapLoginEnabled } from '@/ldap/helpers.ee'; import { UserRepository } from '@db/repositories/user.repository'; import { AuthError } from '@/errors/response-errors/auth.error'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/auth/methods/ldap.ts b/packages/cli/src/auth/methods/ldap.ts index 66f6f6dcd9ffe..c3ec2150c77a1 100644 --- a/packages/cli/src/auth/methods/ldap.ts +++ b/packages/cli/src/auth/methods/ldap.ts @@ -1,6 +1,6 @@ import { Container } from 'typedi'; -import { LdapService } from '@/Ldap/ldap.service.ee'; +import { LdapService } from '@/ldap/ldap.service.ee'; import { createLdapUserOnLocalDb, getUserByEmail, @@ -9,7 +9,7 @@ import { mapLdapAttributesToUser, createLdapAuthIdentity, updateLdapUserOnLocalDb, -} from '@/Ldap/helpers.ee'; +} from '@/ldap/helpers.ee'; import type { User } from '@db/entities/User'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/commands/audit.ts b/packages/cli/src/commands/audit.ts index 4f6b356028644..a447204b67779 100644 --- a/packages/cli/src/commands/audit.ts +++ b/packages/cli/src/commands/audit.ts @@ -2,11 +2,11 @@ import { Container } from 'typedi'; import { Flags } from '@oclif/core'; import { ApplicationError } from 'n8n-workflow'; -import { SecurityAuditService } from '@/security-audit/SecurityAudit.service'; +import { SecurityAuditService } from '@/security-audit/security-audit.service'; import { RISK_CATEGORIES } from '@/security-audit/constants'; import config from '@/config'; import type { Risk } from '@/security-audit/types'; -import { BaseCommand } from './BaseCommand'; +import { BaseCommand } from './base-command'; export class SecurityAudit extends BaseCommand { static description = 'Generate a security audit report for this n8n instance'; diff --git a/packages/cli/src/commands/BaseCommand.ts b/packages/cli/src/commands/base-command.ts similarity index 93% rename from packages/cli/src/commands/BaseCommand.ts rename to packages/cli/src/commands/base-command.ts index af3958c25a4a0..db6897c2521bc 100644 --- a/packages/cli/src/commands/BaseCommand.ts +++ b/packages/cli/src/commands/base-command.ts @@ -4,25 +4,25 @@ import { Command, Errors } from '@oclif/core'; import { GlobalConfig } from '@n8n/config'; import { ApplicationError, ErrorReporterProxy as ErrorReporter, sleep } from 'n8n-workflow'; import { BinaryDataService, InstanceSettings, ObjectStoreService } from 'n8n-core'; -import type { AbstractServer } from '@/AbstractServer'; -import { Logger } from '@/Logger'; +import type { AbstractServer } from '@/abstract-server'; +import { Logger } from '@/logger'; import config from '@/config'; import * as Db from '@/Db'; -import * as CrashJournal from '@/CrashJournal'; +import * as CrashJournal from '@/crash-journal'; import { LICENSE_FEATURES, inDevelopment, inTest } from '@/constants'; -import { initErrorHandling } from '@/ErrorReporting'; -import { ExternalHooks } from '@/ExternalHooks'; -import { NodeTypes } from '@/NodeTypes'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { initErrorHandling } from '@/error-reporting'; +import { ExternalHooks } from '@/external-hooks'; +import { NodeTypes } from '@/node-types'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import type { N8nInstanceType } from '@/Interfaces'; import { PostHogClient } from '@/posthog'; -import { InternalHooks } from '@/InternalHooks'; -import { License } from '@/License'; -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; -import { initExpressionEvaluator } from '@/ExpressionEvaluator'; +import { InternalHooks } from '@/internal-hooks'; +import { License } from '@/license'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; +import { initExpressionEvaluator } from '@/expression-evaluator'; import { generateHostInstanceId } from '@db/utils/generators'; -import { WorkflowHistoryManager } from '@/workflows/workflowHistory/workflowHistoryManager.ee'; -import { ShutdownService } from '@/shutdown/Shutdown.service'; +import { WorkflowHistoryManager } from '@/workflows/workflow-history/workflow-history-manager.ee'; +import { ShutdownService } from '@/shutdown/shutdown.service'; import { TelemetryEventRelay } from '@/events/telemetry-event-relay'; export abstract class BaseCommand extends Command { diff --git a/packages/cli/src/commands/db/__tests__/revert.test.ts b/packages/cli/src/commands/db/__tests__/revert.test.ts index 13c554a786ad3..1afa8be1901ee 100644 --- a/packages/cli/src/commands/db/__tests__/revert.test.ts +++ b/packages/cli/src/commands/db/__tests__/revert.test.ts @@ -1,6 +1,6 @@ import { main } from '@/commands/db/revert'; import { mockInstance } from '@test/mocking'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { IrreversibleMigration, ReversibleMigration } from '@/databases/types'; import type { Migration, MigrationExecutor } from '@n8n/typeorm'; import { type DataSource } from '@n8n/typeorm'; diff --git a/packages/cli/src/commands/db/revert.ts b/packages/cli/src/commands/db/revert.ts index b0a844086ccfc..c52ce8a35c8e6 100644 --- a/packages/cli/src/commands/db/revert.ts +++ b/packages/cli/src/commands/db/revert.ts @@ -4,7 +4,7 @@ import type { DataSourceOptions as ConnectionOptions } from '@n8n/typeorm'; // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import import { MigrationExecutor, DataSource as Connection } from '@n8n/typeorm'; import { Container } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { getConnectionOptions } from '@db/config'; import type { Migration } from '@db/types'; import { wrapMigration } from '@db/utils/migrationHelpers'; diff --git a/packages/cli/src/commands/execute.ts b/packages/cli/src/commands/execute.ts index cdf949e87ceda..0788f4d1db041 100644 --- a/packages/cli/src/commands/execute.ts +++ b/packages/cli/src/commands/execute.ts @@ -3,11 +3,11 @@ import { Flags } from '@oclif/core'; import type { IWorkflowBase } from 'n8n-workflow'; import { ApplicationError, ExecutionBaseError } from 'n8n-workflow'; -import { ActiveExecutions } from '@/ActiveExecutions'; -import { WorkflowRunner } from '@/WorkflowRunner'; +import { ActiveExecutions } from '@/active-executions'; +import { WorkflowRunner } from '@/workflow-runner'; import type { IWorkflowExecutionDataProcess } from '@/Interfaces'; import { findCliWorkflowStart, isWorkflowIdValid } from '@/utils'; -import { BaseCommand } from './BaseCommand'; +import { BaseCommand } from './base-command'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { OwnershipService } from '@/services/ownership.service'; diff --git a/packages/cli/src/commands/executeBatch.ts b/packages/cli/src/commands/executeBatch.ts index 227dd962efb1b..bd2de6b5ed870 100644 --- a/packages/cli/src/commands/executeBatch.ts +++ b/packages/cli/src/commands/executeBatch.ts @@ -9,15 +9,15 @@ import { sep } from 'path'; import { diff } from 'json-diff'; import pick from 'lodash/pick'; -import { ActiveExecutions } from '@/ActiveExecutions'; -import { WorkflowRunner } from '@/WorkflowRunner'; +import { ActiveExecutions } from '@/active-executions'; +import { WorkflowRunner } from '@/workflow-runner'; import type { IWorkflowDb, IWorkflowExecutionDataProcess } from '@/Interfaces'; import type { User } from '@db/entities/User'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { OwnershipService } from '@/services/ownership.service'; import { findCliWorkflowStart } from '@/utils'; -import { BaseCommand } from './BaseCommand'; +import { BaseCommand } from './base-command'; import type { IExecutionResult, INodeSpecialCase, diff --git a/packages/cli/src/commands/export/credentials.ts b/packages/cli/src/commands/export/credentials.ts index 5fb10dcb2caa0..4af626c735ed0 100644 --- a/packages/cli/src/commands/export/credentials.ts +++ b/packages/cli/src/commands/export/credentials.ts @@ -3,7 +3,7 @@ import fs from 'fs'; import path from 'path'; import { Credentials } from 'n8n-core'; import type { ICredentialsDb, ICredentialsDecryptedDb } from '@/Interfaces'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import Container from 'typedi'; import { ApplicationError } from 'n8n-workflow'; diff --git a/packages/cli/src/commands/export/workflow.ts b/packages/cli/src/commands/export/workflow.ts index 19aa2b9e0876b..b15484c7697ce 100644 --- a/packages/cli/src/commands/export/workflow.ts +++ b/packages/cli/src/commands/export/workflow.ts @@ -1,7 +1,7 @@ import { Flags } from '@oclif/core'; import fs from 'fs'; import path from 'path'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import Container from 'typedi'; import { ApplicationError } from 'n8n-workflow'; diff --git a/packages/cli/src/commands/import/credentials.ts b/packages/cli/src/commands/import/credentials.ts index 16fd1a5fa592b..f36d33ba7b4c4 100644 --- a/packages/cli/src/commands/import/credentials.ts +++ b/packages/cli/src/commands/import/credentials.ts @@ -9,7 +9,7 @@ import type { EntityManager } from '@n8n/typeorm'; import * as Db from '@/Db'; import { SharedCredentials } from '@db/entities/SharedCredentials'; import { CredentialsEntity } from '@db/entities/CredentialsEntity'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; import type { ICredentialsEncrypted } from 'n8n-workflow'; import { ApplicationError, jsonParse } from 'n8n-workflow'; import { UM_FIX_INSTRUCTION } from '@/constants'; diff --git a/packages/cli/src/commands/import/workflow.ts b/packages/cli/src/commands/import/workflow.ts index dcf72a9c9a0d9..d7173b591a42b 100644 --- a/packages/cli/src/commands/import/workflow.ts +++ b/packages/cli/src/commands/import/workflow.ts @@ -11,7 +11,7 @@ import { UserRepository } from '@db/repositories/user.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import type { IWorkflowToImport } from '@/Interfaces'; import { ImportService } from '@/services/import.service'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { ProjectRepository } from '@/databases/repositories/project.repository'; diff --git a/packages/cli/src/commands/ldap/reset.ts b/packages/cli/src/commands/ldap/reset.ts index 2f0cc7b3050f5..c91564ead9d0f 100644 --- a/packages/cli/src/commands/ldap/reset.ts +++ b/packages/cli/src/commands/ldap/reset.ts @@ -1,10 +1,10 @@ import Container from 'typedi'; -import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/Ldap/constants'; +import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/ldap/constants'; import { AuthIdentityRepository } from '@db/repositories/authIdentity.repository'; import { AuthProviderSyncHistoryRepository } from '@db/repositories/authProviderSyncHistory.repository'; import { SettingsRepository } from '@db/repositories/settings.repository'; import { UserRepository } from '@db/repositories/user.repository'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; import { Flags } from '@oclif/core'; import { ApplicationError } from 'n8n-workflow'; import { ProjectRepository } from '@/databases/repositories/project.repository'; diff --git a/packages/cli/src/commands/license/clear.ts b/packages/cli/src/commands/license/clear.ts index 808784bdfd773..84394174712d2 100644 --- a/packages/cli/src/commands/license/clear.ts +++ b/packages/cli/src/commands/license/clear.ts @@ -1,8 +1,8 @@ import { Container } from 'typedi'; import { SETTINGS_LICENSE_CERT_KEY } from '@/constants'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; import { SettingsRepository } from '@db/repositories/settings.repository'; -import { License } from '@/License'; +import { License } from '@/license'; export class ClearLicenseCommand extends BaseCommand { static description = 'Clear license'; diff --git a/packages/cli/src/commands/license/info.ts b/packages/cli/src/commands/license/info.ts index a4e9e42cf27e4..6789b4ff41df6 100644 --- a/packages/cli/src/commands/license/info.ts +++ b/packages/cli/src/commands/license/info.ts @@ -1,6 +1,6 @@ import { Container } from 'typedi'; -import { License } from '@/License'; -import { BaseCommand } from '../BaseCommand'; +import { License } from '@/license'; +import { BaseCommand } from '../base-command'; export class LicenseInfoCommand extends BaseCommand { static description = 'Print license information'; diff --git a/packages/cli/src/commands/list/workflow.ts b/packages/cli/src/commands/list/workflow.ts index 2d33de19e3e4a..35fd073f3578c 100644 --- a/packages/cli/src/commands/list/workflow.ts +++ b/packages/cli/src/commands/list/workflow.ts @@ -1,7 +1,7 @@ import Container from 'typedi'; import { Flags } from '@oclif/core'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; export class ListWorkflowCommand extends BaseCommand { static description = '\nList workflows'; diff --git a/packages/cli/src/commands/mfa/disable.ts b/packages/cli/src/commands/mfa/disable.ts index dceb81b8b9adb..acc3439e3d240 100644 --- a/packages/cli/src/commands/mfa/disable.ts +++ b/packages/cli/src/commands/mfa/disable.ts @@ -1,7 +1,7 @@ import Container from 'typedi'; import { Flags } from '@oclif/core'; import { AuthUserRepository } from '@db/repositories/authUser.repository'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; export class DisableMFACommand extends BaseCommand { static description = 'Disable MFA authentication for a user'; diff --git a/packages/cli/src/commands/start.ts b/packages/cli/src/commands/start.ts index 16a227e52694a..96e3849860c1f 100644 --- a/packages/cli/src/commands/start.ts +++ b/packages/cli/src/commands/start.ts @@ -11,12 +11,12 @@ import glob from 'fast-glob'; import { jsonParse, randomString } from 'n8n-workflow'; import config from '@/config'; -import { ActiveExecutions } from '@/ActiveExecutions'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; -import { Server } from '@/Server'; +import { ActiveExecutions } from '@/active-executions'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; +import { Server } from '@/server'; import { EDITOR_UI_DIST_DIR, LICENSE_FEATURES } from '@/constants'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { License } from '@/License'; +import { License } from '@/license'; import { OrchestrationService } from '@/services/orchestration.service'; import { OrchestrationHandlerMainService } from '@/services/orchestration/main/orchestration.handler.main.service'; import { PruningService } from '@/services/pruning.service'; @@ -24,12 +24,12 @@ import { UrlService } from '@/services/url.service'; import { SettingsRepository } from '@db/repositories/settings.repository'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; -import { WaitTracker } from '@/WaitTracker'; -import { BaseCommand } from './BaseCommand'; +import { WaitTracker } from '@/wait-tracker'; +import { BaseCommand } from './base-command'; import type { IWorkflowExecutionDataProcess } from '@/Interfaces'; import { ExecutionService } from '@/executions/execution.service'; import { OwnershipService } from '@/services/ownership.service'; -import { WorkflowRunner } from '@/WorkflowRunner'; +import { WorkflowRunner } from '@/workflow-runner'; import { EventService } from '@/events/event.service'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires diff --git a/packages/cli/src/commands/update/workflow.ts b/packages/cli/src/commands/update/workflow.ts index f365db2d9814a..35a3ac016c602 100644 --- a/packages/cli/src/commands/update/workflow.ts +++ b/packages/cli/src/commands/update/workflow.ts @@ -1,7 +1,7 @@ import { Container } from 'typedi'; import { Flags } from '@oclif/core'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; export class UpdateWorkflowCommand extends BaseCommand { static description = 'Update workflows'; diff --git a/packages/cli/src/commands/user-management/reset.ts b/packages/cli/src/commands/user-management/reset.ts index 30f60af0a8887..992d367e134bb 100644 --- a/packages/cli/src/commands/user-management/reset.ts +++ b/packages/cli/src/commands/user-management/reset.ts @@ -6,7 +6,7 @@ import { SettingsRepository } from '@db/repositories/settings.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { UserRepository } from '@db/repositories/user.repository'; -import { BaseCommand } from '../BaseCommand'; +import { BaseCommand } from '../base-command'; import { ProjectRepository } from '@/databases/repositories/project.repository'; const defaultUserProps = { diff --git a/packages/cli/src/commands/webhook.ts b/packages/cli/src/commands/webhook.ts index d9c197c850385..36e898761c90c 100644 --- a/packages/cli/src/commands/webhook.ts +++ b/packages/cli/src/commands/webhook.ts @@ -3,9 +3,9 @@ import { Flags, type Config } from '@oclif/core'; import { ApplicationError } from 'n8n-workflow'; import config from '@/config'; -import { ActiveExecutions } from '@/ActiveExecutions'; -import { WebhookServer } from '@/webhooks/WebhookServer'; -import { BaseCommand } from './BaseCommand'; +import { ActiveExecutions } from '@/active-executions'; +import { WebhookServer } from '@/webhooks/webhook-server'; +import { BaseCommand } from './base-command'; import { OrchestrationWebhookService } from '@/services/orchestration/webhook/orchestration.webhook.service'; import { OrchestrationHandlerWebhookService } from '@/services/orchestration/webhook/orchestration.handler.webhook.service'; diff --git a/packages/cli/src/commands/worker.ts b/packages/cli/src/commands/worker.ts index 5e75e4792d30d..594b2f56683a5 100644 --- a/packages/cli/src/commands/worker.ts +++ b/packages/cli/src/commands/worker.ts @@ -5,12 +5,12 @@ import http from 'http'; import { ApplicationError } from 'n8n-workflow'; import * as Db from '@/Db'; -import * as ResponseHelper from '@/ResponseHelper'; +import * as ResponseHelper from '@/response-helper'; import config from '@/config'; import type { ScalingService } from '@/scaling/scaling.service'; import { N8N_VERSION, inTest } from '@/constants'; import type { ICredentialsOverwrite } from '@/Interfaces'; -import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialsOverwrites } from '@/credentials-overwrites'; import { rawBodyReader, bodyParser } from '@/middlewares'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; import type { RedisServicePubSubSubscriber } from '@/services/redis/RedisServicePubSubSubscriber'; @@ -18,7 +18,7 @@ import { EventMessageGeneric } from '@/eventbus/EventMessageClasses/EventMessage import { OrchestrationHandlerWorkerService } from '@/services/orchestration/worker/orchestration.handler.worker.service'; import { OrchestrationWorkerService } from '@/services/orchestration/worker/orchestration.worker.service'; import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; -import { BaseCommand } from './BaseCommand'; +import { BaseCommand } from './base-command'; import { JobProcessor } from '@/scaling/job-processor'; import { LogStreamingEventRelay } from '@/events/log-streaming-event-relay'; diff --git a/packages/cli/src/concurrency/__tests__/concurrency-control.service.test.ts b/packages/cli/src/concurrency/__tests__/concurrency-control.service.test.ts index 08f58ac600324..418ac9670994d 100644 --- a/packages/cli/src/concurrency/__tests__/concurrency-control.service.test.ts +++ b/packages/cli/src/concurrency/__tests__/concurrency-control.service.test.ts @@ -5,7 +5,7 @@ import { CLOUD_TEMP_REPORTABLE_THRESHOLDS, ConcurrencyControlService, } from '@/concurrency/concurrency-control.service'; -import type { Logger } from '@/Logger'; +import type { Logger } from '@/logger'; import { InvalidConcurrencyLimitError } from '@/errors/invalid-concurrency-limit.error'; import { ConcurrencyQueue } from '../concurrency-queue'; import type { WorkflowExecuteMode as ExecutionMode } from 'n8n-workflow'; diff --git a/packages/cli/src/concurrency/concurrency-control.service.ts b/packages/cli/src/concurrency/concurrency-control.service.ts index 6e62e9b78df54..b2b94a5d6ea01 100644 --- a/packages/cli/src/concurrency/concurrency-control.service.ts +++ b/packages/cli/src/concurrency/concurrency-control.service.ts @@ -1,4 +1,4 @@ -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import config from '@/config'; import { Service } from 'typedi'; import { ConcurrencyQueue } from './concurrency-queue'; diff --git a/packages/cli/src/controllers/__tests__/dynamic-node-parameters.controller.test.ts b/packages/cli/src/controllers/__tests__/dynamic-node-parameters.controller.test.ts index fe1313a4ec0a3..0a129eb821c41 100644 --- a/packages/cli/src/controllers/__tests__/dynamic-node-parameters.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/dynamic-node-parameters.controller.test.ts @@ -2,7 +2,7 @@ import { DynamicNodeParametersController } from '@/controllers/dynamicNodeParame import type { DynamicNodeParametersRequest } from '@/requests'; import type { DynamicNodeParametersService } from '@/services/dynamicNodeParameters.service'; import { mock } from 'jest-mock-extended'; -import * as AdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as AdditionalData from '@/workflow-execute-additional-data'; import type { ILoadOptions, IWorkflowExecuteAdditionalData } from 'n8n-workflow'; describe('DynamicNodeParametersController', () => { diff --git a/packages/cli/src/controllers/__tests__/me.controller.test.ts b/packages/cli/src/controllers/__tests__/me.controller.test.ts index 9363cefd0ab35..99f4714023342 100644 --- a/packages/cli/src/controllers/__tests__/me.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/me.controller.test.ts @@ -2,21 +2,23 @@ import type { Response } from 'express'; import { Container } from 'typedi'; import jwt from 'jsonwebtoken'; import { mock, anyObject } from 'jest-mock-extended'; + import type { PublicUser } from '@/Interfaces'; import type { User } from '@db/entities/User'; import { API_KEY_PREFIX, MeController } from '@/controllers/me.controller'; import { AUTH_COOKIE_NAME } from '@/constants'; import type { AuthenticatedRequest, MeRequest } from '@/requests'; import { UserService } from '@/services/user.service'; -import { ExternalHooks } from '@/ExternalHooks'; -import { License } from '@/License'; +import { ExternalHooks } from '@/external-hooks'; +import { License } from '@/license'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { UserRepository } from '@/databases/repositories/user.repository'; import { EventService } from '@/events/event.service'; import { badPasswords } from '@test/testData'; import { mockInstance } from '@test/mocking'; import { AuthUserRepository } from '@/databases/repositories/authUser.repository'; -import { MfaService } from '@/Mfa/mfa.service'; +import { InvalidAuthTokenRepository } from '@db/repositories/invalidAuthToken.repository'; +import { UserRepository } from '@db/repositories/user.repository'; +import { MfaService } from '@/mfa/mfa.service'; import { InvalidMfaCodeError } from '@/errors/response-errors/invalid-mfa-code.error'; const browserId = 'test-browser-id'; @@ -28,6 +30,7 @@ describe('MeController', () => { const userRepository = mockInstance(UserRepository); const mockMfaService = mockInstance(MfaService); mockInstance(AuthUserRepository); + mockInstance(InvalidAuthTokenRepository); mockInstance(License).isWithinUsersLimit.mockReturnValue(true); const controller = Container.get(MeController); diff --git a/packages/cli/src/controllers/__tests__/owner.controller.test.ts b/packages/cli/src/controllers/__tests__/owner.controller.test.ts index 8c4f00abeeab0..0170333e8a1fe 100644 --- a/packages/cli/src/controllers/__tests__/owner.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/owner.controller.test.ts @@ -10,7 +10,7 @@ import type { User } from '@db/entities/User'; import type { SettingsRepository } from '@db/repositories/settings.repository'; import type { UserRepository } from '@db/repositories/user.repository'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { License } from '@/License'; +import { License } from '@/license'; import type { OwnerRequest } from '@/requests'; import type { UserService } from '@/services/user.service'; import { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/src/controllers/__tests__/translation.controller.test.ts b/packages/cli/src/controllers/__tests__/translation.controller.test.ts index e34237cd69623..129a2f91a6b7b 100644 --- a/packages/cli/src/controllers/__tests__/translation.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/translation.controller.test.ts @@ -6,7 +6,7 @@ import { CREDENTIAL_TRANSLATIONS_DIR, } from '@/controllers/translation.controller'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import type { CredentialTypes } from '@/CredentialTypes'; +import type { CredentialTypes } from '@/credential-types'; describe('TranslationController', () => { const configGetSpy = jest.spyOn(config, 'getEnv'); diff --git a/packages/cli/src/controllers/auth.controller.ts b/packages/cli/src/controllers/auth.controller.ts index 99b5c523207a1..fe48530831fc5 100644 --- a/packages/cli/src/controllers/auth.controller.ts +++ b/packages/cli/src/controllers/auth.controller.ts @@ -1,9 +1,9 @@ import validator from 'validator'; +import { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; import { Get, Post, RestController } from '@/decorators'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { Request, Response } from 'express'; import type { User } from '@db/entities/User'; import { AuthenticatedRequest, LoginRequest, UserRequest } from '@/requests'; import type { PublicUser } from '@/Interfaces'; @@ -13,11 +13,11 @@ import { getCurrentAuthenticationMethod, isLdapCurrentAuthenticationMethod, isSamlCurrentAuthenticationMethod, -} from '@/sso/ssoHelpers'; -import { License } from '@/License'; +} from '@/sso/sso-helpers'; +import { License } from '@/license'; import { UserService } from '@/services/user.service'; -import { MfaService } from '@/Mfa/mfa.service'; -import { Logger } from '@/Logger'; +import { MfaService } from '@/mfa/mfa.service'; +import { Logger } from '@/logger'; import { AuthError } from '@/errors/response-errors/auth.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; @@ -185,7 +185,8 @@ export class AuthController { /** Log out a user */ @Post('/logout') - logout(_: Request, res: Response) { + async logout(req: AuthenticatedRequest, res: Response) { + await this.authService.invalidateToken(req); this.authService.clearCookie(res); return { loggedOut: true }; } diff --git a/packages/cli/src/controllers/debug.controller.ts b/packages/cli/src/controllers/debug.controller.ts index 663c3756119d6..3b340aad7e2a3 100644 --- a/packages/cli/src/controllers/debug.controller.ts +++ b/packages/cli/src/controllers/debug.controller.ts @@ -1,5 +1,5 @@ import { Get, RestController } from '@/decorators'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { OrchestrationService } from '@/services/orchestration.service'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; diff --git a/packages/cli/src/controllers/dynamicNodeParameters.controller.ts b/packages/cli/src/controllers/dynamicNodeParameters.controller.ts index bfd1cf651b875..cff338e437a77 100644 --- a/packages/cli/src/controllers/dynamicNodeParameters.controller.ts +++ b/packages/cli/src/controllers/dynamicNodeParameters.controller.ts @@ -1,7 +1,7 @@ import type { INodePropertyOptions, NodeParameterValueType } from 'n8n-workflow'; import { Post, RestController } from '@/decorators'; -import { getBase } from '@/WorkflowExecuteAdditionalData'; +import { getBase } from '@/workflow-execute-additional-data'; import { DynamicNodeParametersService } from '@/services/dynamicNodeParameters.service'; import { DynamicNodeParametersRequest } from '@/requests'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; diff --git a/packages/cli/src/controllers/e2e.controller.ts b/packages/cli/src/controllers/e2e.controller.ts index 2a93fe8edac16..6d8eb88fedeca 100644 --- a/packages/cli/src/controllers/e2e.controller.ts +++ b/packages/cli/src/controllers/e2e.controller.ts @@ -3,19 +3,19 @@ import { v4 as uuid } from 'uuid'; import config from '@/config'; import { SettingsRepository } from '@db/repositories/settings.repository'; import { UserRepository } from '@db/repositories/user.repository'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { License } from '@/License'; +import { License } from '@/license'; import { LICENSE_FEATURES, LICENSE_QUOTAS, UNLIMITED_LICENSE_QUOTA, inE2ETests } from '@/constants'; import { Patch, Post, RestController } from '@/decorators'; import type { UserSetupPayload } from '@/requests'; import type { BooleanLicenseFeature, IPushDataType, NumericLicenseFeature } from '@/Interfaces'; -import { MfaService } from '@/Mfa/mfa.service'; +import { MfaService } from '@/mfa/mfa.service'; import { Push } from '@/push'; import { CacheService } from '@/services/cache/cache.service'; import { PasswordUtility } from '@/services/password.utility'; import Container from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { AuthUserRepository } from '@/databases/repositories/authUser.repository'; if (!inE2ETests) { diff --git a/packages/cli/src/controllers/invitation.controller.ts b/packages/cli/src/controllers/invitation.controller.ts index 19bd803c5e6c0..624cc9b3f0910 100644 --- a/packages/cli/src/controllers/invitation.controller.ts +++ b/packages/cli/src/controllers/invitation.controller.ts @@ -6,17 +6,17 @@ import config from '@/config'; import { Post, GlobalScope, RestController } from '@/decorators'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; import { UserRequest } from '@/requests'; -import { License } from '@/License'; +import { License } from '@/license'; import { UserService } from '@/services/user.service'; -import { Logger } from '@/Logger'; -import { isSamlLicensedAndEnabled } from '@/sso/saml/samlHelpers'; +import { Logger } from '@/logger'; +import { isSamlLicensedAndEnabled } from '@/sso/saml/saml-helpers'; import { PasswordUtility } from '@/services/password.utility'; import { PostHogClient } from '@/posthog'; import type { User } from '@/databases/entities/User'; import { UserRepository } from '@db/repositories/user.repository'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { ExternalHooks } from '@/ExternalHooks'; +import { ExternalHooks } from '@/external-hooks'; import { EventService } from '@/events/event.service'; @RestController('/invitations') diff --git a/packages/cli/src/controllers/me.controller.ts b/packages/cli/src/controllers/me.controller.ts index f931feecef528..6cad9dcef5f7a 100644 --- a/packages/cli/src/controllers/me.controller.ts +++ b/packages/cli/src/controllers/me.controller.ts @@ -6,7 +6,7 @@ import { randomBytes } from 'crypto'; import { AuthService } from '@/auth/auth.service'; import { Delete, Get, Patch, Post, RestController } from '@/decorators'; import { PasswordUtility } from '@/services/password.utility'; -import { validateEntity } from '@/GenericHelpers'; +import { validateEntity } from '@/generic-helpers'; import type { User } from '@db/entities/User'; import { AuthenticatedRequest, @@ -15,15 +15,15 @@ import { UserUpdatePayload, } from '@/requests'; import type { PublicUser } from '@/Interfaces'; -import { isSamlLicensedAndEnabled } from '@/sso/saml/samlHelpers'; +import { isSamlLicensedAndEnabled } from '@/sso/saml/saml-helpers'; import { UserService } from '@/services/user.service'; -import { Logger } from '@/Logger'; -import { ExternalHooks } from '@/ExternalHooks'; +import { Logger } from '@/logger'; +import { ExternalHooks } from '@/external-hooks'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { UserRepository } from '@/databases/repositories/user.repository'; import { isApiEnabled } from '@/PublicApi'; import { EventService } from '@/events/event.service'; -import { MfaService } from '@/Mfa/mfa.service'; +import { MfaService } from '@/mfa/mfa.service'; import { InvalidMfaCodeError } from '@/errors/response-errors/invalid-mfa-code.error'; import { PersonalizationSurveyAnswersV4 } from './survey-answers.dto'; diff --git a/packages/cli/src/controllers/mfa.controller.ts b/packages/cli/src/controllers/mfa.controller.ts index 6c228df47e90e..3d10736a1ac3e 100644 --- a/packages/cli/src/controllers/mfa.controller.ts +++ b/packages/cli/src/controllers/mfa.controller.ts @@ -1,6 +1,6 @@ import { Get, Post, RestController } from '@/decorators'; import { AuthenticatedRequest, MFA } from '@/requests'; -import { MfaService } from '@/Mfa/mfa.service'; +import { MfaService } from '@/mfa/mfa.service'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; @RestController('/mfa') diff --git a/packages/cli/src/controllers/nodeTypes.controller.ts b/packages/cli/src/controllers/nodeTypes.controller.ts index fddefb7e10d12..122b9f1fbdbdc 100644 --- a/packages/cli/src/controllers/nodeTypes.controller.ts +++ b/packages/cli/src/controllers/nodeTypes.controller.ts @@ -4,7 +4,7 @@ import { Request } from 'express'; import type { INodeTypeDescription, INodeTypeNameVersion } from 'n8n-workflow'; import { Post, RestController } from '@/decorators'; import config from '@/config'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; @RestController('/node-types') export class NodeTypesController { diff --git a/packages/cli/src/controllers/oauth/__tests__/oAuth1Credential.controller.test.ts b/packages/cli/src/controllers/oauth/__tests__/oAuth1Credential.controller.test.ts index fae443b4ce9a2..d0031186f78c6 100644 --- a/packages/cli/src/controllers/oauth/__tests__/oAuth1Credential.controller.test.ts +++ b/packages/cli/src/controllers/oauth/__tests__/oAuth1Credential.controller.test.ts @@ -11,11 +11,11 @@ import type { User } from '@db/entities/User'; import type { OAuthRequest } from '@/requests'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; -import { ExternalHooks } from '@/ExternalHooks'; -import { Logger } from '@/Logger'; +import { ExternalHooks } from '@/external-hooks'; +import { Logger } from '@/logger'; import { VariablesService } from '@/environments/variables/variables.service.ee'; -import { SecretsHelper } from '@/SecretsHelpers'; -import { CredentialsHelper } from '@/CredentialsHelper'; +import { SecretsHelper } from '@/secrets-helpers'; +import { CredentialsHelper } from '@/credentials-helper'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; diff --git a/packages/cli/src/controllers/oauth/__tests__/oAuth2Credential.controller.test.ts b/packages/cli/src/controllers/oauth/__tests__/oAuth2Credential.controller.test.ts index f354a1ec024e7..c81a0c1559d35 100644 --- a/packages/cli/src/controllers/oauth/__tests__/oAuth2Credential.controller.test.ts +++ b/packages/cli/src/controllers/oauth/__tests__/oAuth2Credential.controller.test.ts @@ -11,11 +11,11 @@ import type { User } from '@db/entities/User'; import type { OAuthRequest } from '@/requests'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; -import { ExternalHooks } from '@/ExternalHooks'; -import { Logger } from '@/Logger'; +import { ExternalHooks } from '@/external-hooks'; +import { Logger } from '@/logger'; import { VariablesService } from '@/environments/variables/variables.service.ee'; -import { SecretsHelper } from '@/SecretsHelpers'; -import { CredentialsHelper } from '@/CredentialsHelper'; +import { SecretsHelper } from '@/secrets-helpers'; +import { CredentialsHelper } from '@/credentials-helper'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; diff --git a/packages/cli/src/controllers/oauth/abstractOAuth.controller.ts b/packages/cli/src/controllers/oauth/abstractOAuth.controller.ts index b9f0d64446ad5..0d14b222d4d7d 100644 --- a/packages/cli/src/controllers/oauth/abstractOAuth.controller.ts +++ b/packages/cli/src/controllers/oauth/abstractOAuth.controller.ts @@ -11,10 +11,10 @@ import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials. import type { ICredentialsDb } from '@/Interfaces'; import type { OAuthRequest } from '@/requests'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { CredentialsHelper } from '@/CredentialsHelper'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; -import { Logger } from '@/Logger'; -import { ExternalHooks } from '@/ExternalHooks'; +import { CredentialsHelper } from '@/credentials-helper'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; +import { Logger } from '@/logger'; +import { ExternalHooks } from '@/external-hooks'; import { UrlService } from '@/services/url.service'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; diff --git a/packages/cli/src/controllers/oauth/oAuth1Credential.controller.ts b/packages/cli/src/controllers/oauth/oAuth1Credential.controller.ts index 2a50b00bf9d57..21bbe83f999e4 100644 --- a/packages/cli/src/controllers/oauth/oAuth1Credential.controller.ts +++ b/packages/cli/src/controllers/oauth/oAuth1Credential.controller.ts @@ -6,7 +6,7 @@ import clientOAuth1 from 'oauth-1.0a'; import { createHmac } from 'crypto'; import { Get, RestController } from '@/decorators'; import { OAuthRequest } from '@/requests'; -import { sendErrorResponse } from '@/ResponseHelper'; +import { sendErrorResponse } from '@/response-helper'; import { AbstractOAuthController, type CsrfStateParam } from './abstractOAuth.controller'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; diff --git a/packages/cli/src/controllers/orchestration.controller.ts b/packages/cli/src/controllers/orchestration.controller.ts index 74a9665e1e2d3..852d6f7cc3f27 100644 --- a/packages/cli/src/controllers/orchestration.controller.ts +++ b/packages/cli/src/controllers/orchestration.controller.ts @@ -1,7 +1,7 @@ import { Post, RestController, GlobalScope } from '@/decorators'; import { OrchestrationRequest } from '@/requests'; import { OrchestrationService } from '@/services/orchestration.service'; -import { License } from '@/License'; +import { License } from '@/license'; @RestController('/orchestration') export class OrchestrationController { diff --git a/packages/cli/src/controllers/owner.controller.ts b/packages/cli/src/controllers/owner.controller.ts index c0c2e7308d311..826bbc2fa7c4e 100644 --- a/packages/cli/src/controllers/owner.controller.ts +++ b/packages/cli/src/controllers/owner.controller.ts @@ -3,7 +3,7 @@ import { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; import config from '@/config'; -import { validateEntity } from '@/GenericHelpers'; +import { validateEntity } from '@/generic-helpers'; import { GlobalScope, Post, RestController } from '@/decorators'; import { PasswordUtility } from '@/services/password.utility'; import { OwnerRequest } from '@/requests'; @@ -11,7 +11,7 @@ import { SettingsRepository } from '@db/repositories/settings.repository'; import { UserRepository } from '@db/repositories/user.repository'; import { PostHogClient } from '@/posthog'; import { UserService } from '@/services/user.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/controllers/passwordReset.controller.ts b/packages/cli/src/controllers/passwordReset.controller.ts index 0cfe7cac19e12..3f93ee08e9e09 100644 --- a/packages/cli/src/controllers/passwordReset.controller.ts +++ b/packages/cli/src/controllers/passwordReset.controller.ts @@ -4,15 +4,15 @@ import validator from 'validator'; import { AuthService } from '@/auth/auth.service'; import { Get, Post, RestController } from '@/decorators'; import { PasswordUtility } from '@/services/password.utility'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { UserManagementMailer } from '@/user-management/email'; import { PasswordResetRequest } from '@/requests'; -import { isSamlCurrentAuthenticationMethod } from '@/sso/ssoHelpers'; +import { isSamlCurrentAuthenticationMethod } from '@/sso/sso-helpers'; import { UserService } from '@/services/user.service'; -import { License } from '@/License'; +import { License } from '@/license'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { MfaService } from '@/Mfa/mfa.service'; -import { Logger } from '@/Logger'; -import { ExternalHooks } from '@/ExternalHooks'; +import { MfaService } from '@/mfa/mfa.service'; +import { Logger } from '@/logger'; +import { ExternalHooks } from '@/external-hooks'; import { UrlService } from '@/services/url.service'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; diff --git a/packages/cli/src/controllers/translation.controller.ts b/packages/cli/src/controllers/translation.controller.ts index f359ec2b3a540..03a8c3b035763 100644 --- a/packages/cli/src/controllers/translation.controller.ts +++ b/packages/cli/src/controllers/translation.controller.ts @@ -6,7 +6,7 @@ import config from '@/config'; import { NODES_BASE_DIR } from '@/constants'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { CredentialTypes } from '@/CredentialTypes'; +import { CredentialTypes } from '@/credential-types'; export const CREDENTIAL_TRANSLATIONS_DIR = 'n8n-nodes-base/dist/credentials/translations'; export const NODE_HEADERS_PATH = join(NODES_BASE_DIR, 'dist/nodes/headers'); diff --git a/packages/cli/src/controllers/users.controller.ts b/packages/cli/src/controllers/users.controller.ts index f3055ee4dc179..43916903fe29f 100644 --- a/packages/cli/src/controllers/users.controller.ts +++ b/packages/cli/src/controllers/users.controller.ts @@ -16,12 +16,12 @@ import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.reposi import { UserRepository } from '@db/repositories/user.repository'; import { UserService } from '@/services/user.service'; import { listQueryMiddleware } from '@/middlewares'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ExternalHooks } from '@/ExternalHooks'; -import { validateEntity } from '@/GenericHelpers'; +import { ExternalHooks } from '@/external-hooks'; +import { validateEntity } from '@/generic-helpers'; import { ProjectRepository } from '@/databases/repositories/project.repository'; import { Project } from '@/databases/entities/Project'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/controllers/workflowStatistics.controller.ts b/packages/cli/src/controllers/workflowStatistics.controller.ts index 0c8678612986a..2cae52e8ccee8 100644 --- a/packages/cli/src/controllers/workflowStatistics.controller.ts +++ b/packages/cli/src/controllers/workflowStatistics.controller.ts @@ -5,7 +5,7 @@ import { StatisticsNames } from '@db/entities/WorkflowStatistics'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { WorkflowStatisticsRepository } from '@db/repositories/workflowStatistics.repository'; import type { IWorkflowStatisticsDataLoaded } from '@/Interfaces'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { StatisticsRequest } from './workflow-statistics.types'; diff --git a/packages/cli/src/CrashJournal.ts b/packages/cli/src/crash-journal.ts similarity index 96% rename from packages/cli/src/CrashJournal.ts rename to packages/cli/src/crash-journal.ts index ab13f2cb121f5..dcba654a3d8a8 100644 --- a/packages/cli/src/CrashJournal.ts +++ b/packages/cli/src/crash-journal.ts @@ -5,7 +5,7 @@ import { Container } from 'typedi'; import { InstanceSettings } from 'n8n-core'; import { sleep } from 'n8n-workflow'; import { inProduction } from '@/constants'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; export const touchFile = async (filePath: string): Promise => { await mkdir(dirname(filePath), { recursive: true }); diff --git a/packages/cli/src/CredentialTypes.ts b/packages/cli/src/credential-types.ts similarity index 96% rename from packages/cli/src/CredentialTypes.ts rename to packages/cli/src/credential-types.ts index d97825a67223d..8d665c75923c2 100644 --- a/packages/cli/src/CredentialTypes.ts +++ b/packages/cli/src/credential-types.ts @@ -7,7 +7,7 @@ import { type LoadedClass, } from 'n8n-workflow'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; @Service() export class CredentialTypes implements ICredentialTypes { diff --git a/packages/cli/src/CredentialsHelper.ts b/packages/cli/src/credentials-helper.ts similarity index 99% rename from packages/cli/src/CredentialsHelper.ts rename to packages/cli/src/credentials-helper.ts index 43ccf970e09af..aa0491955ca01 100644 --- a/packages/cli/src/CredentialsHelper.ts +++ b/packages/cli/src/credentials-helper.ts @@ -30,8 +30,8 @@ import { ICredentialsHelper, NodeHelpers, Workflow, ApplicationError } from 'n8n import type { ICredentialsDb } from '@/Interfaces'; import type { CredentialsEntity } from '@db/entities/CredentialsEntity'; -import { CredentialTypes } from '@/CredentialTypes'; -import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/credential-types'; +import { CredentialsOverwrites } from '@/credentials-overwrites'; import { RESPONSE_ERROR_MESSAGES } from './constants'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; diff --git a/packages/cli/src/CredentialsOverwrites.ts b/packages/cli/src/credentials-overwrites.ts similarity index 97% rename from packages/cli/src/CredentialsOverwrites.ts rename to packages/cli/src/credentials-overwrites.ts index b80a31d9ce26c..b8df1a848c30e 100644 --- a/packages/cli/src/CredentialsOverwrites.ts +++ b/packages/cli/src/credentials-overwrites.ts @@ -3,8 +3,8 @@ import { GlobalConfig } from '@n8n/config'; import type { ICredentialDataDecryptedObject } from 'n8n-workflow'; import { deepCopy, jsonParse } from 'n8n-workflow'; import type { ICredentialsOverwrite } from '@/Interfaces'; -import { CredentialTypes } from '@/CredentialTypes'; -import { Logger } from '@/Logger'; +import { CredentialTypes } from '@/credential-types'; +import { Logger } from '@/logger'; @Service() export class CredentialsOverwrites { diff --git a/packages/cli/src/credentials/__tests__/credentials.service.test.ts b/packages/cli/src/credentials/__tests__/credentials.service.test.ts index a5fa3ca183cb7..8a5ce77e150af 100644 --- a/packages/cli/src/credentials/__tests__/credentials.service.test.ts +++ b/packages/cli/src/credentials/__tests__/credentials.service.test.ts @@ -2,7 +2,7 @@ import { CREDENTIAL_EMPTY_VALUE, type ICredentialType } from 'n8n-workflow'; import { mock } from 'jest-mock-extended'; import { CREDENTIAL_BLANKING_VALUE } from '@/constants'; import type { CredentialsEntity } from '@db/entities/CredentialsEntity'; -import type { CredentialTypes } from '@/CredentialTypes'; +import type { CredentialTypes } from '@/credential-types'; import { CredentialsService } from '@/credentials/credentials.service'; describe('CredentialsService', () => { diff --git a/packages/cli/src/credentials/credentials.controller.ts b/packages/cli/src/credentials/credentials.controller.ts index ba965a1adde64..b8dacf445f1ca 100644 --- a/packages/cli/src/credentials/credentials.controller.ts +++ b/packages/cli/src/credentials/credentials.controller.ts @@ -5,11 +5,11 @@ import { In } from '@n8n/typeorm'; import { CredentialsService } from './credentials.service'; import { CredentialRequest } from '@/requests'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { NamingService } from '@/services/naming.service'; -import { License } from '@/License'; +import { License } from '@/license'; import { EnterpriseCredentialsService } from './credentials.service.ee'; import { Delete, @@ -22,7 +22,7 @@ import { ProjectScope, } from '@/decorators'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { UserManagementMailer } from '@/user-management/email'; import * as Db from '@/Db'; import * as utils from '@/utils'; import { listQueryMiddleware } from '@/middlewares'; diff --git a/packages/cli/src/credentials/credentials.service.ts b/packages/cli/src/credentials/credentials.service.ts index 03ea13efe1a3e..e5d1a53252f81 100644 --- a/packages/cli/src/credentials/credentials.service.ts +++ b/packages/cli/src/credentials/credentials.service.ts @@ -16,17 +16,17 @@ import { import type { Scope } from '@n8n/permissions'; import * as Db from '@/Db'; import type { ICredentialsDb } from '@/Interfaces'; -import { createCredentialsFromCredentialsEntity } from '@/CredentialsHelper'; +import { createCredentialsFromCredentialsEntity } from '@/credentials-helper'; import { CREDENTIAL_BLANKING_VALUE } from '@/constants'; import { CredentialsEntity } from '@db/entities/CredentialsEntity'; import { SharedCredentials } from '@db/entities/SharedCredentials'; -import { validateEntity } from '@/GenericHelpers'; -import { ExternalHooks } from '@/ExternalHooks'; +import { validateEntity } from '@/generic-helpers'; +import { ExternalHooks } from '@/external-hooks'; import type { User } from '@db/entities/User'; import type { CredentialRequest, ListQuery } from '@/requests'; -import { CredentialTypes } from '@/CredentialTypes'; +import { CredentialTypes } from '@/credential-types'; import { OwnershipService } from '@/services/ownership.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; import { Service } from 'typedi'; @@ -38,7 +38,7 @@ import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { ProjectRelation } from '@/databases/entities/ProjectRelation'; import { RoleService } from '@/services/role.service'; import { UserRepository } from '@/databases/repositories/user.repository'; -import { userHasScope } from '@/permissions/checkAccess'; +import { userHasScope } from '@/permissions/check-access'; export type CredentialsGetSharedOptions = | { allowGlobalScope: true; globalScope: Scope } diff --git a/packages/cli/src/databases/entities/InvalidAuthToken.ts b/packages/cli/src/databases/entities/InvalidAuthToken.ts new file mode 100644 index 0000000000000..e21860d146f9f --- /dev/null +++ b/packages/cli/src/databases/entities/InvalidAuthToken.ts @@ -0,0 +1,11 @@ +import { Column, Entity, PrimaryColumn } from '@n8n/typeorm'; +import { datetimeColumnType } from './AbstractEntity'; + +@Entity() +export class InvalidAuthToken { + @PrimaryColumn() + token: string; + + @Column(datetimeColumnType) + expiresAt: Date; +} diff --git a/packages/cli/src/databases/entities/index.ts b/packages/cli/src/databases/entities/index.ts index db8b113baf394..bd7d18748651c 100644 --- a/packages/cli/src/databases/entities/index.ts +++ b/packages/cli/src/databases/entities/index.ts @@ -21,6 +21,7 @@ import { ExecutionData } from './ExecutionData'; import { WorkflowHistory } from './WorkflowHistory'; import { Project } from './Project'; import { ProjectRelation } from './ProjectRelation'; +import { InvalidAuthToken } from './InvalidAuthToken'; export const entities = { AuthIdentity, @@ -31,6 +32,7 @@ export const entities = { ExecutionEntity, InstalledNodes, InstalledPackages, + InvalidAuthToken, Settings, SharedCredentials, SharedWorkflow, diff --git a/packages/cli/src/databases/migrations/common/1674509946020-CreateLdapEntities.ts b/packages/cli/src/databases/migrations/common/1674509946020-CreateLdapEntities.ts index 2115cbeffd856..1d915a5576e6f 100644 --- a/packages/cli/src/databases/migrations/common/1674509946020-CreateLdapEntities.ts +++ b/packages/cli/src/databases/migrations/common/1674509946020-CreateLdapEntities.ts @@ -1,5 +1,5 @@ import type { MigrationContext, ReversibleMigration } from '@db/types'; -import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/Ldap/constants'; +import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/ldap/constants'; export class CreateLdapEntities1674509946020 implements ReversibleMigration { async up({ escape, dbType, isMysql, runQuery }: MigrationContext) { diff --git a/packages/cli/src/databases/migrations/common/1723627610222-CreateInvalidAuthTokenTable.ts b/packages/cli/src/databases/migrations/common/1723627610222-CreateInvalidAuthTokenTable.ts new file mode 100644 index 0000000000000..f28696c199088 --- /dev/null +++ b/packages/cli/src/databases/migrations/common/1723627610222-CreateInvalidAuthTokenTable.ts @@ -0,0 +1,16 @@ +import type { MigrationContext, ReversibleMigration } from '@db/types'; + +const tableName = 'invalid_auth_token'; + +export class CreateInvalidAuthTokenTable1723627610222 implements ReversibleMigration { + async up({ schemaBuilder: { createTable, column } }: MigrationContext) { + await createTable(tableName).withColumns( + column('token').varchar(512).primary, + column('expiresAt').timestamp().notNull, + ); + } + + async down({ schemaBuilder: { dropTable } }: MigrationContext) { + await dropTable(tableName); + } +} diff --git a/packages/cli/src/databases/migrations/mysqldb/index.ts b/packages/cli/src/databases/migrations/mysqldb/index.ts index ecd5f66a7c257..b4900eb59d04e 100644 --- a/packages/cli/src/databases/migrations/mysqldb/index.ts +++ b/packages/cli/src/databases/migrations/mysqldb/index.ts @@ -59,6 +59,7 @@ import { RemoveNodesAccess1712044305787 } from '../common/1712044305787-RemoveNo import { MakeExecutionStatusNonNullable1714133768521 } from '../common/1714133768521-MakeExecutionStatusNonNullable'; import { AddActivatedAtUserSetting1717498465931 } from './1717498465931-AddActivatedAtUserSetting'; import { AddConstraintToExecutionMetadata1720101653148 } from '../common/1720101653148-AddConstraintToExecutionMetadata'; +import { CreateInvalidAuthTokenTable1723627610222 } from '../common/1723627610222-CreateInvalidAuthTokenTable'; export const mysqlMigrations: Migration[] = [ InitialMigration1588157391238, @@ -121,4 +122,5 @@ export const mysqlMigrations: Migration[] = [ MakeExecutionStatusNonNullable1714133768521, AddActivatedAtUserSetting1717498465931, AddConstraintToExecutionMetadata1720101653148, + CreateInvalidAuthTokenTable1723627610222, ]; diff --git a/packages/cli/src/databases/migrations/postgresdb/index.ts b/packages/cli/src/databases/migrations/postgresdb/index.ts index 720c79a8e35d9..85bd58f37163e 100644 --- a/packages/cli/src/databases/migrations/postgresdb/index.ts +++ b/packages/cli/src/databases/migrations/postgresdb/index.ts @@ -59,6 +59,7 @@ import { MakeExecutionStatusNonNullable1714133768521 } from '../common/171413376 import { AddActivatedAtUserSetting1717498465931 } from './1717498465931-AddActivatedAtUserSetting'; import { AddConstraintToExecutionMetadata1720101653148 } from '../common/1720101653148-AddConstraintToExecutionMetadata'; import { FixExecutionMetadataSequence1721377157740 } from './1721377157740-FixExecutionMetadataSequence'; +import { CreateInvalidAuthTokenTable1723627610222 } from '../common/1723627610222-CreateInvalidAuthTokenTable'; export const postgresMigrations: Migration[] = [ InitialMigration1587669153312, @@ -121,4 +122,5 @@ export const postgresMigrations: Migration[] = [ AddActivatedAtUserSetting1717498465931, AddConstraintToExecutionMetadata1720101653148, FixExecutionMetadataSequence1721377157740, + CreateInvalidAuthTokenTable1723627610222, ]; diff --git a/packages/cli/src/databases/migrations/sqlite/index.ts b/packages/cli/src/databases/migrations/sqlite/index.ts index 15000a78e0458..974c743d0fb48 100644 --- a/packages/cli/src/databases/migrations/sqlite/index.ts +++ b/packages/cli/src/databases/migrations/sqlite/index.ts @@ -56,6 +56,7 @@ import { RemoveNodesAccess1712044305787 } from '../common/1712044305787-RemoveNo import { MakeExecutionStatusNonNullable1714133768521 } from '../common/1714133768521-MakeExecutionStatusNonNullable'; import { AddActivatedAtUserSetting1717498465931 } from './1717498465931-AddActivatedAtUserSetting'; import { AddConstraintToExecutionMetadata1720101653148 } from '../common/1720101653148-AddConstraintToExecutionMetadata'; +import { CreateInvalidAuthTokenTable1723627610222 } from '../common/1723627610222-CreateInvalidAuthTokenTable'; const sqliteMigrations: Migration[] = [ InitialMigration1588102412422, @@ -115,6 +116,7 @@ const sqliteMigrations: Migration[] = [ MakeExecutionStatusNonNullable1714133768521, AddActivatedAtUserSetting1717498465931, AddConstraintToExecutionMetadata1720101653148, + CreateInvalidAuthTokenTable1723627610222, ]; export { sqliteMigrations }; diff --git a/packages/cli/src/databases/repositories/execution.repository.ts b/packages/cli/src/databases/repositories/execution.repository.ts index 5b4e515af6da3..364619fab6dad 100644 --- a/packages/cli/src/databases/repositories/execution.repository.ts +++ b/packages/cli/src/databases/repositories/execution.repository.ts @@ -42,7 +42,7 @@ import type { ExecutionData } from '../entities/ExecutionData'; import { ExecutionEntity } from '../entities/ExecutionEntity'; import { ExecutionMetadata } from '../entities/ExecutionMetadata'; import { ExecutionDataRepository } from './executionData.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { ExecutionSummaries } from '@/executions/execution.types'; import { PostgresLiveRowsRetrievalError } from '@/errors/postgres-live-rows-retrieval.error'; import { separate } from '@/utils'; diff --git a/packages/cli/src/databases/repositories/invalidAuthToken.repository.ts b/packages/cli/src/databases/repositories/invalidAuthToken.repository.ts new file mode 100644 index 0000000000000..c6340ba88ae8a --- /dev/null +++ b/packages/cli/src/databases/repositories/invalidAuthToken.repository.ts @@ -0,0 +1,10 @@ +import { Service } from 'typedi'; +import { DataSource, Repository } from '@n8n/typeorm'; +import { InvalidAuthToken } from '../entities/InvalidAuthToken'; + +@Service() +export class InvalidAuthTokenRepository extends Repository { + constructor(dataSource: DataSource) { + super(InvalidAuthToken, dataSource.manager); + } +} diff --git a/packages/cli/src/databases/repositories/settings.repository.ts b/packages/cli/src/databases/repositories/settings.repository.ts index 94cb32305a45e..6a745a8a7079d 100644 --- a/packages/cli/src/databases/repositories/settings.repository.ts +++ b/packages/cli/src/databases/repositories/settings.repository.ts @@ -1,4 +1,4 @@ -import { EXTERNAL_SECRETS_DB_KEY } from '@/ExternalSecrets/constants'; +import { EXTERNAL_SECRETS_DB_KEY } from '@/external-secrets/constants'; import { Service } from 'typedi'; import { DataSource, Repository } from '@n8n/typeorm'; import { ErrorReporterProxy as ErrorReporter } from 'n8n-workflow'; diff --git a/packages/cli/src/databases/subscribers/UserSubscriber.ts b/packages/cli/src/databases/subscribers/UserSubscriber.ts index b925965a0c912..52ef95871e930 100644 --- a/packages/cli/src/databases/subscribers/UserSubscriber.ts +++ b/packages/cli/src/databases/subscribers/UserSubscriber.ts @@ -2,7 +2,7 @@ import { Container } from 'typedi'; import type { EntitySubscriberInterface, UpdateEvent } from '@n8n/typeorm'; import { EventSubscriber } from '@n8n/typeorm'; import { ApplicationError, ErrorReporterProxy } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { Project } from '../entities/Project'; import { User } from '../entities/User'; diff --git a/packages/cli/src/databases/types.ts b/packages/cli/src/databases/types.ts index e1dc8f20e9b2d..f4c3db045235f 100644 --- a/packages/cli/src/databases/types.ts +++ b/packages/cli/src/databases/types.ts @@ -1,6 +1,6 @@ import type { INodeTypes } from 'n8n-workflow'; import type { QueryRunner, ObjectLiteral } from '@n8n/typeorm'; -import type { Logger } from '@/Logger'; +import type { Logger } from '@/logger'; import type { createSchemaBuilder } from './dsl'; export type DatabaseType = 'mariadb' | 'postgresdb' | 'mysqldb' | 'sqlite'; diff --git a/packages/cli/src/databases/utils/migrationHelpers.ts b/packages/cli/src/databases/utils/migrationHelpers.ts index b3187c44e5a87..0f116590eed1f 100644 --- a/packages/cli/src/databases/utils/migrationHelpers.ts +++ b/packages/cli/src/databases/utils/migrationHelpers.ts @@ -9,8 +9,8 @@ import { ApplicationError, jsonParse } from 'n8n-workflow'; import { inTest } from '@/constants'; import type { BaseMigration, Migration, MigrationContext, MigrationFn } from '@db/types'; import { createSchemaBuilder } from '@db/dsl'; -import { NodeTypes } from '@/NodeTypes'; -import { Logger } from '@/Logger'; +import { NodeTypes } from '@/node-types'; +import { Logger } from '@/logger'; const PERSONALIZATION_SURVEY_FILENAME = 'personalizationSurvey.json'; diff --git a/packages/cli/src/decorators/__tests__/controller.registry.test.ts b/packages/cli/src/decorators/__tests__/controller.registry.test.ts index 05a97aab5378e..3a0f0b91d2d51 100644 --- a/packages/cli/src/decorators/__tests__/controller.registry.test.ts +++ b/packages/cli/src/decorators/__tests__/controller.registry.test.ts @@ -8,7 +8,7 @@ import { mock } from 'jest-mock-extended'; import { ControllerRegistry, Get, Licensed, RestController } from '@/decorators'; import type { AuthService } from '@/auth/auth.service'; -import type { License } from '@/License'; +import type { License } from '@/license'; import type { SuperAgentTest } from '@test-integration/types'; import type { GlobalConfig } from '@n8n/config'; diff --git a/packages/cli/src/decorators/__tests__/OnShutdown.test.ts b/packages/cli/src/decorators/__tests__/on-shutdown.test.ts similarity index 95% rename from packages/cli/src/decorators/__tests__/OnShutdown.test.ts rename to packages/cli/src/decorators/__tests__/on-shutdown.test.ts index 833915f4cb49d..f8d11140cfb52 100644 --- a/packages/cli/src/decorators/__tests__/OnShutdown.test.ts +++ b/packages/cli/src/decorators/__tests__/on-shutdown.test.ts @@ -1,6 +1,6 @@ import Container, { Service } from 'typedi'; -import { OnShutdown } from '@/decorators/OnShutdown'; -import { ShutdownService } from '@/shutdown/Shutdown.service'; +import { OnShutdown } from '@/decorators/on-shutdown'; +import { ShutdownService } from '@/shutdown/shutdown.service'; import { mock } from 'jest-mock-extended'; describe('OnShutdown', () => { diff --git a/packages/cli/src/decorators/controller.registry.ts b/packages/cli/src/decorators/controller.registry.ts index 4173f9309ef3c..6ab4e9191d50a 100644 --- a/packages/cli/src/decorators/controller.registry.ts +++ b/packages/cli/src/decorators/controller.registry.ts @@ -7,10 +7,10 @@ import { AuthService } from '@/auth/auth.service'; import { UnauthenticatedError } from '@/errors/response-errors/unauthenticated.error'; import { inProduction, RESPONSE_ERROR_MESSAGES } from '@/constants'; import type { BooleanLicenseFeature } from '@/Interfaces'; -import { License } from '@/License'; +import { License } from '@/license'; import type { AuthenticatedRequest } from '@/requests'; -import { send } from '@/ResponseHelper'; // TODO: move `ResponseHelper.send` to this file -import { userHasScope } from '@/permissions/checkAccess'; +import { send } from '@/response-helper'; // TODO: move `ResponseHelper.send` to this file +import { userHasScope } from '@/permissions/check-access'; import { GlobalConfig } from '@n8n/config'; import type { AccessScope, diff --git a/packages/cli/src/decorators/index.ts b/packages/cli/src/decorators/index.ts index 61edd6d9d985d..5ef6c15f52a04 100644 --- a/packages/cli/src/decorators/index.ts +++ b/packages/cli/src/decorators/index.ts @@ -1,6 +1,6 @@ -export { RestController } from './RestController'; -export { Get, Post, Put, Patch, Delete } from './Route'; -export { Middleware } from './Middleware'; +export { RestController } from './rest-controller'; +export { Get, Post, Put, Patch, Delete } from './route'; +export { Middleware } from './middleware'; export { ControllerRegistry } from './controller.registry'; -export { Licensed } from './Licensed'; -export { GlobalScope, ProjectScope } from './Scoped'; +export { Licensed } from './licensed'; +export { GlobalScope, ProjectScope } from './scoped'; diff --git a/packages/cli/src/decorators/Licensed.ts b/packages/cli/src/decorators/licensed.ts similarity index 100% rename from packages/cli/src/decorators/Licensed.ts rename to packages/cli/src/decorators/licensed.ts diff --git a/packages/cli/src/decorators/Middleware.ts b/packages/cli/src/decorators/middleware.ts similarity index 100% rename from packages/cli/src/decorators/Middleware.ts rename to packages/cli/src/decorators/middleware.ts diff --git a/packages/cli/src/decorators/OnShutdown.ts b/packages/cli/src/decorators/on-shutdown.ts similarity index 95% rename from packages/cli/src/decorators/OnShutdown.ts rename to packages/cli/src/decorators/on-shutdown.ts index 68b3cbb4caeef..ec2d955fe6fa4 100644 --- a/packages/cli/src/decorators/OnShutdown.ts +++ b/packages/cli/src/decorators/on-shutdown.ts @@ -1,6 +1,6 @@ import { Container } from 'typedi'; import { ApplicationError } from 'n8n-workflow'; -import { type ServiceClass, ShutdownService } from '@/shutdown/Shutdown.service'; +import { type ServiceClass, ShutdownService } from '@/shutdown/shutdown.service'; import { DEFAULT_SHUTDOWN_PRIORITY } from '@/constants'; /** diff --git a/packages/cli/src/decorators/Redactable.ts b/packages/cli/src/decorators/redactable.ts similarity index 100% rename from packages/cli/src/decorators/Redactable.ts rename to packages/cli/src/decorators/redactable.ts diff --git a/packages/cli/src/decorators/RestController.ts b/packages/cli/src/decorators/rest-controller.ts similarity index 100% rename from packages/cli/src/decorators/RestController.ts rename to packages/cli/src/decorators/rest-controller.ts diff --git a/packages/cli/src/decorators/Route.ts b/packages/cli/src/decorators/route.ts similarity index 100% rename from packages/cli/src/decorators/Route.ts rename to packages/cli/src/decorators/route.ts diff --git a/packages/cli/src/decorators/Scoped.ts b/packages/cli/src/decorators/scoped.ts similarity index 100% rename from packages/cli/src/decorators/Scoped.ts rename to packages/cli/src/decorators/scoped.ts diff --git a/packages/cli/src/environments/sourceControl/__tests__/sourceControlHelper.ee.test.ts b/packages/cli/src/environments/sourceControl/__tests__/sourceControlHelper.ee.test.ts index 5141d36f2f7dd..8b81bec7b2fde 100644 --- a/packages/cli/src/environments/sourceControl/__tests__/sourceControlHelper.ee.test.ts +++ b/packages/cli/src/environments/sourceControl/__tests__/sourceControlHelper.ee.test.ts @@ -7,7 +7,7 @@ import { getTrackingInformationFromPullResult, sourceControlFoldersExistCheck, } from '@/environments/sourceControl/sourceControlHelper.ee'; -import { License } from '@/License'; +import { License } from '@/license'; import { SourceControlPreferencesService } from '@/environments/sourceControl/sourceControlPreferences.service.ee'; import { InstanceSettings } from 'n8n-core'; import path from 'path'; diff --git a/packages/cli/src/environments/sourceControl/sourceControl.service.ee.ts b/packages/cli/src/environments/sourceControl/sourceControl.service.ee.ts index 0c9279ffbe7a3..375352e4cc78f 100644 --- a/packages/cli/src/environments/sourceControl/sourceControl.service.ee.ts +++ b/packages/cli/src/environments/sourceControl/sourceControl.service.ee.ts @@ -32,7 +32,7 @@ import type { SourceControlWorkflowVersionId } from './types/sourceControlWorkfl import type { ExportableCredential } from './types/exportableCredential'; import { EventService } from '@/events/event.service'; import { TagRepository } from '@db/repositories/tag.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { ApplicationError } from 'n8n-workflow'; diff --git a/packages/cli/src/environments/sourceControl/sourceControlExport.service.ee.ts b/packages/cli/src/environments/sourceControl/sourceControlExport.service.ee.ts index 65886a6d6d0d2..6d2d468e30b46 100644 --- a/packages/cli/src/environments/sourceControl/sourceControlExport.service.ee.ts +++ b/packages/cli/src/environments/sourceControl/sourceControlExport.service.ee.ts @@ -25,7 +25,7 @@ import type { SourceControlledFile } from './types/sourceControlledFile'; import { VariablesService } from '../variables/variables.service.ee'; import { TagRepository } from '@db/repositories/tag.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { WorkflowTagMappingRepository } from '@db/repositories/workflowTagMapping.repository'; diff --git a/packages/cli/src/environments/sourceControl/sourceControlGit.service.ee.ts b/packages/cli/src/environments/sourceControl/sourceControlGit.service.ee.ts index 19047619969f9..91220340b7a15 100644 --- a/packages/cli/src/environments/sourceControl/sourceControlGit.service.ee.ts +++ b/packages/cli/src/environments/sourceControl/sourceControlGit.service.ee.ts @@ -20,7 +20,7 @@ import { } from './constants'; import { sourceControlFoldersExistCheck } from './sourceControlHelper.ee'; import type { User } from '@db/entities/User'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { ApplicationError } from 'n8n-workflow'; import { OwnershipService } from '@/services/ownership.service'; import { SourceControlPreferencesService } from './sourceControlPreferences.service.ee'; diff --git a/packages/cli/src/environments/sourceControl/sourceControlHelper.ee.ts b/packages/cli/src/environments/sourceControl/sourceControlHelper.ee.ts index 8610f03015ba8..65cd88bfa57ba 100644 --- a/packages/cli/src/environments/sourceControl/sourceControlHelper.ee.ts +++ b/packages/cli/src/environments/sourceControl/sourceControlHelper.ee.ts @@ -1,5 +1,5 @@ import { Container } from 'typedi'; -import { License } from '@/License'; +import { License } from '@/license'; import { generateKeyPairSync } from 'crypto'; import type { KeyPair } from './types/keyPair'; import { constants as fsConstants, mkdirSync, accessSync } from 'fs'; @@ -11,7 +11,7 @@ import { import type { SourceControlledFile } from './types/sourceControlledFile'; import path from 'path'; import type { KeyPairType } from './types/keyPairType'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; export function stringContainsExpression(testString: string): boolean { return /^=.*\{\{.*\}\}/.test(testString); diff --git a/packages/cli/src/environments/sourceControl/sourceControlImport.service.ee.ts b/packages/cli/src/environments/sourceControl/sourceControlImport.service.ee.ts index 7ff77ca7f8b44..bd04937bc1737 100644 --- a/packages/cli/src/environments/sourceControl/sourceControlImport.service.ee.ts +++ b/packages/cli/src/environments/sourceControl/sourceControlImport.service.ee.ts @@ -17,17 +17,17 @@ import type { Variables } from '@db/entities/Variables'; import { SharedCredentials } from '@db/entities/SharedCredentials'; import type { WorkflowTagMapping } from '@db/entities/WorkflowTagMapping'; import type { TagEntity } from '@db/entities/TagEntity'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import import { In } from '@n8n/typeorm'; -import { isUniqueConstraintError } from '@/ResponseHelper'; +import { isUniqueConstraintError } from '@/response-helper'; import type { SourceControlWorkflowVersionId } from './types/sourceControlWorkflowVersionId'; import { getCredentialExportPath, getWorkflowExportPath } from './sourceControlHelper.ee'; import type { SourceControlledFile } from './types/sourceControlledFile'; import { VariablesService } from '../variables/variables.service.ee'; import { TagRepository } from '@db/repositories/tag.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; diff --git a/packages/cli/src/environments/sourceControl/sourceControlPreferences.service.ee.ts b/packages/cli/src/environments/sourceControl/sourceControlPreferences.service.ee.ts index f33cfc2dc630c..52a2f6192d84e 100644 --- a/packages/cli/src/environments/sourceControl/sourceControlPreferences.service.ee.ts +++ b/packages/cli/src/environments/sourceControl/sourceControlPreferences.service.ee.ts @@ -16,7 +16,7 @@ import { import path from 'path'; import type { KeyPairType } from './types/keyPairType'; import config from '@/config'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { SettingsRepository } from '@db/repositories/settings.repository'; @Service() diff --git a/packages/cli/src/environments/variables/environmentHelpers.ts b/packages/cli/src/environments/variables/environmentHelpers.ts index 7868f22715cab..9a3f2362f8c59 100644 --- a/packages/cli/src/environments/variables/environmentHelpers.ts +++ b/packages/cli/src/environments/variables/environmentHelpers.ts @@ -1,5 +1,5 @@ import { Container } from 'typedi'; -import { License } from '@/License'; +import { License } from '@/license'; export function isVariablesEnabled(): boolean { const license = Container.get(License); diff --git a/packages/cli/src/ErrorReporting.ts b/packages/cli/src/error-reporting.ts similarity index 100% rename from packages/cli/src/ErrorReporting.ts rename to packages/cli/src/error-reporting.ts diff --git a/packages/cli/src/eventbus/MessageEventBus/MessageEventBus.ts b/packages/cli/src/eventbus/MessageEventBus/MessageEventBus.ts index eeb868798bf6b..38ec4e8dc72c7 100644 --- a/packages/cli/src/eventbus/MessageEventBus/MessageEventBus.ts +++ b/packages/cli/src/eventbus/MessageEventBus/MessageEventBus.ts @@ -12,7 +12,7 @@ import { EventDestinationsRepository } from '@db/repositories/eventDestinations. import { ExecutionRepository } from '@db/repositories/execution.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { OrchestrationService } from '@/services/orchestration.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { EventMessageTypes } from '../EventMessageClasses/'; import type { MessageEventBusDestination } from '../MessageEventBusDestination/MessageEventBusDestination.ee'; @@ -34,7 +34,7 @@ import { EventMessageAiNode, type EventMessageAiNodeOptions, } from '../EventMessageClasses/EventMessageAiNode'; -import { License } from '@/License'; +import { License } from '@/license'; import type { EventMessageExecutionOptions } from '../EventMessageClasses/EventMessageExecution'; import { EventMessageExecution } from '../EventMessageClasses/EventMessageExecution'; import { GlobalConfig } from '@n8n/config'; diff --git a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.ts b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.ts index 6a7fef6d6e47c..3cd86f4368aff 100644 --- a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.ts +++ b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestination.ee.ts @@ -2,13 +2,13 @@ import { v4 as uuid } from 'uuid'; import { Container } from 'typedi'; import type { INodeCredentials, MessageEventBusDestinationOptions } from 'n8n-workflow'; import { MessageEventBusDestinationTypeNames } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { AbstractEventMessage } from '../EventMessageClasses/AbstractEventMessage'; import type { EventMessageTypes } from '../EventMessageClasses'; import type { EventMessageConfirmSource } from '../EventMessageClasses/EventMessageConfirm'; import type { MessageEventBus, MessageWithCallback } from '../MessageEventBus/MessageEventBus'; import { EventDestinationsRepository } from '@db/repositories/eventDestinations.repository'; -import { License } from '@/License'; +import { License } from '@/license'; export abstract class MessageEventBusDestination implements MessageEventBusDestinationOptions { // Since you can't have static abstract functions - this just serves as a reminder that you need to implement these. Please. diff --git a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationFromDb.ts b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationFromDb.ts index 27951448ced0f..886d1e35dd9ba 100644 --- a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationFromDb.ts +++ b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationFromDb.ts @@ -6,7 +6,7 @@ import { MessageEventBusDestinationSentry } from './MessageEventBusDestinationSe import { MessageEventBusDestinationSyslog } from './MessageEventBusDestinationSyslog.ee'; import { MessageEventBusDestinationWebhook } from './MessageEventBusDestinationWebhook.ee'; import { Container } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; export function messageEventBusDestinationFromDb( eventBusInstance: MessageEventBus, diff --git a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationSyslog.ee.ts b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationSyslog.ee.ts index f57705319c95c..8d9b7438293e3 100644 --- a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationSyslog.ee.ts +++ b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationSyslog.ee.ts @@ -10,7 +10,7 @@ import { MessageEventBusDestination } from './MessageEventBusDestination.ee'; import { eventMessageGenericDestinationTestEvent } from '../EventMessageClasses/EventMessageGeneric'; import type { MessageEventBus, MessageWithCallback } from '../MessageEventBus/MessageEventBus'; import Container from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; export const isMessageEventBusDestinationSyslogOptions = ( candidate: unknown, ): candidate is MessageEventBusDestinationSyslogOptions => { diff --git a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationWebhook.ee.ts b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationWebhook.ee.ts index 20f7dbb411f71..552185495254c 100644 --- a/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationWebhook.ee.ts +++ b/packages/cli/src/eventbus/MessageEventBusDestination/MessageEventBusDestinationWebhook.ee.ts @@ -11,11 +11,11 @@ import type { IWorkflowExecuteAdditionalData, MessageEventBusDestinationWebhookOptions, } from 'n8n-workflow'; -import { CredentialsHelper } from '@/CredentialsHelper'; +import { CredentialsHelper } from '@/credentials-helper'; import { Agent as HTTPSAgent } from 'https'; import { eventMessageGenericDestinationTestEvent } from '../EventMessageClasses/EventMessageGeneric'; import type { MessageEventBus, MessageWithCallback } from '../MessageEventBus/MessageEventBus'; -import * as SecretsHelpers from '@/ExternalSecrets/externalSecretsHelper.ee'; +import * as SecretsHelpers from '@/external-secrets/external-secrets-helper.ee'; import Container from 'typedi'; export const isMessageEventBusDestinationWebhookOptions = ( diff --git a/packages/cli/src/eventbus/MessageEventBusWriter/MessageEventBusLogWriter.ts b/packages/cli/src/eventbus/MessageEventBusWriter/MessageEventBusLogWriter.ts index 0e49ff3fb7613..617dacd2830ce 100644 --- a/packages/cli/src/eventbus/MessageEventBusWriter/MessageEventBusLogWriter.ts +++ b/packages/cli/src/eventbus/MessageEventBusWriter/MessageEventBusLogWriter.ts @@ -26,7 +26,7 @@ import { } from '../EventMessageClasses/EventMessageConfirm'; import { once as eventOnce } from 'events'; import { inTest } from '@/constants'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import Container from 'typedi'; import { GlobalConfig } from '@n8n/config'; diff --git a/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts b/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts index 8e4fb444c6820..87d89841ade73 100644 --- a/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts +++ b/packages/cli/src/events/__tests__/telemetry-event-relay.test.ts @@ -5,10 +5,10 @@ import config from '@/config'; import type { IWorkflowBase } from 'n8n-workflow'; import type { IWorkflowDb } from '@/Interfaces'; import type { Telemetry } from '@/telemetry'; -import type { License } from '@/License'; +import type { License } from '@/license'; import type { GlobalConfig } from '@n8n/config'; import type { WorkflowRepository } from '@/databases/repositories/workflow.repository'; -import type { NodeTypes } from '@/NodeTypes'; +import type { NodeTypes } from '@/node-types'; import type { SharedWorkflowRepository } from '@/databases/repositories/sharedWorkflow.repository'; import type { ProjectRelationRepository } from '@/databases/repositories/projectRelation.repository'; import type { RelayEventMap } from '@/events/relay-event-map'; diff --git a/packages/cli/src/events/log-streaming-event-relay.ts b/packages/cli/src/events/log-streaming-event-relay.ts index 2d79408d4a8c4..2012775d91977 100644 --- a/packages/cli/src/events/log-streaming-event-relay.ts +++ b/packages/cli/src/events/log-streaming-event-relay.ts @@ -1,6 +1,6 @@ import { Service } from 'typedi'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { Redactable } from '@/decorators/Redactable'; +import { Redactable } from '@/decorators/redactable'; import { EventRelay } from '@/events/event-relay'; import type { RelayEventMap } from '@/events/relay-event-map'; import type { IWorkflowBase } from 'n8n-workflow'; diff --git a/packages/cli/src/events/telemetry-event-relay.ts b/packages/cli/src/events/telemetry-event-relay.ts index 3389e24b3f4ab..dc1dae08a016a 100644 --- a/packages/cli/src/events/telemetry-event-relay.ts +++ b/packages/cli/src/events/telemetry-event-relay.ts @@ -4,18 +4,18 @@ import type { RelayEventMap } from '@/events/relay-event-map'; import { Telemetry } from '../telemetry'; import config from '@/config'; import os from 'node:os'; -import { License } from '@/License'; +import { License } from '@/license'; import { GlobalConfig } from '@n8n/config'; import { N8N_VERSION } from '@/constants'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import type { ExecutionStatus, INodesGraphResult, ITelemetryTrackProperties } from 'n8n-workflow'; import { get as pslGet } from 'psl'; import { TelemetryHelpers } from 'n8n-workflow'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; import { SharedWorkflowRepository } from '@/databases/repositories/sharedWorkflow.repository'; import { ProjectRelationRepository } from '@/databases/repositories/projectRelation.repository'; import type { IExecutionTrackProperties } from '@/Interfaces'; -import { determineFinalExecutionStatus } from '@/executionLifecycleHooks/shared/sharedHookFunctions'; +import { determineFinalExecutionStatus } from '@/execution-lifecycle-hooks/shared/shared-hook-functions'; import { EventRelay } from './event-relay'; import { snakeCase } from 'change-case'; diff --git a/packages/cli/src/executionLifecycleHooks/__tests__/restoreBinaryDataId.test.ts b/packages/cli/src/execution-lifecycle-hooks/__tests__/restore-binary-data-id.test.ts similarity index 98% rename from packages/cli/src/executionLifecycleHooks/__tests__/restoreBinaryDataId.test.ts rename to packages/cli/src/execution-lifecycle-hooks/__tests__/restore-binary-data-id.test.ts index ea962882bd782..58f0825ef7e31 100644 --- a/packages/cli/src/executionLifecycleHooks/__tests__/restoreBinaryDataId.test.ts +++ b/packages/cli/src/execution-lifecycle-hooks/__tests__/restore-binary-data-id.test.ts @@ -1,4 +1,4 @@ -import { restoreBinaryDataId } from '@/executionLifecycleHooks/restoreBinaryDataId'; +import { restoreBinaryDataId } from '@/execution-lifecycle-hooks/restore-binary-data-id'; import { BinaryDataService } from 'n8n-core'; import { mockInstance } from '@test/mocking'; diff --git a/packages/cli/src/executionLifecycleHooks/__tests__/saveExecutionProgress.test.ts b/packages/cli/src/execution-lifecycle-hooks/__tests__/save-execution-progress.test.ts similarity index 92% rename from packages/cli/src/executionLifecycleHooks/__tests__/saveExecutionProgress.test.ts rename to packages/cli/src/execution-lifecycle-hooks/__tests__/save-execution-progress.test.ts index 9b1faa7f60540..5dc717265954f 100644 --- a/packages/cli/src/executionLifecycleHooks/__tests__/saveExecutionProgress.test.ts +++ b/packages/cli/src/execution-lifecycle-hooks/__tests__/save-execution-progress.test.ts @@ -1,8 +1,8 @@ import { ExecutionRepository } from '@/databases/repositories/execution.repository'; import { mockInstance } from '@test/mocking'; -import { Logger } from '@/Logger'; -import { saveExecutionProgress } from '@/executionLifecycleHooks/saveExecutionProgress'; -import * as fnModule from '@/executionLifecycleHooks/toSaveSettings'; +import { Logger } from '@/logger'; +import { saveExecutionProgress } from '@/execution-lifecycle-hooks/save-execution-progress'; +import * as fnModule from '@/execution-lifecycle-hooks/to-save-settings'; import { ErrorReporterProxy, type IRunExecutionData, diff --git a/packages/cli/src/executionLifecycleHooks/__tests__/toSaveSettings.test.ts b/packages/cli/src/execution-lifecycle-hooks/__tests__/to-save-settings.test.ts similarity index 98% rename from packages/cli/src/executionLifecycleHooks/__tests__/toSaveSettings.test.ts rename to packages/cli/src/execution-lifecycle-hooks/__tests__/to-save-settings.test.ts index 57379e0e73055..f12c209827ca4 100644 --- a/packages/cli/src/executionLifecycleHooks/__tests__/toSaveSettings.test.ts +++ b/packages/cli/src/execution-lifecycle-hooks/__tests__/to-save-settings.test.ts @@ -1,5 +1,5 @@ import config from '@/config'; -import { toSaveSettings } from '@/executionLifecycleHooks/toSaveSettings'; +import { toSaveSettings } from '@/execution-lifecycle-hooks/to-save-settings'; afterEach(() => { config.load(config.default); diff --git a/packages/cli/src/executionLifecycleHooks/restoreBinaryDataId.ts b/packages/cli/src/execution-lifecycle-hooks/restore-binary-data-id.ts similarity index 98% rename from packages/cli/src/executionLifecycleHooks/restoreBinaryDataId.ts rename to packages/cli/src/execution-lifecycle-hooks/restore-binary-data-id.ts index 84780a785e410..d19a6e22a4ff0 100644 --- a/packages/cli/src/executionLifecycleHooks/restoreBinaryDataId.ts +++ b/packages/cli/src/execution-lifecycle-hooks/restore-binary-data-id.ts @@ -3,7 +3,7 @@ import { BinaryDataService } from 'n8n-core'; import type { IRun, WorkflowExecuteMode } from 'n8n-workflow'; import type { BinaryData } from 'n8n-core'; import config from '@/config'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; /** * Whenever the execution ID is not available to the binary data service at the diff --git a/packages/cli/src/executionLifecycleHooks/saveExecutionProgress.ts b/packages/cli/src/execution-lifecycle-hooks/save-execution-progress.ts similarity index 96% rename from packages/cli/src/executionLifecycleHooks/saveExecutionProgress.ts rename to packages/cli/src/execution-lifecycle-hooks/save-execution-progress.ts index 933b81f788723..33b1d9308e00a 100644 --- a/packages/cli/src/executionLifecycleHooks/saveExecutionProgress.ts +++ b/packages/cli/src/execution-lifecycle-hooks/save-execution-progress.ts @@ -3,9 +3,9 @@ import { Container } from 'typedi'; import type { IRunExecutionData, ITaskData, IWorkflowBase } from 'n8n-workflow'; import { ErrorReporterProxy as ErrorReporter } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { ExecutionRepository } from '@/databases/repositories/execution.repository'; -import { toSaveSettings } from '@/executionLifecycleHooks/toSaveSettings'; +import { toSaveSettings } from '@/execution-lifecycle-hooks/to-save-settings'; export async function saveExecutionProgress( workflowData: IWorkflowBase, diff --git a/packages/cli/src/executionLifecycleHooks/shared/sharedHookFunctions.ts b/packages/cli/src/execution-lifecycle-hooks/shared/shared-hook-functions.ts similarity index 99% rename from packages/cli/src/executionLifecycleHooks/shared/sharedHookFunctions.ts rename to packages/cli/src/execution-lifecycle-hooks/shared/shared-hook-functions.ts index 7a2e401919449..2e5436758f3c3 100644 --- a/packages/cli/src/executionLifecycleHooks/shared/sharedHookFunctions.ts +++ b/packages/cli/src/execution-lifecycle-hooks/shared/shared-hook-functions.ts @@ -5,7 +5,7 @@ import pick from 'lodash/pick'; import { isWorkflowIdValid } from '@/utils'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { ExecutionMetadataService } from '@/services/executionMetadata.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; export function determineFinalExecutionStatus(runData: IRun): ExecutionStatus { const workflowHasCrashed = runData.status === 'crashed'; diff --git a/packages/cli/src/executionLifecycleHooks/toSaveSettings.ts b/packages/cli/src/execution-lifecycle-hooks/to-save-settings.ts similarity index 100% rename from packages/cli/src/executionLifecycleHooks/toSaveSettings.ts rename to packages/cli/src/execution-lifecycle-hooks/to-save-settings.ts diff --git a/packages/cli/src/executions/__tests__/execution.service.test.ts b/packages/cli/src/executions/__tests__/execution.service.test.ts index 28c76e1c58faf..99370c1e1b77e 100644 --- a/packages/cli/src/executions/__tests__/execution.service.test.ts +++ b/packages/cli/src/executions/__tests__/execution.service.test.ts @@ -4,10 +4,10 @@ import config from '@/config'; import { ExecutionService } from '@/executions/execution.service'; import { AbortedExecutionRetryError } from '@/errors/aborted-execution-retry.error'; import { MissingExecutionStopError } from '@/errors/missing-execution-stop.error'; -import type { ActiveExecutions } from '@/ActiveExecutions'; +import type { ActiveExecutions } from '@/active-executions'; import type { IExecutionResponse } from '@/Interfaces'; import { ScalingService } from '@/scaling/scaling.service'; -import type { WaitTracker } from '@/WaitTracker'; +import type { WaitTracker } from '@/wait-tracker'; import type { ExecutionRepository } from '@/databases/repositories/execution.repository'; import type { ExecutionRequest } from '@/executions/execution.types'; import type { ConcurrencyControlService } from '@/concurrency/concurrency-control.service'; diff --git a/packages/cli/src/executions/__tests__/executions.controller.test.ts b/packages/cli/src/executions/__tests__/executions.controller.test.ts index decb88d59854e..acf619a9ea303 100644 --- a/packages/cli/src/executions/__tests__/executions.controller.test.ts +++ b/packages/cli/src/executions/__tests__/executions.controller.test.ts @@ -3,7 +3,7 @@ import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ExecutionsController } from '@/executions/executions.controller'; import type { ExecutionRequest, ExecutionSummaries } from '@/executions/execution.types'; import type { ExecutionService } from '@/executions/execution.service'; -import type { WorkflowSharingService } from '@/workflows/workflowSharing.service'; +import type { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; describe('ExecutionsController', () => { diff --git a/packages/cli/src/executions/execution-recovery.service.ts b/packages/cli/src/executions/execution-recovery.service.ts index 8e29127737792..ffe4e04a4513d 100644 --- a/packages/cli/src/executions/execution-recovery.service.ts +++ b/packages/cli/src/executions/execution-recovery.service.ts @@ -2,7 +2,7 @@ import { Service } from 'typedi'; import { Push } from '@/push'; import { sleep } from 'n8n-workflow'; import { ExecutionRepository } from '@db/repositories/execution.repository'; -import { getWorkflowHooksMain } from '@/WorkflowExecuteAdditionalData'; // @TODO: Dependency cycle +import { getWorkflowHooksMain } from '@/workflow-execute-additional-data'; // @TODO: Dependency cycle import type { DateTime } from 'luxon'; import type { IRun, ITaskData } from 'n8n-workflow'; import { InstanceSettings } from 'n8n-core'; @@ -11,7 +11,7 @@ import type { IExecutionResponse } from '@/Interfaces'; import { NodeCrashedError } from '@/errors/node-crashed.error'; import { WorkflowCrashedError } from '@/errors/workflow-crashed.error'; import { ARTIFICIAL_TASK_DATA } from '@/constants'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { EventService } from '@/events/event.service'; /** diff --git a/packages/cli/src/executions/execution.service.ts b/packages/cli/src/executions/execution.service.ts index b4e8b335739be..61a1dc0db14e9 100644 --- a/packages/cli/src/executions/execution.service.ts +++ b/packages/cli/src/executions/execution.service.ts @@ -15,7 +15,7 @@ import { Workflow, WorkflowOperationError, } from 'n8n-workflow'; -import { ActiveExecutions } from '@/ActiveExecutions'; +import { ActiveExecutions } from '@/active-executions'; import type { ExecutionPayload, IExecutionFlattedResponse, @@ -23,24 +23,24 @@ import type { IWorkflowDb, IWorkflowExecutionDataProcess, } from '@/Interfaces'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; import type { ExecutionRequest, ExecutionSummaries, StopResult } from './execution.types'; -import { WorkflowRunner } from '@/WorkflowRunner'; +import { WorkflowRunner } from '@/workflow-runner'; import type { IGetExecutionsQueryFilter } from '@db/repositories/execution.repository'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import config from '@/config'; -import { WaitTracker } from '@/WaitTracker'; +import { WaitTracker } from '@/wait-tracker'; import { MissingExecutionStopError } from '@/errors/missing-execution-stop.error'; import { QueuedExecutionRetryError } from '@/errors/queued-execution-retry.error'; import { ConcurrencyControlService } from '@/concurrency/concurrency-control.service'; import { AbortedExecutionRetryError } from '@/errors/aborted-execution-retry.error'; -import { License } from '@/License'; +import { License } from '@/license'; import type { User } from '@/databases/entities/User'; -import { WorkflowSharingService } from '@/workflows/workflowSharing.service'; +import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; export const schemaGetExecutionsQueryFilter = { $id: '/IGetExecutionsQueryFilter', diff --git a/packages/cli/src/executions/executions.controller.ts b/packages/cli/src/executions/executions.controller.ts index c68c8cb7d5c48..23e51efda98fa 100644 --- a/packages/cli/src/executions/executions.controller.ts +++ b/packages/cli/src/executions/executions.controller.ts @@ -2,8 +2,8 @@ import { ExecutionRequest, type ExecutionSummaries } from './execution.types'; import { ExecutionService } from './execution.service'; import { Get, Post, RestController } from '@/decorators'; import { EnterpriseExecutionsService } from './execution.service.ee'; -import { License } from '@/License'; -import { WorkflowSharingService } from '@/workflows/workflowSharing.service'; +import { License } from '@/license'; +import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { parseRangeQuery } from './parse-range-query.middleware'; import type { User } from '@/databases/entities/User'; diff --git a/packages/cli/src/executions/parse-range-query.middleware.ts b/packages/cli/src/executions/parse-range-query.middleware.ts index 528c00f676e94..b02b012c2464c 100644 --- a/packages/cli/src/executions/parse-range-query.middleware.ts +++ b/packages/cli/src/executions/parse-range-query.middleware.ts @@ -1,4 +1,4 @@ -import * as ResponseHelper from '@/ResponseHelper'; +import * as ResponseHelper from '@/response-helper'; import type { NextFunction, Response } from 'express'; import type { ExecutionRequest } from './execution.types'; import type { JsonObject } from 'n8n-workflow'; diff --git a/packages/cli/src/ExpressionEvaluator.ts b/packages/cli/src/expression-evaluator.ts similarity index 100% rename from packages/cli/src/ExpressionEvaluator.ts rename to packages/cli/src/expression-evaluator.ts diff --git a/packages/cli/src/ExternalHooks.ts b/packages/cli/src/external-hooks.ts similarity index 100% rename from packages/cli/src/ExternalHooks.ts rename to packages/cli/src/external-hooks.ts diff --git a/packages/cli/src/ExternalSecrets/__tests__/ExternalSecretsManager.ee.test.ts b/packages/cli/src/external-secrets/__tests__/external-secrets-manager.ee.test.ts similarity index 94% rename from packages/cli/src/ExternalSecrets/__tests__/ExternalSecretsManager.ee.test.ts rename to packages/cli/src/external-secrets/__tests__/external-secrets-manager.ee.test.ts index 7df8d6d323558..6a0d1cc23eff4 100644 --- a/packages/cli/src/ExternalSecrets/__tests__/ExternalSecretsManager.ee.test.ts +++ b/packages/cli/src/external-secrets/__tests__/external-secrets-manager.ee.test.ts @@ -2,9 +2,9 @@ import { Container } from 'typedi'; import { Cipher } from 'n8n-core'; import { SettingsRepository } from '@db/repositories/settings.repository'; import type { ExternalSecretsSettings } from '@/Interfaces'; -import { License } from '@/License'; -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; -import { ExternalSecretsProviders } from '@/ExternalSecrets/ExternalSecretsProviders.ee'; +import { License } from '@/license'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; +import { ExternalSecretsProviders } from '@/external-secrets/external-secrets-providers.ee'; import { mockInstance } from '@test/mocking'; import { DummyProvider, diff --git a/packages/cli/src/ExternalSecrets/constants.ts b/packages/cli/src/external-secrets/constants.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/constants.ts rename to packages/cli/src/external-secrets/constants.ts diff --git a/packages/cli/src/ExternalSecrets/externalSecretsHelper.ee.ts b/packages/cli/src/external-secrets/external-secrets-helper.ee.ts similarity index 91% rename from packages/cli/src/ExternalSecrets/externalSecretsHelper.ee.ts rename to packages/cli/src/external-secrets/external-secrets-helper.ee.ts index 40ca21b937466..85997d805e375 100644 --- a/packages/cli/src/ExternalSecrets/externalSecretsHelper.ee.ts +++ b/packages/cli/src/external-secrets/external-secrets-helper.ee.ts @@ -1,4 +1,4 @@ -import { License } from '@/License'; +import { License } from '@/license'; import { GlobalConfig } from '@n8n/config'; import Container from 'typedi'; diff --git a/packages/cli/src/ExternalSecrets/ExternalSecretsManager.ee.ts b/packages/cli/src/external-secrets/external-secrets-manager.ee.ts similarity index 98% rename from packages/cli/src/ExternalSecrets/ExternalSecretsManager.ee.ts rename to packages/cli/src/external-secrets/external-secrets-manager.ee.ts index 2ae33be62aa9e..2281f03538530 100644 --- a/packages/cli/src/ExternalSecrets/ExternalSecretsManager.ee.ts +++ b/packages/cli/src/external-secrets/external-secrets-manager.ee.ts @@ -8,14 +8,14 @@ import type { import { Cipher } from 'n8n-core'; import Container, { Service } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { jsonParse, type IDataObject, ApplicationError } from 'n8n-workflow'; import { EXTERNAL_SECRETS_INITIAL_BACKOFF, EXTERNAL_SECRETS_MAX_BACKOFF } from './constants'; -import { License } from '@/License'; +import { License } from '@/license'; import { EventService } from '@/events/event.service'; -import { updateIntervalTime } from './externalSecretsHelper.ee'; -import { ExternalSecretsProviders } from './ExternalSecretsProviders.ee'; +import { updateIntervalTime } from './external-secrets-helper.ee'; +import { ExternalSecretsProviders } from './external-secrets-providers.ee'; import { OrchestrationService } from '@/services/orchestration.service'; @Service() diff --git a/packages/cli/src/ExternalSecrets/ExternalSecretsProviders.ee.ts b/packages/cli/src/external-secrets/external-secrets-providers.ee.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/ExternalSecretsProviders.ee.ts rename to packages/cli/src/external-secrets/external-secrets-providers.ee.ts diff --git a/packages/cli/src/ExternalSecrets/ExternalSecrets.controller.ee.ts b/packages/cli/src/external-secrets/external-secrets.controller.ee.ts similarity index 97% rename from packages/cli/src/ExternalSecrets/ExternalSecrets.controller.ee.ts rename to packages/cli/src/external-secrets/external-secrets.controller.ee.ts index 86a61b75a0a76..0b27d856dc3aa 100644 --- a/packages/cli/src/ExternalSecrets/ExternalSecrets.controller.ee.ts +++ b/packages/cli/src/external-secrets/external-secrets.controller.ee.ts @@ -1,7 +1,7 @@ import { Get, Post, RestController, GlobalScope } from '@/decorators'; import { ExternalSecretsRequest } from '@/requests'; import { Response } from 'express'; -import { ExternalSecretsService } from './ExternalSecrets.service.ee'; +import { ExternalSecretsService } from './external-secrets.service.ee'; import { ExternalSecretsProviderNotFoundError } from '@/errors/external-secrets-provider-not-found.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; diff --git a/packages/cli/src/ExternalSecrets/ExternalSecrets.service.ee.ts b/packages/cli/src/external-secrets/external-secrets.service.ee.ts similarity index 98% rename from packages/cli/src/ExternalSecrets/ExternalSecrets.service.ee.ts rename to packages/cli/src/external-secrets/external-secrets.service.ee.ts index 0c378540acc18..ea9f4ed17058f 100644 --- a/packages/cli/src/ExternalSecrets/ExternalSecrets.service.ee.ts +++ b/packages/cli/src/external-secrets/external-secrets.service.ee.ts @@ -4,7 +4,7 @@ import type { ExternalSecretsRequest } from '@/requests'; import type { IDataObject } from 'n8n-workflow'; import { deepCopy } from 'n8n-workflow'; import Container, { Service } from 'typedi'; -import { ExternalSecretsManager } from './ExternalSecretsManager.ee'; +import { ExternalSecretsManager } from './external-secrets-manager.ee'; import { ExternalSecretsProviderNotFoundError } from '@/errors/external-secrets-provider-not-found.error'; @Service() diff --git a/packages/cli/src/ExternalSecrets/providers/__tests__/azure-key-vault.test.ts b/packages/cli/src/external-secrets/providers/__tests__/azure-key-vault.test.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/providers/__tests__/azure-key-vault.test.ts rename to packages/cli/src/external-secrets/providers/__tests__/azure-key-vault.test.ts diff --git a/packages/cli/src/ExternalSecrets/providers/__tests__/gcp-secrets-manager.test.ts b/packages/cli/src/external-secrets/providers/__tests__/gcp-secrets-manager.test.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/providers/__tests__/gcp-secrets-manager.test.ts rename to packages/cli/src/external-secrets/providers/__tests__/gcp-secrets-manager.test.ts diff --git a/packages/cli/src/ExternalSecrets/providers/aws-secrets/aws-secrets-client.ts b/packages/cli/src/external-secrets/providers/aws-secrets/aws-secrets-client.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/providers/aws-secrets/aws-secrets-client.ts rename to packages/cli/src/external-secrets/providers/aws-secrets/aws-secrets-client.ts diff --git a/packages/cli/src/ExternalSecrets/providers/aws-secrets/aws-secrets-manager.ts b/packages/cli/src/external-secrets/providers/aws-secrets/aws-secrets-manager.ts similarity index 99% rename from packages/cli/src/ExternalSecrets/providers/aws-secrets/aws-secrets-manager.ts rename to packages/cli/src/external-secrets/providers/aws-secrets/aws-secrets-manager.ts index b7b5f52d7bd55..a4de7d164cfc6 100644 --- a/packages/cli/src/ExternalSecrets/providers/aws-secrets/aws-secrets-manager.ts +++ b/packages/cli/src/external-secrets/providers/aws-secrets/aws-secrets-manager.ts @@ -1,6 +1,6 @@ import { AwsSecretsClient } from './aws-secrets-client'; import { UnknownAuthTypeError } from '@/errors/unknown-auth-type.error'; -import { DOCS_HELP_NOTICE, EXTERNAL_SECRETS_NAME_REGEX } from '@/ExternalSecrets/constants'; +import { DOCS_HELP_NOTICE, EXTERNAL_SECRETS_NAME_REGEX } from '@/external-secrets/constants'; import type { SecretsProvider, SecretsProviderState } from '@/Interfaces'; import type { INodeProperties } from 'n8n-workflow'; import type { AwsSecretsManagerContext } from './types'; diff --git a/packages/cli/src/ExternalSecrets/providers/aws-secrets/types.ts b/packages/cli/src/external-secrets/providers/aws-secrets/types.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/providers/aws-secrets/types.ts rename to packages/cli/src/external-secrets/providers/aws-secrets/types.ts diff --git a/packages/cli/src/ExternalSecrets/providers/azure-key-vault/azure-key-vault.ts b/packages/cli/src/external-secrets/providers/azure-key-vault/azure-key-vault.ts similarity index 99% rename from packages/cli/src/ExternalSecrets/providers/azure-key-vault/azure-key-vault.ts rename to packages/cli/src/external-secrets/providers/azure-key-vault/azure-key-vault.ts index 7df196bdf96c4..ad272abe54c14 100644 --- a/packages/cli/src/ExternalSecrets/providers/azure-key-vault/azure-key-vault.ts +++ b/packages/cli/src/external-secrets/providers/azure-key-vault/azure-key-vault.ts @@ -3,7 +3,7 @@ import { SecretClient } from '@azure/keyvault-secrets'; import type { SecretsProvider, SecretsProviderState } from '@/Interfaces'; import type { INodeProperties } from 'n8n-workflow'; import type { AzureKeyVaultContext } from './types'; -import { DOCS_HELP_NOTICE, EXTERNAL_SECRETS_NAME_REGEX } from '@/ExternalSecrets/constants'; +import { DOCS_HELP_NOTICE, EXTERNAL_SECRETS_NAME_REGEX } from '@/external-secrets/constants'; export class AzureKeyVault implements SecretsProvider { name = 'azureKeyVault'; diff --git a/packages/cli/src/ExternalSecrets/providers/azure-key-vault/types.ts b/packages/cli/src/external-secrets/providers/azure-key-vault/types.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/providers/azure-key-vault/types.ts rename to packages/cli/src/external-secrets/providers/azure-key-vault/types.ts diff --git a/packages/cli/src/ExternalSecrets/providers/gcp-secrets-manager/gcp-secrets-manager.ts b/packages/cli/src/external-secrets/providers/gcp-secrets-manager/gcp-secrets-manager.ts similarity index 99% rename from packages/cli/src/ExternalSecrets/providers/gcp-secrets-manager/gcp-secrets-manager.ts rename to packages/cli/src/external-secrets/providers/gcp-secrets-manager/gcp-secrets-manager.ts index 64ed49f05cc41..ac00245c58508 100644 --- a/packages/cli/src/ExternalSecrets/providers/gcp-secrets-manager/gcp-secrets-manager.ts +++ b/packages/cli/src/external-secrets/providers/gcp-secrets-manager/gcp-secrets-manager.ts @@ -1,5 +1,5 @@ import { SecretManagerServiceClient as GcpClient } from '@google-cloud/secret-manager'; -import { DOCS_HELP_NOTICE, EXTERNAL_SECRETS_NAME_REGEX } from '@/ExternalSecrets/constants'; +import { DOCS_HELP_NOTICE, EXTERNAL_SECRETS_NAME_REGEX } from '@/external-secrets/constants'; import type { SecretsProvider, SecretsProviderState } from '@/Interfaces'; import { jsonParse, type INodeProperties } from 'n8n-workflow'; import type { diff --git a/packages/cli/src/ExternalSecrets/providers/gcp-secrets-manager/types.ts b/packages/cli/src/external-secrets/providers/gcp-secrets-manager/types.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/providers/gcp-secrets-manager/types.ts rename to packages/cli/src/external-secrets/providers/gcp-secrets-manager/types.ts diff --git a/packages/cli/src/ExternalSecrets/providers/infisical.ts b/packages/cli/src/external-secrets/providers/infisical.ts similarity index 100% rename from packages/cli/src/ExternalSecrets/providers/infisical.ts rename to packages/cli/src/external-secrets/providers/infisical.ts diff --git a/packages/cli/src/ExternalSecrets/providers/vault.ts b/packages/cli/src/external-secrets/providers/vault.ts similarity index 99% rename from packages/cli/src/ExternalSecrets/providers/vault.ts rename to packages/cli/src/external-secrets/providers/vault.ts index 6735d26d6d645..e69a909481a3d 100644 --- a/packages/cli/src/ExternalSecrets/providers/vault.ts +++ b/packages/cli/src/external-secrets/providers/vault.ts @@ -3,9 +3,9 @@ import { SecretsProvider } from '@/Interfaces'; import type { IDataObject, INodeProperties } from 'n8n-workflow'; import type { AxiosInstance, AxiosResponse } from 'axios'; import axios from 'axios'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { DOCS_HELP_NOTICE, EXTERNAL_SECRETS_NAME_REGEX } from '../constants'; -import { preferGet } from '../externalSecretsHelper.ee'; +import { preferGet } from '../external-secrets-helper.ee'; import { Container } from 'typedi'; type VaultAuthMethod = 'token' | 'usernameAndPassword' | 'appRole'; diff --git a/packages/cli/src/GenericHelpers.ts b/packages/cli/src/generic-helpers.ts similarity index 100% rename from packages/cli/src/GenericHelpers.ts rename to packages/cli/src/generic-helpers.ts diff --git a/packages/cli/src/InternalHooks.ts b/packages/cli/src/internal-hooks.ts similarity index 100% rename from packages/cli/src/InternalHooks.ts rename to packages/cli/src/internal-hooks.ts diff --git a/packages/cli/src/Ldap/__tests__/helpers.test.ts b/packages/cli/src/ldap/__tests__/helpers.test.ts similarity index 96% rename from packages/cli/src/Ldap/__tests__/helpers.test.ts rename to packages/cli/src/ldap/__tests__/helpers.test.ts index 719adea76c5a7..876a3305201cb 100644 --- a/packages/cli/src/Ldap/__tests__/helpers.test.ts +++ b/packages/cli/src/ldap/__tests__/helpers.test.ts @@ -1,6 +1,6 @@ import { UserRepository } from '@/databases/repositories/user.repository'; import { mockInstance } from '@test/mocking'; -import * as helpers from '@/Ldap/helpers.ee'; +import * as helpers from '@/ldap/helpers.ee'; import { AuthIdentity } from '@/databases/entities/AuthIdentity'; import { User } from '@/databases/entities/User'; import { generateNanoId } from '@/databases/utils/generators'; diff --git a/packages/cli/src/Ldap/constants.ts b/packages/cli/src/ldap/constants.ts similarity index 100% rename from packages/cli/src/Ldap/constants.ts rename to packages/cli/src/ldap/constants.ts diff --git a/packages/cli/src/Ldap/helpers.ee.ts b/packages/cli/src/ldap/helpers.ee.ts similarity index 99% rename from packages/cli/src/Ldap/helpers.ee.ts rename to packages/cli/src/ldap/helpers.ee.ts index bf91bb83db055..d705fb66fa368 100644 --- a/packages/cli/src/Ldap/helpers.ee.ts +++ b/packages/cli/src/ldap/helpers.ee.ts @@ -17,7 +17,7 @@ import { LDAP_LOGIN_LABEL, } from './constants'; import type { ConnectionSecurity, LdapConfig } from './types'; -import { License } from '@/License'; +import { License } from '@/license'; import { UserRepository } from '@db/repositories/user.repository'; import { AuthProviderSyncHistoryRepository } from '@db/repositories/authProviderSyncHistory.repository'; import { AuthIdentityRepository } from '@db/repositories/authIdentity.repository'; diff --git a/packages/cli/src/Ldap/ldap.controller.ee.ts b/packages/cli/src/ldap/ldap.controller.ee.ts similarity index 100% rename from packages/cli/src/Ldap/ldap.controller.ee.ts rename to packages/cli/src/ldap/ldap.controller.ee.ts diff --git a/packages/cli/src/Ldap/ldap.service.ee.ts b/packages/cli/src/ldap/ldap.service.ee.ts similarity index 99% rename from packages/cli/src/Ldap/ldap.service.ee.ts rename to packages/cli/src/ldap/ldap.service.ee.ts index 32c3152fb5f47..c24cade682098 100644 --- a/packages/cli/src/Ldap/ldap.service.ee.ts +++ b/packages/cli/src/ldap/ldap.service.ee.ts @@ -11,7 +11,7 @@ import config from '@/config'; import type { User } from '@db/entities/User'; import type { RunningMode, SyncStatus } from '@db/entities/AuthProviderSyncHistory'; import { SettingsRepository } from '@db/repositories/settings.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; @@ -20,7 +20,7 @@ import { isEmailCurrentAuthenticationMethod, isLdapCurrentAuthenticationMethod, setCurrentAuthenticationMethod, -} from '@/sso/ssoHelpers'; +} from '@/sso/sso-helpers'; import type { LdapConfig } from './types'; import { diff --git a/packages/cli/src/Ldap/types.ts b/packages/cli/src/ldap/types.ts similarity index 100% rename from packages/cli/src/Ldap/types.ts rename to packages/cli/src/ldap/types.ts diff --git a/packages/cli/src/License.ts b/packages/cli/src/license.ts similarity index 99% rename from packages/cli/src/License.ts rename to packages/cli/src/license.ts index 8a5ed18e5808e..57f576c5a39d2 100644 --- a/packages/cli/src/License.ts +++ b/packages/cli/src/license.ts @@ -2,7 +2,7 @@ import type { TEntitlement, TFeatures, TLicenseBlock } from '@n8n_io/license-sdk import { LicenseManager } from '@n8n_io/license-sdk'; import { InstanceSettings, ObjectStoreService } from 'n8n-core'; import Container, { Service } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import config from '@/config'; import { LICENSE_FEATURES, @@ -16,7 +16,7 @@ import type { BooleanLicenseFeature, N8nInstanceType, NumericLicenseFeature } fr import type { RedisServicePubSubPublisher } from './services/redis/RedisServicePubSubPublisher'; import { RedisService } from './services/redis.service'; import { OrchestrationService } from '@/services/orchestration.service'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { OnShutdown } from '@/decorators/on-shutdown'; import { LicenseMetricsService } from '@/metrics/license-metrics.service'; type FeatureReturnType = Partial< diff --git a/packages/cli/src/license/__tests__/license.service.test.ts b/packages/cli/src/license/__tests__/license.service.test.ts index fb75c6a27d692..9db929ec71057 100644 --- a/packages/cli/src/license/__tests__/license.service.test.ts +++ b/packages/cli/src/license/__tests__/license.service.test.ts @@ -1,5 +1,5 @@ import { LicenseErrors, LicenseService } from '@/license/license.service'; -import type { License } from '@/License'; +import type { License } from '@/license'; import type { EventService } from '@/events/event.service'; import type { WorkflowRepository } from '@db/repositories/workflow.repository'; import type { TEntitlement } from '@n8n_io/license-sdk'; diff --git a/packages/cli/src/license/license.service.ts b/packages/cli/src/license/license.service.ts index 0555597a9d3b3..6125ed813b22d 100644 --- a/packages/cli/src/license/license.service.ts +++ b/packages/cli/src/license/license.service.ts @@ -1,8 +1,8 @@ import { Service } from 'typedi'; import axios from 'axios'; -import { Logger } from '@/Logger'; -import { License } from '@/License'; +import { Logger } from '@/logger'; +import { License } from '@/license'; import { EventService } from '@/events/event.service'; import type { User } from '@db/entities/User'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; diff --git a/packages/cli/src/LoadNodesAndCredentials.ts b/packages/cli/src/load-nodes-and-credentials.ts similarity index 99% rename from packages/cli/src/LoadNodesAndCredentials.ts rename to packages/cli/src/load-nodes-and-credentials.ts index a1f7b0578d3f8..5b2cc284e93dc 100644 --- a/packages/cli/src/LoadNodesAndCredentials.ts +++ b/packages/cli/src/load-nodes-and-credentials.ts @@ -26,7 +26,7 @@ import { CLI_DIR, inE2ETests, } from '@/constants'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { GlobalConfig } from '@n8n/config'; interface LoadedNodesAndCredentials { diff --git a/packages/cli/src/Logger.ts b/packages/cli/src/logger.ts similarity index 100% rename from packages/cli/src/Logger.ts rename to packages/cli/src/logger.ts diff --git a/packages/cli/src/Mfa/constants.ts b/packages/cli/src/mfa/constants.ts similarity index 100% rename from packages/cli/src/Mfa/constants.ts rename to packages/cli/src/mfa/constants.ts diff --git a/packages/cli/src/Mfa/helpers.ts b/packages/cli/src/mfa/helpers.ts similarity index 100% rename from packages/cli/src/Mfa/helpers.ts rename to packages/cli/src/mfa/helpers.ts diff --git a/packages/cli/src/Mfa/mfa.service.ts b/packages/cli/src/mfa/mfa.service.ts similarity index 100% rename from packages/cli/src/Mfa/mfa.service.ts rename to packages/cli/src/mfa/mfa.service.ts diff --git a/packages/cli/src/Mfa/totp.service.ts b/packages/cli/src/mfa/totp.service.ts similarity index 100% rename from packages/cli/src/Mfa/totp.service.ts rename to packages/cli/src/mfa/totp.service.ts diff --git a/packages/cli/src/middlewares/bodyParser.ts b/packages/cli/src/middlewares/body-parser.ts similarity index 100% rename from packages/cli/src/middlewares/bodyParser.ts rename to packages/cli/src/middlewares/body-parser.ts diff --git a/packages/cli/src/middlewares/index.ts b/packages/cli/src/middlewares/index.ts index 75ebae01c66fe..07ca0b2a36198 100644 --- a/packages/cli/src/middlewares/index.ts +++ b/packages/cli/src/middlewares/index.ts @@ -1,3 +1,3 @@ -export * from './bodyParser'; +export * from './body-parser'; export * from './cors'; -export * from './listQuery'; +export * from './list-query'; diff --git a/packages/cli/src/middlewares/listQuery/__tests__/listQuery.test.ts b/packages/cli/src/middlewares/list-query/__tests__/listQuery.test.ts similarity index 96% rename from packages/cli/src/middlewares/listQuery/__tests__/listQuery.test.ts rename to packages/cli/src/middlewares/list-query/__tests__/listQuery.test.ts index 6da542de3863f..b6ee124dfac4e 100644 --- a/packages/cli/src/middlewares/listQuery/__tests__/listQuery.test.ts +++ b/packages/cli/src/middlewares/list-query/__tests__/listQuery.test.ts @@ -1,7 +1,7 @@ -import { filterListQueryMiddleware } from '@/middlewares/listQuery/filter'; -import { selectListQueryMiddleware } from '@/middlewares/listQuery/select'; -import { paginationListQueryMiddleware } from '@/middlewares/listQuery/pagination'; -import * as ResponseHelper from '@/ResponseHelper'; +import { filterListQueryMiddleware } from '@/middlewares/list-query/filter'; +import { selectListQueryMiddleware } from '@/middlewares/list-query/select'; +import { paginationListQueryMiddleware } from '@/middlewares/list-query/pagination'; +import * as ResponseHelper from '@/response-helper'; import type { ListQuery } from '@/requests'; import type { Response, NextFunction } from 'express'; diff --git a/packages/cli/src/middlewares/listQuery/dtos/base.filter.dto.ts b/packages/cli/src/middlewares/list-query/dtos/base.filter.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/base.filter.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/base.filter.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/base.select.dto.ts b/packages/cli/src/middlewares/list-query/dtos/base.select.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/base.select.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/base.select.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/credentials.filter.dto.ts b/packages/cli/src/middlewares/list-query/dtos/credentials.filter.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/credentials.filter.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/credentials.filter.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/credentials.select.dto.ts b/packages/cli/src/middlewares/list-query/dtos/credentials.select.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/credentials.select.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/credentials.select.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/pagination.dto.ts b/packages/cli/src/middlewares/list-query/dtos/pagination.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/pagination.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/pagination.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/user.filter.dto.ts b/packages/cli/src/middlewares/list-query/dtos/user.filter.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/user.filter.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/user.filter.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/user.select.dto.ts b/packages/cli/src/middlewares/list-query/dtos/user.select.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/user.select.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/user.select.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/workflow.filter.dto.ts b/packages/cli/src/middlewares/list-query/dtos/workflow.filter.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/workflow.filter.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/workflow.filter.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/dtos/workflow.select.dto.ts b/packages/cli/src/middlewares/list-query/dtos/workflow.select.dto.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/dtos/workflow.select.dto.ts rename to packages/cli/src/middlewares/list-query/dtos/workflow.select.dto.ts diff --git a/packages/cli/src/middlewares/listQuery/filter.ts b/packages/cli/src/middlewares/list-query/filter.ts similarity index 95% rename from packages/cli/src/middlewares/listQuery/filter.ts rename to packages/cli/src/middlewares/list-query/filter.ts index 9db1d85cd8392..b3216308eaa2a 100644 --- a/packages/cli/src/middlewares/listQuery/filter.ts +++ b/packages/cli/src/middlewares/list-query/filter.ts @@ -1,4 +1,4 @@ -import * as ResponseHelper from '@/ResponseHelper'; +import * as ResponseHelper from '@/response-helper'; import { WorkflowFilter } from './dtos/workflow.filter.dto'; import { CredentialsFilter } from './dtos/credentials.filter.dto'; import { UserFilter } from './dtos/user.filter.dto'; diff --git a/packages/cli/src/middlewares/listQuery/index.ts b/packages/cli/src/middlewares/list-query/index.ts similarity index 100% rename from packages/cli/src/middlewares/listQuery/index.ts rename to packages/cli/src/middlewares/list-query/index.ts diff --git a/packages/cli/src/middlewares/listQuery/pagination.ts b/packages/cli/src/middlewares/list-query/pagination.ts similarity index 93% rename from packages/cli/src/middlewares/listQuery/pagination.ts rename to packages/cli/src/middlewares/list-query/pagination.ts index cb101af8c19d2..e9595a24c483a 100644 --- a/packages/cli/src/middlewares/listQuery/pagination.ts +++ b/packages/cli/src/middlewares/list-query/pagination.ts @@ -1,5 +1,5 @@ import { toError } from '@/utils'; -import * as ResponseHelper from '@/ResponseHelper'; +import * as ResponseHelper from '@/response-helper'; import { Pagination } from './dtos/pagination.dto'; import type { ListQuery } from '@/requests'; import type { RequestHandler } from 'express'; diff --git a/packages/cli/src/middlewares/listQuery/select.ts b/packages/cli/src/middlewares/list-query/select.ts similarity index 95% rename from packages/cli/src/middlewares/listQuery/select.ts rename to packages/cli/src/middlewares/list-query/select.ts index 6511410a8c2d5..35e6f17cd96f3 100644 --- a/packages/cli/src/middlewares/listQuery/select.ts +++ b/packages/cli/src/middlewares/list-query/select.ts @@ -1,7 +1,7 @@ import { WorkflowSelect } from './dtos/workflow.select.dto'; import { UserSelect } from './dtos/user.select.dto'; import { CredentialsSelect } from './dtos/credentials.select.dto'; -import * as ResponseHelper from '@/ResponseHelper'; +import * as ResponseHelper from '@/response-helper'; import { toError } from '@/utils'; import type { RequestHandler } from 'express'; diff --git a/packages/cli/src/NodeTypes.ts b/packages/cli/src/node-types.ts similarity index 98% rename from packages/cli/src/NodeTypes.ts rename to packages/cli/src/node-types.ts index 4d9e773167e3f..dc8ea2860cda9 100644 --- a/packages/cli/src/NodeTypes.ts +++ b/packages/cli/src/node-types.ts @@ -8,7 +8,7 @@ import type { } from 'n8n-workflow'; import { ApplicationError, NodeHelpers } from 'n8n-workflow'; import { Service } from 'typedi'; -import { LoadNodesAndCredentials } from './LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from './load-nodes-and-credentials'; import { join, dirname } from 'path'; import { readdir } from 'fs/promises'; import type { Dirent } from 'fs'; diff --git a/packages/cli/src/permissions/checkAccess.ts b/packages/cli/src/permissions/check-access.ts similarity index 100% rename from packages/cli/src/permissions/checkAccess.ts rename to packages/cli/src/permissions/check-access.ts diff --git a/packages/cli/src/push/__tests__/websocket.push.test.ts b/packages/cli/src/push/__tests__/websocket.push.test.ts index f1a0e577f9ad8..81d4fda0fb7b7 100644 --- a/packages/cli/src/push/__tests__/websocket.push.test.ts +++ b/packages/cli/src/push/__tests__/websocket.push.test.ts @@ -3,7 +3,7 @@ import { EventEmitter } from 'events'; import type WebSocket from 'ws'; import { WebSocketPush } from '@/push/websocket.push'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { PushDataExecutionRecovered } from '@/Interfaces'; import { mockInstance } from '@test/mocking'; diff --git a/packages/cli/src/push/abstract.push.ts b/packages/cli/src/push/abstract.push.ts index e9ada3c4bb0f5..67beb7f30a8a8 100644 --- a/packages/cli/src/push/abstract.push.ts +++ b/packages/cli/src/push/abstract.push.ts @@ -1,6 +1,6 @@ import { assert, jsonStringify } from 'n8n-workflow'; import type { IPushDataType } from '@/Interfaces'; -import type { Logger } from '@/Logger'; +import type { Logger } from '@/logger'; /** * Abstract class for two-way push communication. diff --git a/packages/cli/src/push/index.ts b/packages/cli/src/push/index.ts index a946348430133..2336862eb7fa7 100644 --- a/packages/cli/src/push/index.ts +++ b/packages/cli/src/push/index.ts @@ -7,7 +7,7 @@ import { parse as parseUrl } from 'url'; import { Container, Service } from 'typedi'; import config from '@/config'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { OnShutdown } from '@/decorators/on-shutdown'; import { AuthService } from '@/auth/auth.service'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { IPushDataType } from '@/Interfaces'; diff --git a/packages/cli/src/push/sse.push.ts b/packages/cli/src/push/sse.push.ts index 8367c74507c15..38779ed730f9e 100644 --- a/packages/cli/src/push/sse.push.ts +++ b/packages/cli/src/push/sse.push.ts @@ -1,7 +1,7 @@ import SSEChannel from 'sse-channel'; import { Service } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { AbstractPush } from './abstract.push'; import type { PushRequest, PushResponse } from './types'; diff --git a/packages/cli/src/push/websocket.push.ts b/packages/cli/src/push/websocket.push.ts index 04815038ce714..733eebdc60532 100644 --- a/packages/cli/src/push/websocket.push.ts +++ b/packages/cli/src/push/websocket.push.ts @@ -1,6 +1,6 @@ import type WebSocket from 'ws'; import { Service } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { AbstractPush } from './abstract.push'; function heartbeat(this: WebSocket) { diff --git a/packages/cli/src/ResponseHelper.ts b/packages/cli/src/response-helper.ts similarity index 99% rename from packages/cli/src/ResponseHelper.ts rename to packages/cli/src/response-helper.ts index 3d172521d9759..aebef56f0c8be 100644 --- a/packages/cli/src/ResponseHelper.ts +++ b/packages/cli/src/response-helper.ts @@ -11,7 +11,7 @@ import { Readable } from 'node:stream'; import { inDevelopment } from '@/constants'; import { ResponseError } from './errors/response-errors/abstract/response.error'; import Container from 'typedi'; -import { Logger } from './Logger'; +import { Logger } from './logger'; export function sendSuccessResponse( res: Response, diff --git a/packages/cli/src/scaling/job-processor.ts b/packages/cli/src/scaling/job-processor.ts index 693c9e3a74fb7..8618424e3562c 100644 --- a/packages/cli/src/scaling/job-processor.ts +++ b/packages/cli/src/scaling/job-processor.ts @@ -1,12 +1,12 @@ import { Service } from 'typedi'; import { BINARY_ENCODING, ApplicationError, Workflow } from 'n8n-workflow'; import { WorkflowExecute } from 'n8n-core'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import config from '@/config'; import { ExecutionRepository } from '@/databases/repositories/execution.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; -import { NodeTypes } from '@/NodeTypes'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; +import { NodeTypes } from '@/node-types'; import type { ExecutionStatus, IExecuteResponsePromiseData, IRun } from 'n8n-workflow'; import type { Job, JobId, JobResult, RunningJob, RunningJobSummary } from './types'; import type PCancelable from 'p-cancelable'; diff --git a/packages/cli/src/scaling/scaling.service.ts b/packages/cli/src/scaling/scaling.service.ts index 1a8bc9e173798..4dbdce1aac837 100644 --- a/packages/cli/src/scaling/scaling.service.ts +++ b/packages/cli/src/scaling/scaling.service.ts @@ -1,11 +1,11 @@ import Container, { Service } from 'typedi'; import { ApplicationError, BINARY_ENCODING, sleep, jsonStringify } from 'n8n-workflow'; -import { ActiveExecutions } from '@/ActiveExecutions'; +import { ActiveExecutions } from '@/active-executions'; import config from '@/config'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { MaxStalledCountError } from '@/errors/max-stalled-count.error'; import { HIGHEST_SHUTDOWN_PRIORITY, Time } from '@/constants'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { OnShutdown } from '@/decorators/on-shutdown'; import { JOB_TYPE_NAME, QUEUE_NAME } from './constants'; import { JobProcessor } from './job-processor'; import type { diff --git a/packages/cli/src/SecretsHelpers.ts b/packages/cli/src/secrets-helpers.ts similarity index 91% rename from packages/cli/src/SecretsHelpers.ts rename to packages/cli/src/secrets-helpers.ts index 8555adb36eaac..082c3ea97d1a6 100644 --- a/packages/cli/src/SecretsHelpers.ts +++ b/packages/cli/src/secrets-helpers.ts @@ -1,6 +1,6 @@ import type { SecretsHelpersBase } from 'n8n-workflow'; import { Service } from 'typedi'; -import { ExternalSecretsManager } from './ExternalSecrets/ExternalSecretsManager.ee'; +import { ExternalSecretsManager } from './external-secrets/external-secrets-manager.ee'; @Service() export class SecretsHelper implements SecretsHelpersBase { diff --git a/packages/cli/src/security-audit/risk-reporters/CredentialsRiskReporter.ts b/packages/cli/src/security-audit/risk-reporters/credentials-risk-reporter.ts similarity index 100% rename from packages/cli/src/security-audit/risk-reporters/CredentialsRiskReporter.ts rename to packages/cli/src/security-audit/risk-reporters/credentials-risk-reporter.ts diff --git a/packages/cli/src/security-audit/risk-reporters/DatabaseRiskReporter.ts b/packages/cli/src/security-audit/risk-reporters/database-risk-reporter.ts similarity index 100% rename from packages/cli/src/security-audit/risk-reporters/DatabaseRiskReporter.ts rename to packages/cli/src/security-audit/risk-reporters/database-risk-reporter.ts diff --git a/packages/cli/src/security-audit/risk-reporters/FilesystemRiskReporter.ts b/packages/cli/src/security-audit/risk-reporters/filesystem-risk-reporter.ts similarity index 100% rename from packages/cli/src/security-audit/risk-reporters/FilesystemRiskReporter.ts rename to packages/cli/src/security-audit/risk-reporters/filesystem-risk-reporter.ts diff --git a/packages/cli/src/security-audit/risk-reporters/InstanceRiskReporter.ts b/packages/cli/src/security-audit/risk-reporters/instance-risk-reporter.ts similarity index 99% rename from packages/cli/src/security-audit/risk-reporters/InstanceRiskReporter.ts rename to packages/cli/src/security-audit/risk-reporters/instance-risk-reporter.ts index 16e53b400c4d4..323d1173f0bf9 100644 --- a/packages/cli/src/security-audit/risk-reporters/InstanceRiskReporter.ts +++ b/packages/cli/src/security-audit/risk-reporters/instance-risk-reporter.ts @@ -14,7 +14,7 @@ import { getN8nPackageJson, inDevelopment } from '@/constants'; import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; import type { RiskReporter, Risk, n8n } from '@/security-audit/types'; import { isApiEnabled } from '@/PublicApi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { GlobalConfig } from '@n8n/config'; @Service() diff --git a/packages/cli/src/security-audit/risk-reporters/NodesRiskReporter.ts b/packages/cli/src/security-audit/risk-reporters/nodes-risk-reporter.ts similarity index 98% rename from packages/cli/src/security-audit/risk-reporters/NodesRiskReporter.ts rename to packages/cli/src/security-audit/risk-reporters/nodes-risk-reporter.ts index 55fe0a8c0c7ce..9bd7b584663fe 100644 --- a/packages/cli/src/security-audit/risk-reporters/NodesRiskReporter.ts +++ b/packages/cli/src/security-audit/risk-reporters/nodes-risk-reporter.ts @@ -1,7 +1,7 @@ import * as path from 'path'; import glob from 'fast-glob'; import { Service } from 'typedi'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { getNodeTypes } from '@/security-audit/utils'; import { OFFICIAL_RISKY_NODE_TYPES, diff --git a/packages/cli/src/security-audit/SecurityAudit.service.ts b/packages/cli/src/security-audit/security-audit.service.ts similarity index 83% rename from packages/cli/src/security-audit/SecurityAudit.service.ts rename to packages/cli/src/security-audit/security-audit.service.ts index afec146065bc0..3c27f647bcc64 100644 --- a/packages/cli/src/security-audit/SecurityAudit.service.ts +++ b/packages/cli/src/security-audit/security-audit.service.ts @@ -51,8 +51,16 @@ export class SecurityAuditService { for (const category of categories) { const className = category.charAt(0).toUpperCase() + category.slice(1) + 'RiskReporter'; + const toFilename: Record = { + CredentialsRiskReporter: 'credentials-risk-reporter', + DatabaseRiskReporter: 'database-risk-reporter', + FilesystemRiskReporter: 'filesystem-risk-reporter', + InstanceRiskReporter: 'instance-risk-reporter', + NodesRiskReporter: 'nodes-risk-reporter', + }; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - const RiskReporterModule = await import(`./risk-reporters/${className}`); + const RiskReporterModule = await import(`./risk-reporters/${toFilename[className]}`); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const RiskReporterClass = RiskReporterModule[className] as { new (): RiskReporter }; diff --git a/packages/cli/src/Server.ts b/packages/cli/src/server.ts similarity index 95% rename from packages/cli/src/Server.ts rename to packages/cli/src/server.ts index 49b358f0f254c..30de80295ab6b 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/server.ts @@ -24,15 +24,15 @@ import type { APIRequest } from '@/requests'; import { ControllerRegistry } from '@/decorators'; import { isApiEnabled, loadPublicApiVersions } from '@/PublicApi'; import type { ICredentialsOverwrite } from '@/Interfaces'; -import { CredentialsOverwrites } from '@/CredentialsOverwrites'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; -import * as ResponseHelper from '@/ResponseHelper'; +import { CredentialsOverwrites } from '@/credentials-overwrites'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; +import * as ResponseHelper from '@/response-helper'; import { setupPushServer, setupPushHandler } from '@/push'; -import { isLdapEnabled } from '@/Ldap/helpers.ee'; -import { AbstractServer } from '@/AbstractServer'; +import { isLdapEnabled } from '@/ldap/helpers.ee'; +import { AbstractServer } from '@/abstract-server'; import { PostHogClient } from '@/posthog'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { handleMfaDisable, isMfaFeatureEnabled } from '@/Mfa/helpers'; +import { handleMfaDisable, isMfaFeatureEnabled } from '@/mfa/helpers'; import type { FrontendService } from '@/services/frontend.service'; import { OrchestrationService } from '@/services/orchestration.service'; import { LogStreamingEventRelay } from '@/events/log-streaming-event-relay'; @@ -61,9 +61,9 @@ import '@/controllers/workflowStatistics.controller'; import '@/credentials/credentials.controller'; import '@/eventbus/eventBus.controller'; import '@/executions/executions.controller'; -import '@/ExternalSecrets/ExternalSecrets.controller.ee'; +import '@/external-secrets/external-secrets.controller.ee'; import '@/license/license.controller'; -import '@/workflows/workflowHistory/workflowHistory.controller.ee'; +import '@/workflows/workflow-history/workflow-history.controller.ee'; import '@/workflows/workflows.controller'; import { EventService } from './events/event.service'; @@ -115,8 +115,8 @@ export class Server extends AbstractServer { } if (isLdapEnabled()) { - const { LdapService } = await import('@/Ldap/ldap.service.ee'); - await import('@/Ldap/ldap.controller.ee'); + const { LdapService } = await import('@/ldap/ldap.service.ee'); + await import('@/ldap/ldap.controller.ee'); await Container.get(LdapService).init(); } diff --git a/packages/cli/src/services/__tests__/activeWorkflows.service.test.ts b/packages/cli/src/services/__tests__/activeWorkflows.service.test.ts index 2089c94690d76..6b008e281bdae 100644 --- a/packages/cli/src/services/__tests__/activeWorkflows.service.test.ts +++ b/packages/cli/src/services/__tests__/activeWorkflows.service.test.ts @@ -1,4 +1,4 @@ -import type { ActivationErrorsService } from '@/ActivationErrors.service'; +import type { ActivationErrorsService } from '@/activation-errors.service'; import type { User } from '@db/entities/User'; import type { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import type { WorkflowRepository } from '@db/repositories/workflow.repository'; diff --git a/packages/cli/src/services/__tests__/communityPackages.service.test.ts b/packages/cli/src/services/__tests__/communityPackages.service.test.ts index ec7ce61ba9c1c..7b2431c172311 100644 --- a/packages/cli/src/services/__tests__/communityPackages.service.test.ts +++ b/packages/cli/src/services/__tests__/communityPackages.service.test.ts @@ -19,8 +19,8 @@ import { CommunityPackagesService } from '@/services/communityPackages.service'; import { InstalledNodesRepository } from '@db/repositories/installedNodes.repository'; import { InstalledPackagesRepository } from '@db/repositories/installedPackages.repository'; import { InstalledNodes } from '@db/entities/InstalledNodes'; -import type { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; -import type { License } from '@/License'; +import type { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; +import type { License } from '@/license'; import { mockInstance } from '@test/mocking'; import { COMMUNITY_NODE_VERSION, COMMUNITY_PACKAGE_VERSION } from '@test-integration/constants'; diff --git a/packages/cli/src/services/__tests__/credentials-tester.service.test.ts b/packages/cli/src/services/__tests__/credentials-tester.service.test.ts index e2987f5c84293..e9f98c7a8b015 100644 --- a/packages/cli/src/services/__tests__/credentials-tester.service.test.ts +++ b/packages/cli/src/services/__tests__/credentials-tester.service.test.ts @@ -1,8 +1,8 @@ import { CredentialsTester } from '@/services/credentials-tester.service'; import mock from 'jest-mock-extended/lib/Mock'; -import type { CredentialTypes } from '@/CredentialTypes'; +import type { CredentialTypes } from '@/credential-types'; import type { ICredentialType, INodeType } from 'n8n-workflow'; -import type { NodeTypes } from '@/NodeTypes'; +import type { NodeTypes } from '@/node-types'; describe('CredentialsTester', () => { const credentialTypes = mock(); diff --git a/packages/cli/src/services/__tests__/orchestration.service.test.ts b/packages/cli/src/services/__tests__/orchestration.service.test.ts index ed4883768ce08..99c92ad0700e8 100644 --- a/packages/cli/src/services/__tests__/orchestration.service.test.ts +++ b/packages/cli/src/services/__tests__/orchestration.service.test.ts @@ -13,10 +13,10 @@ import { handleWorkerResponseMessageMain } from '@/services/orchestration/main/h import { handleCommandMessageMain } from '@/services/orchestration/main/handleCommandMessageMain'; import { OrchestrationHandlerMainService } from '@/services/orchestration/main/orchestration.handler.main.service'; import * as helpers from '@/services/orchestration/helpers'; -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; -import { Logger } from '@/Logger'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; +import { Logger } from '@/logger'; import { Push } from '@/push'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { mockInstance } from '@test/mocking'; import { RedisClientService } from '@/services/redis/redis-client.service'; import type { MainResponseReceivedHandlerOptions } from '../orchestration/main/types'; diff --git a/packages/cli/src/services/__tests__/redis.service.test.ts b/packages/cli/src/services/__tests__/redis.service.test.ts index 1d9652983735c..1e282e6df1990 100644 --- a/packages/cli/src/services/__tests__/redis.service.test.ts +++ b/packages/cli/src/services/__tests__/redis.service.test.ts @@ -1,5 +1,5 @@ import Container from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import config from '@/config'; import { RedisService } from '@/services/redis.service'; import { mockInstance } from '@test/mocking'; diff --git a/packages/cli/src/services/activeWorkflows.service.ts b/packages/cli/src/services/activeWorkflows.service.ts index ae2c083d7214a..c900795a3a8b7 100644 --- a/packages/cli/src/services/activeWorkflows.service.ts +++ b/packages/cli/src/services/activeWorkflows.service.ts @@ -3,9 +3,9 @@ import { Service } from 'typedi'; import type { User } from '@db/entities/User'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { ActivationErrorsService } from '@/ActivationErrors.service'; +import { ActivationErrorsService } from '@/activation-errors.service'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; @Service() export class ActiveWorkflowsService { diff --git a/packages/cli/src/services/aiAsisstant.service.ts b/packages/cli/src/services/aiAsisstant.service.ts index 39a2d950ef1b6..62c4778cfb590 100644 --- a/packages/cli/src/services/aiAsisstant.service.ts +++ b/packages/cli/src/services/aiAsisstant.service.ts @@ -2,7 +2,7 @@ import { Service } from 'typedi'; import type { AiAssistantSDK } from '@n8n_io/ai-assistant-sdk'; import { AiAssistantClient } from '@n8n_io/ai-assistant-sdk'; import { assert, type IUser } from 'n8n-workflow'; -import { License } from '../License'; +import { License } from '../license'; import { N8N_VERSION } from '../constants'; import config from '@/config'; import type { AiAssistantRequest } from '@/requests'; diff --git a/packages/cli/src/services/communityPackages.service.ts b/packages/cli/src/services/communityPackages.service.ts index 985fb44fabdc7..bfe7f6fef8654 100644 --- a/packages/cli/src/services/communityPackages.service.ts +++ b/packages/cli/src/services/communityPackages.service.ts @@ -23,10 +23,10 @@ import { } from '@/constants'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; import type { CommunityPackages } from '@/Interfaces'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; -import { Logger } from '@/Logger'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; +import { Logger } from '@/logger'; import { OrchestrationService } from './orchestration.service'; -import { License } from '@/License'; +import { License } from '@/license'; const DEFAULT_REGISTRY = 'https://registry.npmjs.org'; diff --git a/packages/cli/src/services/credentials-tester.service.ts b/packages/cli/src/services/credentials-tester.service.ts index c9ddc7b15e02f..4f3475d30318b 100644 --- a/packages/cli/src/services/credentials-tester.service.ts +++ b/packages/cli/src/services/credentials-tester.service.ts @@ -34,14 +34,14 @@ import { ApplicationError, } from 'n8n-workflow'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; import type { User } from '@db/entities/User'; -import { NodeTypes } from '@/NodeTypes'; -import { CredentialTypes } from '@/CredentialTypes'; +import { NodeTypes } from '@/node-types'; +import { CredentialTypes } from '@/credential-types'; import { RESPONSE_ERROR_MESSAGES } from '../constants'; import { isObjectLiteral } from '../utils'; -import { Logger } from '@/Logger'; -import { CredentialsHelper } from '../CredentialsHelper'; +import { Logger } from '@/logger'; +import { CredentialsHelper } from '../credentials-helper'; const { OAUTH2_CREDENTIAL_TEST_SUCCEEDED, OAUTH2_CREDENTIAL_TEST_FAILED } = RESPONSE_ERROR_MESSAGES; diff --git a/packages/cli/src/services/dynamicNodeParameters.service.ts b/packages/cli/src/services/dynamicNodeParameters.service.ts index f3b0f7e192ba3..d69f7893730b1 100644 --- a/packages/cli/src/services/dynamicNodeParameters.service.ts +++ b/packages/cli/src/services/dynamicNodeParameters.service.ts @@ -20,7 +20,7 @@ import type { } from 'n8n-workflow'; import { Workflow, RoutingNode, ApplicationError } from 'n8n-workflow'; import { NodeExecuteFunctions } from 'n8n-core'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; @Service() export class DynamicNodeParametersService { diff --git a/packages/cli/src/services/frontend.service.ts b/packages/cli/src/services/frontend.service.ts index de0abdbfbbe37..24f8a3505b0de 100644 --- a/packages/cli/src/services/frontend.service.ts +++ b/packages/cli/src/services/frontend.service.ts @@ -15,21 +15,21 @@ import { InstanceSettings } from 'n8n-core'; import config from '@/config'; import { LICENSE_FEATURES } from '@/constants'; -import { CredentialsOverwrites } from '@/CredentialsOverwrites'; -import { CredentialTypes } from '@/CredentialTypes'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; -import { License } from '@/License'; -import { getCurrentAuthenticationMethod } from '@/sso/ssoHelpers'; -import { getLdapLoginLabel } from '@/Ldap/helpers.ee'; -import { getSamlLoginLabel } from '@/sso/saml/samlHelpers'; +import { CredentialsOverwrites } from '@/credentials-overwrites'; +import { CredentialTypes } from '@/credential-types'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; +import { License } from '@/license'; +import { getCurrentAuthenticationMethod } from '@/sso/sso-helpers'; +import { getLdapLoginLabel } from '@/ldap/helpers.ee'; +import { getSamlLoginLabel } from '@/sso/saml/saml-helpers'; import { getVariablesLimit } from '@/environments/variables/environmentHelpers'; import { getWorkflowHistoryLicensePruneTime, getWorkflowHistoryPruneTime, -} from '@/workflows/workflowHistory/workflowHistoryHelper.ee'; -import { UserManagementMailer } from '@/UserManagement/email'; +} from '@/workflows/workflow-history/workflow-history-helper.ee'; +import { UserManagementMailer } from '@/user-management/email'; import type { CommunityPackagesService } from '@/services/communityPackages.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { UrlService } from './url.service'; import { EventService } from '@/events/event.service'; import { isApiEnabled } from '@/PublicApi'; diff --git a/packages/cli/src/services/import.service.ts b/packages/cli/src/services/import.service.ts index 96892e2745273..7cf4a6493c4fa 100644 --- a/packages/cli/src/services/import.service.ts +++ b/packages/cli/src/services/import.service.ts @@ -2,12 +2,12 @@ import { Service } from 'typedi'; import { v4 as uuid } from 'uuid'; import { type INode, type INodeCredentialsDetails } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import * as Db from '@/Db'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import { TagRepository } from '@db/repositories/tag.repository'; import { SharedWorkflow } from '@db/entities/SharedWorkflow'; -import { replaceInvalidCredentials } from '@/WorkflowHelpers'; +import { replaceInvalidCredentials } from '@/workflow-helpers'; import { Project } from '@db/entities/Project'; import { WorkflowEntity } from '@db/entities/WorkflowEntity'; import { WorkflowTagMapping } from '@db/entities/WorkflowTagMapping'; diff --git a/packages/cli/src/services/jwt.service.ts b/packages/cli/src/services/jwt.service.ts index 7f9f4fdd84c0a..bcc2cdcbadb9c 100644 --- a/packages/cli/src/services/jwt.service.ts +++ b/packages/cli/src/services/jwt.service.ts @@ -23,11 +23,15 @@ export class JwtService { } } - public sign(payload: object, options: jwt.SignOptions = {}): string { + sign(payload: object, options: jwt.SignOptions = {}): string { return jwt.sign(payload, this.jwtSecret, options); } - public verify(token: string, options: jwt.VerifyOptions = {}) { + decode(token: string) { + return jwt.decode(token) as JwtPayload; + } + + verify(token: string, options: jwt.VerifyOptions = {}) { return jwt.verify(token, this.jwtSecret, options) as T; } } diff --git a/packages/cli/src/services/orchestration.service.ts b/packages/cli/src/services/orchestration.service.ts index 283470f4d2114..f9bfc1372855c 100644 --- a/packages/cli/src/services/orchestration.service.ts +++ b/packages/cli/src/services/orchestration.service.ts @@ -1,5 +1,5 @@ import { Service } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import config from '@/config'; import type { RedisServicePubSubPublisher } from './redis/RedisServicePubSubPublisher'; import type { RedisServiceBaseCommand, RedisServiceCommand } from './redis/RedisServiceCommands'; diff --git a/packages/cli/src/services/orchestration/helpers.ts b/packages/cli/src/services/orchestration/helpers.ts index c5ccd4363656e..262c36ccee8ca 100644 --- a/packages/cli/src/services/orchestration/helpers.ts +++ b/packages/cli/src/services/orchestration/helpers.ts @@ -1,6 +1,6 @@ import { Container } from 'typedi'; import { jsonParse } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { RedisServiceCommandObject } from '../redis/RedisServiceCommands'; import { COMMAND_REDIS_CHANNEL } from '../redis/RedisConstants'; import * as os from 'os'; diff --git a/packages/cli/src/services/orchestration/main/MultiMainSetup.ee.ts b/packages/cli/src/services/orchestration/main/MultiMainSetup.ee.ts index 89c6ef725ab45..82c28d61f3315 100644 --- a/packages/cli/src/services/orchestration/main/MultiMainSetup.ee.ts +++ b/packages/cli/src/services/orchestration/main/MultiMainSetup.ee.ts @@ -3,7 +3,7 @@ import { Service } from 'typedi'; import { TIME } from '@/constants'; import { InstanceSettings } from 'n8n-core'; import { ErrorReporterProxy as EventReporter } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { RedisServicePubSubPublisher } from '@/services/redis/RedisServicePubSubPublisher'; import { RedisClientService } from '@/services/redis/redis-client.service'; import { TypedEmitter } from '@/TypedEmitter'; diff --git a/packages/cli/src/services/orchestration/main/handleCommandMessageMain.ts b/packages/cli/src/services/orchestration/main/handleCommandMessageMain.ts index 9a7b6b5640dd0..1cdb3cf7f1cef 100644 --- a/packages/cli/src/services/orchestration/main/handleCommandMessageMain.ts +++ b/packages/cli/src/services/orchestration/main/handleCommandMessageMain.ts @@ -2,12 +2,12 @@ import { Container } from 'typedi'; import { debounceMessageReceiver, messageToRedisServiceCommandObject } from '../helpers'; import config from '@/config'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; -import { License } from '@/License'; -import { Logger } from '@/Logger'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; +import { License } from '@/license'; +import { Logger } from '@/logger'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { Push } from '@/push'; -import { TestWebhooks } from '@/webhooks/TestWebhooks'; +import { TestWebhooks } from '@/webhooks/test-webhooks'; import { OrchestrationService } from '@/services/orchestration.service'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { CommunityPackagesService } from '@/services/communityPackages.service'; diff --git a/packages/cli/src/services/orchestration/main/handleWorkerResponseMessageMain.ts b/packages/cli/src/services/orchestration/main/handleWorkerResponseMessageMain.ts index 4e60d53741333..b623f0b4f26a4 100644 --- a/packages/cli/src/services/orchestration/main/handleWorkerResponseMessageMain.ts +++ b/packages/cli/src/services/orchestration/main/handleWorkerResponseMessageMain.ts @@ -1,6 +1,6 @@ import { jsonParse } from 'n8n-workflow'; import Container from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { Push } from '../../../push'; import type { RedisServiceWorkerResponseObject } from '../../redis/RedisServiceCommands'; import { WORKER_RESPONSE_REDIS_CHANNEL } from '@/services/redis/RedisConstants'; diff --git a/packages/cli/src/services/orchestration/webhook/handleCommandMessageWebhook.ts b/packages/cli/src/services/orchestration/webhook/handleCommandMessageWebhook.ts index e6f6e656280a8..c6f746db639b1 100644 --- a/packages/cli/src/services/orchestration/webhook/handleCommandMessageWebhook.ts +++ b/packages/cli/src/services/orchestration/webhook/handleCommandMessageWebhook.ts @@ -1,5 +1,5 @@ -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; -import { License } from '@/License'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; +import { License } from '@/license'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; import Container from 'typedi'; import { Logger } from 'winston'; diff --git a/packages/cli/src/services/orchestration/worker/handleCommandMessageWorker.ts b/packages/cli/src/services/orchestration/worker/handleCommandMessageWorker.ts index 23c96e1a41cd9..52727c37e199e 100644 --- a/packages/cli/src/services/orchestration/worker/handleCommandMessageWorker.ts +++ b/packages/cli/src/services/orchestration/worker/handleCommandMessageWorker.ts @@ -3,12 +3,12 @@ import Container from 'typedi'; import type { RedisServiceCommandObject } from '@/services/redis/RedisServiceCommands'; import { COMMAND_REDIS_CHANNEL } from '@/services/redis/RedisConstants'; import * as os from 'os'; -import { License } from '@/License'; +import { License } from '@/license'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; import { debounceMessageReceiver, getOsCpuString } from '../helpers'; import type { WorkerCommandReceivedHandlerOptions } from './types'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { N8N_VERSION } from '@/constants'; import { CommunityPackagesService } from '@/services/communityPackages.service'; diff --git a/packages/cli/src/services/project.service.ts b/packages/cli/src/services/project.service.ts index 8df30da1e9037..69050190176a2 100644 --- a/packages/cli/src/services/project.service.ts +++ b/packages/cli/src/services/project.service.ts @@ -17,7 +17,7 @@ import { SharedWorkflowRepository } from '@/databases/repositories/sharedWorkflo import { SharedCredentialsRepository } from '@/databases/repositories/sharedCredentials.repository'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { CacheService } from './cache/cache.service'; -import { License } from '@/License'; +import { License } from '@/license'; import { UNLIMITED_LICENSE_QUOTA } from '@/constants'; import { ApplicationError } from 'n8n-workflow'; diff --git a/packages/cli/src/services/pruning.service.ts b/packages/cli/src/services/pruning.service.ts index 7f824836ae4ee..dab4bbf8e8762 100644 --- a/packages/cli/src/services/pruning.service.ts +++ b/packages/cli/src/services/pruning.service.ts @@ -3,9 +3,9 @@ import { BinaryDataService, InstanceSettings } from 'n8n-core'; import { inTest, TIME } from '@/constants'; import config from '@/config'; import { ExecutionRepository } from '@db/repositories/execution.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { jsonStringify } from 'n8n-workflow'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { OnShutdown } from '@/decorators/on-shutdown'; import { OrchestrationService } from './orchestration.service'; @Service() diff --git a/packages/cli/src/services/redis/RedisServiceBaseClasses.ts b/packages/cli/src/services/redis/RedisServiceBaseClasses.ts index b9db6125b043c..d31044bb5c213 100644 --- a/packages/cli/src/services/redis/RedisServiceBaseClasses.ts +++ b/packages/cli/src/services/redis/RedisServiceBaseClasses.ts @@ -2,7 +2,7 @@ import type Redis from 'ioredis'; import type { Cluster } from 'ioredis'; import { Service } from 'typedi'; import config from '@/config'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { RedisClientService } from './redis-client.service'; import type { RedisClientType } from './redis.types'; diff --git a/packages/cli/src/services/redis/redis-client.service.ts b/packages/cli/src/services/redis/redis-client.service.ts index 21f74bf074d33..bf70d8114d37e 100644 --- a/packages/cli/src/services/redis/redis-client.service.ts +++ b/packages/cli/src/services/redis/redis-client.service.ts @@ -1,10 +1,10 @@ import { Service } from 'typedi'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import ioRedis from 'ioredis'; import type { Cluster, RedisOptions } from 'ioredis'; import type { RedisClientType } from './redis.types'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { OnShutdown } from '@/decorators/on-shutdown'; import { LOWEST_SHUTDOWN_PRIORITY } from '@/constants'; import { GlobalConfig } from '@n8n/config'; diff --git a/packages/cli/src/services/role.service.ts b/packages/cli/src/services/role.service.ts index 292db6dfa32ec..02631b20f0086 100644 --- a/packages/cli/src/services/role.service.ts +++ b/packages/cli/src/services/role.service.ts @@ -26,7 +26,7 @@ import type { ListQuery } from '@/requests'; import { combineScopes, type Resource, type Scope } from '@n8n/permissions'; import { Service } from 'typedi'; import { ApplicationError } from 'n8n-workflow'; -import { License } from '@/License'; +import { License } from '@/license'; import type { CredentialsEntity } from '@/databases/entities/CredentialsEntity'; export type RoleNamespace = 'global' | 'project' | 'credential' | 'workflow'; diff --git a/packages/cli/src/services/tag.service.ts b/packages/cli/src/services/tag.service.ts index 27f4ebd0f2e2a..141749cbf8bf7 100644 --- a/packages/cli/src/services/tag.service.ts +++ b/packages/cli/src/services/tag.service.ts @@ -1,9 +1,9 @@ import { TagRepository } from '@db/repositories/tag.repository'; import { Service } from 'typedi'; -import { validateEntity } from '@/GenericHelpers'; +import { validateEntity } from '@/generic-helpers'; import type { ITagWithCountDb } from '@/Interfaces'; import type { TagEntity } from '@db/entities/TagEntity'; -import { ExternalHooks } from '@/ExternalHooks'; +import { ExternalHooks } from '@/external-hooks'; type GetAllResult = T extends { withUsageCount: true } ? ITagWithCountDb[] : TagEntity[]; diff --git a/packages/cli/src/services/user.service.ts b/packages/cli/src/services/user.service.ts index 19b49fdb1927e..28bbe3d8a203d 100644 --- a/packages/cli/src/services/user.service.ts +++ b/packages/cli/src/services/user.service.ts @@ -6,8 +6,8 @@ import type { User, AssignableRole } from '@db/entities/User'; import { UserRepository } from '@db/repositories/user.repository'; import type { Invitation, PublicUser } from '@/Interfaces'; import type { PostHogClient } from '@/posthog'; -import { Logger } from '@/Logger'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { Logger } from '@/logger'; +import { UserManagementMailer } from '@/user-management/email'; import { UrlService } from '@/services/url.service'; import type { UserRequest } from '@/requests'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; diff --git a/packages/cli/src/services/workflow-statistics.service.ts b/packages/cli/src/services/workflow-statistics.service.ts index 262dae4f1c545..a58b6ffbbfbaf 100644 --- a/packages/cli/src/services/workflow-statistics.service.ts +++ b/packages/cli/src/services/workflow-statistics.service.ts @@ -3,7 +3,7 @@ import type { INode, IRun, IWorkflowBase } from 'n8n-workflow'; import { StatisticsNames } from '@db/entities/WorkflowStatistics'; import { WorkflowStatisticsRepository } from '@db/repositories/workflowStatistics.repository'; import { UserService } from '@/services/user.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { OwnershipService } from './ownership.service'; import { TypedEmitter } from '@/TypedEmitter'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/shutdown/__tests__/Shutdown.service.test.ts b/packages/cli/src/shutdown/__tests__/Shutdown.service.test.ts index ca85f785641b3..16f37b38281e1 100644 --- a/packages/cli/src/shutdown/__tests__/Shutdown.service.test.ts +++ b/packages/cli/src/shutdown/__tests__/Shutdown.service.test.ts @@ -1,7 +1,7 @@ import { ApplicationError, ErrorReporterProxy } from 'n8n-workflow'; import { mock } from 'jest-mock-extended'; -import type { ServiceClass } from '@/shutdown/Shutdown.service'; -import { ShutdownService } from '@/shutdown/Shutdown.service'; +import type { ServiceClass } from '@/shutdown/shutdown.service'; +import { ShutdownService } from '@/shutdown/shutdown.service'; import Container from 'typedi'; class MockComponent { diff --git a/packages/cli/src/shutdown/Shutdown.service.ts b/packages/cli/src/shutdown/shutdown.service.ts similarity index 99% rename from packages/cli/src/shutdown/Shutdown.service.ts rename to packages/cli/src/shutdown/shutdown.service.ts index 772463f23a7a8..f3927ec309a10 100644 --- a/packages/cli/src/shutdown/Shutdown.service.ts +++ b/packages/cli/src/shutdown/shutdown.service.ts @@ -1,7 +1,7 @@ import { Container, Service } from 'typedi'; import { ApplicationError, ErrorReporterProxy, assert } from 'n8n-workflow'; import type { Class } from 'n8n-core'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { LOWEST_SHUTDOWN_PRIORITY, HIGHEST_SHUTDOWN_PRIORITY } from '@/constants'; type HandlerFn = () => Promise | void; diff --git a/packages/cli/src/sso/saml/__tests__/saml.service.ee.test.ts b/packages/cli/src/sso/saml/__tests__/saml.service.ee.test.ts index 89d693fc98037..9821c89637a38 100644 --- a/packages/cli/src/sso/saml/__tests__/saml.service.ee.test.ts +++ b/packages/cli/src/sso/saml/__tests__/saml.service.ee.test.ts @@ -3,9 +3,9 @@ import type express from 'express'; import { SamlService } from '@/sso/saml/saml.service.ee'; import { mockInstance } from '@test/mocking'; import { UrlService } from '@/services/url.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { IdentityProviderInstance, ServiceProviderInstance } from 'samlify'; -import * as samlHelpers from '@/sso/saml/samlHelpers'; +import * as samlHelpers from '@/sso/saml/saml-helpers'; describe('SamlService', () => { const logger = mockInstance(Logger); diff --git a/packages/cli/src/sso/saml/__tests__/samlHelpers.test.ts b/packages/cli/src/sso/saml/__tests__/samlHelpers.test.ts index 778b1a0857156..17355524d3c5c 100644 --- a/packages/cli/src/sso/saml/__tests__/samlHelpers.test.ts +++ b/packages/cli/src/sso/saml/__tests__/samlHelpers.test.ts @@ -1,7 +1,7 @@ import { User } from '@/databases/entities/User'; import { generateNanoId } from '@/databases/utils/generators'; -import * as helpers from '@/sso/saml/samlHelpers'; -import type { SamlUserAttributes } from '@/sso/saml/types/samlUserAttributes'; +import * as helpers from '@/sso/saml/saml-helpers'; +import type { SamlUserAttributes } from '@/sso/saml/types/saml-user-attributes'; import { mockInstance } from '@test/mocking'; import { UserRepository } from '@/databases/repositories/user.repository'; import type { AuthIdentity } from '@/databases/entities/AuthIdentity'; diff --git a/packages/cli/src/sso/saml/middleware/samlEnabledMiddleware.ts b/packages/cli/src/sso/saml/middleware/saml-enabled-middleware.ts similarity index 97% rename from packages/cli/src/sso/saml/middleware/samlEnabledMiddleware.ts rename to packages/cli/src/sso/saml/middleware/saml-enabled-middleware.ts index e386541de02b8..e0bf2b1b01c1c 100644 --- a/packages/cli/src/sso/saml/middleware/samlEnabledMiddleware.ts +++ b/packages/cli/src/sso/saml/middleware/saml-enabled-middleware.ts @@ -1,5 +1,5 @@ import type { RequestHandler } from 'express'; -import { isSamlLicensed, isSamlLicensedAndEnabled } from '../samlHelpers'; +import { isSamlLicensed, isSamlLicensedAndEnabled } from '../saml-helpers'; export const samlLicensedAndEnabledMiddleware: RequestHandler = (_, res, next) => { if (isSamlLicensedAndEnabled()) { diff --git a/packages/cli/src/sso/saml/routes/saml.controller.ee.ts b/packages/cli/src/sso/saml/routes/saml.controller.ee.ts index 8169ee317bfee..621d03bec1c7e 100644 --- a/packages/cli/src/sso/saml/routes/saml.controller.ee.ts +++ b/packages/cli/src/sso/saml/routes/saml.controller.ee.ts @@ -15,18 +15,18 @@ import { getServiceProviderConfigTestReturnUrl, getServiceProviderEntityId, getServiceProviderReturnUrl, -} from '../serviceProvider.ee'; -import { getSamlConnectionTestSuccessView } from '../views/samlConnectionTestSuccess'; -import { getSamlConnectionTestFailedView } from '../views/samlConnectionTestFailed'; -import { isConnectionTestRequest, isSamlLicensedAndEnabled } from '../samlHelpers'; +} from '../service-provider.ee'; +import { getSamlConnectionTestSuccessView } from '../views/saml-connection-test-success'; +import { getSamlConnectionTestFailedView } from '../views/saml-connection-test-failed'; +import { isConnectionTestRequest, isSamlLicensedAndEnabled } from '../saml-helpers'; import type { SamlLoginBinding } from '../types'; import { samlLicensedAndEnabledMiddleware, samlLicensedMiddleware, -} from '../middleware/samlEnabledMiddleware'; +} from '../middleware/saml-enabled-middleware'; import { SamlService } from '../saml.service.ee'; import { SamlConfiguration } from '../types/requests'; -import { getInitSSOFormView } from '../views/initSsoPost'; +import { getInitSSOFormView } from '../views/init-sso-post'; import { EventService } from '@/events/event.service'; @RestController('/sso/saml') diff --git a/packages/cli/src/sso/saml/samlHelpers.ts b/packages/cli/src/sso/saml/saml-helpers.ts similarity index 95% rename from packages/cli/src/sso/saml/samlHelpers.ts rename to packages/cli/src/sso/saml/saml-helpers.ts index d7f53900e5a43..c2dec7637f8e6 100644 --- a/packages/cli/src/sso/saml/samlHelpers.ts +++ b/packages/cli/src/sso/saml/saml-helpers.ts @@ -9,20 +9,20 @@ import { UserRepository } from '@db/repositories/user.repository'; import { AuthIdentityRepository } from '@db/repositories/authIdentity.repository'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { AuthError } from '@/errors/response-errors/auth.error'; -import { License } from '@/License'; +import { License } from '@/license'; import { PasswordUtility } from '@/services/password.utility'; -import type { SamlPreferences } from './types/samlPreferences'; -import type { SamlUserAttributes } from './types/samlUserAttributes'; -import type { SamlAttributeMapping } from './types/samlAttributeMapping'; +import type { SamlPreferences } from './types/saml-preferences'; +import type { SamlUserAttributes } from './types/saml-user-attributes'; +import type { SamlAttributeMapping } from './types/saml-attribute-mapping'; import { SAML_LOGIN_ENABLED, SAML_LOGIN_LABEL } from './constants'; import { getCurrentAuthenticationMethod, isEmailCurrentAuthenticationMethod, isSamlCurrentAuthenticationMethod, setCurrentAuthenticationMethod, -} from '../ssoHelpers'; -import { getServiceProviderConfigTestReturnUrl } from './serviceProvider.ee'; +} from '../sso-helpers'; +import { getServiceProviderConfigTestReturnUrl } from './service-provider.ee'; import type { SamlConfiguration } from './types/requests'; /** diff --git a/packages/cli/src/sso/saml/samlValidator.ts b/packages/cli/src/sso/saml/saml-validator.ts similarity index 99% rename from packages/cli/src/sso/saml/samlValidator.ts rename to packages/cli/src/sso/saml/saml-validator.ts index 66be4c98e0bbb..8e1e9dc328450 100644 --- a/packages/cli/src/sso/saml/samlValidator.ts +++ b/packages/cli/src/sso/saml/saml-validator.ts @@ -1,6 +1,6 @@ import { Container } from 'typedi'; import type { XMLFileInfo } from 'xmllint-wasm'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; let xml: XMLFileInfo; let xmldsigCore: XMLFileInfo; diff --git a/packages/cli/src/sso/saml/saml.service.ee.ts b/packages/cli/src/sso/saml/saml.service.ee.ts index 1103bf73d9bda..a9411535cc632 100644 --- a/packages/cli/src/sso/saml/saml.service.ee.ts +++ b/packages/cli/src/sso/saml/saml.service.ee.ts @@ -2,10 +2,10 @@ import type express from 'express'; import Container, { Service } from 'typedi'; import type { User } from '@db/entities/User'; import { ApplicationError, jsonParse } from 'n8n-workflow'; -import { getServiceProviderInstance } from './serviceProvider.ee'; -import type { SamlUserAttributes } from './types/samlUserAttributes'; -import { isSsoJustInTimeProvisioningEnabled } from '../ssoHelpers'; -import type { SamlPreferences } from './types/samlPreferences'; +import { getServiceProviderInstance } from './service-provider.ee'; +import type { SamlUserAttributes } from './types/saml-user-attributes'; +import { isSsoJustInTimeProvisioningEnabled } from '../sso-helpers'; +import type { SamlPreferences } from './types/saml-preferences'; import { SAML_PREFERENCES_DB_KEY } from './constants'; import type { IdentityProviderInstance, ServiceProviderInstance } from 'samlify'; import type { BindingContext, PostBindingContext } from 'samlify/types/src/entity'; @@ -18,13 +18,13 @@ import { setSamlLoginEnabled, setSamlLoginLabel, updateUserFromSamlAttributes, -} from './samlHelpers'; +} from './saml-helpers'; import type { Settings } from '@db/entities/Settings'; import axios from 'axios'; import https from 'https'; import type { SamlLoginBinding } from './types'; -import { validateMetadata, validateResponse } from './samlValidator'; -import { Logger } from '@/Logger'; +import { validateMetadata, validateResponse } from './saml-validator'; +import { Logger } from '@/logger'; import { UserRepository } from '@db/repositories/user.repository'; import { SettingsRepository } from '@db/repositories/settings.repository'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; diff --git a/packages/cli/src/sso/saml/serviceProvider.ee.ts b/packages/cli/src/sso/saml/service-provider.ee.ts similarity index 96% rename from packages/cli/src/sso/saml/serviceProvider.ee.ts rename to packages/cli/src/sso/saml/service-provider.ee.ts index 088457ca9cdb7..4630f7c01a888 100644 --- a/packages/cli/src/sso/saml/serviceProvider.ee.ts +++ b/packages/cli/src/sso/saml/service-provider.ee.ts @@ -1,7 +1,7 @@ import { Container } from 'typedi'; import type { ServiceProviderInstance } from 'samlify'; import { UrlService } from '@/services/url.service'; -import type { SamlPreferences } from './types/samlPreferences'; +import type { SamlPreferences } from './types/saml-preferences'; let serviceProviderInstance: ServiceProviderInstance | undefined; diff --git a/packages/cli/src/sso/saml/types/requests.ts b/packages/cli/src/sso/saml/types/requests.ts index 66bdc553d3d0d..c333c8c36114f 100644 --- a/packages/cli/src/sso/saml/types/requests.ts +++ b/packages/cli/src/sso/saml/types/requests.ts @@ -1,5 +1,5 @@ import type { AuthenticatedRequest, AuthlessRequest } from '@/requests'; -import type { SamlPreferences } from './samlPreferences'; +import type { SamlPreferences } from './saml-preferences'; export declare namespace SamlConfiguration { type Update = AuthenticatedRequest<{}, {}, SamlPreferences, {}>; diff --git a/packages/cli/src/sso/saml/types/samlAttributeMapping.ts b/packages/cli/src/sso/saml/types/saml-attribute-mapping.ts similarity index 100% rename from packages/cli/src/sso/saml/types/samlAttributeMapping.ts rename to packages/cli/src/sso/saml/types/saml-attribute-mapping.ts diff --git a/packages/cli/src/sso/saml/types/samlPreferences.ts b/packages/cli/src/sso/saml/types/saml-preferences.ts similarity index 94% rename from packages/cli/src/sso/saml/types/samlPreferences.ts rename to packages/cli/src/sso/saml/types/saml-preferences.ts index da02f1ebc4cef..6f4fc696ca835 100644 --- a/packages/cli/src/sso/saml/types/samlPreferences.ts +++ b/packages/cli/src/sso/saml/types/saml-preferences.ts @@ -1,7 +1,7 @@ import { IsBoolean, IsObject, IsOptional, IsString } from 'class-validator'; import { SignatureConfig } from 'samlify/types/src/types'; import { SamlLoginBinding } from '.'; -import { SamlAttributeMapping } from './samlAttributeMapping'; +import { SamlAttributeMapping } from './saml-attribute-mapping'; export class SamlPreferences { @IsObject() diff --git a/packages/cli/src/sso/saml/types/samlUserAttributes.ts b/packages/cli/src/sso/saml/types/saml-user-attributes.ts similarity index 100% rename from packages/cli/src/sso/saml/types/samlUserAttributes.ts rename to packages/cli/src/sso/saml/types/saml-user-attributes.ts diff --git a/packages/cli/src/sso/saml/views/initSsoPost.ts b/packages/cli/src/sso/saml/views/init-sso-post.ts similarity index 100% rename from packages/cli/src/sso/saml/views/initSsoPost.ts rename to packages/cli/src/sso/saml/views/init-sso-post.ts diff --git a/packages/cli/src/sso/saml/views/samlConnectionTestFailed.ts b/packages/cli/src/sso/saml/views/saml-connection-test-failed.ts similarity index 95% rename from packages/cli/src/sso/saml/views/samlConnectionTestFailed.ts rename to packages/cli/src/sso/saml/views/saml-connection-test-failed.ts index 8d9a3578f0635..4ce2a3e3ac1a9 100644 --- a/packages/cli/src/sso/saml/views/samlConnectionTestFailed.ts +++ b/packages/cli/src/sso/saml/views/saml-connection-test-failed.ts @@ -1,4 +1,4 @@ -import type { SamlUserAttributes } from '../types/samlUserAttributes'; +import type { SamlUserAttributes } from '../types/saml-user-attributes'; export function getSamlConnectionTestFailedView( message: string, diff --git a/packages/cli/src/sso/saml/views/samlConnectionTestSuccess.ts b/packages/cli/src/sso/saml/views/saml-connection-test-success.ts similarity index 95% rename from packages/cli/src/sso/saml/views/samlConnectionTestSuccess.ts rename to packages/cli/src/sso/saml/views/saml-connection-test-success.ts index 59e6aed263a0c..f647527cd054f 100644 --- a/packages/cli/src/sso/saml/views/samlConnectionTestSuccess.ts +++ b/packages/cli/src/sso/saml/views/saml-connection-test-success.ts @@ -1,4 +1,4 @@ -import type { SamlUserAttributes } from '../types/samlUserAttributes'; +import type { SamlUserAttributes } from '../types/saml-user-attributes'; export function getSamlConnectionTestSuccessView(attributes: SamlUserAttributes): string { return ` diff --git a/packages/cli/src/sso/ssoHelpers.ts b/packages/cli/src/sso/sso-helpers.ts similarity index 100% rename from packages/cli/src/sso/ssoHelpers.ts rename to packages/cli/src/sso/sso-helpers.ts diff --git a/packages/cli/src/subworkflows/__tests__/subworkflow-policy-checker.test.ts b/packages/cli/src/subworkflows/__tests__/subworkflow-policy-checker.test.ts index c20d8fdb2c3a5..d4d58051a02d2 100644 --- a/packages/cli/src/subworkflows/__tests__/subworkflow-policy-checker.test.ts +++ b/packages/cli/src/subworkflows/__tests__/subworkflow-policy-checker.test.ts @@ -9,7 +9,7 @@ import { mock } from 'jest-mock-extended'; import { SubworkflowPolicyChecker } from '../subworkflow-policy-checker.service'; import type { WorkflowEntity } from '@/databases/entities/WorkflowEntity'; -import type { License } from '@/License'; +import type { License } from '@/license'; import type { GlobalConfig } from '@n8n/config'; const toTargetCallErrorMsg = (subworkflowId: string) => diff --git a/packages/cli/src/subworkflows/subworkflow-policy-checker.service.ts b/packages/cli/src/subworkflows/subworkflow-policy-checker.service.ts index dd5b254ce5c2b..09f46eadf05dc 100644 --- a/packages/cli/src/subworkflows/subworkflow-policy-checker.service.ts +++ b/packages/cli/src/subworkflows/subworkflow-policy-checker.service.ts @@ -1,7 +1,7 @@ import { Service } from 'typedi'; import { GlobalConfig } from '@n8n/config'; -import { Logger } from '@/Logger'; -import { License } from '@/License'; +import { Logger } from '@/logger'; +import { License } from '@/license'; import { OwnershipService } from '@/services/ownership.service'; import type { Workflow, INode, WorkflowSettings } from 'n8n-workflow'; import { SubworkflowPolicyDenialError } from '@/errors/subworkflow-policy-denial.error'; diff --git a/packages/cli/src/telemetry/index.ts b/packages/cli/src/telemetry/index.ts index e2b93cdd0d7a9..2aec0f07d2cfb 100644 --- a/packages/cli/src/telemetry/index.ts +++ b/packages/cli/src/telemetry/index.ts @@ -7,15 +7,15 @@ import { InstanceSettings } from 'n8n-core'; import config from '@/config'; import type { IExecutionTrackProperties } from '@/Interfaces'; -import { Logger } from '@/Logger'; -import { License } from '@/License'; +import { Logger } from '@/logger'; +import { License } from '@/license'; import { LOWEST_SHUTDOWN_PRIORITY, N8N_VERSION } from '@/constants'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { SourceControlPreferencesService } from '../environments/sourceControl/sourceControlPreferences.service.ee'; import { UserRepository } from '@db/repositories/user.repository'; import { ProjectRepository } from '@/databases/repositories/project.repository'; import { ProjectRelationRepository } from '@/databases/repositories/projectRelation.repository'; -import { OnShutdown } from '@/decorators/OnShutdown'; +import { OnShutdown } from '@/decorators/on-shutdown'; type ExecutionTrackDataKey = 'manual_error' | 'manual_success' | 'prod_error' | 'prod_success'; diff --git a/packages/cli/src/UserManagement/email/Interfaces.ts b/packages/cli/src/user-management/email/Interfaces.ts similarity index 100% rename from packages/cli/src/UserManagement/email/Interfaces.ts rename to packages/cli/src/user-management/email/Interfaces.ts diff --git a/packages/cli/src/UserManagement/email/__tests__/UserManagementMailer.test.ts b/packages/cli/src/user-management/email/__tests__/user-management-mailer.test.ts similarity index 91% rename from packages/cli/src/UserManagement/email/__tests__/UserManagementMailer.test.ts rename to packages/cli/src/user-management/email/__tests__/user-management-mailer.test.ts index d39b27435a9aa..a52a240bc4502 100644 --- a/packages/cli/src/UserManagement/email/__tests__/UserManagementMailer.test.ts +++ b/packages/cli/src/user-management/email/__tests__/user-management-mailer.test.ts @@ -1,9 +1,9 @@ import type { GlobalConfig } from '@n8n/config'; import { mock } from 'jest-mock-extended'; -import type { InviteEmailData, PasswordResetData } from '@/UserManagement/email/Interfaces'; -import { NodeMailer } from '@/UserManagement/email/NodeMailer'; -import { UserManagementMailer } from '@/UserManagement/email/UserManagementMailer'; +import type { InviteEmailData, PasswordResetData } from '@/user-management/email/Interfaces'; +import { NodeMailer } from '@/user-management/email/node-mailer'; +import { UserManagementMailer } from '@/user-management/email/user-management-mailer'; import { mockInstance } from '@test/mocking'; describe('UserManagementMailer', () => { diff --git a/packages/cli/src/user-management/email/index.ts b/packages/cli/src/user-management/email/index.ts new file mode 100644 index 0000000000000..4b2a714fb7ea1 --- /dev/null +++ b/packages/cli/src/user-management/email/index.ts @@ -0,0 +1,3 @@ +import { UserManagementMailer } from './user-management-mailer'; + +export { UserManagementMailer }; diff --git a/packages/cli/src/UserManagement/email/NodeMailer.ts b/packages/cli/src/user-management/email/node-mailer.ts similarity index 98% rename from packages/cli/src/UserManagement/email/NodeMailer.ts rename to packages/cli/src/user-management/email/node-mailer.ts index 8d27e2181ba0f..d8834f9aae837 100644 --- a/packages/cli/src/UserManagement/email/NodeMailer.ts +++ b/packages/cli/src/user-management/email/node-mailer.ts @@ -6,7 +6,7 @@ import type SMTPConnection from 'nodemailer/lib/smtp-connection'; import { GlobalConfig } from '@n8n/config'; import { ErrorReporterProxy as ErrorReporter } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { MailData, SendEmailResult } from './Interfaces'; @Service() diff --git a/packages/cli/src/UserManagement/email/templates/credentialsShared.html b/packages/cli/src/user-management/email/templates/credentialsShared.html similarity index 100% rename from packages/cli/src/UserManagement/email/templates/credentialsShared.html rename to packages/cli/src/user-management/email/templates/credentialsShared.html diff --git a/packages/cli/src/UserManagement/email/templates/instanceSetup.html b/packages/cli/src/user-management/email/templates/instanceSetup.html similarity index 100% rename from packages/cli/src/UserManagement/email/templates/instanceSetup.html rename to packages/cli/src/user-management/email/templates/instanceSetup.html diff --git a/packages/cli/src/UserManagement/email/templates/invite.html b/packages/cli/src/user-management/email/templates/invite.html similarity index 100% rename from packages/cli/src/UserManagement/email/templates/invite.html rename to packages/cli/src/user-management/email/templates/invite.html diff --git a/packages/cli/src/UserManagement/email/templates/passwordReset.html b/packages/cli/src/user-management/email/templates/passwordReset.html similarity index 100% rename from packages/cli/src/UserManagement/email/templates/passwordReset.html rename to packages/cli/src/user-management/email/templates/passwordReset.html diff --git a/packages/cli/src/UserManagement/email/templates/workflowShared.html b/packages/cli/src/user-management/email/templates/workflowShared.html similarity index 100% rename from packages/cli/src/UserManagement/email/templates/workflowShared.html rename to packages/cli/src/user-management/email/templates/workflowShared.html diff --git a/packages/cli/src/UserManagement/email/UserManagementMailer.ts b/packages/cli/src/user-management/email/user-management-mailer.ts similarity index 98% rename from packages/cli/src/UserManagement/email/UserManagementMailer.ts rename to packages/cli/src/user-management/email/user-management-mailer.ts index 7d5e8d254865e..0c5e021d941db 100644 --- a/packages/cli/src/UserManagement/email/UserManagementMailer.ts +++ b/packages/cli/src/user-management/email/user-management-mailer.ts @@ -8,13 +8,13 @@ import { GlobalConfig } from '@n8n/config'; import type { User } from '@db/entities/User'; import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; import { UserRepository } from '@db/repositories/user.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { UrlService } from '@/services/url.service'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { toError } from '@/utils'; import type { InviteEmailData, PasswordResetData, SendEmailResult } from './Interfaces'; -import { NodeMailer } from './NodeMailer'; +import { NodeMailer } from './node-mailer'; import { EventService } from '@/events/event.service'; type Template = HandlebarsTemplateDelegate; diff --git a/packages/cli/src/UserManagement/PermissionChecker.ts b/packages/cli/src/user-management/permission-checker.ts similarity index 100% rename from packages/cli/src/UserManagement/PermissionChecker.ts rename to packages/cli/src/user-management/permission-checker.ts diff --git a/packages/cli/src/WaitTracker.ts b/packages/cli/src/wait-tracker.ts similarity index 98% rename from packages/cli/src/WaitTracker.ts rename to packages/cli/src/wait-tracker.ts index 5050d80ba9d69..eec9cb64b1512 100644 --- a/packages/cli/src/WaitTracker.ts +++ b/packages/cli/src/wait-tracker.ts @@ -1,10 +1,10 @@ import { ApplicationError, ErrorReporterProxy as ErrorReporter } from 'n8n-workflow'; import { Service } from 'typedi'; import type { IWorkflowExecutionDataProcess } from '@/Interfaces'; -import { WorkflowRunner } from '@/WorkflowRunner'; +import { WorkflowRunner } from '@/workflow-runner'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { OwnershipService } from '@/services/ownership.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { OrchestrationService } from '@/services/orchestration.service'; @Service() diff --git a/packages/cli/src/WaitingForms.ts b/packages/cli/src/waiting-forms.ts similarity index 89% rename from packages/cli/src/WaitingForms.ts rename to packages/cli/src/waiting-forms.ts index bf0ab7dedb161..2fc1655594e85 100644 --- a/packages/cli/src/WaitingForms.ts +++ b/packages/cli/src/waiting-forms.ts @@ -1,7 +1,7 @@ import { Service } from 'typedi'; import type { IExecutionResponse } from '@/Interfaces'; -import { WaitingWebhooks } from '@/webhooks/WaitingWebhooks'; +import { WaitingWebhooks } from '@/webhooks/waiting-webhooks'; @Service() export class WaitingForms extends WaitingWebhooks { diff --git a/packages/cli/src/webhooks/__tests__/TestWebhooks.test.ts b/packages/cli/src/webhooks/__tests__/TestWebhooks.test.ts index deb6930b96e14..292b20e1bd406 100644 --- a/packages/cli/src/webhooks/__tests__/TestWebhooks.test.ts +++ b/packages/cli/src/webhooks/__tests__/TestWebhooks.test.ts @@ -1,10 +1,10 @@ import { mock } from 'jest-mock-extended'; -import { TestWebhooks } from '@/webhooks/TestWebhooks'; +import { TestWebhooks } from '@/webhooks/test-webhooks'; import { WebhookNotFoundError } from '@/errors/response-errors/webhook-not-found.error'; import { v4 as uuid } from 'uuid'; import { generateNanoId } from '@/databases/utils/generators'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import * as WebhookHelpers from '@/webhooks/WebhookHelpers'; +import * as WebhookHelpers from '@/webhooks/webhook-helpers'; import type * as express from 'express'; import type { IWorkflowDb } from '@/Interfaces'; @@ -14,10 +14,10 @@ import type { TestWebhookRegistration, } from '@/webhooks/test-webhook-registrations.service'; -import * as AdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as AdditionalData from '@/workflow-execute-additional-data'; import type { WebhookRequest } from '@/webhooks/webhook.types'; -jest.mock('@/WorkflowExecuteAdditionalData'); +jest.mock('@/workflow-execute-additional-data'); const mockedAdditionalData = AdditionalData as jest.Mocked; diff --git a/packages/cli/src/webhooks/__tests__/WebhookRequestHandler.test.ts b/packages/cli/src/webhooks/__tests__/WebhookRequestHandler.test.ts index aff310241958f..c807c6c4d9ed0 100644 --- a/packages/cli/src/webhooks/__tests__/WebhookRequestHandler.test.ts +++ b/packages/cli/src/webhooks/__tests__/WebhookRequestHandler.test.ts @@ -9,7 +9,7 @@ import type { WebhookOptionsRequest, WebhookRequest, } from '@/webhooks/webhook.types'; -import { createWebhookHandlerFor } from '@/webhooks/WebhookRequestHandler'; +import { createWebhookHandlerFor } from '@/webhooks/webhook-request-handler'; import { ResponseError } from '@/errors/response-errors/abstract/response.error'; describe('WebhookRequestHandler', () => { diff --git a/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts b/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts index 31f64eb198432..5cb8e005ad701 100644 --- a/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts +++ b/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts @@ -1,5 +1,5 @@ import { mock } from 'jest-mock-extended'; -import { WaitingWebhooks } from '@/webhooks/WaitingWebhooks'; +import { WaitingWebhooks } from '@/webhooks/waiting-webhooks'; import { ConflictError } from '@/errors/response-errors/conflict.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { IExecutionResponse } from '@/Interfaces'; diff --git a/packages/cli/src/webhooks/LiveWebhooks.ts b/packages/cli/src/webhooks/live-webhooks.ts similarity index 94% rename from packages/cli/src/webhooks/LiveWebhooks.ts rename to packages/cli/src/webhooks/live-webhooks.ts index 3d66b7ee7f796..1db85e231530d 100644 --- a/packages/cli/src/webhooks/LiveWebhooks.ts +++ b/packages/cli/src/webhooks/live-webhooks.ts @@ -10,14 +10,14 @@ import type { WebhookAccessControlOptions, WebhookRequest, } from './webhook.types'; -import { Logger } from '@/Logger'; -import { NodeTypes } from '@/NodeTypes'; +import { Logger } from '@/logger'; +import { NodeTypes } from '@/node-types'; import { WebhookService } from '@/webhooks/webhook.service'; import { WebhookNotFoundError } from '@/errors/response-errors/webhook-not-found.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; -import * as WebhookHelpers from '@/webhooks/WebhookHelpers'; -import { WorkflowStaticDataService } from '@/workflows/workflowStaticData.service'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; +import * as WebhookHelpers from '@/webhooks/webhook-helpers'; +import { WorkflowStaticDataService } from '@/workflows/workflow-static-data.service'; /** * Service for handling the execution of live webhooks, i.e. webhooks diff --git a/packages/cli/src/webhooks/TestWebhooks.ts b/packages/cli/src/webhooks/test-webhooks.ts similarity index 98% rename from packages/cli/src/webhooks/TestWebhooks.ts rename to packages/cli/src/webhooks/test-webhooks.ts index 8cf1b4292989b..e10b77aa24a52 100644 --- a/packages/cli/src/webhooks/TestWebhooks.ts +++ b/packages/cli/src/webhooks/test-webhooks.ts @@ -14,8 +14,8 @@ import type { WebhookRequest, } from './webhook.types'; import { Push } from '@/push'; -import { NodeTypes } from '@/NodeTypes'; -import * as WebhookHelpers from '@/webhooks/WebhookHelpers'; +import { NodeTypes } from '@/node-types'; +import * as WebhookHelpers from '@/webhooks/webhook-helpers'; import { TEST_WEBHOOK_TIMEOUT } from '@/constants'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WorkflowMissingIdError } from '@/errors/workflow-missing-id.error'; @@ -25,7 +25,7 @@ import { removeTrailingSlash } from '@/utils'; import type { TestWebhookRegistration } from '@/webhooks/test-webhook-registrations.service'; import { TestWebhookRegistrationsService } from '@/webhooks/test-webhook-registrations.service'; import { OrchestrationService } from '@/services/orchestration.service'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; import type { IWorkflowDb } from '@/Interfaces'; /** diff --git a/packages/cli/src/webhooks/WaitingWebhooks.ts b/packages/cli/src/webhooks/waiting-webhooks.ts similarity index 95% rename from packages/cli/src/webhooks/WaitingWebhooks.ts rename to packages/cli/src/webhooks/waiting-webhooks.ts index 367635c45ec64..f2c5706817a45 100644 --- a/packages/cli/src/webhooks/WaitingWebhooks.ts +++ b/packages/cli/src/webhooks/waiting-webhooks.ts @@ -2,16 +2,16 @@ import { NodeHelpers, Workflow } from 'n8n-workflow'; import { Service } from 'typedi'; import type express from 'express'; -import * as WebhookHelpers from '@/webhooks/WebhookHelpers'; -import { NodeTypes } from '@/NodeTypes'; +import * as WebhookHelpers from '@/webhooks/webhook-helpers'; +import { NodeTypes } from '@/node-types'; import type { IWebhookResponseCallbackData, IWebhookManager, WaitingWebhookRequest, } from './webhook.types'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; import { ExecutionRepository } from '@db/repositories/execution.repository'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { ConflictError } from '@/errors/response-errors/conflict.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { IExecutionResponse, IWorkflowDb } from '@/Interfaces'; diff --git a/packages/cli/src/webhooks/WebhookHelpers.ts b/packages/cli/src/webhooks/webhook-helpers.ts similarity index 98% rename from packages/cli/src/webhooks/WebhookHelpers.ts rename to packages/cli/src/webhooks/webhook-helpers.ts index 1b8bc2b7e986d..725f0339a1126 100644 --- a/packages/cli/src/webhooks/WebhookHelpers.ts +++ b/packages/cli/src/webhooks/webhook-helpers.ts @@ -41,14 +41,14 @@ import { } from 'n8n-workflow'; import type { IWebhookResponseCallbackData, WebhookRequest } from './webhook.types'; -import * as WorkflowHelpers from '@/WorkflowHelpers'; -import { WorkflowRunner } from '@/WorkflowRunner'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; -import { ActiveExecutions } from '@/ActiveExecutions'; +import * as WorkflowHelpers from '@/workflow-helpers'; +import { WorkflowRunner } from '@/workflow-runner'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; +import { ActiveExecutions } from '@/active-executions'; import { WorkflowStatisticsService } from '@/services/workflow-statistics.service'; import { OwnershipService } from '@/services/ownership.service'; import { parseBody } from '@/middlewares'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; diff --git a/packages/cli/src/webhooks/WebhookRequestHandler.ts b/packages/cli/src/webhooks/webhook-request-handler.ts similarity index 98% rename from packages/cli/src/webhooks/WebhookRequestHandler.ts rename to packages/cli/src/webhooks/webhook-request-handler.ts index 289175ac0541c..a495873a68a0f 100644 --- a/packages/cli/src/webhooks/WebhookRequestHandler.ts +++ b/packages/cli/src/webhooks/webhook-request-handler.ts @@ -5,7 +5,7 @@ import type { WebhookOptionsRequest, WebhookRequest, } from '@/webhooks/webhook.types'; -import * as ResponseHelper from '@/ResponseHelper'; +import * as ResponseHelper from '@/response-helper'; const WEBHOOK_METHODS: IHttpRequestMethods[] = ['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT']; diff --git a/packages/cli/src/webhooks/WebhookServer.ts b/packages/cli/src/webhooks/webhook-server.ts similarity index 72% rename from packages/cli/src/webhooks/WebhookServer.ts rename to packages/cli/src/webhooks/webhook-server.ts index 60f59f606d95e..bb00510e5601e 100644 --- a/packages/cli/src/webhooks/WebhookServer.ts +++ b/packages/cli/src/webhooks/webhook-server.ts @@ -1,5 +1,5 @@ import { Service } from 'typedi'; -import { AbstractServer } from '@/AbstractServer'; +import { AbstractServer } from '@/abstract-server'; @Service() export class WebhookServer extends AbstractServer { diff --git a/packages/cli/src/WorkflowExecuteAdditionalData.ts b/packages/cli/src/workflow-execute-additional-data.ts similarity index 97% rename from packages/cli/src/WorkflowExecuteAdditionalData.ts rename to packages/cli/src/workflow-execute-additional-data.ts index 127e0cc817393..459c94692666d 100644 --- a/packages/cli/src/WorkflowExecuteAdditionalData.ts +++ b/packages/cli/src/workflow-execute-additional-data.ts @@ -36,9 +36,9 @@ import { import { Container } from 'typedi'; import config from '@/config'; -import { ActiveExecutions } from '@/ActiveExecutions'; -import { CredentialsHelper } from '@/CredentialsHelper'; -import { ExternalHooks } from '@/ExternalHooks'; +import { ActiveExecutions } from '@/active-executions'; +import { CredentialsHelper } from '@/credentials-helper'; +import { ExternalHooks } from '@/external-hooks'; import type { IPushDataExecutionFinished, IWorkflowExecuteProcess, @@ -47,28 +47,28 @@ import type { IPushDataType, ExecutionPayload, } from '@/Interfaces'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; import { Push } from '@/push'; -import * as WorkflowHelpers from '@/WorkflowHelpers'; +import * as WorkflowHelpers from '@/workflow-helpers'; import { findSubworkflowStart, isWorkflowIdValid } from '@/utils'; -import { PermissionChecker } from './UserManagement/PermissionChecker'; +import { PermissionChecker } from './user-management/permission-checker'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { WorkflowStatisticsService } from '@/services/workflow-statistics.service'; -import { SecretsHelper } from './SecretsHelpers'; +import { SecretsHelper } from './secrets-helpers'; import { OwnershipService } from './services/ownership.service'; import { determineFinalExecutionStatus, prepareExecutionDataForDbUpdate, updateExistingExecution, -} from './executionLifecycleHooks/shared/sharedHookFunctions'; -import { restoreBinaryDataId } from './executionLifecycleHooks/restoreBinaryDataId'; -import { toSaveSettings } from './executionLifecycleHooks/toSaveSettings'; -import { Logger } from './Logger'; -import { saveExecutionProgress } from './executionLifecycleHooks/saveExecutionProgress'; -import { WorkflowStaticDataService } from './workflows/workflowStaticData.service'; +} from './execution-lifecycle-hooks/shared/shared-hook-functions'; +import { restoreBinaryDataId } from './execution-lifecycle-hooks/restore-binary-data-id'; +import { toSaveSettings } from './execution-lifecycle-hooks/to-save-settings'; +import { Logger } from './logger'; +import { saveExecutionProgress } from './execution-lifecycle-hooks/save-execution-progress'; +import { WorkflowStaticDataService } from './workflows/workflow-static-data.service'; import { WorkflowRepository } from './databases/repositories/workflow.repository'; import { UrlService } from './services/url.service'; -import { WorkflowExecutionService } from './workflows/workflowExecution.service'; +import { WorkflowExecutionService } from './workflows/workflow-execution.service'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; import { EventService } from './events/event.service'; import { GlobalConfig } from '@n8n/config'; diff --git a/packages/cli/src/WorkflowHelpers.ts b/packages/cli/src/workflow-helpers.ts similarity index 100% rename from packages/cli/src/WorkflowHelpers.ts rename to packages/cli/src/workflow-helpers.ts diff --git a/packages/cli/src/WorkflowRunner.ts b/packages/cli/src/workflow-runner.ts similarity index 97% rename from packages/cli/src/WorkflowRunner.ts rename to packages/cli/src/workflow-runner.ts index 9ff1de8f35242..b8012b3d4f25a 100644 --- a/packages/cli/src/WorkflowRunner.ts +++ b/packages/cli/src/workflow-runner.ts @@ -22,20 +22,20 @@ import { import PCancelable from 'p-cancelable'; -import { ActiveExecutions } from '@/ActiveExecutions'; +import { ActiveExecutions } from '@/active-executions'; import config from '@/config'; import { ExecutionRepository } from '@db/repositories/execution.repository'; -import { ExternalHooks } from '@/ExternalHooks'; +import { ExternalHooks } from '@/external-hooks'; import type { IExecutionResponse, IWorkflowExecutionDataProcess } from '@/Interfaces'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; import type { Job, JobData, JobResult } from '@/scaling/types'; import type { ScalingService } from '@/scaling/scaling.service'; -import * as WorkflowHelpers from '@/WorkflowHelpers'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; -import { generateFailedExecutionFromError } from '@/WorkflowHelpers'; -import { PermissionChecker } from '@/UserManagement/PermissionChecker'; -import { Logger } from '@/Logger'; -import { WorkflowStaticDataService } from '@/workflows/workflowStaticData.service'; +import * as WorkflowHelpers from '@/workflow-helpers'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; +import { generateFailedExecutionFromError } from '@/workflow-helpers'; +import { PermissionChecker } from '@/user-management/permission-checker'; +import { Logger } from '@/logger'; +import { WorkflowStaticDataService } from '@/workflows/workflow-static-data.service'; import { EventService } from './events/event.service'; import { GlobalConfig } from '@n8n/config'; diff --git a/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts b/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts index d06dde35e2e23..b56cbffbbd02c 100644 --- a/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts +++ b/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts @@ -3,8 +3,8 @@ import { mock } from 'jest-mock-extended'; import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; import type { IWorkflowDb } from '@/Interfaces'; -import { WorkflowExecutionService } from '@/workflows/workflowExecution.service'; -import type { WorkflowRunner } from '@/WorkflowRunner'; +import { WorkflowExecutionService } from '@/workflows/workflow-execution.service'; +import type { WorkflowRunner } from '@/workflow-runner'; const webhookNode: INode = { name: 'Webhook', diff --git a/packages/cli/src/workflows/workflowExecution.service.ts b/packages/cli/src/workflows/workflow-execution.service.ts similarity index 96% rename from packages/cli/src/workflows/workflowExecution.service.ts rename to packages/cli/src/workflows/workflow-execution.service.ts index 9ddce37d2f207..3611684ef1fa1 100644 --- a/packages/cli/src/workflows/workflowExecution.service.ts +++ b/packages/cli/src/workflows/workflow-execution.service.ts @@ -19,7 +19,7 @@ import { import type { User } from '@db/entities/User'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import * as WorkflowHelpers from '@/WorkflowHelpers'; +import * as WorkflowHelpers from '@/workflow-helpers'; import type { WorkflowRequest } from '@/workflows/workflow.request'; import type { ExecutionPayload, @@ -27,11 +27,11 @@ import type { IWorkflowErrorData, IWorkflowExecutionDataProcess, } from '@/Interfaces'; -import { NodeTypes } from '@/NodeTypes'; -import { WorkflowRunner } from '@/WorkflowRunner'; -import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; -import { TestWebhooks } from '@/webhooks/TestWebhooks'; -import { Logger } from '@/Logger'; +import { NodeTypes } from '@/node-types'; +import { WorkflowRunner } from '@/workflow-runner'; +import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; +import { TestWebhooks } from '@/webhooks/test-webhooks'; +import { Logger } from '@/logger'; import type { Project } from '@/databases/entities/Project'; import { GlobalConfig } from '@n8n/config'; import { SubworkflowPolicyChecker } from '@/subworkflows/subworkflow-policy-checker.service'; diff --git a/packages/cli/src/workflows/workflowHistory/__tests__/workflowHistoryHelper.ee.test.ts b/packages/cli/src/workflows/workflow-history/__tests__/workflow-history-helper.ee.test.ts similarity index 94% rename from packages/cli/src/workflows/workflowHistory/__tests__/workflowHistoryHelper.ee.test.ts rename to packages/cli/src/workflows/workflow-history/__tests__/workflow-history-helper.ee.test.ts index 427f98188495b..a4b7a70abfed0 100644 --- a/packages/cli/src/workflows/workflowHistory/__tests__/workflowHistoryHelper.ee.test.ts +++ b/packages/cli/src/workflows/workflow-history/__tests__/workflow-history-helper.ee.test.ts @@ -1,6 +1,6 @@ -import { License } from '@/License'; +import { License } from '@/license'; import config from '@/config'; -import { getWorkflowHistoryPruneTime } from '@/workflows/workflowHistory/workflowHistoryHelper.ee'; +import { getWorkflowHistoryPruneTime } from '@/workflows/workflow-history/workflow-history-helper.ee'; import { mockInstance } from '@test/mocking'; let licensePruneTime = -1; diff --git a/packages/cli/src/workflows/workflowHistory/__tests__/workflowHistory.service.ee.test.ts b/packages/cli/src/workflows/workflow-history/__tests__/workflow-history.service.ee.test.ts similarity index 94% rename from packages/cli/src/workflows/workflowHistory/__tests__/workflowHistory.service.ee.test.ts rename to packages/cli/src/workflows/workflow-history/__tests__/workflow-history.service.ee.test.ts index 5b28b8d171468..0417908d1c3a6 100644 --- a/packages/cli/src/workflows/workflowHistory/__tests__/workflowHistory.service.ee.test.ts +++ b/packages/cli/src/workflows/workflow-history/__tests__/workflow-history.service.ee.test.ts @@ -2,8 +2,8 @@ import { mockClear } from 'jest-mock-extended'; import { User } from '@db/entities/User'; import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; -import { WorkflowHistoryService } from '@/workflows/workflowHistory/workflowHistory.service.ee'; -import { Logger } from '@/Logger'; +import { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service.ee'; +import { Logger } from '@/logger'; import { mockInstance } from '@test/mocking'; import { getWorkflow } from '@test-integration/workflow'; @@ -24,7 +24,7 @@ const testUser = Object.assign(new User(), { }); let isWorkflowHistoryEnabled = true; -jest.mock('@/workflows/workflowHistory/workflowHistoryHelper.ee', () => { +jest.mock('@/workflows/workflow-history/workflow-history-helper.ee', () => { return { isWorkflowHistoryEnabled: jest.fn(() => isWorkflowHistoryEnabled), }; diff --git a/packages/cli/src/workflows/workflowHistory/constants.ts b/packages/cli/src/workflows/workflow-history/constants.ts similarity index 100% rename from packages/cli/src/workflows/workflowHistory/constants.ts rename to packages/cli/src/workflows/workflow-history/constants.ts diff --git a/packages/cli/src/workflows/workflowHistory/workflowHistoryHelper.ee.ts b/packages/cli/src/workflows/workflow-history/workflow-history-helper.ee.ts similarity index 96% rename from packages/cli/src/workflows/workflowHistory/workflowHistoryHelper.ee.ts rename to packages/cli/src/workflows/workflow-history/workflow-history-helper.ee.ts index bf784c5aba97d..27da19b7da9d5 100644 --- a/packages/cli/src/workflows/workflowHistory/workflowHistoryHelper.ee.ts +++ b/packages/cli/src/workflows/workflow-history/workflow-history-helper.ee.ts @@ -1,4 +1,4 @@ -import { License } from '@/License'; +import { License } from '@/license'; import config from '@/config'; import Container from 'typedi'; diff --git a/packages/cli/src/workflows/workflowHistory/workflowHistoryManager.ee.ts b/packages/cli/src/workflows/workflow-history/workflow-history-manager.ee.ts similarity index 90% rename from packages/cli/src/workflows/workflowHistory/workflowHistoryManager.ee.ts rename to packages/cli/src/workflows/workflow-history/workflow-history-manager.ee.ts index 4898666c88caa..d6eb214d8c165 100644 --- a/packages/cli/src/workflows/workflowHistory/workflowHistoryManager.ee.ts +++ b/packages/cli/src/workflows/workflow-history/workflow-history-manager.ee.ts @@ -2,7 +2,10 @@ import { Service } from 'typedi'; import { DateTime } from 'luxon'; import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repository'; import { WORKFLOW_HISTORY_PRUNE_INTERVAL } from './constants'; -import { getWorkflowHistoryPruneTime, isWorkflowHistoryEnabled } from './workflowHistoryHelper.ee'; +import { + getWorkflowHistoryPruneTime, + isWorkflowHistoryEnabled, +} from './workflow-history-helper.ee'; @Service() export class WorkflowHistoryManager { diff --git a/packages/cli/src/workflows/workflowHistory/workflowHistory.controller.ee.ts b/packages/cli/src/workflows/workflow-history/workflow-history.controller.ee.ts similarity index 94% rename from packages/cli/src/workflows/workflowHistory/workflowHistory.controller.ee.ts rename to packages/cli/src/workflows/workflow-history/workflow-history.controller.ee.ts index c57e3cb0b584a..dd900375545bf 100644 --- a/packages/cli/src/workflows/workflowHistory/workflowHistory.controller.ee.ts +++ b/packages/cli/src/workflows/workflow-history/workflow-history.controller.ee.ts @@ -1,10 +1,10 @@ import { RestController, Get, Middleware } from '@/decorators'; import { WorkflowHistoryRequest } from '@/requests'; -import { WorkflowHistoryService } from './workflowHistory.service.ee'; +import { WorkflowHistoryService } from './workflow-history.service.ee'; import { Request, Response, NextFunction } from 'express'; -import { isWorkflowHistoryEnabled, isWorkflowHistoryLicensed } from './workflowHistoryHelper.ee'; +import { isWorkflowHistoryEnabled, isWorkflowHistoryLicensed } from './workflow-history-helper.ee'; -import { paginationListQueryMiddleware } from '@/middlewares/listQuery/pagination'; +import { paginationListQueryMiddleware } from '@/middlewares/list-query/pagination'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { SharedWorkflowNotFoundError } from '@/errors/shared-workflow-not-found.error'; import { WorkflowHistoryVersionNotFoundError } from '@/errors/workflow-history-version-not-found.error'; diff --git a/packages/cli/src/workflows/workflowHistory/workflowHistory.service.ee.ts b/packages/cli/src/workflows/workflow-history/workflow-history.service.ee.ts similarity index 96% rename from packages/cli/src/workflows/workflowHistory/workflowHistory.service.ee.ts rename to packages/cli/src/workflows/workflow-history/workflow-history.service.ee.ts index b92fc440ccbd6..55cb085f424fa 100644 --- a/packages/cli/src/workflows/workflowHistory/workflowHistory.service.ee.ts +++ b/packages/cli/src/workflows/workflow-history/workflow-history.service.ee.ts @@ -4,8 +4,8 @@ import type { WorkflowHistory } from '@db/entities/WorkflowHistory'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repository'; import { Service } from 'typedi'; -import { isWorkflowHistoryEnabled } from './workflowHistoryHelper.ee'; -import { Logger } from '@/Logger'; +import { isWorkflowHistoryEnabled } from './workflow-history-helper.ee'; +import { Logger } from '@/logger'; import { SharedWorkflowNotFoundError } from '@/errors/shared-workflow-not-found.error'; import { WorkflowHistoryVersionNotFoundError } from '@/errors/workflow-history-version-not-found.error'; diff --git a/packages/cli/src/workflows/workflowSharing.service.ts b/packages/cli/src/workflows/workflow-sharing.service.ts similarity index 100% rename from packages/cli/src/workflows/workflowSharing.service.ts rename to packages/cli/src/workflows/workflow-sharing.service.ts diff --git a/packages/cli/src/workflows/workflowStaticData.service.ts b/packages/cli/src/workflows/workflow-static-data.service.ts similarity index 98% rename from packages/cli/src/workflows/workflowStaticData.service.ts rename to packages/cli/src/workflows/workflow-static-data.service.ts index 4c981acb87338..d9c3564b26ea8 100644 --- a/packages/cli/src/workflows/workflowStaticData.service.ts +++ b/packages/cli/src/workflows/workflow-static-data.service.ts @@ -1,7 +1,7 @@ import { Service } from 'typedi'; import { GlobalConfig } from '@n8n/config'; import { type IDataObject, type Workflow, ErrorReporterProxy as ErrorReporter } from 'n8n-workflow'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { isWorkflowIdValid } from '@/utils'; diff --git a/packages/cli/src/workflows/workflow.service.ee.ts b/packages/cli/src/workflows/workflow.service.ee.ts index 31029464f6187..e3aae3a4e9472 100644 --- a/packages/cli/src/workflows/workflow.service.ee.ts +++ b/packages/cli/src/workflows/workflow.service.ee.ts @@ -11,7 +11,7 @@ import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.reposi import { CredentialsService } from '@/credentials/credentials.service'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import type { WorkflowWithSharingsAndCredentials, WorkflowWithSharingsMetaDataAndCredentials, @@ -21,7 +21,7 @@ import { OwnershipService } from '@/services/ownership.service'; import { In, type EntityManager } from '@n8n/typeorm'; import { Project } from '@/databases/entities/Project'; import { ProjectService } from '@/services/project.service'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { TransferWorkflowError } from '@/errors/response-errors/transfer-workflow.error'; import { SharedWorkflow } from '@/databases/entities/SharedWorkflow'; diff --git a/packages/cli/src/workflows/workflow.service.ts b/packages/cli/src/workflows/workflow.service.ts index 20917e60cbc16..fb0619726f2ab 100644 --- a/packages/cli/src/workflows/workflow.service.ts +++ b/packages/cli/src/workflows/workflow.service.ts @@ -11,20 +11,20 @@ import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { WorkflowTagMappingRepository } from '@db/repositories/workflowTagMapping.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; -import * as WorkflowHelpers from '@/WorkflowHelpers'; -import { validateEntity } from '@/GenericHelpers'; -import { ExternalHooks } from '@/ExternalHooks'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; +import * as WorkflowHelpers from '@/workflow-helpers'; +import { validateEntity } from '@/generic-helpers'; +import { ExternalHooks } from '@/external-hooks'; import { hasSharing, type ListQuery } from '@/requests'; import { TagService } from '@/services/tag.service'; import { OwnershipService } from '@/services/ownership.service'; -import { WorkflowHistoryService } from './workflowHistory/workflowHistory.service.ee'; -import { Logger } from '@/Logger'; +import { WorkflowHistoryService } from './workflow-history/workflow-history.service.ee'; +import { Logger } from '@/logger'; import { OrchestrationService } from '@/services/orchestration.service'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { RoleService } from '@/services/role.service'; -import { WorkflowSharingService } from './workflowSharing.service'; +import { WorkflowSharingService } from './workflow-sharing.service'; import { ProjectService } from '@/services/project.service'; import { ExecutionRepository } from '@/databases/repositories/execution.repository'; import type { Scope } from '@n8n/permissions'; diff --git a/packages/cli/src/workflows/workflows.controller.ts b/packages/cli/src/workflows/workflows.controller.ts index 4c03dd9e246c4..821bddd2956e1 100644 --- a/packages/cli/src/workflows/workflows.controller.ts +++ b/packages/cli/src/workflows/workflows.controller.ts @@ -3,8 +3,8 @@ import { v4 as uuid } from 'uuid'; import axios from 'axios'; import * as Db from '@/Db'; -import * as ResponseHelper from '@/ResponseHelper'; -import * as WorkflowHelpers from '@/WorkflowHelpers'; +import * as ResponseHelper from '@/response-helper'; +import * as WorkflowHelpers from '@/workflow-helpers'; import type { IWorkflowResponse } from '@/Interfaces'; import config from '@/config'; import { Delete, Get, Patch, Post, ProjectScope, Put, RestController } from '@/decorators'; @@ -13,15 +13,15 @@ import { WorkflowEntity } from '@db/entities/WorkflowEntity'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { TagRepository } from '@db/repositories/tag.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; -import { validateEntity } from '@/GenericHelpers'; -import { ExternalHooks } from '@/ExternalHooks'; +import { validateEntity } from '@/generic-helpers'; +import { ExternalHooks } from '@/external-hooks'; import { WorkflowService } from './workflow.service'; -import { License } from '@/License'; +import { License } from '@/license'; import * as utils from '@/utils'; import { listQueryMiddleware } from '@/middlewares'; import { TagService } from '@/services/tag.service'; -import { WorkflowHistoryService } from './workflowHistory/workflowHistory.service.ee'; -import { Logger } from '@/Logger'; +import { WorkflowHistoryService } from './workflow-history/workflow-history.service.ee'; +import { Logger } from '@/logger'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; @@ -31,8 +31,8 @@ import { UserOnboardingService } from '@/services/userOnboarding.service'; import { CredentialsService } from '../credentials/credentials.service'; import { WorkflowRequest } from './workflow.request'; import { EnterpriseWorkflowService } from './workflow.service.ee'; -import { WorkflowExecutionService } from './workflowExecution.service'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { WorkflowExecutionService } from './workflow-execution.service'; +import { UserManagementMailer } from '@/user-management/email'; import { ProjectRepository } from '@/databases/repositories/project.repository'; import { ProjectService } from '@/services/project.service'; import { ApplicationError } from 'n8n-workflow'; diff --git a/packages/cli/test/integration/CredentialsHelper.test.ts b/packages/cli/test/integration/CredentialsHelper.test.ts index 88738c3c261fe..df6c07996092a 100644 --- a/packages/cli/test/integration/CredentialsHelper.test.ts +++ b/packages/cli/test/integration/CredentialsHelper.test.ts @@ -1,7 +1,7 @@ import Container from 'typedi'; import * as testDb from '../integration/shared/testDb'; -import { CredentialsHelper } from '@/CredentialsHelper'; +import { CredentialsHelper } from '@/credentials-helper'; import { createOwner, createAdmin, createMember } from './shared/db/users'; import type { User } from '@/databases/entities/User'; import { saveCredential } from './shared/db/credentials'; diff --git a/packages/cli/test/integration/ExternalSecrets/externalSecrets.api.test.ts b/packages/cli/test/integration/ExternalSecrets/externalSecrets.api.test.ts index 190ab437fa5f6..f6f448bf16692 100644 --- a/packages/cli/test/integration/ExternalSecrets/externalSecrets.api.test.ts +++ b/packages/cli/test/integration/ExternalSecrets/externalSecrets.api.test.ts @@ -3,12 +3,12 @@ import { Cipher } from 'n8n-core'; import { jsonParse, type IDataObject } from 'n8n-workflow'; import { mock } from 'jest-mock-extended'; -import { License } from '@/License'; +import { License } from '@/license'; import type { ExternalSecretsSettings, SecretsProviderState } from '@/Interfaces'; import { SettingsRepository } from '@db/repositories/settings.repository'; -import { ExternalSecretsProviders } from '@/ExternalSecrets/ExternalSecretsProviders.ee'; +import { ExternalSecretsProviders } from '@/external-secrets/external-secrets-providers.ee'; import config from '@/config'; -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; import { CREDENTIAL_BLANKING_VALUE } from '@/constants'; import { mockInstance } from '../../shared/mocking'; diff --git a/packages/cli/test/integration/activation-errors.service.test.ts b/packages/cli/test/integration/activation-errors.service.test.ts index 5d56f0dc90d6a..37dfcc2e08937 100644 --- a/packages/cli/test/integration/activation-errors.service.test.ts +++ b/packages/cli/test/integration/activation-errors.service.test.ts @@ -1,4 +1,4 @@ -import { ActivationErrorsService } from '@/ActivationErrors.service'; +import { ActivationErrorsService } from '@/activation-errors.service'; import { CacheService } from '@/services/cache/cache.service'; import { GlobalConfig } from '@n8n/config'; import { mockInstance } from '@test/mocking'; diff --git a/packages/cli/test/integration/active-workflow-manager.test.ts b/packages/cli/test/integration/active-workflow-manager.test.ts index de586b643a468..39d6c3b2723ee 100644 --- a/packages/cli/test/integration/active-workflow-manager.test.ts +++ b/packages/cli/test/integration/active-workflow-manager.test.ts @@ -3,16 +3,16 @@ import { mock } from 'jest-mock-extended'; import { NodeApiError, NodeOperationError, Workflow } from 'n8n-workflow'; import type { IWebhookData, WorkflowActivateMode } from 'n8n-workflow'; -import { ActiveExecutions } from '@/ActiveExecutions'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; -import { ExternalHooks } from '@/ExternalHooks'; +import { ActiveExecutions } from '@/active-executions'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; +import { ExternalHooks } from '@/external-hooks'; import { Push } from '@/push'; -import { SecretsHelper } from '@/SecretsHelpers'; +import { SecretsHelper } from '@/secrets-helpers'; import { WebhookService } from '@/webhooks/webhook.service'; -import * as WebhookHelpers from '@/webhooks/WebhookHelpers'; -import * as AdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as WebhookHelpers from '@/webhooks/webhook-helpers'; +import * as AdditionalData from '@/workflow-execute-additional-data'; import type { WebhookEntity } from '@db/entities/WebhookEntity'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; import { ExecutionService } from '@/executions/execution.service'; import { WorkflowService } from '@/workflows/workflow.service'; @@ -20,7 +20,7 @@ import { mockInstance } from '../shared/mocking'; import * as testDb from './shared/testDb'; import { createOwner } from './shared/db/users'; import { createWorkflow } from './shared/db/workflows'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import type { WorkflowEntity } from '@/databases/entities/WorkflowEntity'; mockInstance(ActiveExecutions); diff --git a/packages/cli/test/integration/auth.api.test.ts b/packages/cli/test/integration/auth.api.test.ts index 08d4eb0a66622..d56a1004edc18 100644 --- a/packages/cli/test/integration/auth.api.test.ts +++ b/packages/cli/test/integration/auth.api.test.ts @@ -5,7 +5,7 @@ import config from '@/config'; import { AUTH_COOKIE_NAME } from '@/constants'; import type { User } from '@db/entities/User'; import { UserRepository } from '@db/repositories/user.repository'; -import { MfaService } from '@/Mfa/mfa.service'; +import { MfaService } from '@/mfa/mfa.service'; import { LOGGED_OUT_RESPONSE_BODY } from './shared/constants'; import { randomValidPassword } from './shared/random'; @@ -386,13 +386,19 @@ describe('GET /resolve-signup-token', () => { describe('POST /logout', () => { test('should log user out', async () => { const owner = await createUser({ role: 'global:owner' }); + const ownerAgent = testServer.authAgentFor(owner); + // @ts-expect-error `accessInfo` types are incorrect + const cookie = ownerAgent.jar.getCookie(AUTH_COOKIE_NAME, { path: '/' }); - const response = await testServer.authAgentFor(owner).post('/logout'); + const response = await ownerAgent.post('/logout'); expect(response.statusCode).toBe(200); expect(response.body).toEqual(LOGGED_OUT_RESPONSE_BODY); const authToken = utils.getAuthToken(response); expect(authToken).toBeUndefined(); + + ownerAgent.jar.setCookie(`${AUTH_COOKIE_NAME}=${cookie!.value}`); + await ownerAgent.get('/login').expect(401); }); }); diff --git a/packages/cli/test/integration/auth.mw.test.ts b/packages/cli/test/integration/auth.mw.test.ts index b4a47667fe658..262bea38fe9da 100644 --- a/packages/cli/test/integration/auth.mw.test.ts +++ b/packages/cli/test/integration/auth.mw.test.ts @@ -1,4 +1,4 @@ -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import * as utils from './shared/utils/'; import { createUser } from './shared/db/users'; diff --git a/packages/cli/test/integration/commands/credentials.cmd.test.ts b/packages/cli/test/integration/commands/credentials.cmd.test.ts index bcb6f0173b262..61b4169712d6e 100644 --- a/packages/cli/test/integration/commands/credentials.cmd.test.ts +++ b/packages/cli/test/integration/commands/credentials.cmd.test.ts @@ -1,7 +1,7 @@ import { nanoid } from 'nanoid'; import { ImportCredentialsCommand } from '@/commands/import/credentials'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { setupTestCommand } from '@test-integration/utils/testCommand'; import { mockInstance } from '../../shared/mocking'; diff --git a/packages/cli/test/integration/commands/import.cmd.test.ts b/packages/cli/test/integration/commands/import.cmd.test.ts index ba72d64d775fe..7a000ca9c6bff 100644 --- a/packages/cli/test/integration/commands/import.cmd.test.ts +++ b/packages/cli/test/integration/commands/import.cmd.test.ts @@ -1,7 +1,7 @@ import { nanoid } from 'nanoid'; import { ImportWorkflowsCommand } from '@/commands/import/workflow'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { setupTestCommand } from '@test-integration/utils/testCommand'; import { mockInstance } from '../../shared/mocking'; diff --git a/packages/cli/test/integration/commands/ldap/reset.test.ts b/packages/cli/test/integration/commands/ldap/reset.test.ts index 720c98c401063..52350733ca265 100644 --- a/packages/cli/test/integration/commands/ldap/reset.test.ts +++ b/packages/cli/test/integration/commands/ldap/reset.test.ts @@ -3,13 +3,13 @@ import { v4 as uuid } from 'uuid'; import { EntityNotFoundError } from '@n8n/typeorm'; import { Reset } from '@/commands/ldap/reset'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; -import { getLdapSynchronizations, saveLdapSynchronization } from '@/Ldap/helpers.ee'; -import { LdapService } from '@/Ldap/ldap.service.ee'; +import { getLdapSynchronizations, saveLdapSynchronization } from '@/ldap/helpers.ee'; +import { LdapService } from '@/ldap/ldap.service.ee'; import { Push } from '@/push'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/test/integration/commands/license.cmd.test.ts b/packages/cli/test/integration/commands/license.cmd.test.ts index 1717e1a5ff185..bdca192201861 100644 --- a/packages/cli/test/integration/commands/license.cmd.test.ts +++ b/packages/cli/test/integration/commands/license.cmd.test.ts @@ -1,5 +1,5 @@ -import { License } from '@/License'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { License } from '@/license'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { ClearLicenseCommand } from '@/commands/license/clear'; import { setupTestCommand } from '@test-integration/utils/testCommand'; diff --git a/packages/cli/test/integration/commands/reset.cmd.test.ts b/packages/cli/test/integration/commands/reset.cmd.test.ts index 573e85043ea3c..73bb7877fe3a5 100644 --- a/packages/cli/test/integration/commands/reset.cmd.test.ts +++ b/packages/cli/test/integration/commands/reset.cmd.test.ts @@ -1,8 +1,8 @@ import { Container } from 'typedi'; import { Reset } from '@/commands/user-management/reset'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; -import { NodeTypes } from '@/NodeTypes'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; +import { NodeTypes } from '@/node-types'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials.repository'; import { CredentialsRepository } from '@db/repositories/credentials.repository'; diff --git a/packages/cli/test/integration/commands/update/workflow.test.ts b/packages/cli/test/integration/commands/update/workflow.test.ts index 95a25bc4f647e..1119536a8a59a 100644 --- a/packages/cli/test/integration/commands/update/workflow.test.ts +++ b/packages/cli/test/integration/commands/update/workflow.test.ts @@ -1,4 +1,4 @@ -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { UpdateWorkflowCommand } from '@/commands/update/workflow'; import { setupTestCommand } from '@test-integration/utils/testCommand'; diff --git a/packages/cli/test/integration/commands/worker.cmd.test.ts b/packages/cli/test/integration/commands/worker.cmd.test.ts index e7f783bf94126..aad419d23b177 100644 --- a/packages/cli/test/integration/commands/worker.cmd.test.ts +++ b/packages/cli/test/integration/commands/worker.cmd.test.ts @@ -2,13 +2,13 @@ import { BinaryDataService } from 'n8n-core'; import { Worker } from '@/commands/worker'; import config from '@/config'; -import { ExternalSecretsManager } from '@/ExternalSecrets/ExternalSecretsManager.ee'; +import { ExternalSecretsManager } from '@/external-secrets/external-secrets-manager.ee'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { OrchestrationHandlerWorkerService } from '@/services/orchestration/worker/orchestration.handler.worker.service'; import { OrchestrationWorkerService } from '@/services/orchestration/worker/orchestration.worker.service'; -import { License } from '@/License'; -import { ExternalHooks } from '@/ExternalHooks'; +import { License } from '@/license'; +import { ExternalHooks } from '@/external-hooks'; import { ScalingService } from '@/scaling/scaling.service'; import { setupTestCommand } from '@test-integration/utils/testCommand'; diff --git a/packages/cli/test/integration/community-packages.api.test.ts b/packages/cli/test/integration/community-packages.api.test.ts index 46c7efad03434..ff935a2c5b1d2 100644 --- a/packages/cli/test/integration/community-packages.api.test.ts +++ b/packages/cli/test/integration/community-packages.api.test.ts @@ -2,7 +2,7 @@ import path from 'path'; import type { InstalledPackages } from '@db/entities/InstalledPackages'; import type { InstalledNodes } from '@db/entities/InstalledNodes'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { CommunityPackagesService } from '@/services/communityPackages.service'; import { mockInstance } from '../shared/mocking'; diff --git a/packages/cli/test/integration/controllers/dynamic-node-parameters.controller.test.ts b/packages/cli/test/integration/controllers/dynamic-node-parameters.controller.test.ts index fd66cbf5fd700..6488fb3450c47 100644 --- a/packages/cli/test/integration/controllers/dynamic-node-parameters.controller.test.ts +++ b/packages/cli/test/integration/controllers/dynamic-node-parameters.controller.test.ts @@ -6,7 +6,7 @@ import type { import { mock } from 'jest-mock-extended'; import { DynamicNodeParametersService } from '@/services/dynamicNodeParameters.service'; -import * as AdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as AdditionalData from '@/workflow-execute-additional-data'; import { createOwner } from '../shared/db/users'; import { setupTestServer } from '../shared/utils'; diff --git a/packages/cli/test/integration/controllers/invitation/invitation.controller.integration.test.ts b/packages/cli/test/integration/controllers/invitation/invitation.controller.integration.test.ts index 8b1048267da20..3f7e55f866965 100644 --- a/packages/cli/test/integration/controllers/invitation/invitation.controller.integration.test.ts +++ b/packages/cli/test/integration/controllers/invitation/invitation.controller.integration.test.ts @@ -1,8 +1,8 @@ import Container from 'typedi'; import { Not } from '@n8n/typeorm'; import { EventService } from '@/events/event.service'; -import { ExternalHooks } from '@/ExternalHooks'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { ExternalHooks } from '@/external-hooks'; +import { UserManagementMailer } from '@/user-management/email'; import { UserRepository } from '@/databases/repositories/user.repository'; import { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts b/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts index 970727c2c8c64..46ce3b89a98a3 100644 --- a/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts +++ b/packages/cli/test/integration/controllers/oauth/oauth2.api.test.ts @@ -5,7 +5,7 @@ import { parse as parseQs } from 'querystring'; import type { CredentialsEntity } from '@db/entities/CredentialsEntity'; import type { User } from '@db/entities/User'; -import { CredentialsHelper } from '@/CredentialsHelper'; +import { CredentialsHelper } from '@/credentials-helper'; import { OAuth2CredentialController } from '@/controllers/oauth/oAuth2Credential.controller'; import { createOwner } from '@test-integration/db/users'; diff --git a/packages/cli/test/integration/credentials/credentials.api.ee.test.ts b/packages/cli/test/integration/credentials/credentials.api.ee.test.ts index 6b74dd843c303..18f45a518bd1c 100644 --- a/packages/cli/test/integration/credentials/credentials.api.ee.test.ts +++ b/packages/cli/test/integration/credentials/credentials.api.ee.test.ts @@ -8,7 +8,7 @@ import { SharedCredentialsRepository } from '@db/repositories/sharedCredentials. import { ProjectRepository } from '@db/repositories/project.repository'; import type { Project } from '@db/entities/Project'; import { ProjectService } from '@/services/project.service'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { UserManagementMailer } from '@/user-management/email'; import { randomCredentialPayload } from '../shared/random'; import * as testDb from '../shared/testDb'; diff --git a/packages/cli/test/integration/debug.controller.test.ts b/packages/cli/test/integration/debug.controller.test.ts index c44a4fd477749..a85eb57705a68 100644 --- a/packages/cli/test/integration/debug.controller.test.ts +++ b/packages/cli/test/integration/debug.controller.test.ts @@ -1,5 +1,5 @@ import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { generateNanoId } from '@/databases/utils/generators'; import type { WorkflowEntity } from '@/databases/entities/WorkflowEntity'; import { OrchestrationService } from '@/services/orchestration.service'; diff --git a/packages/cli/test/integration/executions.controller.test.ts b/packages/cli/test/integration/executions.controller.test.ts index 94faa32351764..4c20f7244c6d8 100644 --- a/packages/cli/test/integration/executions.controller.test.ts +++ b/packages/cli/test/integration/executions.controller.test.ts @@ -8,7 +8,7 @@ import { setupTestServer } from './shared/utils'; import { mockInstance } from '../shared/mocking'; import { ConcurrencyControlService } from '@/concurrency/concurrency-control.service'; -import { WaitTracker } from '@/WaitTracker'; +import { WaitTracker } from '@/wait-tracker'; import { createTeamProject, linkUserToProject } from './shared/db/projects'; mockInstance(WaitTracker); diff --git a/packages/cli/test/integration/ldap/ldap.api.test.ts b/packages/cli/test/integration/ldap/ldap.api.test.ts index 25dbbd3b9de57..e3805674f3b8d 100644 --- a/packages/cli/test/integration/ldap/ldap.api.test.ts +++ b/packages/cli/test/integration/ldap/ldap.api.test.ts @@ -7,10 +7,10 @@ import config from '@/config'; import type { User } from '@db/entities/User'; import { UserRepository } from '@db/repositories/user.repository'; import { AuthProviderSyncHistoryRepository } from '@db/repositories/authProviderSyncHistory.repository'; -import { LDAP_DEFAULT_CONFIGURATION } from '@/Ldap/constants'; -import { LdapService } from '@/Ldap/ldap.service.ee'; -import { saveLdapSynchronization } from '@/Ldap/helpers.ee'; -import { getCurrentAuthenticationMethod, setCurrentAuthenticationMethod } from '@/sso/ssoHelpers'; +import { LDAP_DEFAULT_CONFIGURATION } from '@/ldap/constants'; +import { LdapService } from '@/ldap/ldap.service.ee'; +import { saveLdapSynchronization } from '@/ldap/helpers.ee'; +import { getCurrentAuthenticationMethod, setCurrentAuthenticationMethod } from '@/sso/sso-helpers'; import { randomEmail, randomName, uniqueId } from './../shared/random'; import * as testDb from './../shared/testDb'; diff --git a/packages/cli/test/integration/license.api.test.ts b/packages/cli/test/integration/license.api.test.ts index d5e434b3c861c..1428de866333f 100644 --- a/packages/cli/test/integration/license.api.test.ts +++ b/packages/cli/test/integration/license.api.test.ts @@ -3,7 +3,7 @@ import config from '@/config'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; import type { User } from '@db/entities/User'; import type { ILicensePostResponse, ILicenseReadResponse } from '@/Interfaces'; -import { License } from '@/License'; +import { License } from '@/license'; import * as testDb from './shared/testDb'; import * as utils from './shared/utils/'; diff --git a/packages/cli/test/integration/mfa/mfa.api.test.ts b/packages/cli/test/integration/mfa/mfa.api.test.ts index 792ad1cb8876c..7bfdc01477c43 100644 --- a/packages/cli/test/integration/mfa/mfa.api.test.ts +++ b/packages/cli/test/integration/mfa/mfa.api.test.ts @@ -5,7 +5,7 @@ import { AuthService } from '@/auth/auth.service'; import config from '@/config'; import type { User } from '@db/entities/User'; import { AuthUserRepository } from '@db/repositories/authUser.repository'; -import { TOTPService } from '@/Mfa/totp.service'; +import { TOTPService } from '@/mfa/totp.service'; import * as testDb from '../shared/testDb'; import * as utils from '../shared/utils'; diff --git a/packages/cli/test/integration/middlewares/bodyParser.test.ts b/packages/cli/test/integration/middlewares/bodyParser.test.ts index d17c3fcb11fb1..00163e05bbf67 100644 --- a/packages/cli/test/integration/middlewares/bodyParser.test.ts +++ b/packages/cli/test/integration/middlewares/bodyParser.test.ts @@ -2,7 +2,7 @@ import { createServer } from 'http'; import { gzipSync, deflateSync } from 'zlib'; import type { Request, Response } from 'express'; import request from 'supertest'; -import { rawBodyReader, bodyParser } from '@/middlewares/bodyParser'; +import { rawBodyReader, bodyParser } from '@/middlewares/body-parser'; describe('bodyParser', () => { const server = createServer((req: Request, res: Response) => { diff --git a/packages/cli/test/integration/passwordReset.api.test.ts b/packages/cli/test/integration/passwordReset.api.test.ts index 3b46fd476f050..bfc5c2b35e1fb 100644 --- a/packages/cli/test/integration/passwordReset.api.test.ts +++ b/packages/cli/test/integration/passwordReset.api.test.ts @@ -5,13 +5,13 @@ import { mock } from 'jest-mock-extended'; import { randomString } from 'n8n-workflow'; import { AuthService } from '@/auth/auth.service'; -import { License } from '@/License'; +import { License } from '@/license'; import config from '@/config'; import type { User } from '@db/entities/User'; -import { setCurrentAuthenticationMethod } from '@/sso/ssoHelpers'; -import { ExternalHooks } from '@/ExternalHooks'; +import { setCurrentAuthenticationMethod } from '@/sso/sso-helpers'; +import { ExternalHooks } from '@/external-hooks'; import { JwtService } from '@/services/jwt.service'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { UserManagementMailer } from '@/user-management/email'; import { UserRepository } from '@db/repositories/user.repository'; import { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/test/integration/PermissionChecker.test.ts b/packages/cli/test/integration/permission-checker.test.ts similarity index 92% rename from packages/cli/test/integration/PermissionChecker.test.ts rename to packages/cli/test/integration/permission-checker.test.ts index ff10d0497439a..f35603a1b6164 100644 --- a/packages/cli/test/integration/PermissionChecker.test.ts +++ b/packages/cli/test/integration/permission-checker.test.ts @@ -5,17 +5,17 @@ import { randomInt } from 'n8n-workflow'; import type { User } from '@db/entities/User'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; -import { NodeTypes } from '@/NodeTypes'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; +import { NodeTypes } from '@/node-types'; import { OwnershipService } from '@/services/ownership.service'; -import { PermissionChecker } from '@/UserManagement/PermissionChecker'; +import { PermissionChecker } from '@/user-management/permission-checker'; import { mockInstance } from '../shared/mocking'; -import { randomCredentialPayload as randomCred } from '../integration/shared/random'; -import * as testDb from '../integration/shared/testDb'; -import type { SaveCredentialFunction } from '../integration/shared/types'; -import { affixRoleToSaveCredential } from '../integration/shared/db/credentials'; -import { createOwner, createUser } from '../integration/shared/db/users'; +import { randomCredentialPayload as randomCred } from './shared/random'; +import * as testDb from './shared/testDb'; +import type { SaveCredentialFunction } from './shared/types'; +import { affixRoleToSaveCredential } from './shared/db/credentials'; +import { createOwner, createUser } from './shared/db/users'; import { SharedCredentialsRepository } from '@/databases/repositories/sharedCredentials.repository'; import { getPersonalProject } from './shared/db/projects'; import type { WorkflowEntity } from '@/databases/entities/WorkflowEntity'; diff --git a/packages/cli/test/integration/project.api.test.ts b/packages/cli/test/integration/project.api.test.ts index 0d2491271033d..4fb7f08a028b1 100644 --- a/packages/cli/test/integration/project.api.test.ts +++ b/packages/cli/test/integration/project.api.test.ts @@ -27,7 +27,7 @@ import type { GlobalRole } from '@/databases/entities/User'; import type { Scope } from '@n8n/permissions'; import { CacheService } from '@/services/cache/cache.service'; import { mockInstance } from '../shared/mocking'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ProjectRepository } from '@/databases/repositories/project.repository'; import { RoleService } from '@/services/role.service'; diff --git a/packages/cli/test/integration/pruning.service.test.ts b/packages/cli/test/integration/pruning.service.test.ts index 37d218c09d438..f5deabf756f2b 100644 --- a/packages/cli/test/integration/pruning.service.test.ts +++ b/packages/cli/test/integration/pruning.service.test.ts @@ -9,7 +9,7 @@ import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; import { ExecutionRepository } from '@db/repositories/execution.repository'; import { TIME } from '@/constants'; import { PruningService } from '@/services/pruning.service'; -import { Logger } from '@/Logger'; +import { Logger } from '@/logger'; import { mockInstance } from '../shared/mocking'; import { createWorkflow } from './shared/db/workflows'; diff --git a/packages/cli/test/integration/publicApi/executions.test.ts b/packages/cli/test/integration/publicApi/executions.test.ts index 8dac97fc22381..9994dc8a857b6 100644 --- a/packages/cli/test/integration/publicApi/executions.test.ts +++ b/packages/cli/test/integration/publicApi/executions.test.ts @@ -1,5 +1,5 @@ import type { User } from '@db/entities/User'; -import type { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import type { ActiveWorkflowManager } from '@/active-workflow-manager'; import { randomApiKey } from '../shared/random'; import * as utils from '../shared/utils/'; diff --git a/packages/cli/test/integration/publicApi/users.ee.test.ts b/packages/cli/test/integration/publicApi/users.ee.test.ts index be23d8f45a519..4874fab4f5354 100644 --- a/packages/cli/test/integration/publicApi/users.ee.test.ts +++ b/packages/cli/test/integration/publicApi/users.ee.test.ts @@ -1,7 +1,7 @@ import validator from 'validator'; import { v4 as uuid } from 'uuid'; -import { License } from '@/License'; +import { License } from '@/license'; import { mockInstance } from '../../shared/mocking'; import { randomApiKey } from '../shared/random'; diff --git a/packages/cli/test/integration/publicApi/workflows.test.ts b/packages/cli/test/integration/publicApi/workflows.test.ts index 5185f3862de89..66736aa03d9fd 100644 --- a/packages/cli/test/integration/publicApi/workflows.test.ts +++ b/packages/cli/test/integration/publicApi/workflows.test.ts @@ -9,7 +9,7 @@ import type { Project } from '@db/entities/Project'; import { ProjectRepository } from '@db/repositories/project.repository'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repository'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ExecutionService } from '@/executions/execution.service'; import { randomApiKey } from '../shared/random'; diff --git a/packages/cli/test/integration/saml/saml.api.test.ts b/packages/cli/test/integration/saml/saml.api.test.ts index 23dc49607f709..eef02fcfe2c2e 100644 --- a/packages/cli/test/integration/saml/saml.api.test.ts +++ b/packages/cli/test/integration/saml/saml.api.test.ts @@ -1,6 +1,6 @@ import type { User } from '@db/entities/User'; -import { setSamlLoginEnabled } from '@/sso/saml/samlHelpers'; -import { getCurrentAuthenticationMethod, setCurrentAuthenticationMethod } from '@/sso/ssoHelpers'; +import { setSamlLoginEnabled } from '@/sso/saml/saml-helpers'; +import { getCurrentAuthenticationMethod, setCurrentAuthenticationMethod } from '@/sso/sso-helpers'; import { randomEmail, randomName, randomValidPassword } from '../shared/random'; import * as utils from '../shared/utils/'; diff --git a/packages/cli/test/integration/saml/samlHelpers.test.ts b/packages/cli/test/integration/saml/samlHelpers.test.ts index 7941efada1c0d..ac43f57a1bcfe 100644 --- a/packages/cli/test/integration/saml/samlHelpers.test.ts +++ b/packages/cli/test/integration/saml/samlHelpers.test.ts @@ -1,5 +1,5 @@ -import * as helpers from '@/sso/saml/samlHelpers'; -import type { SamlUserAttributes } from '@/sso/saml/types/samlUserAttributes'; +import * as helpers from '@/sso/saml/saml-helpers'; +import type { SamlUserAttributes } from '@/sso/saml/types/saml-user-attributes'; import { getPersonalProject } from '../../integration/shared/db/projects'; import * as testDb from '../shared/testDb'; diff --git a/packages/cli/test/integration/security-audit/CredentialsRiskReporter.test.ts b/packages/cli/test/integration/security-audit/CredentialsRiskReporter.test.ts index 4fdc54dbc1b06..bd9cd124ed1a8 100644 --- a/packages/cli/test/integration/security-audit/CredentialsRiskReporter.test.ts +++ b/packages/cli/test/integration/security-audit/CredentialsRiskReporter.test.ts @@ -1,6 +1,6 @@ import { v4 as uuid } from 'uuid'; import config from '@/config'; -import { SecurityAuditService } from '@/security-audit/SecurityAudit.service'; +import { SecurityAuditService } from '@/security-audit/security-audit.service'; import { CREDENTIALS_REPORT } from '@/security-audit/constants'; import { getRiskSection } from './utils'; import * as testDb from '../shared/testDb'; diff --git a/packages/cli/test/integration/security-audit/DatabaseRiskReporter.test.ts b/packages/cli/test/integration/security-audit/DatabaseRiskReporter.test.ts index e7ae638d97ecd..bfa8ff0aafce1 100644 --- a/packages/cli/test/integration/security-audit/DatabaseRiskReporter.test.ts +++ b/packages/cli/test/integration/security-audit/DatabaseRiskReporter.test.ts @@ -1,5 +1,5 @@ import { v4 as uuid } from 'uuid'; -import { SecurityAuditService } from '@/security-audit/SecurityAudit.service'; +import { SecurityAuditService } from '@/security-audit/security-audit.service'; import { DATABASE_REPORT, SQL_NODE_TYPES, diff --git a/packages/cli/test/integration/security-audit/FilesystemRiskReporter.test.ts b/packages/cli/test/integration/security-audit/FilesystemRiskReporter.test.ts index f6d8537c0d48c..5ec1f0c4d46e7 100644 --- a/packages/cli/test/integration/security-audit/FilesystemRiskReporter.test.ts +++ b/packages/cli/test/integration/security-audit/FilesystemRiskReporter.test.ts @@ -1,5 +1,5 @@ import { v4 as uuid } from 'uuid'; -import { SecurityAuditService } from '@/security-audit/SecurityAudit.service'; +import { SecurityAuditService } from '@/security-audit/security-audit.service'; import { FILESYSTEM_INTERACTION_NODE_TYPES, FILESYSTEM_REPORT } from '@/security-audit/constants'; import { getRiskSection, saveManualTriggerWorkflow } from './utils'; import * as testDb from '../shared/testDb'; diff --git a/packages/cli/test/integration/security-audit/InstanceRiskReporter.test.ts b/packages/cli/test/integration/security-audit/InstanceRiskReporter.test.ts index 5f59206426a05..d6dc020d4f5b6 100644 --- a/packages/cli/test/integration/security-audit/InstanceRiskReporter.test.ts +++ b/packages/cli/test/integration/security-audit/InstanceRiskReporter.test.ts @@ -1,5 +1,5 @@ import { v4 as uuid } from 'uuid'; -import { SecurityAuditService } from '@/security-audit/SecurityAudit.service'; +import { SecurityAuditService } from '@/security-audit/security-audit.service'; import { INSTANCE_REPORT, WEBHOOK_VALIDATOR_NODE_TYPES } from '@/security-audit/constants'; import { getRiskSection, diff --git a/packages/cli/test/integration/security-audit/NodesRiskReporter.test.ts b/packages/cli/test/integration/security-audit/NodesRiskReporter.test.ts index 03386bef0088e..e61027b356178 100644 --- a/packages/cli/test/integration/security-audit/NodesRiskReporter.test.ts +++ b/packages/cli/test/integration/security-audit/NodesRiskReporter.test.ts @@ -1,10 +1,10 @@ import { v4 as uuid } from 'uuid'; import { Container } from 'typedi'; -import { SecurityAuditService } from '@/security-audit/SecurityAudit.service'; +import { SecurityAuditService } from '@/security-audit/security-audit.service'; import { OFFICIAL_RISKY_NODE_TYPES, NODES_REPORT } from '@/security-audit/constants'; import { toReportTitle } from '@/security-audit/utils'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; -import { NodeTypes } from '@/NodeTypes'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; +import { NodeTypes } from '@/node-types'; import { CommunityPackagesService } from '@/services/communityPackages.service'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; diff --git a/packages/cli/test/integration/services/workflowStaticData.service.test.ts b/packages/cli/test/integration/services/workflowStaticData.service.test.ts index 353639bcc2f6c..0ce2665001824 100644 --- a/packages/cli/test/integration/services/workflowStaticData.service.test.ts +++ b/packages/cli/test/integration/services/workflowStaticData.service.test.ts @@ -1,10 +1,10 @@ -import { WorkflowStaticDataService } from '@/workflows/workflowStaticData.service'; +import { WorkflowStaticDataService } from '@/workflows/workflow-static-data.service'; import * as testDb from '@test-integration/testDb'; import Container from 'typedi'; import { createWorkflow } from '@test-integration/db/workflows'; import { Workflow } from 'n8n-workflow'; import { mockInstance } from '@test/mocking'; -import { NodeTypes } from '@/NodeTypes'; +import { NodeTypes } from '@/node-types'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; const nodeTypes = mockInstance(NodeTypes); diff --git a/packages/cli/test/integration/shared/db/credentials.ts b/packages/cli/test/integration/shared/db/credentials.ts index 588fee6b51196..4aedb09324fdd 100644 --- a/packages/cli/test/integration/shared/db/credentials.ts +++ b/packages/cli/test/integration/shared/db/credentials.ts @@ -12,7 +12,7 @@ import type { Project } from '@/databases/entities/Project'; export async function encryptCredentialData( credential: CredentialsEntity, ): Promise { - const { createCredentialsFromCredentialsEntity } = await import('@/CredentialsHelper'); + const { createCredentialsFromCredentialsEntity } = await import('@/credentials-helper'); const coreCredential = createCredentialsFromCredentialsEntity(credential, true); // @ts-ignore diff --git a/packages/cli/test/integration/shared/db/users.ts b/packages/cli/test/integration/shared/db/users.ts index 98626bc549d9e..a939ce7b749ca 100644 --- a/packages/cli/test/integration/shared/db/users.ts +++ b/packages/cli/test/integration/shared/db/users.ts @@ -4,8 +4,8 @@ import { AuthIdentity } from '@db/entities/AuthIdentity'; import { type GlobalRole, type User } from '@db/entities/User'; import { AuthIdentityRepository } from '@db/repositories/authIdentity.repository'; import { UserRepository } from '@db/repositories/user.repository'; -import { TOTPService } from '@/Mfa/totp.service'; -import { MfaService } from '@/Mfa/mfa.service'; +import { TOTPService } from '@/mfa/totp.service'; +import { MfaService } from '@/mfa/mfa.service'; import { randomApiKey, randomEmail, randomName, randomValidPassword } from '../random'; import { AuthUserRepository } from '@/databases/repositories/authUser.repository'; diff --git a/packages/cli/test/integration/shared/ldap.ts b/packages/cli/test/integration/shared/ldap.ts index 1223bd0f07961..147b01f4c67bf 100644 --- a/packages/cli/test/integration/shared/ldap.ts +++ b/packages/cli/test/integration/shared/ldap.ts @@ -1,5 +1,5 @@ -import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/Ldap/constants'; -import type { LdapConfig } from '@/Ldap/types'; +import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/ldap/constants'; +import type { LdapConfig } from '@/ldap/types'; import { SettingsRepository } from '@/databases/repositories/settings.repository'; import { jsonParse } from 'n8n-workflow'; import Container from 'typedi'; diff --git a/packages/cli/test/integration/shared/license.ts b/packages/cli/test/integration/shared/license.ts index 3f9e736153294..701cc36eabed9 100644 --- a/packages/cli/test/integration/shared/license.ts +++ b/packages/cli/test/integration/shared/license.ts @@ -1,5 +1,5 @@ import type { BooleanLicenseFeature, NumericLicenseFeature } from '@/Interfaces'; -import type { License } from '@/License'; +import type { License } from '@/license'; export interface LicenseMockDefaults { features?: BooleanLicenseFeature[]; diff --git a/packages/cli/test/integration/shared/utils/index.ts b/packages/cli/test/integration/shared/utils/index.ts index 7abdb1a8e834d..329b9d7b8a0a1 100644 --- a/packages/cli/test/integration/shared/utils/index.ts +++ b/packages/cli/test/integration/shared/utils/index.ts @@ -14,7 +14,7 @@ import { WorkflowEntity } from '@db/entities/WorkflowEntity'; import { SettingsRepository } from '@db/repositories/settings.repository'; import { AUTH_COOKIE_NAME } from '@/constants'; import { ExecutionService } from '@/executions/execution.service'; -import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { Push } from '@/push'; import { OrchestrationService } from '@/services/orchestration.service'; @@ -37,7 +37,7 @@ export async function initActiveWorkflowManager() { mockInstance(Push); mockInstance(ExecutionService); - const { ActiveWorkflowManager } = await import('@/ActiveWorkflowManager'); + const { ActiveWorkflowManager } = await import('@/active-workflow-manager'); const activeWorkflowManager = Container.get(ActiveWorkflowManager); await activeWorkflowManager.init(); return activeWorkflowManager; diff --git a/packages/cli/test/integration/shared/utils/testCommand.ts b/packages/cli/test/integration/shared/utils/testCommand.ts index 9592b806c3c75..4e796316bb9e0 100644 --- a/packages/cli/test/integration/shared/utils/testCommand.ts +++ b/packages/cli/test/integration/shared/utils/testCommand.ts @@ -2,11 +2,11 @@ import type { Config } from '@oclif/core'; import type { Class } from 'n8n-core'; import { mock } from 'jest-mock-extended'; -import type { BaseCommand } from '@/commands/BaseCommand'; +import type { BaseCommand } from '@/commands/base-command'; import * as testDb from '../testDb'; import { TelemetryEventRelay } from '@/events/telemetry-event-relay'; import { mockInstance } from '@test/mocking'; -import { InternalHooks } from '@/InternalHooks'; +import { InternalHooks } from '@/internal-hooks'; mockInstance(InternalHooks); diff --git a/packages/cli/test/integration/shared/utils/testServer.ts b/packages/cli/test/integration/shared/utils/testServer.ts index 319c4e2b588db..c40285829e805 100644 --- a/packages/cli/test/integration/shared/utils/testServer.ts +++ b/packages/cli/test/integration/shared/utils/testServer.ts @@ -12,8 +12,8 @@ import { ControllerRegistry } from '@/decorators'; import { rawBodyReader, bodyParser } from '@/middlewares'; import { PostHogClient } from '@/posthog'; import { Push } from '@/push'; -import { License } from '@/License'; -import { Logger } from '@/Logger'; +import { License } from '@/license'; +import { Logger } from '@/logger'; import { AuthService } from '@/auth/auth.service'; import type { APIRequest } from '@/requests'; @@ -166,14 +166,14 @@ export const setupTestServer = ({ break; case 'ldap': - const { LdapService } = await import('@/Ldap/ldap.service.ee'); - await import('@/Ldap/ldap.controller.ee'); + const { LdapService } = await import('@/ldap/ldap.service.ee'); + await import('@/ldap/ldap.controller.ee'); testServer.license.enable('feat:ldap'); await Container.get(LdapService).init(); break; case 'saml': - const { setSamlLoginEnabled } = await import('@/sso/saml/samlHelpers'); + const { setSamlLoginEnabled } = await import('@/sso/saml/saml-helpers'); await import('@/sso/saml/routes/saml.controller.ee'); await setSamlLoginEnabled(true); break; @@ -211,11 +211,11 @@ export const setupTestServer = ({ break; case 'externalSecrets': - await import('@/ExternalSecrets/ExternalSecrets.controller.ee'); + await import('@/external-secrets/external-secrets.controller.ee'); break; case 'workflowHistory': - await import('@/workflows/workflowHistory/workflowHistory.controller.ee'); + await import('@/workflows/workflow-history/workflow-history.controller.ee'); break; case 'binaryData': diff --git a/packages/cli/test/integration/webhooks.api.test.ts b/packages/cli/test/integration/webhooks.api.test.ts index 5b61dd98611ac..630fe7350e40c 100644 --- a/packages/cli/test/integration/webhooks.api.test.ts +++ b/packages/cli/test/integration/webhooks.api.test.ts @@ -2,9 +2,9 @@ import { readFileSync } from 'fs'; import { agent as testAgent } from 'supertest'; import type { INodeType, INodeTypeDescription, IWebhookFunctions } from 'n8n-workflow'; -import { AbstractServer } from '@/AbstractServer'; -import { ExternalHooks } from '@/ExternalHooks'; -import { NodeTypes } from '@/NodeTypes'; +import { AbstractServer } from '@/abstract-server'; +import { ExternalHooks } from '@/external-hooks'; +import { NodeTypes } from '@/node-types'; import { Push } from '@/push'; import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; diff --git a/packages/cli/test/integration/webhooks.test.ts b/packages/cli/test/integration/webhooks.test.ts index a729f9515818a..789ced02c6ca6 100644 --- a/packages/cli/test/integration/webhooks.test.ts +++ b/packages/cli/test/integration/webhooks.test.ts @@ -2,12 +2,12 @@ import type SuperAgentTest from 'supertest/lib/agent'; import { agent as testAgent } from 'supertest'; import { mock } from 'jest-mock-extended'; -import { AbstractServer } from '@/AbstractServer'; -import { LiveWebhooks } from '@/webhooks/LiveWebhooks'; -import { ExternalHooks } from '@/ExternalHooks'; -import { TestWebhooks } from '@/webhooks/TestWebhooks'; -import { WaitingWebhooks } from '@/webhooks/WaitingWebhooks'; -import { WaitingForms } from '@/WaitingForms'; +import { AbstractServer } from '@/abstract-server'; +import { LiveWebhooks } from '@/webhooks/live-webhooks'; +import { ExternalHooks } from '@/external-hooks'; +import { TestWebhooks } from '@/webhooks/test-webhooks'; +import { WaitingWebhooks } from '@/webhooks/waiting-webhooks'; +import { WaitingForms } from '@/waiting-forms'; import type { IWebhookResponseCallbackData } from '@/webhooks/webhook.types'; import { mockInstance } from '@test/mocking'; diff --git a/packages/cli/test/integration/workflowHistoryManager.test.ts b/packages/cli/test/integration/workflowHistoryManager.test.ts index 85a114abeee66..fa2da33e55622 100644 --- a/packages/cli/test/integration/workflowHistoryManager.test.ts +++ b/packages/cli/test/integration/workflowHistoryManager.test.ts @@ -4,8 +4,8 @@ import { DateTime } from 'luxon'; import config from '@/config'; import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repository'; -import { License } from '@/License'; -import { WorkflowHistoryManager } from '@/workflows/workflowHistory/workflowHistoryManager.ee'; +import { License } from '@/license'; +import { WorkflowHistoryManager } from '@/workflows/workflow-history/workflow-history-manager.ee'; import { mockInstance } from '../shared/mocking'; import * as testDb from './shared/testDb'; diff --git a/packages/cli/test/integration/workflows/workflow.service.test.ts b/packages/cli/test/integration/workflows/workflow.service.test.ts index b09cf30b0d1dd..1853c17839288 100644 --- a/packages/cli/test/integration/workflows/workflow.service.test.ts +++ b/packages/cli/test/integration/workflows/workflow.service.test.ts @@ -1,6 +1,6 @@ import Container from 'typedi'; import { mock } from 'jest-mock-extended'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { WorkflowRepository } from '@db/repositories/workflow.repository'; import { MessageEventBus } from '@/eventbus/MessageEventBus/MessageEventBus'; diff --git a/packages/cli/test/integration/workflows/workflowSharing.service.test.ts b/packages/cli/test/integration/workflows/workflowSharing.service.test.ts index 1907770fb178f..58bed7d1e359f 100644 --- a/packages/cli/test/integration/workflows/workflowSharing.service.test.ts +++ b/packages/cli/test/integration/workflows/workflowSharing.service.test.ts @@ -1,14 +1,14 @@ import Container from 'typedi'; import type { User } from '@db/entities/User'; -import { WorkflowSharingService } from '@/workflows/workflowSharing.service'; +import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; import * as testDb from '../shared/testDb'; import { createUser } from '../shared/db/users'; import { createWorkflow, shareWorkflowWithUsers } from '../shared/db/workflows'; import { ProjectService } from '@/services/project.service'; import { LicenseMocker } from '../shared/license'; -import { License } from '@/License'; +import { License } from '@/license'; let owner: User; let member: User; diff --git a/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts b/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts index e18dbd2fb5847..060eba25e23fc 100644 --- a/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts +++ b/packages/cli/test/integration/workflows/workflows.controller.ee.test.ts @@ -7,9 +7,9 @@ import type { Project } from '@db/entities/Project'; import { ProjectRepository } from '@db/repositories/project.repository'; import type { User } from '@db/entities/User'; import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repository'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; -import { License } from '@/License'; -import { UserManagementMailer } from '@/UserManagement/email'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; +import { License } from '@/license'; +import { UserManagementMailer } from '@/user-management/email'; import type { WorkflowWithSharingsMetaDataAndCredentials } from '@/workflows/workflows.types'; import { mockInstance } from '../../shared/mocking'; diff --git a/packages/cli/test/integration/workflows/workflows.controller.test.ts b/packages/cli/test/integration/workflows/workflows.controller.test.ts index 8ada8166ade22..d021df875bd66 100644 --- a/packages/cli/test/integration/workflows/workflows.controller.test.ts +++ b/packages/cli/test/integration/workflows/workflows.controller.test.ts @@ -11,9 +11,9 @@ import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repo import { SharedWorkflowRepository } from '@db/repositories/sharedWorkflow.repository'; import { ProjectRepository } from '@db/repositories/project.repository'; import { ProjectService } from '@/services/project.service'; -import { ActiveWorkflowManager } from '@/ActiveWorkflowManager'; +import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { EnterpriseWorkflowService } from '@/workflows/workflow.service.ee'; -import { License } from '@/License'; +import { License } from '@/license'; import { mockInstance } from '../../shared/mocking'; import * as utils from '../shared/utils/'; diff --git a/packages/editor-ui/src/components/CodeNodeEditor/CodeNodeEditor.vue b/packages/editor-ui/src/components/CodeNodeEditor/CodeNodeEditor.vue index 36a5d169e1ec9..1e19e4400f864 100644 --- a/packages/editor-ui/src/components/CodeNodeEditor/CodeNodeEditor.vue +++ b/packages/editor-ui/src/components/CodeNodeEditor/CodeNodeEditor.vue @@ -118,7 +118,7 @@ const i18n = useI18n(); const telemetry = useTelemetry(); onMounted(() => { - if (!props.isReadOnly) codeNodeEditorEventBus.on('error-line-number', highlightLine); + if (!props.isReadOnly) codeNodeEditorEventBus.on('highlightLine', highlightLine); codeNodeEditorEventBus.on('codeDiffApplied', diffApplied); @@ -188,7 +188,7 @@ onMounted(() => { onBeforeUnmount(() => { codeNodeEditorEventBus.off('codeDiffApplied', diffApplied); - if (!props.isReadOnly) codeNodeEditorEventBus.off('error-line-number', highlightLine); + if (!props.isReadOnly) codeNodeEditorEventBus.off('highlightLine', highlightLine); }); const aiEnabled = computed(() => { diff --git a/packages/editor-ui/src/components/NodeDetailsView.vue b/packages/editor-ui/src/components/NodeDetailsView.vue index 54a0336aec975..17a2195a8c05d 100644 --- a/packages/editor-ui/src/components/NodeDetailsView.vue +++ b/packages/editor-ui/src/components/NodeDetailsView.vue @@ -160,6 +160,7 @@ import { STICKY_NODE_TYPE, } from '@/constants'; import { useWorkflowActivate } from '@/composables/useWorkflowActivate'; +import type { DataPinningDiscoveryEvent } from '@/event-bus'; import { dataPinningEventBus } from '@/event-bus'; import { useWorkflowsStore } from '@/stores/workflows.store'; import { useNDVStore } from '@/stores/ndv.store'; @@ -238,7 +239,7 @@ const activeNodeType = computed(() => { return null; }); -const workflowRunning = computed(() => uiStore.isActionActive['workflowRunning']); +const workflowRunning = computed(() => uiStore.isActionActive.workflowRunning); const showTriggerWaitingWarning = computed( () => @@ -428,7 +429,7 @@ const featureRequestUrl = computed(() => { const outputPanelEditMode = computed(() => ndvStore.outputPanelEditMode); -const isWorkflowRunning = computed(() => uiStore.isActionActive['workflowRunning']); +const isWorkflowRunning = computed(() => uiStore.isActionActive.workflowRunning); const isExecutionWaitingForWebhook = computed(() => workflowsStore.executionWaitingForWebhook); @@ -458,7 +459,7 @@ const hasForeignCredential = computed(() => foreignCredentials.value.length > 0) //methods -const setIsTooltipVisible = ({ isTooltipVisible }: { isTooltipVisible: boolean }) => { +const setIsTooltipVisible = ({ isTooltipVisible }: DataPinningDiscoveryEvent) => { pinDataDiscoveryTooltipVisible.value = isTooltipVisible; }; diff --git a/packages/editor-ui/src/components/NodeSettings.vue b/packages/editor-ui/src/components/NodeSettings.vue index fd2f5b4e302a5..d9b8a734c190d 100644 --- a/packages/editor-ui/src/components/NodeSettings.vue +++ b/packages/editor-ui/src/components/NodeSettings.vue @@ -189,7 +189,6 @@ import type { INodeProperties, NodeParameterValue, ConnectionTypes, - NodeParameterValueType, } from 'n8n-workflow'; import { NodeHelpers, @@ -201,6 +200,7 @@ import { displayParameter, } from 'n8n-workflow'; import type { + CurlToJSONResponse, INodeUi, INodeUpdatePropertiesInformation, IUpdateInformation, @@ -235,9 +235,8 @@ import { useCredentialsStore } from '@/stores/credentials.store'; import type { EventBus } from 'n8n-design-system'; import { useExternalHooks } from '@/composables/useExternalHooks'; import { useNodeHelpers } from '@/composables/useNodeHelpers'; -import { importCurlEventBus } from '@/event-bus'; +import { importCurlEventBus, ndvEventBus } from '@/event-bus'; import { useToast } from '@/composables/useToast'; -import { ndvEventBus } from '@/event-bus'; export default defineComponent({ name: 'NodeSettings', @@ -489,12 +488,12 @@ export default defineComponent({ ndvEventBus.off('updateParameterValue', this.valueChanged); }, methods: { - setHttpNodeParameters(parameters: NodeParameterValueType) { + setHttpNodeParameters(parameters: CurlToJSONResponse) { try { this.valueChanged({ node: this.node?.name, name: 'parameters', - value: parameters, + value: parameters as unknown as INodeParameters, }); } catch {} }, diff --git a/packages/editor-ui/src/components/SqlEditor/SqlEditor.vue b/packages/editor-ui/src/components/SqlEditor/SqlEditor.vue index b6ef67981e4ed..06ec2606b4067 100644 --- a/packages/editor-ui/src/components/SqlEditor/SqlEditor.vue +++ b/packages/editor-ui/src/components/SqlEditor/SqlEditor.vue @@ -154,7 +154,7 @@ watch(segments, () => { }); onMounted(() => { - codeNodeEditorEventBus.on('error-line-number', highlightLine); + codeNodeEditorEventBus.on('highlightLine', highlightLine); if (props.fullscreen) { focus(); @@ -162,7 +162,7 @@ onMounted(() => { }); onBeforeUnmount(() => { - codeNodeEditorEventBus.off('error-line-number', highlightLine); + codeNodeEditorEventBus.off('highlightLine', highlightLine); }); function line(lineNumber: number): Line | null { diff --git a/packages/editor-ui/src/composables/useNodeHelpers.ts b/packages/editor-ui/src/composables/useNodeHelpers.ts index a8c763b11f5a2..fd2fb50a81279 100644 --- a/packages/editor-ui/src/composables/useNodeHelpers.ts +++ b/packages/editor-ui/src/composables/useNodeHelpers.ts @@ -63,6 +63,7 @@ import { useCanvasStore } from '@/stores/canvas.store'; import { getEndpointScope } from '@/utils/nodeViewUtils'; import { useSourceControlStore } from '@/stores/sourceControl.store'; import { getConnectionInfo } from '@/utils/canvasUtils'; +import type { UnpinNodeDataEvent } from '@/event-bus/data-pinning'; declare namespace HttpRequestNode { namespace V2 { @@ -992,8 +993,8 @@ export function useNodeHelpers() { }); } - function removePinDataConnections(pinData: IPinData) { - Object.keys(pinData).forEach((nodeName) => { + function removePinDataConnections(event: UnpinNodeDataEvent) { + for (const nodeName of event.nodeNames) { const node = workflowsStore.getNodeByName(nodeName); if (!node) { return; @@ -1015,7 +1016,7 @@ export function useNodeHelpers() { canvasStore.jsPlumbInstance.setSuspendDrawing(true); connectionsArray.forEach(NodeViewUtils.resetConnection); canvasStore.jsPlumbInstance.setSuspendDrawing(false, true); - }); + } } function getOutputEndpointUUID( diff --git a/packages/editor-ui/src/composables/usePushConnection.ts b/packages/editor-ui/src/composables/usePushConnection.ts index 7c5c229a19fed..77d7201ca19c4 100644 --- a/packages/editor-ui/src/composables/usePushConnection.ts +++ b/packages/editor-ui/src/composables/usePushConnection.ts @@ -295,7 +295,7 @@ export function usePushConnection({ router }: { router: ReturnType; export const CanvasNodeHandleKey = 'canvasNodeHandle' as unknown as InjectionKey; + +/** Auth */ +export const BROWSER_ID_STORAGE_KEY = 'n8n-browserId'; diff --git a/packages/editor-ui/src/event-bus/code-node-editor.ts b/packages/editor-ui/src/event-bus/code-node-editor.ts index 128e07606f2a0..6ba3a32a7c35e 100644 --- a/packages/editor-ui/src/event-bus/code-node-editor.ts +++ b/packages/editor-ui/src/event-bus/code-node-editor.ts @@ -1,3 +1,13 @@ import { createEventBus } from 'n8n-design-system/utils'; -export const codeNodeEditorEventBus = createEventBus(); +export type HighlightLineEvent = number | 'final'; + +export interface CodeNodeEditorEventBusEvents { + /** Event that a diff have been applied to the code node editor */ + codeDiffApplied: never; + + /** Command to highlight a specific line in the code node editor */ + highlightLine: HighlightLineEvent; +} + +export const codeNodeEditorEventBus = createEventBus(); diff --git a/packages/editor-ui/src/event-bus/data-pinning.ts b/packages/editor-ui/src/event-bus/data-pinning.ts index aa6548741f10a..4f29fdc77226f 100644 --- a/packages/editor-ui/src/event-bus/data-pinning.ts +++ b/packages/editor-ui/src/event-bus/data-pinning.ts @@ -1,3 +1,23 @@ import { createEventBus } from 'n8n-design-system/utils'; +import type { IPinData } from 'n8n-workflow'; -export const dataPinningEventBus = createEventBus(); +export type DataPinningDiscoveryEvent = { + isTooltipVisible: boolean; +}; + +export type UnpinNodeDataEvent = { + nodeNames: string[]; +}; + +export interface DataPinningEventBusEvents { + /** Command to show or hide the data pinning discovery tooltip */ + 'data-pinning-discovery': DataPinningDiscoveryEvent; + + /** Event that data has been pinned for workflow */ + 'pin-data': IPinData; + + /** Event that data has been unpinned for specific nodes */ + 'unpin-data': UnpinNodeDataEvent; +} + +export const dataPinningEventBus = createEventBus(); diff --git a/packages/editor-ui/src/event-bus/html-editor.ts b/packages/editor-ui/src/event-bus/html-editor.ts index 7a53bf86a4369..e40e7dd16c81c 100644 --- a/packages/editor-ui/src/event-bus/html-editor.ts +++ b/packages/editor-ui/src/event-bus/html-editor.ts @@ -1,3 +1,8 @@ import { createEventBus } from 'n8n-design-system/utils'; -export const htmlEditorEventBus = createEventBus(); +export interface HtmlEditorEventBusEvents { + /** Command to format the content in the HtmlEditor */ + 'format-html': never; +} + +export const htmlEditorEventBus = createEventBus(); diff --git a/packages/editor-ui/src/event-bus/import-curl.ts b/packages/editor-ui/src/event-bus/import-curl.ts index 7a517bf3f4a2a..3ff4df697b8ae 100644 --- a/packages/editor-ui/src/event-bus/import-curl.ts +++ b/packages/editor-ui/src/event-bus/import-curl.ts @@ -1,3 +1,9 @@ +import type { CurlToJSONResponse } from '@/Interface'; import { createEventBus } from 'n8n-design-system/utils'; -export const importCurlEventBus = createEventBus(); +export interface ImportCurlEventBusEvents { + /** Command to set the HTTP node parameters based on the curl to JSON response */ + setHttpNodeParameters: CurlToJSONResponse; +} + +export const importCurlEventBus = createEventBus(); diff --git a/packages/editor-ui/src/stores/users.store.ts b/packages/editor-ui/src/stores/users.store.ts index ef153bb4b7e5e..613d2ea48dd75 100644 --- a/packages/editor-ui/src/stores/users.store.ts +++ b/packages/editor-ui/src/stores/users.store.ts @@ -1,6 +1,6 @@ import type { IUpdateUserSettingsReqPayload, UpdateGlobalRolePayload } from '@/api/users'; import * as usersApi from '@/api/users'; -import { PERSONALIZATION_MODAL_KEY, STORES, ROLE } from '@/constants'; +import { BROWSER_ID_STORAGE_KEY, PERSONALIZATION_MODAL_KEY, STORES, ROLE } from '@/constants'; import type { Cloud, IPersonalizationLatestVersion, @@ -180,6 +180,8 @@ export const useUsersStore = defineStore(STORES.USERS, () => { postHogStore.reset(); uiStore.clearBannerStack(); npsSurveyStore.resetNpsSurveyOnLogOut(); + + localStorage.removeItem(BROWSER_ID_STORAGE_KEY); }; const createOwner = async (params: { diff --git a/packages/editor-ui/src/stores/workflows.store.ts b/packages/editor-ui/src/stores/workflows.store.ts index d60e7db763728..45f8a4c658b45 100644 --- a/packages/editor-ui/src/stores/workflows.store.ts +++ b/packages/editor-ui/src/stores/workflows.store.ts @@ -669,14 +669,14 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => { }; } - function setWorkflowPinData(pinData: IPinData) { + function setWorkflowPinData(pinData?: IPinData) { workflow.value = { ...workflow.value, - pinData: pinData || {}, + pinData: pinData ?? {}, }; updateCachedWorkflow(); - dataPinningEventBus.emit('pin-data', pinData || {}); + dataPinningEventBus.emit('pin-data', pinData ?? {}); } function setWorkflowTagIds(tags: string[]) { @@ -768,7 +768,9 @@ export const useWorkflowsStore = defineStore(STORES.WORKFLOWS, () => { uiStore.stateIsDirty = true; updateCachedWorkflow(); - dataPinningEventBus.emit('unpin-data', { [payload.node.name]: undefined }); + dataPinningEventBus.emit('unpin-data', { + nodeNames: [payload.node.name], + }); } function addConnection(data: { connection: IConnection[] }): void { diff --git a/packages/editor-ui/src/utils/apiUtils.ts b/packages/editor-ui/src/utils/apiUtils.ts index b07f8910b90c8..fef135769e08a 100644 --- a/packages/editor-ui/src/utils/apiUtils.ts +++ b/packages/editor-ui/src/utils/apiUtils.ts @@ -1,16 +1,20 @@ import type { AxiosRequestConfig, Method, RawAxiosRequestHeaders } from 'axios'; import axios from 'axios'; import { ApplicationError, jsonParse, type GenericValue, type IDataObject } from 'n8n-workflow'; -import type { IExecutionFlattedResponse, IExecutionResponse, IRestApiContext } from '@/Interface'; import { parse } from 'flatted'; import { assert } from '@/utils/assert'; -const BROWSER_ID_STORAGE_KEY = 'n8n-browserId'; -let browserId = localStorage.getItem(BROWSER_ID_STORAGE_KEY); -if (!browserId && 'randomUUID' in crypto) { - browserId = crypto.randomUUID(); - localStorage.setItem(BROWSER_ID_STORAGE_KEY, browserId); -} +import { BROWSER_ID_STORAGE_KEY } from '@/constants'; +import type { IExecutionFlattedResponse, IExecutionResponse, IRestApiContext } from '@/Interface'; + +const getBrowserId = () => { + let browserId = localStorage.getItem(BROWSER_ID_STORAGE_KEY); + if (!browserId && 'randomUUID' in crypto) { + browserId = crypto.randomUUID(); + localStorage.setItem(BROWSER_ID_STORAGE_KEY, browserId); + } + return browserId!; +}; export const NO_NETWORK_ERROR_CODE = 999; export const STREAM_SEPERATOR = '⧉⇋⇋➽⌑⧉§§\n'; @@ -82,8 +86,8 @@ export async function request(config: { baseURL, headers: headers ?? {}, }; - if (baseURL.startsWith('/') && browserId) { - options.headers!['browser-id'] = browserId; + if (baseURL.startsWith('/')) { + options.headers!['browser-id'] = getBrowserId(); } if ( import.meta.env.NODE_ENV !== 'production' && @@ -204,11 +208,9 @@ export async function streamRequest( separator = STREAM_SEPERATOR, ): Promise { const headers: Record = { + 'browser-id': getBrowserId(), 'Content-Type': 'application/json', }; - if (browserId) { - headers['browser-id'] = browserId; - } const assistantRequest: RequestInit = { headers, method: 'POST', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f77ec66a97b23..b562d950ffa8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,7 +125,7 @@ importers: version: 6.0.2 jest: specifier: ^29.6.2 - version: 29.6.2(@types/node@18.16.16) + version: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) jest-environment-jsdom: specifier: ^29.6.2 version: 29.6.2 @@ -137,7 +137,7 @@ importers: version: 29.6.2 jest-mock-extended: specifier: ^3.0.4 - version: 3.0.4(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2) + version: 3.0.4(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(typescript@5.5.2) nock: specifier: ^13.3.2 version: 13.3.2 @@ -158,7 +158,7 @@ importers: version: 7.0.0 ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2) + version: 29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(typescript@5.5.2) tsc-alias: specifier: ^1.8.7 version: 1.8.7 @@ -209,6 +209,40 @@ importers: specifier: workspace:* version: link:../packages/workflow + packages/@n8n/benchmark: + dependencies: + '@oclif/core': + specifier: 4.0.7 + version: 4.0.7 + axios: + specifier: 'catalog:' + version: 1.7.4(debug@4.3.6) + convict: + specifier: 6.2.4 + version: 6.2.4 + dotenv: + specifier: 8.6.0 + version: 8.6.0 + zx: + specifier: ^8.1.4 + version: 8.1.4 + devDependencies: + '@types/convict': + specifier: ^6.1.1 + version: 6.1.1 + '@types/k6': + specifier: ^0.52.0 + version: 0.52.0 + '@types/node': + specifier: ^18.16.16 + version: 18.16.16 + tsc-alias: + specifier: ^1.8.7 + version: 1.8.7 + typescript: + specifier: ^5.5.2 + version: 5.5.2 + packages/@n8n/chat: dependencies: '@vueuse/core': @@ -390,7 +424,7 @@ importers: version: 0.5.0 '@n8n/typeorm': specifier: 0.3.20-10 - version: 0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.12)(sqlite3@5.1.7) + version: 0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.12)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) '@n8n/vm2': specifier: 3.9.25 version: 3.9.25 @@ -522,7 +556,7 @@ importers: version: 8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-interactions': specifier: ^8.1.4 - version: 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + version: 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) '@storybook/addon-links': specifier: ^8.1.4 version: 8.1.4(react@18.2.0) @@ -534,7 +568,7 @@ importers: version: 8.1.4(@types/react@18.0.27)(encoding@0.1.13)(prettier@3.2.5)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/test': specifier: ^8.1.4 - version: 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + version: 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) '@storybook/vue3': specifier: ^8.1.4 version: 8.1.4(encoding@0.1.13)(prettier@3.2.5)(vue@3.4.21(typescript@5.5.2)) @@ -630,7 +664,7 @@ importers: version: link:../@n8n/permissions '@n8n/typeorm': specifier: 0.3.20-10 - version: 0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.14)(sqlite3@5.1.7) + version: 0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.14)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) '@n8n_io/ai-assistant-sdk': specifier: 1.9.4 version: 1.9.4 @@ -1107,7 +1141,7 @@ importers: version: link:../@n8n/storybook '@testing-library/jest-dom': specifier: ^6.1.5 - version: 6.1.5(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) + version: 6.1.5(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1)) '@testing-library/user-event': specifier: ^14.5.1 version: 14.5.1(@testing-library/dom@9.3.4) @@ -1146,7 +1180,7 @@ importers: version: 1.64.1 tailwindcss: specifier: ^3.4.3 - version: 3.4.3 + version: 3.4.3(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) unplugin-icons: specifier: ^0.19.0 version: 0.19.0(@vue/compiler-sfc@3.4.21)(vue-template-compiler@2.7.14) @@ -2398,10 +2432,6 @@ packages: resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.23.4': - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.6': resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} engines: {node: '>=6.9.0'} @@ -3007,10 +3037,6 @@ packages: resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==} engines: {node: '>=6.9.0'} - '@babel/types@7.23.6': - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} - engines: {node: '>=6.9.0'} - '@babel/types@7.24.0': resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} @@ -3078,6 +3104,10 @@ packages: resolution: {integrity: sha512-dkk7FX8L/JLia5pi+IQ11lCw2D6FTmbWL2iWTHgCbP40/deeXgknlkEQcQ/rOkjwQbqp8RZ4ey/anR17K66sqw==} engines: {node: '>=16'} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@ctrl/tinycolor@3.6.0': resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==} engines: {node: '>=10'} @@ -3548,10 +3578,6 @@ packages: resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.2': - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -3560,10 +3586,6 @@ packages: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} @@ -3577,6 +3599,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@js-joda/core@5.6.1': resolution: {integrity: sha512-Xla/d7ZMMR6+zRd6lTio0wRZECfcfFJP7GGe9A9L4tDOlD5CX4YcZ4YZle9w58bBYzssojVapI84RraKWDQZRg==} @@ -5282,6 +5307,18 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/amqplib@0.10.1': resolution: {integrity: sha512-j6ANKT79ncUDnAs/+9r9eDujxbeJoTjoVu33gHHcaPfmLQaMhvfbH2GqSe8KUM444epAp1Vl3peVOQfZk3UIqA==} @@ -5399,6 +5436,9 @@ packages: '@types/formidable@3.4.5': resolution: {integrity: sha512-s7YPsNVfnsng5L8sKnG/Gbb2tiwwJTY1conOkJzTMRvJAlLFW1nEua+ADsJQu8N1c0oTHx9+d5nqg10WuT9gHQ==} + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/ftp@0.3.33': resolution: {integrity: sha512-L7wFlX3t9GsGgNS0oxLt6zbAZZGgsdptMmciL4cdxHmbL3Hz4Lysh8YqAR34eHsJ1uacJITcZBBDl5XpQlxPpQ==} @@ -5456,12 +5496,18 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + '@types/jsonpath@0.2.0': resolution: {integrity: sha512-v7qlPA0VpKUlEdhghbDqRoKMxFB3h3Ch688TApBJ6v+XLDdvWCGLJIYiPKGZnS6MAOie+IorCfNYVHOPIHSWwQ==} '@types/jsonwebtoken@9.0.6': resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} + '@types/k6@0.52.0': + resolution: {integrity: sha512-yaw2wg61nKQtToDML+nngzgXVjZ6wNA4R0Q3jKDTeadG5EqfZgis5a1Q2hwY7kjuGuXmu8eM6gHg3tgnOj4vNw==} + '@types/linkify-it@3.0.5': resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} @@ -6168,6 +6214,9 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -6732,10 +6781,6 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-spinners@2.9.0: - resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} - engines: {node: '>=6'} - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -6975,6 +7020,9 @@ packages: resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} engines: {node: '>=10.0.0'} + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + crelt@1.0.5: resolution: {integrity: sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA==} @@ -7344,6 +7392,10 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} @@ -9631,10 +9683,6 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.0.0: - resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} - engines: {node: '>=14'} - lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -10007,10 +10055,6 @@ packages: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -11008,10 +11052,6 @@ packages: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@29.6.2: - resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12377,6 +12417,20 @@ packages: ts-map@1.0.3: resolution: {integrity: sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': ^18.16.16 + typescript: ^5.5.2 + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} @@ -12777,6 +12831,9 @@ packages: v3-infinite-loading@1.2.2: resolution: {integrity: sha512-MWJc6yChnqeUasBFJ3Enu8IGPcQgRMSTrAEtT1MsHBEx+QjwvNTaY8o+8V9DgVt1MVhQSl3MC55hsaWLJmpRMw==} + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} @@ -13288,6 +13345,10 @@ packages: yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -13316,6 +13377,11 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zx@8.1.4: + resolution: {integrity: sha512-QFDYYpnzdpRiJ3dL2102Cw26FpXpWshW4QLTGxiYfIcwdAqg084jRCkK/kuP/NOSkxOjydRwNFG81qzA5r1a6w==} + engines: {node: '>= 12.17.0'} + hasBin: true + snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} @@ -13323,7 +13389,7 @@ snapshots: '@acuminous/bitsyntax@0.1.2': dependencies: buffer-more-ints: 1.0.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) safe-buffer: 5.1.2 transitivePeerDependencies: - supports-color @@ -14432,7 +14498,7 @@ snapshots: '@babel/traverse': 7.24.0 '@babel/types': 7.24.6 convert-source-map: 2.0.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 7.6.0 @@ -14452,7 +14518,7 @@ snapshots: '@babel/traverse': 7.24.6 '@babel/types': 7.24.6 convert-source-map: 2.0.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 7.6.0 @@ -14553,7 +14619,7 @@ snapshots: '@babel/core': 7.24.6 '@babel/helper-compilation-targets': 7.24.6 '@babel/helper-plugin-utils': 7.24.6 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -14564,7 +14630,7 @@ snapshots: '@babel/core': 7.24.6 '@babel/helper-compilation-targets': 7.24.6 '@babel/helper-plugin-utils': 7.24.6 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -14694,8 +14760,6 @@ snapshots: dependencies: '@babel/types': 7.24.6 - '@babel/helper-string-parser@7.23.4': {} - '@babel/helper-string-parser@7.24.6': {} '@babel/helper-validator-identifier@7.22.20': {} @@ -14733,7 +14797,7 @@ snapshots: '@babel/highlight@7.23.4': dependencies: - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.6 chalk: 2.4.2 js-tokens: 4.0.0 @@ -14746,7 +14810,7 @@ snapshots: '@babel/parser@7.24.0': dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.24.6 '@babel/parser@7.24.6': dependencies: @@ -15448,7 +15512,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.24.6 '@babel/types': 7.24.6 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -15463,21 +15527,15 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.6 '@babel/parser': 7.24.6 '@babel/types': 7.24.6 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.23.6': - dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - '@babel/types@7.24.0': dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-string-parser': 7.24.6 + '@babel/helper-validator-identifier': 7.24.6 to-fast-properties: 2.0.0 '@babel/types@7.24.6': @@ -15600,6 +15658,11 @@ snapshots: '@common.js/is-network-error@1.0.1': {} + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + optional: true + '@ctrl/tinycolor@3.6.0': {} '@curlconverter/yargs-parser@0.0.1': {} @@ -15745,7 +15808,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 @@ -15903,7 +15966,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -15933,7 +15996,7 @@ snapshots: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.10 '@iconify/types': 2.0.0 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) kolorist: 1.8.0 local-pkg: 0.5.0 mlly: 1.7.1 @@ -15995,7 +16058,7 @@ snapshots: jest-util: 29.6.2 slash: 3.0.0 - '@jest/core@29.6.2': + '@jest/core@29.6.2(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2))': dependencies: '@jest/console': 29.6.2 '@jest/reporters': 29.6.2 @@ -16009,7 +16072,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.6.2(@types/node@18.16.16) + jest-config: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) jest-haste-map: 29.6.2 jest-message-util: 29.6.2 jest-regex-util: 29.4.3 @@ -16022,7 +16085,7 @@ snapshots: jest-validate: 29.6.2 jest-watcher: 29.6.2 micromatch: 4.0.5 - pretty-format: 29.6.2 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -16156,12 +16219,6 @@ snapshots: '@types/yargs': 17.0.19 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.2': - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -16170,8 +16227,6 @@ snapshots: '@jridgewell/resolve-uri@3.1.0': {} - '@jridgewell/set-array@1.1.2': {} - '@jridgewell/set-array@1.2.1': {} '@jridgewell/source-map@0.3.2': @@ -16187,6 +16242,12 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.15 + optional: true + '@js-joda/core@5.6.1': {} '@js-sdsl/ordered-map@4.4.2': {} @@ -16227,7 +16288,7 @@ snapshots: '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -16639,7 +16700,7 @@ snapshots: '@n8n/localtunnel@3.0.0': dependencies: axios: 1.7.4(debug@4.3.6) - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -16656,7 +16717,7 @@ snapshots: esprima-next: 5.8.4 recast: 0.22.0 - '@n8n/typeorm@0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.12)(sqlite3@5.1.7)': + '@n8n/typeorm@0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.12)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2))': dependencies: '@n8n/p-retry': 6.2.0-2 '@sqltools/formatter': 1.2.5 @@ -16665,7 +16726,7 @@ snapshots: buffer: 6.0.3 chalk: 4.1.2 dayjs: 1.11.10 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) dotenv: 16.3.1 glob: 10.3.10 mkdirp: 2.1.3 @@ -16683,10 +16744,11 @@ snapshots: pg: 8.12.0 redis: 4.6.12 sqlite3: 5.1.7 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.5.2) transitivePeerDependencies: - supports-color - '@n8n/typeorm@0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.14)(sqlite3@5.1.7)': + '@n8n/typeorm@0.3.20-10(@sentry/node@7.87.0)(ioredis@5.3.2)(mssql@10.0.2)(mysql2@3.11.0)(pg@8.12.0)(redis@4.6.14)(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2))': dependencies: '@n8n/p-retry': 6.2.0-2 '@sqltools/formatter': 1.2.5 @@ -16695,7 +16757,7 @@ snapshots: buffer: 6.0.3 chalk: 4.1.2 dayjs: 1.11.10 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) dotenv: 16.3.1 glob: 10.3.10 mkdirp: 2.1.3 @@ -16713,6 +16775,7 @@ snapshots: pg: 8.12.0 redis: 4.6.14 sqlite3: 5.1.7 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.5.2) transitivePeerDependencies: - supports-color @@ -16781,14 +16844,14 @@ snapshots: ansis: 3.2.0 clean-stack: 3.0.1 cli-spinners: 2.9.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) ejs: 3.1.10 get-package-type: 0.1.0 globby: 11.1.0 indent-string: 4.0.0 is-wsl: 2.2.0 lilconfig: 3.1.2 - minimatch: 9.0.4 + minimatch: 9.0.5 string-width: 4.2.3 supports-color: 8.1.1 widest-line: 3.1.0 @@ -17805,11 +17868,11 @@ snapshots: dependencies: '@storybook/global': 5.0.0 - '@storybook/addon-interactions@8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': + '@storybook/addon-interactions@8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': dependencies: '@storybook/global': 5.0.0 '@storybook/instrumenter': 8.1.4 - '@storybook/test': 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + '@storybook/test': 8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) '@storybook/types': 8.1.4 polished: 4.2.2 ts-dedent: 2.2.0 @@ -17995,7 +18058,7 @@ snapshots: dependencies: '@babel/core': 7.24.6 '@babel/preset-env': 7.24.6(@babel/core@7.24.6) - '@babel/types': 7.24.0 + '@babel/types': 7.24.6 '@storybook/csf': 0.1.7 '@storybook/csf-tools': 8.1.4 '@storybook/node-logger': 8.1.4 @@ -18257,14 +18320,14 @@ snapshots: - prettier - supports-color - '@storybook/test@8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': + '@storybook/test@8.1.4(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': dependencies: '@storybook/client-logger': 8.1.4 '@storybook/core-events': 8.1.4 '@storybook/instrumenter': 8.1.4 '@storybook/preview-api': 8.1.4 '@testing-library/dom': 9.3.4 - '@testing-library/jest-dom': 6.4.2(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) + '@testing-library/jest-dom': 6.4.2(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1)) '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) '@vitest/expect': 1.3.1 '@vitest/spy': 1.3.1 @@ -18411,7 +18474,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.1.5(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': + '@testing-library/jest-dom@6.1.5(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1))': dependencies: '@adobe/css-tools': 4.3.2 '@babel/runtime': 7.22.6 @@ -18424,10 +18487,10 @@ snapshots: optionalDependencies: '@jest/globals': 29.6.2 '@types/jest': 29.5.3 - jest: 29.6.2(@types/node@18.16.16) + jest: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) vitest: 1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) - '@testing-library/jest-dom@6.4.2(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.6.2)(@types/jest@29.5.3)(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(vitest@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1))': dependencies: '@adobe/css-tools': 4.3.2 '@babel/runtime': 7.23.6 @@ -18440,7 +18503,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.6.2 '@types/jest': 29.5.3 - jest: 29.6.2(@types/node@18.16.16) + jest: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) vitest: 1.6.0(@types/node@18.16.16)(jsdom@23.0.1)(sass@1.64.1)(terser@5.16.1) '@testing-library/user-event@14.5.1(@testing-library/dom@9.3.4)': @@ -18468,6 +18531,18 @@ snapshots: '@tootallnate/once@2.0.0': {} + '@tsconfig/node10@1.0.11': + optional: true + + '@tsconfig/node12@1.0.11': + optional: true + + '@tsconfig/node14@1.0.3': + optional: true + + '@tsconfig/node16@1.0.4': + optional: true + '@types/amqplib@0.10.1': dependencies: '@types/node': 18.16.16 @@ -18599,6 +18674,12 @@ snapshots: dependencies: '@types/node': 18.16.16 + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 18.16.16 + optional: true + '@types/ftp@0.3.33': dependencies: '@types/node': 18.16.16 @@ -18668,12 +18749,19 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 18.16.16 + optional: true + '@types/jsonpath@0.2.0': {} '@types/jsonwebtoken@9.0.6': dependencies: '@types/node': 18.16.16 + '@types/k6@0.52.0': {} + '@types/linkify-it@3.0.5': {} '@types/lodash-es@4.17.6': @@ -18989,7 +19077,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.5.2) '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.5.2) - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.0.1(typescript@5.5.2) optionalDependencies: @@ -19005,7 +19093,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.7.5 '@typescript-eslint/visitor-keys': 6.7.5 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 @@ -19019,7 +19107,7 @@ snapshots: dependencies: '@typescript-eslint/types': 7.2.0 '@typescript-eslint/visitor-keys': 7.2.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -19079,7 +19167,7 @@ snapshots: dependencies: '@ampproject/remapping': 2.2.1 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 @@ -19202,7 +19290,7 @@ snapshots: '@vue/compiler-core@3.4.21': dependencies: - '@babel/parser': 7.24.0 + '@babel/parser': 7.24.6 '@vue/shared': 3.4.21 entities: 4.5.0 estree-walker: 2.0.2 @@ -19262,7 +19350,7 @@ snapshots: '@vue/compiler-dom': 3.4.21 '@vue/shared': 3.4.21 computeds: 0.0.1 - minimatch: 9.0.4 + minimatch: 9.0.5 muggle-string: 0.3.1 path-browserify: 1.0.1 vue-template-compiler: 2.7.14 @@ -19418,19 +19506,19 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color agent-base@7.1.0: dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color agentkeepalive@4.2.1: dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) depd: 1.1.2 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -19527,6 +19615,9 @@ snapshots: readable-stream: 3.6.0 optional: true + arg@4.1.3: + optional: true + arg@5.0.2: {} argparse@1.0.10: @@ -20207,8 +20298,6 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-spinners@2.9.0: {} - cli-spinners@2.9.2: {} cli-table3@0.6.3: @@ -20461,6 +20550,9 @@ snapshots: nan: 2.20.0 optional: true + create-require@1.1.1: + optional: true + crelt@1.0.5: {} crlf-normalize@1.0.19(ts-toolbelt@9.6.0): @@ -20730,15 +20822,15 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.5(supports-color@8.1.1): + debug@4.3.5: dependencies: ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - debug@4.3.6: + debug@4.3.6(supports-color@8.1.1): dependencies: ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 decamelize@1.2.0: {} @@ -20859,7 +20951,7 @@ snapshots: detect-port@1.5.1: dependencies: address: 1.2.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -20872,6 +20964,9 @@ snapshots: diff-sequences@29.6.3: {} + diff@4.0.2: + optional: true + diff@5.2.0: {} digest-fetch@1.3.0: @@ -21238,7 +21333,7 @@ snapshots: esbuild-register@3.5.0(esbuild@0.20.2): dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) esbuild: 0.20.2 transitivePeerDependencies: - supports-color @@ -21720,7 +21815,7 @@ snapshots: extract-zip@2.0.1(supports-color@8.1.1): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -21901,7 +21996,7 @@ snapshots: follow-redirects@1.15.6(debug@4.3.6): optionalDependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) for-each@0.3.3: dependencies: @@ -22173,7 +22268,7 @@ snapshots: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 + minimatch: 9.0.5 minipass: 7.0.2 path-scurry: 1.10.1 @@ -22476,7 +22571,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color optional: true @@ -22485,14 +22580,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.0: dependencies: agent-base: 7.1.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -22507,14 +22602,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -22651,7 +22746,7 @@ snapshots: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.5 denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -22886,7 +22981,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -22895,7 +22990,7 @@ snapshots: istanbul-lib-source-maps@5.0.4: dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -22949,16 +23044,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.6.2(@types/node@18.16.16): + jest-cli@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)): dependencies: - '@jest/core': 29.6.2 + '@jest/core': 29.6.2(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) '@jest/test-result': 29.6.2 '@jest/types': 29.6.1 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.6.2(@types/node@18.16.16) + jest-config: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) jest-util: 29.6.2 jest-validate: 29.6.2 prompts: 2.4.2 @@ -22969,7 +23064,7 @@ snapshots: - supports-color - ts-node - jest-config@29.6.2(@types/node@18.16.16): + jest-config@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)): dependencies: '@babel/core': 7.24.0 '@jest/test-sequencer': 29.6.2 @@ -22995,6 +23090,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 18.16.16 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.5.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -23112,9 +23208,9 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock-extended@3.0.4(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2): + jest-mock-extended@3.0.4(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(typescript@5.5.2): dependencies: - jest: 29.6.2(@types/node@18.16.16) + jest: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) ts-essentials: 7.0.3(typescript@5.5.2) typescript: 5.5.2 @@ -23272,12 +23368,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.6.2(@types/node@18.16.16): + jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)): dependencies: - '@jest/core': 29.6.2 + '@jest/core': 29.6.2(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) '@jest/types': 29.6.1 import-local: 3.1.0 - jest-cli: 29.6.2(@types/node@18.16.16) + jest-cli: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -23749,8 +23845,6 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.0.0: {} - lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -24121,10 +24215,6 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -24267,7 +24357,7 @@ snapshots: mqtt-packet@9.0.0: dependencies: bl: 6.0.12 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) process-nextick-args: 2.0.1 transitivePeerDependencies: - supports-color @@ -24323,7 +24413,7 @@ snapshots: dependencies: '@tediousjs/connection-string': 0.5.0 commander: 11.1.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) rfdc: 1.3.0 tarn: 3.0.2 tedious: 16.7.1 @@ -24562,7 +24652,7 @@ snapshots: number-allocator@1.0.14: dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) js-sdsl: 4.3.0 transitivePeerDependencies: - supports-color @@ -24755,7 +24845,7 @@ snapshots: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.0 + cli-spinners: 2.9.2 is-interactive: 1.0.0 is-unicode-supported: 0.1.0 log-symbols: 4.1.0 @@ -25075,12 +25165,13 @@ snapshots: camelcase-css: 2.0.1 postcss: 8.4.38 - postcss-load-config@4.0.2(postcss@8.4.38): + postcss-load-config@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)): dependencies: - lilconfig: 3.0.0 + lilconfig: 3.1.2 yaml: 2.3.4 optionalDependencies: postcss: 8.4.38 + ts-node: 10.9.2(@types/node@18.16.16)(typescript@5.5.2) postcss-nested@6.0.1(postcss@8.4.38): dependencies: @@ -25179,12 +25270,6 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.2.0 - pretty-format@29.6.2: - dependencies: - '@jest/schemas': 29.6.0 - ansi-styles: 5.2.0 - react-is: 18.2.0 - pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -26130,7 +26215,7 @@ snapshots: simple-websocket@9.1.0: dependencies: - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) queue-microtask: 1.2.3 randombytes: 2.1.0 readable-stream: 3.6.0 @@ -26210,7 +26295,7 @@ snapshots: socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -26336,7 +26421,7 @@ snapshots: arg: 5.0.2 bluebird: 3.7.2 check-more-types: 2.24.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) execa: 5.1.1 lazy-ass: 1.6.0 ps-tree: 1.2.0 @@ -26524,7 +26609,7 @@ snapshots: sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 glob: 10.3.10 lines-and-columns: 1.2.4 @@ -26536,7 +26621,7 @@ snapshots: dependencies: component-emitter: 1.3.0 cookiejar: 2.1.4 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) fast-safe-stringify: 2.1.1 form-data: 4.0.0 formidable: 3.5.1 @@ -26599,7 +26684,7 @@ snapshots: syslog-client@1.1.1: {} - tailwindcss@3.4.3: + tailwindcss@3.4.3(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -26618,7 +26703,7 @@ snapshots: postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) postcss-nested: 6.0.1(postcss@8.4.38) postcss-selector-parser: 6.0.16 resolve: 1.22.8 @@ -26852,11 +26937,11 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16))(typescript@5.5.2): + ts-jest@29.1.1(@babel/core@7.24.0)(@jest/types@29.6.1)(babel-jest@29.6.2(@babel/core@7.24.0))(jest@29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)))(typescript@5.5.2): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.6.2(@types/node@18.16.16) + jest: 29.6.2(@types/node@18.16.16)(ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2)) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -26871,6 +26956,25 @@ snapshots: ts-map@1.0.3: {} + ts-node@10.9.2(@types/node@18.16.16)(typescript@5.5.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.16.16 + acorn: 8.12.1 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-toolbelt@9.6.0: {} ts-type@3.0.1(ts-toolbelt@9.6.0): @@ -27133,7 +27237,7 @@ snapshots: '@antfu/install-pkg': 0.3.3 '@antfu/utils': 0.7.10 '@iconify/utils': 2.1.25 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.5 kolorist: 1.8.0 local-pkg: 0.5.0 unplugin: 1.11.0 @@ -27148,7 +27252,7 @@ snapshots: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.0(rollup@4.18.0) chokidar: 3.5.2 - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.5 fast-glob: 3.3.2 local-pkg: 0.5.0 magic-string: 0.30.10 @@ -27259,6 +27363,9 @@ snapshots: v3-infinite-loading@1.2.2: {} + v8-compile-cache-lib@3.0.1: + optional: true + v8-to-istanbul@9.1.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -27283,7 +27390,7 @@ snapshots: vite-node@1.6.0(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1): dependencies: cac: 6.7.14 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) pathe: 1.1.2 picocolors: 1.0.1 vite: 5.2.12(@types/node@18.16.16)(sass@1.64.1)(terser@5.16.1) @@ -27302,7 +27409,7 @@ snapshots: '@microsoft/api-extractor': 7.43.0(@types/node@18.16.16) '@rollup/pluginutils': 5.1.0(rollup@4.18.0) '@vue/language-core': 1.8.27(typescript@5.5.2) - debug: 4.3.5(supports-color@8.1.1) + debug: 4.3.5 kolorist: 1.8.0 magic-string: 0.30.8 typescript: 5.5.2 @@ -27340,7 +27447,7 @@ snapshots: '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.3.10 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.10 @@ -27817,6 +27924,9 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 + yn@3.1.1: + optional: true + yocto-queue@0.1.0: {} yocto-queue@1.0.0: {} @@ -27846,3 +27956,8 @@ snapshots: zod@3.22.4: {} zod@3.23.8: {} + + zx@8.1.4: + optionalDependencies: + '@types/fs-extra': 11.0.4 + '@types/node': 18.16.16