From 698d96a617f2a16cb3a43ac0ecc12c8999d46270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=BE=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB?= =?UTF-8?q?=E0=A5=8D=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95?= =?UTF-8?q?=E0=A5=8D=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Wed, 9 Nov 2022 15:25:00 +0100 Subject: [PATCH] refactor: Setup typescript project references across workflow, core, and cli (#4519) * refactor: use consistent folder structure across workflow, core, and cli * setup typescript project references across workflow, core, and cli --- .dockerignore | 1 + .gitignore | 1 + .npmignore | 1 + jest.config.js | 3 + package-lock.json | 159 ++++++++++++++++-- packages/cli/.eslintrc.js | 7 + packages/cli/jest.config.js | 4 + packages/cli/package.json | 10 +- packages/cli/scripts/build.mjs | 17 +- packages/cli/src/ActiveExecutions.ts | 9 +- packages/cli/src/ActiveWorkflowRunner.ts | 39 ++--- packages/cli/src/CommunityNodes/helpers.ts | 9 +- .../cli/src/CommunityNodes/packageModel.ts | 7 +- packages/cli/src/CredentialTypes.ts | 2 +- packages/cli/src/CredentialsHelper.ts | 22 +-- packages/cli/src/CredentialsOverwrites.ts | 6 +- packages/cli/src/Db.ts | 12 +- packages/cli/src/ErrorReporting.ts | 2 +- packages/cli/src/ExternalHooks.ts | 6 +- packages/cli/src/GenericHelpers.ts | 23 ++- packages/cli/src/Interfaces.ts | 29 +--- packages/cli/src/InternalHooks.ts | 7 +- packages/cli/src/InternalHooksManager.ts | 5 +- packages/cli/src/LoadNodesAndCredentials.ts | 31 ++-- packages/cli/src/Logger.ts | 2 +- packages/cli/src/PublicApi/index.ts | 8 +- packages/cli/src/PublicApi/types.d.ts | 9 +- .../credentials/credentials.handler.ts | 8 +- .../credentials/credentials.middleware.ts | 3 +- .../credentials/credentials.service.ts | 13 +- .../handlers/executions/executions.handler.ts | 4 +- .../handlers/executions/executions.service.ts | 7 +- .../v1/handlers/users/users.service.ts | 6 +- .../handlers/workflows/workflows.handler.ts | 13 +- .../handlers/workflows/workflows.service.ts | 12 +- packages/cli/src/Push.ts | 2 +- packages/cli/src/Queue.ts | 8 +- packages/cli/src/ResponseHelper.ts | 6 +- packages/cli/src/Server.ts | 103 ++++++------ packages/cli/src/TagHelpers.ts | 5 +- packages/cli/src/TestWebhooks.ts | 6 +- packages/cli/src/TranslationHelpers.ts | 4 +- packages/cli/src/UserManagement/Interfaces.ts | 7 +- .../UserManagement/UserManagementHelper.ts | 12 +- packages/cli/src/UserManagement/auth/jwt.ts | 9 +- .../src/UserManagement/email/NodeMailer.ts | 2 +- .../email/UserManagementMailer.ts | 5 +- .../cli/src/UserManagement/email/index.ts | 1 - packages/cli/src/UserManagement/index.ts | 1 - .../src/UserManagement/middlewares/auth.ts | 7 +- .../src/UserManagement/middlewares/index.ts | 1 - .../cli/src/UserManagement/routes/auth.ts | 12 +- .../cli/src/UserManagement/routes/index.ts | 5 +- packages/cli/src/UserManagement/routes/me.ts | 13 +- .../cli/src/UserManagement/routes/owner.ts | 11 +- .../UserManagement/routes/passwordReset.ts | 7 +- .../cli/src/UserManagement/routes/users.ts | 16 +- packages/cli/src/WaitTracker.ts | 17 +- packages/cli/src/WaitingWebhooks.ts | 23 +-- packages/cli/src/WebhookHelpers.ts | 32 ++-- packages/cli/src/WebhookServer.ts | 28 ++- packages/cli/src/WorkflowCredentials.ts | 3 +- .../cli/src/WorkflowExecuteAdditionalData.ts | 34 ++-- packages/cli/src/WorkflowHelpers.ts | 21 +-- packages/cli/src/WorkflowRunner.ts | 36 ++-- packages/cli/src/WorkflowRunnerProcess.ts | 38 ++--- packages/cli/src/api/executions.api.ts | 29 ++-- packages/cli/src/api/nodeTypes.api.ts | 9 +- packages/cli/src/api/nodes.api.ts | 22 +-- packages/cli/src/api/tags.api.ts | 16 +- .../cli/{ => src}/commands/BaseCommand.ts | 6 +- .../cli/{ => src}/commands/Interfaces.d.ts | 0 packages/cli/{ => src}/commands/db/revert.ts | 4 +- packages/cli/{ => src}/commands/execute.ts | 36 ++-- .../cli/{ => src}/commands/executeBatch.ts | 35 ++-- .../{ => src}/commands/export/credentials.ts | 5 +- .../cli/{ => src}/commands/export/workflow.ts | 4 +- .../{ => src}/commands/import/credentials.ts | 12 +- .../cli/{ => src}/commands/import/workflow.ts | 15 +- .../cli/{ => src}/commands/list/workflow.ts | 2 +- packages/cli/{ => src}/commands/start.ts | 41 +++-- .../cli/{ => src}/commands/update/workflow.ts | 4 +- .../commands/user-management/reset.ts | 4 +- packages/cli/{ => src}/commands/webhook.ts | 33 ++-- packages/cli/{ => src}/commands/worker.ts | 35 ++-- packages/cli/{ => src}/config/index.ts | 0 packages/cli/{ => src}/config/schema.ts | 0 packages/cli/{ => src}/config/types.d.ts | 2 +- packages/cli/src/constants.ts | 6 +- .../credentials/credentials.controller.ee.ts | 11 +- .../src/credentials/credentials.controller.ts | 13 +- .../src/credentials/credentials.service.ee.ts | 14 +- .../src/credentials/credentials.service.ts | 24 ++- .../cli/src/credentials/credentials.types.ts | 2 +- .../src/credentials/oauth2Credential.api.ts | 21 +-- ...{CurlConverter.d.ts => curlconverter.d.ts} | 0 packages/cli/src/databases/config.ts | 6 +- .../src/databases/entities/AbstractEntity.ts | 2 +- .../databases/entities/CredentialsEntity.ts | 2 +- .../src/databases/entities/ExecutionEntity.ts | 2 +- .../cli/src/databases/entities/Settings.ts | 7 +- .../cli/src/databases/entities/TagEntity.ts | 2 +- packages/cli/src/databases/entities/User.ts | 2 +- .../src/databases/entities/WebhookEntity.ts | 2 +- .../src/databases/entities/WorkflowEntity.ts | 6 +- .../mysqldb/1588157391238-InitialMigration.ts | 2 +- .../mysqldb/1592447867632-WebhookModel.ts | 2 +- .../1594902918301-CreateIndexStoppedAt.ts | 2 +- .../1607431743767-MakeStoppedAtNullable.ts | 2 +- .../mysqldb/1611149998770-AddWebhookId.ts | 2 +- .../mysqldb/1615306975123-ChangeDataSize.ts | 2 +- .../mysqldb/1617268711084-CreateTagEntity.ts | 2 +- .../1620729500000-ChangeCredentialDataSize.ts | 2 +- .../1620826335440-UniqueWorkflowNames.ts | 2 +- .../1623936588000-CertifyCorrectCollation.ts | 2 +- .../mysqldb/1626183952959-AddWaitColumn.ts | 2 +- ...1630451444017-UpdateWorkflowCredentials.ts | 4 +- ...1644424784709-AddExecutionEntityIndexes.ts | 2 +- .../1646992772331-CreateUserManagement.ts | 4 +- .../1648740597343-LowerCaseUserEmail.ts | 2 +- .../mysqldb/1652254514003-CommunityNodes.ts | 2 +- .../mysqldb/1652367743993-AddUserSettings.ts | 2 +- .../mysqldb/1652905585850-AddAPIKeyColumn.ts | 2 +- .../mysqldb/1654090101303-IntroducePinData.ts | 4 +- .../mysqldb/1658932910559-AddNodeIds.ts | 4 +- .../1659895550980-AddJsonKeyPinData.ts | 2 +- ...1660062385367-CreateCredentialsUserRole.ts | 2 +- ...1663755770894-CreateWorkflowsEditorRole.ts | 2 +- ...665484192213-CreateCredentialUsageTable.ts | 2 +- ...665754637026-RemoveCredentialUsageTable.ts | 2 +- .../1587669153312-InitialMigration.ts | 2 +- .../postgresdb/1589476000887-WebhookModel.ts | 2 +- .../1594828256133-CreateIndexStoppedAt.ts | 2 +- .../1607431743768-MakeStoppedAtNullable.ts | 2 +- .../postgresdb/1611144599516-AddWebhookId.ts | 2 +- .../1617270242566-CreateTagEntity.ts | 2 +- .../1620824779533-UniqueWorkflowNames.ts | 2 +- .../postgresdb/1626176912946-AddwaitTill.ts | 2 +- ...1630419189837-UpdateWorkflowCredentials.ts | 4 +- ...1644422880309-AddExecutionEntityIndexes.ts | 2 +- .../1646834195327-IncreaseTypeVarcharLimit.ts | 2 +- .../1646992772331-CreateUserManagement.ts | 4 +- .../1648740597343-LowerCaseUserEmail.ts | 2 +- .../1652254514002-CommunityNodes.ts | 4 +- .../1652367743993-AddUserSettings.ts | 2 +- .../1652905585850-AddAPIKeyColumn.ts | 2 +- .../1654090467022-IntroducePinData.ts | 4 +- .../postgresdb/1658932090381-AddNodeIds.ts | 4 +- .../1659902242948-AddJsonKeyPinData.ts | 2 +- ...1660062385367-CreateCredentialsUserRole.ts | 2 +- ...1663755770893-CreateWorkflowsEditorRole.ts | 2 +- ...665484192212-CreateCredentialUsageTable.ts | 2 +- ...665754637025-RemoveCredentialUsageTable.ts | 2 +- .../sqlite/1588102412422-InitialMigration.ts | 4 +- .../sqlite/1592445003908-WebhookModel.ts | 4 +- .../1594825041918-CreateIndexStoppedAt.ts | 4 +- .../1607431743769-MakeStoppedAtNullable.ts | 4 +- .../sqlite/1611071044839-AddWebhookId.ts | 4 +- .../sqlite/1617213344594-CreateTagEntity.ts | 4 +- .../1620821879465-UniqueWorkflowNames.ts | 4 +- .../sqlite/1621707690587-AddWaitColumn.ts | 4 +- ...1630330987096-UpdateWorkflowCredentials.ts | 6 +- ...1644421939510-AddExecutionEntityIndexes.ts | 4 +- .../1646992772331-CreateUserManagement.ts | 4 +- .../1648740597343-LowerCaseUserEmail.ts | 4 +- .../sqlite/1652254514001-CommunityNodes.ts | 4 +- .../sqlite/1652367743993-AddUserSettings.ts | 4 +- .../sqlite/1652905585850-AddAPIKeyColumn.ts | 4 +- .../sqlite/1654089251344-IntroducePinData.ts | 4 +- .../sqlite/1658930531669-AddNodeIds.ts | 6 +- .../sqlite/1659888469333-AddJsonKeyPinData.ts | 2 +- ...1660062385367-CreateCredentialsUserRole.ts | 4 +- .../1663755770892-CreateWorkflowsUserRole.ts | 2 +- ...665484192211-CreateCredentialUsageTable.ts | 2 +- ...665754637024-RemoveCredentialUsageTable.ts | 2 +- .../src/databases/utils/migrationHelpers.ts | 4 +- .../cli/src/databases/utils/transformers.ts | 2 +- packages/cli/src/index.ts | 1 - packages/cli/src/requests.d.ts | 9 +- packages/cli/src/role/role.service.ts | 5 +- packages/cli/src/telemetry/index.ts | 7 +- packages/cli/src/user/user.service.ts | 5 +- .../src/workflows/workflows.controller.ee.ts | 19 ++- .../cli/src/workflows/workflows.controller.ts | 46 +++-- .../src/workflows/workflows.services.ee.ts | 17 +- .../cli/src/workflows/workflows.services.ts | 30 ++-- packages/cli/src/workflows/workflows.types.ts | 4 +- .../cli/test/integration/auth.api.test.ts | 12 +- packages/cli/test/integration/auth.mw.test.ts | 4 +- .../integration/commands/reset.cmd.test.ts | 6 +- .../test/integration/credentials.ee.test.ts | 12 +- .../cli/test/integration/credentials.test.ts | 14 +- packages/cli/test/integration/me.api.test.ts | 8 +- .../cli/test/integration/nodes.api.test.ts | 24 +-- .../cli/test/integration/owner.api.test.ts | 8 +- .../integration/passwordReset.api.test.ts | 12 +- .../integration/publicApi/credentials.test.ts | 9 +- .../integration/publicApi/executions.test.ts | 12 +- .../integration/publicApi/workflows.test.ts | 15 +- .../cli/test/integration/shared/constants.ts | 2 +- .../cli/test/integration/shared/random.ts | 2 +- .../cli/test/integration/shared/testDb.ts | 33 ++-- .../cli/test/integration/shared/types.d.ts | 6 +- packages/cli/test/integration/shared/utils.ts | 52 +++--- .../cli/test/integration/users.api.test.ts | 24 +-- .../workflows.controller.ee.test.ts | 17 +- .../integration/workflows.controller.test.ts | 7 +- packages/cli/test/teardown.ts | 3 +- .../cli/test/unit/ActiveExecutions.test.ts | 52 +++--- .../test/unit/CommunityNodeHelpers.test.ts | 12 +- .../cli/test/unit/CredentialTypes.test.ts | 7 +- .../cli/test/unit/CredentialsHelper.test.ts | 5 +- .../cli/test/unit/CurlConverterHelper.test.ts | 51 ++++-- packages/cli/test/unit/Telemetry.test.ts | 4 +- .../cli/test/unit/WorkflowCredentials.test.ts | 17 +- .../cli/test/unit/WorkflowHelpers.test.ts | 11 +- packages/cli/tsconfig.build.json | 12 ++ packages/cli/tsconfig.json | 15 +- packages/core/.eslintrc.js | 6 + packages/core/package.json | 7 +- packages/core/src/ActiveWebhooks.ts | 3 +- packages/core/src/ActiveWorkflows.ts | 3 +- packages/core/src/LoadNodeListSearch.ts | 2 +- packages/core/src/LoadNodeParameterOptions.ts | 2 +- packages/core/src/NodeExecuteFunctions.ts | 8 +- packages/core/src/UserSettings.ts | 11 +- packages/core/src/WorkflowExecute.ts | 3 +- packages/core/src/index.ts | 1 - packages/core/test/Credentials.test.ts | 2 +- packages/core/test/Helpers.ts | 4 +- .../core/test/NodeExecuteFunctions.test.ts | 3 +- packages/core/test/WorkflowExecute.test.ts | 3 +- packages/core/tsconfig.build.json | 12 ++ packages/core/tsconfig.json | 11 +- packages/workflow/.eslintrc.js | 6 + packages/workflow/package.json | 11 +- packages/workflow/src/ExpressionError.ts | 1 - packages/workflow/src/RoutingNode.ts | 2 +- packages/workflow/test/Cron.test.ts | 2 +- packages/workflow/test/Expression.test.ts | 5 +- packages/workflow/test/Helpers.ts | 15 +- packages/workflow/test/NodeHelpers.test.ts | 13 +- .../workflow/test/ObservableObject.test.ts | 3 +- packages/workflow/test/RoutingNode.test.ts | 8 +- .../workflow/test/TelemetryHelpers.test.ts | 6 +- packages/workflow/test/Workflow.test.ts | 6 +- .../workflow/test/WorkflowDataProxy.test.ts | 5 +- packages/workflow/test/utils.test.ts | 2 +- packages/workflow/tsconfig.build.json | 12 ++ packages/workflow/tsconfig.json | 10 +- packages/workflow/tsconfig.test.json | 7 - 251 files changed, 1284 insertions(+), 1134 deletions(-) rename packages/cli/{ => src}/commands/BaseCommand.ts (88%) rename packages/cli/{ => src}/commands/Interfaces.d.ts (100%) rename packages/cli/{ => src}/commands/db/revert.ts (95%) rename packages/cli/{ => src}/commands/execute.ts (87%) rename packages/cli/{ => src}/commands/executeBatch.ts (97%) rename packages/cli/{ => src}/commands/export/credentials.ts (97%) rename packages/cli/{ => src}/commands/export/workflow.ts (98%) rename packages/cli/{ => src}/commands/import/credentials.ts (94%) rename packages/cli/{ => src}/commands/import/workflow.ts (94%) rename packages/cli/{ => src}/commands/list/workflow.ts (98%) rename packages/cli/{ => src}/commands/start.ts (94%) rename packages/cli/{ => src}/commands/update/workflow.ts (96%) rename packages/cli/{ => src}/commands/user-management/reset.ts (94%) rename packages/cli/{ => src}/commands/webhook.ts (91%) rename packages/cli/{ => src}/commands/worker.ts (94%) rename packages/cli/{ => src}/config/index.ts (100%) rename packages/cli/{ => src}/config/schema.ts (100%) rename packages/cli/{ => src}/config/types.d.ts (98%) rename packages/cli/src/{CurlConverter.d.ts => curlconverter.d.ts} (100%) create mode 100644 packages/cli/tsconfig.build.json create mode 100644 packages/core/tsconfig.build.json create mode 100644 packages/workflow/tsconfig.build.json delete mode 100644 packages/workflow/tsconfig.test.json diff --git a/.dockerignore b/.dockerignore index f8d3d08e69..0103575834 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,3 +5,4 @@ packages/*/node_modules packages/*/dist packages/*/.turbo .git +*.tsbuildinfo diff --git a/.gitignore b/.gitignore index 0fd635d366..1a2b64d619 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ _START_PACKAGE nodelinter.config.json packages/*/package-lock.json packages/*/.turbo +*.tsbuildinfo cypress/videos/* cypress/screenshots/* *.swp diff --git a/.npmignore b/.npmignore index 2a11a7015b..d4691ccbea 100644 --- a/.npmignore +++ b/.npmignore @@ -26,3 +26,4 @@ tsconfig.json tslint.json .turbo +*.tsbuildinfo diff --git a/jest.config.js b/jest.config.js index c2b8d65734..75d8ca974a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -18,4 +18,7 @@ module.exports = { }, }, }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + }, }; diff --git a/package-lock.json b/package-lock.json index 0a40944a19..e1b0081631 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25470,6 +25470,19 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "node_modules/mylas": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz", + "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/raouldeheer" + } + }, "node_modules/mysql2": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz", @@ -28112,6 +28125,15 @@ "node": ">=10" } }, + "node_modules/plimit-lit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.4.1.tgz", + "integrity": "sha512-bK14ePAod0XWhXwjT6XvYfjcQ9PbCUkZXnDCAKRMZTJCaDIV9VFya1S/I+3WSbpdR8uBhCDh8TS4lQ/JQvhNFA==", + "dev": true, + "dependencies": { + "queue-lit": "^1.4.0" + } + }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -29467,6 +29489,12 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "node_modules/queue-lit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.4.0.tgz", + "integrity": "sha512-l1+4YHm4vHWpCnvTg8JMsnPETmPvLGWhqjvNOc8TSbqscGplHVSWXOxybA3vYeMNNIR9Z1PQt85U+S3wFJX2uQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -34822,6 +34850,59 @@ } } }, + "node_modules/tsc-alias": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.7.0.tgz", + "integrity": "sha512-n/K6g8S7Ec7Y/A2Z77Ikp2Uv1S1ERtT63ni69XV4W1YPT4rnNmz8ItgIiJYvKfFnKfqcZQ81UPjoKpMTxaC/rg==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.3", + "commander": "^9.0.0", + "globby": "^11.0.4", + "mylas": "^2.1.9", + "normalize-path": "^3.0.0", + "plimit-lit": "^1.2.6" + }, + "bin": { + "tsc-alias": "dist/bin/index.js" + } + }, + "node_modules/tsc-alias/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tsc-alias/node_modules/commander": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -37299,14 +37380,6 @@ "resolved": "https://registry.npmjs.org/vue2-touch-events/-/vue2-touch-events-3.2.2.tgz", "integrity": "sha512-rGV8jxgOQEJYkJCp7uOBe3hjvmG1arThrq1wGtJHwJTgi65+P2a+0l4CYcQO/U1ZFqTq2/TT2+oTE6H7Y+6Eog==" }, - "node_modules/vuex": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", - "peerDependencies": { - "vue": "^2.0.0" - } - }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -39359,6 +39432,8 @@ "run-script-os": "^1.0.7", "supertest": "^6.2.2", "ts-node": "^8.9.1", + "tsc-alias": "^1.7.0", + "tsconfig-paths": "^3.14.1", "typescript": "~4.8.0" }, "engines": { @@ -39740,7 +39815,6 @@ "vue2-boring-avatars": "0.3.4", "vue2-teleport": "^1.0.1", "vue2-touch-events": "^3.2.1", - "vuex": "^3.6.2", "xss": "^1.0.10" }, "devDependencies": { @@ -60468,6 +60542,12 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "mylas": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz", + "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", + "dev": true + }, "mysql2": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.3.3.tgz", @@ -60615,6 +60695,8 @@ "supertest": "^6.2.2", "swagger-ui-express": "^4.3.0", "ts-node": "^8.9.1", + "tsc-alias": "^1.7.0", + "tsconfig-paths": "^3.14.1", "tslib": "1.14.1", "typeorm": "0.2.45", "typescript": "~4.8.0", @@ -60976,7 +61058,6 @@ "vue2-boring-avatars": "0.3.4", "vue2-teleport": "^1.0.1", "vue2-touch-events": "^3.2.1", - "vuex": "^3.6.2", "xss": "^1.0.10" }, "dependencies": { @@ -63192,6 +63273,15 @@ "find-up": "^5.0.0" } }, + "plimit-lit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.4.1.tgz", + "integrity": "sha512-bK14ePAod0XWhXwjT6XvYfjcQ9PbCUkZXnDCAKRMZTJCaDIV9VFya1S/I+3WSbpdR8uBhCDh8TS4lQ/JQvhNFA==", + "dev": true, + "requires": { + "queue-lit": "^1.4.0" + } + }, "pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -64266,6 +64356,12 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "queue-lit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.4.0.tgz", + "integrity": "sha512-l1+4YHm4vHWpCnvTg8JMsnPETmPvLGWhqjvNOc8TSbqscGplHVSWXOxybA3vYeMNNIR9Z1PQt85U+S3wFJX2uQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -68473,6 +68569,44 @@ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "dev": true }, + "tsc-alias": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.7.0.tgz", + "integrity": "sha512-n/K6g8S7Ec7Y/A2Z77Ikp2Uv1S1ERtT63ni69XV4W1YPT4rnNmz8ItgIiJYvKfFnKfqcZQ81UPjoKpMTxaC/rg==", + "dev": true, + "requires": { + "chokidar": "^3.5.3", + "commander": "^9.0.0", + "globby": "^11.0.2", + "mylas": "^2.1.9", + "normalize-path": "^3.0.0", + "plimit-lit": "^1.2.6" + }, + "dependencies": { + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "commander": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "dev": true + } + } + }, "tsconfig-paths": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", @@ -70267,11 +70401,6 @@ "resolved": "https://registry.npmjs.org/vue2-touch-events/-/vue2-touch-events-3.2.2.tgz", "integrity": "sha512-rGV8jxgOQEJYkJCp7uOBe3hjvmG1arThrq1wGtJHwJTgi65+P2a+0l4CYcQO/U1ZFqTq2/TT2+oTE6H7Y+6Eog==" }, - "vuex": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==" - }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/packages/cli/.eslintrc.js b/packages/cli/.eslintrc.js index 07458ac920..be50f81cbe 100644 --- a/packages/cli/.eslintrc.js +++ b/packages/cli/.eslintrc.js @@ -3,6 +3,12 @@ */ module.exports = { extends: ['@n8n_io/eslint-config/node'], + + parserOptions: { + project: ['./tsconfig.json'], + tsconfigRootDir: __dirname, + }, + ignorePatterns: [ 'jest.config.js', // TODO: Remove these @@ -12,6 +18,7 @@ module.exports = { rules: { // TODO: Remove this 'import/order': 'off', + 'import/extensions': 'off', '@typescript-eslint/ban-ts-comment': ['warn', { 'ts-ignore': true }], }, }; diff --git a/packages/cli/jest.config.js b/packages/cli/jest.config.js index 4a935037e0..647af4240e 100644 --- a/packages/cli/jest.config.js +++ b/packages/cli/jest.config.js @@ -5,4 +5,8 @@ module.exports = { url: 'http://localhost/', }, globalTeardown: '/test/teardown.ts', + moduleNameMapper: { + '^@/(.*)$': '/src/$1', + '^@db/(.*)$': '/src/databases/$1', + }, }; diff --git a/packages/cli/package.json b/packages/cli/package.json index 6318edbad6..ef81bed5f6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -13,13 +13,14 @@ "url": "git+https://github.com/n8n-io/n8n.git" }, "main": "dist/index", - "types": "dist/src/index.d.ts", + "types": "dist/index.d.ts", "oclif": { "commands": "./dist/commands", "bin": "n8n" }, "scripts": { - "build": "node scripts/build.mjs", + "typecheck": "tsc", + "build": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && node scripts/build.mjs", "dev": "concurrently -k -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold\" \"npm run watch\" \"nodemon\"", "format": "cd ../.. && node_modules/prettier/bin-prettier.js packages/cli/**/**.ts --write", "lint": "eslint .", @@ -29,12 +30,13 @@ "start": "run-script-os", "start:default": "cd bin && ./n8n", "start:windows": "cd bin && n8n", + "swagger": "swagger-cli", "test": "npm run test:sqlite", "test:sqlite": "N8N_LOG_LEVEL=silent DB_TYPE=sqlite jest", "test:postgres": "N8N_LOG_LEVEL=silent DB_TYPE=postgresdb jest", "test:postgres:alt-schema": "DB_POSTGRESDB_SCHEMA=alt_schema npm run test:postgres", "test:mysql": "N8N_LOG_LEVEL=silent DB_TYPE=mysqldb jest", - "watch": "tsc --watch", + "watch": "concurrently \"tsc -w -p tsconfig.build.json\" \"tsc-alias -w -p tsconfig.build.json\"", "typeorm": "ts-node -T ../../node_modules/typeorm/cli.js" }, "bin": { @@ -97,6 +99,8 @@ "run-script-os": "^1.0.7", "supertest": "^6.2.2", "ts-node": "^8.9.1", + "tsc-alias": "^1.7.0", + "tsconfig-paths": "^3.14.1", "typescript": "~4.8.0" }, "dependencies": { diff --git a/packages/cli/scripts/build.mjs b/packages/cli/scripts/build.mjs index 48e6722285..63a9cb2f6f 100644 --- a/packages/cli/scripts/build.mjs +++ b/packages/cli/scripts/build.mjs @@ -12,15 +12,6 @@ const SPEC_THEME_FILENAME = 'swaggerTheme.css'; const userManagementEnabled = process.env.N8N_USER_MANAGEMENT_DISABLED !== 'true'; const publicApiEnabled = process.env.N8N_PUBLIC_API_DISABLED !== 'true'; -shell.rm('-rf', path.resolve(ROOT_DIR, 'dist')); - -const tscCompilation = shell.exec('tsc', { silent: true }) -if (tscCompilation.code !== 0) { - shell.echo('Typescript Compilation failed:'); - shell.echo(tscCompilation.stdout); - shell.exit(1); -} - if (userManagementEnabled) { copyUserManagementEmailTemplates(); } @@ -33,7 +24,7 @@ if (publicApiEnabled) { function copyUserManagementEmailTemplates(rootDir = ROOT_DIR) { const templates = { source: path.resolve(rootDir, 'src', 'UserManagement', 'email', 'templates'), - destination: path.resolve(rootDir, 'dist', 'src', 'UserManagement', 'email'), + destination: path.resolve(rootDir, 'dist', 'UserManagement', 'email'), }; shell.cp('-r', templates.source, templates.destination); @@ -42,7 +33,7 @@ function copyUserManagementEmailTemplates(rootDir = ROOT_DIR) { function copySwaggerTheme(rootDir = ROOT_DIR, themeFilename = SPEC_THEME_FILENAME) { const swaggerTheme = { source: path.resolve(rootDir, 'src', 'PublicApi', themeFilename), - destination: path.resolve(rootDir, 'dist', 'src', 'PublicApi'), + destination: path.resolve(rootDir, 'dist', 'PublicApi'), }; shell.cp('-r', swaggerTheme.source, swaggerTheme.destination); @@ -54,11 +45,11 @@ function bundleOpenApiSpecs(rootDir = ROOT_DIR, specFileName = SPEC_FILENAME) { shell .find(publicApiDir) .reduce((acc, cur) => { - return cur.endsWith(specFileName) ? [...acc, path.relative('.', cur)] : acc; + return cur.endsWith(specFileName) ? [...acc, path.relative('./src', cur)] : acc; }, []) .forEach((specPath) => { const distSpecPath = path.resolve(rootDir, 'dist', specPath); - const command = `swagger-cli bundle ${specPath} --type yaml --outfile ${distSpecPath}`; + const command = `npm run swagger -- bundle src/${specPath} --type yaml --outfile ${distSpecPath}`; shell.exec(command, { silent: true }); }); } diff --git a/packages/cli/src/ActiveExecutions.ts b/packages/cli/src/ActiveExecutions.ts index d265b6804f..d3f7b69a1d 100644 --- a/packages/cli/src/ActiveExecutions.ts +++ b/packages/cli/src/ActiveExecutions.ts @@ -16,17 +16,16 @@ import { ChildProcess } from 'child_process'; import { stringify } from 'flatted'; // eslint-disable-next-line import/no-extraneous-dependencies import PCancelable from 'p-cancelable'; -// eslint-disable-next-line import/no-cycle +import * as Db from '@/Db'; import { - Db, IExecutingWorkflowData, IExecutionDb, IExecutionFlattedDb, IExecutionsCurrentSummary, IWorkflowExecutionDataProcess, - ResponseHelper, - WorkflowHelpers, -} from '.'; +} from '@/Interfaces'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; export class ActiveExecutions { private activeExecutions: { diff --git a/packages/cli/src/ActiveWorkflowRunner.ts b/packages/cli/src/ActiveWorkflowRunner.ts index 5692bb92ce..ca5b9996e5 100644 --- a/packages/cli/src/ActiveWorkflowRunner.ts +++ b/packages/cli/src/ActiveWorkflowRunner.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable prefer-spread */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable no-param-reassign */ @@ -37,32 +36,30 @@ import { import express from 'express'; -// eslint-disable-next-line import/no-cycle +import * as Db from '@/Db'; import { - Db, IActivationError, IQueuedWorkflowActivations, IResponseCallbackData, IWebhookDb, IWorkflowDb, IWorkflowExecutionDataProcess, - NodeTypes, - ResponseHelper, - WebhookHelpers, - WorkflowExecuteAdditionalData, - WorkflowHelpers, - WorkflowRunner, - ExternalHooks, -} from '.'; -import config from '../config'; -import { User } from './databases/entities/User'; -import { whereClause } from './WorkflowHelpers'; -import { WorkflowEntity } from './databases/entities/WorkflowEntity'; -import * as ActiveExecutions from './ActiveExecutions'; -import { createErrorExecution } from './GenericHelpers'; -import { WORKFLOW_REACTIVATE_INITIAL_TIMEOUT, WORKFLOW_REACTIVATE_MAX_TIMEOUT } from './constants'; +} from '@/Interfaces'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WebhookHelpers from '@/WebhookHelpers'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; -const activeExecutions = ActiveExecutions.getInstance(); +import config from '@/config'; +import { User } from '@db/entities/User'; +import { whereClause } from '@/WorkflowHelpers'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import { createErrorExecution } from '@/GenericHelpers'; +import { WORKFLOW_REACTIVATE_INITIAL_TIMEOUT, WORKFLOW_REACTIVATE_MAX_TIMEOUT } from '@/constants'; +import { NodeTypes } from '@/NodeTypes'; +import { WorkflowRunner } from '@/WorkflowRunner'; +import { ExternalHooks } from '@/ExternalHooks'; const WEBHOOK_PROD_UNREGISTERED_HINT = `The workflow must be active for a production URL to run successfully. You can activate the workflow using the toggle in the top-right of the editor. Note that unlike test URL calls, production URL calls aren't shown on the canvas (only in the executions list)`; @@ -649,7 +646,7 @@ export class ActiveWorkflowRunner { if (donePromise) { executePromise.then((executionId) => { - activeExecutions + ActiveExecutions.getInstance() .getPostExecutePromise(executionId) .then(donePromise.resolve) .catch(donePromise.reject); @@ -706,7 +703,7 @@ export class ActiveWorkflowRunner { if (donePromise) { executePromise.then((executionId) => { - activeExecutions + ActiveExecutions.getInstance() .getPostExecutePromise(executionId) .then(donePromise.resolve) .catch(donePromise.reject); diff --git a/packages/cli/src/CommunityNodes/helpers.ts b/packages/cli/src/CommunityNodes/helpers.ts index f5ab34dfe4..22022acece 100644 --- a/packages/cli/src/CommunityNodes/helpers.ts +++ b/packages/cli/src/CommunityNodes/helpers.ts @@ -1,5 +1,4 @@ /* eslint-disable no-restricted-syntax */ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/naming-convention */ import { promisify } from 'util'; import { exec } from 'child_process'; @@ -15,11 +14,11 @@ import { NPM_PACKAGE_STATUS_GOOD, RESPONSE_ERROR_MESSAGES, UNKNOWN_FAILURE_REASON, -} from '../constants'; -import { InstalledPackages } from '../databases/entities/InstalledPackages'; -import config from '../../config'; +} from '@/constants'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; +import config from '@/config'; -import type { CommunityPackages } from '../Interfaces'; +import type { CommunityPackages } from '@/Interfaces'; const { PACKAGE_NAME_NOT_PROVIDED, diff --git a/packages/cli/src/CommunityNodes/packageModel.ts b/packages/cli/src/CommunityNodes/packageModel.ts index c803d01a12..8b6fabc3b0 100644 --- a/packages/cli/src/CommunityNodes/packageModel.ts +++ b/packages/cli/src/CommunityNodes/packageModel.ts @@ -1,8 +1,7 @@ -/* eslint-disable import/no-cycle */ import { INodeTypeData, INodeTypeNameVersion, LoggerProxy } from 'n8n-workflow'; -import { Db } from '..'; -import { InstalledNodes } from '../databases/entities/InstalledNodes'; -import { InstalledPackages } from '../databases/entities/InstalledPackages'; +import * as Db from '@/Db'; +import { InstalledNodes } from '@db/entities/InstalledNodes'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; export async function findInstalledPackage( packageName: string, diff --git a/packages/cli/src/CredentialTypes.ts b/packages/cli/src/CredentialTypes.ts index eceeb35fed..9f744cc9d3 100644 --- a/packages/cli/src/CredentialTypes.ts +++ b/packages/cli/src/CredentialTypes.ts @@ -3,7 +3,7 @@ import { ICredentialTypeData, ICredentialTypes as ICredentialTypesInterface, } from 'n8n-workflow'; -import { RESPONSE_ERROR_MESSAGES } from './constants'; +import { RESPONSE_ERROR_MESSAGES } from '@/constants'; class CredentialTypesClass implements ICredentialTypesInterface { credentialTypes: ICredentialTypeData = {}; diff --git a/packages/cli/src/CredentialsHelper.ts b/packages/cli/src/CredentialsHelper.ts index 35e000ac19..3445546af6 100644 --- a/packages/cli/src/CredentialsHelper.ts +++ b/packages/cli/src/CredentialsHelper.ts @@ -42,20 +42,14 @@ import { IHttpRequestHelper, } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle -import { - CredentialsOverwrites, - CredentialTypes, - Db, - ICredentialsDb, - NodeTypes, - WhereClause, - WorkflowExecuteAdditionalData, -} from '.'; -// eslint-disable-next-line import/no-cycle -import { User } from './databases/entities/User'; -// eslint-disable-next-line import/no-cycle -import { CredentialsEntity } from './databases/entities/CredentialsEntity'; +import * as Db from '@/Db'; +import { ICredentialsDb, WhereClause } from '@/Interfaces'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import { User } from '@db/entities/User'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { NodeTypes } from '@/NodeTypes'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/CredentialTypes'; const mockNodeTypes: INodeTypes = { nodeTypes: {} as INodeTypeData, diff --git a/packages/cli/src/CredentialsOverwrites.ts b/packages/cli/src/CredentialsOverwrites.ts index 0b4f5dcbbf..c704545595 100644 --- a/packages/cli/src/CredentialsOverwrites.ts +++ b/packages/cli/src/CredentialsOverwrites.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/no-unsafe-argument */ /* eslint-disable no-underscore-dangle */ import { deepCopy, ICredentialDataDecryptedObject } from 'n8n-workflow'; - -// eslint-disable-next-line import/no-cycle -import { CredentialTypes, GenericHelpers, ICredentialsOverwrite } from '.'; +import { CredentialTypes } from '@/CredentialTypes'; +import type { ICredentialsOverwrite } from '@/Interfaces'; +import * as GenericHelpers from '@/GenericHelpers'; class CredentialsOverwritesClass { private credentialTypes = CredentialTypes(); diff --git a/packages/cli/src/Db.ts b/packages/cli/src/Db.ts index b69aa63314..58a0cb3b5b 100644 --- a/packages/cli/src/Db.ts +++ b/packages/cli/src/Db.ts @@ -1,5 +1,4 @@ /* eslint-disable import/no-mutable-exports */ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable no-case-declarations */ @@ -16,20 +15,19 @@ import { Repository, } from 'typeorm'; import { TlsOptions } from 'tls'; -// eslint-disable-next-line import/no-cycle -import { DatabaseType, GenericHelpers, IDatabaseCollections } from '.'; +import { DatabaseType, IDatabaseCollections } from '@/Interfaces'; +import * as GenericHelpers from '@/GenericHelpers'; -import config from '../config'; +import config from '@/config'; -// eslint-disable-next-line import/no-cycle -import { entities } from './databases/entities'; +import { entities } from '@db/entities'; import { getMariaDBConnectionOptions, getMysqlConnectionOptions, getOptionOverrides, getPostgresConnectionOptions, getSqliteConnectionOptions, -} from './databases/config'; +} from '@db/config'; export let isInitialized = false; export const collections = {} as IDatabaseCollections; diff --git a/packages/cli/src/ErrorReporting.ts b/packages/cli/src/ErrorReporting.ts index b508e5343d..d8c07f7c94 100644 --- a/packages/cli/src/ErrorReporting.ts +++ b/packages/cli/src/ErrorReporting.ts @@ -1,7 +1,7 @@ import * as Sentry from '@sentry/node'; import { RewriteFrames } from '@sentry/integrations'; import type { Application } from 'express'; -import config from '../config'; +import config from '@/config'; import { ErrorReporterProxy } from 'n8n-workflow'; let initialized = false; diff --git a/packages/cli/src/ExternalHooks.ts b/packages/cli/src/ExternalHooks.ts index 501ea5e14f..21ccaa1fcb 100644 --- a/packages/cli/src/ExternalHooks.ts +++ b/packages/cli/src/ExternalHooks.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-var-requires */ /* eslint-disable import/no-dynamic-require */ /* eslint-disable no-restricted-syntax */ -// eslint-disable-next-line import/no-cycle -import { Db, IExternalHooksClass, IExternalHooksFileData, IExternalHooksFunctions } from '.'; +import * as Db from '@/Db'; +import { IExternalHooksClass, IExternalHooksFileData, IExternalHooksFunctions } from '@/Interfaces'; -import config from '../config'; +import config from '@/config'; class ExternalHooksClass implements IExternalHooksClass { externalHooks: { diff --git a/packages/cli/src/GenericHelpers.ts b/packages/cli/src/GenericHelpers.ts index 6eebf937d9..e78ae0faac 100644 --- a/packages/cli/src/GenericHelpers.ts +++ b/packages/cli/src/GenericHelpers.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable @typescript-eslint/no-unsafe-return */ @@ -18,26 +17,24 @@ import { WorkflowExecuteMode, } from 'n8n-workflow'; import { validate } from 'class-validator'; -import config from '../config'; - -// eslint-disable-next-line import/no-cycle +import config from '@/config'; +import * as Db from '@/Db'; import { - Db, ICredentialsDb, IExecutionDb, IExecutionFlattedDb, IPackageVersions, IWorkflowDb, - ResponseHelper, IN8nNodePackageJson, -} from '.'; +} from '@/Interfaces'; +import * as ResponseHelper from '@/ResponseHelper'; // eslint-disable-next-line import/order import { Like } from 'typeorm'; -// eslint-disable-next-line import/no-cycle -import { WorkflowEntity } from './databases/entities/WorkflowEntity'; -import { CredentialsEntity } from './databases/entities/CredentialsEntity'; -import { TagEntity } from './databases/entities/TagEntity'; -import { User } from './databases/entities/User'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { TagEntity } from '@db/entities/TagEntity'; +import { User } from '@db/entities/User'; +import { CLI_DIR } from '@/constants'; let versionCache: IPackageVersions | undefined; @@ -74,7 +71,7 @@ export async function getVersions(): Promise { return versionCache; } - const packageFile = await fsReadFile(pathJoin(__dirname, '../../package.json'), 'utf8'); + const packageFile = await fsReadFile(pathJoin(CLI_DIR, 'package.json'), 'utf8'); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const packageData = jsonParse(packageFile); diff --git a/packages/cli/src/Interfaces.ts b/packages/cli/src/Interfaces.ts index 8bb4393cd6..aef7140d74 100644 --- a/packages/cli/src/Interfaces.ts +++ b/packages/cli/src/Interfaces.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/naming-convention */ -/* eslint-disable import/no-cycle */ import { ExecutionError, ICredentialDataDecryptedObject, @@ -31,15 +30,15 @@ import { ChildProcess } from 'child_process'; import { Url } from 'url'; import type { Request } from 'express'; -import type { InstalledNodes } from './databases/entities/InstalledNodes'; -import type { InstalledPackages } from './databases/entities/InstalledPackages'; -import type { Role } from './databases/entities/Role'; -import type { Settings } from './databases/entities/Settings'; -import type { SharedCredentials } from './databases/entities/SharedCredentials'; -import type { SharedWorkflow } from './databases/entities/SharedWorkflow'; -import type { TagEntity } from './databases/entities/TagEntity'; -import type { User } from './databases/entities/User'; -import type { WorkflowEntity } from './databases/entities/WorkflowEntity'; +import type { InstalledNodes } from '@db/entities/InstalledNodes'; +import type { InstalledPackages } from '@db/entities/InstalledPackages'; +import type { Role } from '@db/entities/Role'; +import type { Settings } from '@db/entities/Settings'; +import type { SharedCredentials } from '@db/entities/SharedCredentials'; +import type { SharedWorkflow } from '@db/entities/SharedWorkflow'; +import type { TagEntity } from '@db/entities/TagEntity'; +import type { User } from '@db/entities/User'; +import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; export interface IActivationError { time: number; @@ -94,16 +93,6 @@ export interface IWebhookDb { pathLength?: number; } -// ---------------------------------- -// settings -// ---------------------------------- - -export interface ISettingsDb { - key: string; - value: string | boolean | IDataObject | number; - loadOnStartup: boolean; -} - // ---------------------------------- // tags // ---------------------------------- diff --git a/packages/cli/src/InternalHooks.ts b/packages/cli/src/InternalHooks.ts index 31ae7ca36e..7f7b4abbdd 100644 --- a/packages/cli/src/InternalHooks.ts +++ b/packages/cli/src/InternalHooks.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ import { snakeCase } from 'change-case'; import { BinaryDataManager } from 'n8n-core'; import { @@ -15,9 +14,9 @@ import { ITelemetryUserDeletionData, IWorkflowBase, IWorkflowDb, -} from '.'; -import { IExecutionTrackProperties } from './Interfaces'; -import { Telemetry } from './telemetry'; + IExecutionTrackProperties, +} from '@/Interfaces'; +import { Telemetry } from '@/telemetry'; export class InternalHooksClass implements IInternalHooksClass { private versionCli: string; diff --git a/packages/cli/src/InternalHooksManager.ts b/packages/cli/src/InternalHooksManager.ts index e56e3d25dd..d1e050c906 100644 --- a/packages/cli/src/InternalHooksManager.ts +++ b/packages/cli/src/InternalHooksManager.ts @@ -1,7 +1,6 @@ -/* eslint-disable import/no-cycle */ import { INodeTypes } from 'n8n-workflow'; -import { InternalHooksClass } from './InternalHooks'; -import { Telemetry } from './telemetry'; +import { InternalHooksClass } from '@/InternalHooks'; +import { Telemetry } from '@/telemetry'; export class InternalHooksManager { private static internalHooksInstance: InternalHooksClass; diff --git a/packages/cli/src/LoadNodesAndCredentials.ts b/packages/cli/src/LoadNodesAndCredentials.ts index 53cfe8b635..373769e4a2 100644 --- a/packages/cli/src/LoadNodesAndCredentials.ts +++ b/packages/cli/src/LoadNodesAndCredentials.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable no-underscore-dangle */ /* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable no-prototype-builtins */ @@ -34,18 +33,18 @@ import { import glob from 'fast-glob'; import path from 'path'; import pick from 'lodash.pick'; -import { IN8nNodePackageJson } from './Interfaces'; -import { getLogger } from './Logger'; -import config from '../config'; -import { NodeTypes } from '.'; -import { InstalledPackages } from './databases/entities/InstalledPackages'; -import { InstalledNodes } from './databases/entities/InstalledNodes'; -import { executeCommand, loadClassInIsolation } from './CommunityNodes/helpers'; -import { RESPONSE_ERROR_MESSAGES } from './constants'; +import { IN8nNodePackageJson } from '@/Interfaces'; +import { getLogger } from '@/Logger'; +import config from '@/config'; +import { NodeTypes } from '@/NodeTypes'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; +import { InstalledNodes } from '@db/entities/InstalledNodes'; +import { executeCommand, loadClassInIsolation } from '@/CommunityNodes/helpers'; +import { CLI_DIR, RESPONSE_ERROR_MESSAGES } from '@/constants'; import { persistInstalledPackageData, removePackageFromDatabase, -} from './CommunityNodes/packageModel'; +} from '@/CommunityNodes/packageModel'; const CUSTOM_NODES_CATEGORY = 'Custom Nodes'; @@ -66,8 +65,6 @@ class LoadNodesAndCredentialsClass { includeNodes: string | undefined = undefined; - nodeModulesPath = ''; - logger: ILogger; async init() { @@ -80,13 +77,13 @@ class LoadNodesAndCredentialsClass { // @ts-ignore module.constructor._initPaths(); - this.nodeModulesPath = await this.getNodeModulesFolderLocation(); + const nodeModulesPath = await this.getNodeModulesFolderLocation(); this.excludeNodes = config.getEnv('nodes.exclude'); this.includeNodes = config.getEnv('nodes.include'); // Get all the installed packages which contain n8n nodes - const nodePackages = await this.getN8nNodePackages(this.nodeModulesPath); + const nodePackages = await this.getN8nNodePackages(nodeModulesPath); for (const packagePath of nodePackages) { await this.loadDataFromPackage(packagePath); @@ -102,13 +99,13 @@ class LoadNodesAndCredentialsClass { // to load the credentials and nodes const checkPaths = [ // In case "n8n" package is in same node_modules folder. - path.join(__dirname, '..', '..', '..', 'n8n-workflow'), + path.join(CLI_DIR, '..', 'n8n-workflow'), // In case "n8n" package is the root and the packages are // in the "node_modules" folder underneath it. - path.join(__dirname, '..', '..', 'node_modules', 'n8n-workflow'), + path.join(CLI_DIR, 'node_modules', 'n8n-workflow'), // In case "n8n" package is installed using npm/yarn workspaces // the node_modules folder is in the root of the workspace. - path.join(__dirname, '..', '..', '..', '..', 'node_modules', 'n8n-workflow'), + path.join(CLI_DIR, '..', '..', 'node_modules', 'n8n-workflow'), ]; for (const checkPath of checkPaths) { try { diff --git a/packages/cli/src/Logger.ts b/packages/cli/src/Logger.ts index 204e94bf7c..e413f70fef 100644 --- a/packages/cli/src/Logger.ts +++ b/packages/cli/src/Logger.ts @@ -10,7 +10,7 @@ import { IDataObject, ILogger, LogTypes } from 'n8n-workflow'; import callsites from 'callsites'; import { basename } from 'path'; -import config from '../config'; +import config from '@/config'; export class Logger implements ILogger { private logger: winston.Logger; diff --git a/packages/cli/src/PublicApi/index.ts b/packages/cli/src/PublicApi/index.ts index 8c8e61f134..104ad15856 100644 --- a/packages/cli/src/PublicApi/index.ts +++ b/packages/cli/src/PublicApi/index.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/naming-convention */ -/* eslint-disable import/no-cycle */ import express, { Router } from 'express'; import fs from 'fs/promises'; import path from 'path'; @@ -11,9 +10,10 @@ import swaggerUi from 'swagger-ui-express'; import validator from 'validator'; import YAML from 'yamljs'; -import config from '../../config'; -import { Db, InternalHooksManager } from '..'; -import { getInstanceBaseUrl } from '../UserManagement/UserManagementHelper'; +import config from '@/config'; +import * as Db from '@/Db'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { getInstanceBaseUrl } from '@/UserManagement/UserManagementHelper'; function createApiRouter( version: string, diff --git a/packages/cli/src/PublicApi/types.d.ts b/packages/cli/src/PublicApi/types.d.ts index d5728aa5aa..0140f0c4a9 100644 --- a/packages/cli/src/PublicApi/types.d.ts +++ b/packages/cli/src/PublicApi/types.d.ts @@ -1,14 +1,13 @@ -/* eslint-disable import/no-cycle */ import express from 'express'; import { IDataObject } from 'n8n-workflow'; -import type { User } from '../databases/entities/User'; +import type { User } from '@db/entities/User'; -import type { Role } from '../databases/entities/Role'; +import type { Role } from '@db/entities/Role'; -import type { WorkflowEntity } from '../databases/entities/WorkflowEntity'; +import type { WorkflowEntity } from '@db/entities/WorkflowEntity'; -import * as UserManagementMailer from '../UserManagement/email/UserManagementMailer'; +import * as UserManagementMailer from '@/UserManagement/email/UserManagementMailer'; export type ExecutionStatus = 'error' | 'running' | 'success' | 'waiting' | null; 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 bd5d1d5d59..61561ca449 100644 --- a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.handler.ts +++ b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.handler.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-unsafe-argument */ import express from 'express'; -import { CredentialsHelper } from '../../../../CredentialsHelper'; -import { CredentialTypes } from '../../../../CredentialTypes'; -import { CredentialsEntity } from '../../../../databases/entities/CredentialsEntity'; -import { CredentialRequest } from '../../../../requests'; +import { CredentialsHelper } from '@/CredentialsHelper'; +import { CredentialTypes } from '@/CredentialTypes'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { CredentialRequest } from '@/requests'; import { CredentialTypeRequest } from '../../../types'; import { authorize } from '../../shared/middlewares/global.middleware'; import { validCredentialsProperties, validCredentialType } from './credentials.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 f40e21504f..c5b47a188f 100644 --- a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.middleware.ts +++ b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.middleware.ts @@ -3,7 +3,8 @@ import express from 'express'; import { validate } from 'jsonschema'; -import { CredentialsHelper, CredentialTypes } from '../../../..'; +import { CredentialsHelper } from '@/CredentialsHelper'; +import { CredentialTypes } from '@/CredentialTypes'; import { CredentialRequest } from '../../../types'; import { toJsonSchema } from './credentials.service'; 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 84668e6ea9..de1fb8bd1e 100644 --- a/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.service.ts +++ b/packages/cli/src/PublicApi/v1/handlers/credentials/credentials.service.ts @@ -5,13 +5,14 @@ import { FindOneOptions } from 'typeorm'; import { UserSettings, Credentials } from 'n8n-core'; import { IDataObject, INodeProperties, INodePropertyOptions } from 'n8n-workflow'; -import { Db, ICredentialsDb } from '../../../..'; -import { CredentialsEntity } from '../../../../databases/entities/CredentialsEntity'; -import { SharedCredentials } from '../../../../databases/entities/SharedCredentials'; -import { User } from '../../../../databases/entities/User'; -import { externalHooks } from '../../../../Server'; +import * as Db from '@/Db'; +import type { ICredentialsDb } from '@/Interfaces'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { SharedCredentials } from '@db/entities/SharedCredentials'; +import { User } from '@db/entities/User'; +import { externalHooks } from '@/Server'; import { IDependency, IJsonSchema } from '../../../types'; -import { CredentialRequest } from '../../../../requests'; +import { CredentialRequest } from '@/requests'; export async function getCredentials( credentialId: number | string, 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 bd94da1d50..3ac964d987 100644 --- a/packages/cli/src/PublicApi/v1/handlers/executions/executions.handler.ts +++ b/packages/cli/src/PublicApi/v1/handlers/executions/executions.handler.ts @@ -8,12 +8,12 @@ import { deleteExecution, getExecutionsCount, } from './executions.service'; -import { ActiveExecutions } from '../../../..'; +import * as ActiveExecutions from '@/ActiveExecutions'; import { authorize, validCursor } from '../../shared/middlewares/global.middleware'; import { ExecutionRequest } from '../../../types'; import { getSharedWorkflowIds } from '../workflows/workflows.service'; import { encodeNextCursor } from '../../shared/services/pagination.service'; -import { InternalHooksManager } from '../../../../InternalHooksManager'; +import { InternalHooksManager } from '@/InternalHooksManager'; export = { deleteExecution: [ diff --git a/packages/cli/src/PublicApi/v1/handlers/executions/executions.service.ts b/packages/cli/src/PublicApi/v1/handlers/executions/executions.service.ts index 2f5bb96ab3..d05a9142ae 100644 --- a/packages/cli/src/PublicApi/v1/handlers/executions/executions.service.ts +++ b/packages/cli/src/PublicApi/v1/handlers/executions/executions.service.ts @@ -1,9 +1,10 @@ import { parse } from 'flatted'; import { In, Not, Raw, LessThan, IsNull, FindOperator } from 'typeorm'; -import { Db, IExecutionFlattedDb, IExecutionResponseApi } from '../../../..'; -import { ExecutionEntity } from '../../../../databases/entities/ExecutionEntity'; -import { ExecutionStatus } from '../../../types'; +import * as Db from '@/Db'; +import type { IExecutionFlattedDb, IExecutionResponseApi } from '@/Interfaces'; +import { ExecutionEntity } from '@db/entities/ExecutionEntity'; +import { ExecutionStatus } from '@/PublicApi/types'; function prepareExecutionData( execution: IExecutionFlattedDb | undefined, diff --git a/packages/cli/src/PublicApi/v1/handlers/users/users.service.ts b/packages/cli/src/PublicApi/v1/handlers/users/users.service.ts index f4819ef004..9a1c4b4dd0 100644 --- a/packages/cli/src/PublicApi/v1/handlers/users/users.service.ts +++ b/packages/cli/src/PublicApi/v1/handlers/users/users.service.ts @@ -1,6 +1,6 @@ -import { Db } from '../../../..'; -import { Role } from '../../../../databases/entities/Role'; -import { User } from '../../../../databases/entities/User'; +import * as Db from '@/Db'; +import { Role } from '@db/entities/Role'; +import { User } from '@db/entities/User'; export function isInstanceOwner(user: User): boolean { return user.globalRole.name === 'owner'; 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 d33cf93f71..737d0e670a 100644 --- a/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.handler.ts +++ b/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.handler.ts @@ -2,12 +2,13 @@ import express from 'express'; import { FindManyOptions, In, ObjectLiteral } from 'typeorm'; -import { ActiveWorkflowRunner, Db } from '../../../..'; -import config = require('../../../../../config'); -import { WorkflowEntity } from '../../../../databases/entities/WorkflowEntity'; -import { InternalHooksManager } from '../../../../InternalHooksManager'; -import { externalHooks } from '../../../../Server'; -import { addNodeIds, replaceInvalidCredentials } from '../../../../WorkflowHelpers'; +import * as Db from '@/Db'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import config from '@/config'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { externalHooks } from '@/Server'; +import { addNodeIds, replaceInvalidCredentials } from '@/WorkflowHelpers'; import { WorkflowRequest } from '../../../types'; import { authorize, validCursor } from '../../shared/middlewares/global.middleware'; import { encodeNextCursor } from '../../shared/services/pagination.service'; 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 bb4760d797..7193d3e67f 100644 --- a/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.service.ts +++ b/packages/cli/src/PublicApi/v1/handlers/workflows/workflows.service.ts @@ -3,13 +3,13 @@ import intersection from 'lodash.intersection'; import type { INode } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; -import { Db } from '../../../..'; -import { User } from '../../../../databases/entities/User'; -import { WorkflowEntity } from '../../../../databases/entities/WorkflowEntity'; -import { SharedWorkflow } from '../../../../databases/entities/SharedWorkflow'; +import * as Db from '@/Db'; +import { User } from '@db/entities/User'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; import { isInstanceOwner } from '../users/users.service'; -import { Role } from '../../../../databases/entities/Role'; -import config from '../../../../../config'; +import { Role } from '@db/entities/Role'; +import config from '@/config'; function insertIf(condition: boolean, elements: string[]): string[] { return condition ? elements : []; diff --git a/packages/cli/src/Push.ts b/packages/cli/src/Push.ts index 36e87166f4..89fba39248 100644 --- a/packages/cli/src/Push.ts +++ b/packages/cli/src/Push.ts @@ -3,7 +3,7 @@ import sseChannel from 'sse-channel'; import express from 'express'; import { LoggerProxy as Logger } from 'n8n-workflow'; -import { IPushData, IPushDataType } from '.'; +import type { IPushData, IPushDataType } from '@/Interfaces'; interface SSEChannelOptions { cors?: { diff --git a/packages/cli/src/Queue.ts b/packages/cli/src/Queue.ts index fa74a5ecb8..f68c8c82b2 100644 --- a/packages/cli/src/Queue.ts +++ b/packages/cli/src/Queue.ts @@ -1,10 +1,8 @@ import Bull from 'bull'; import { IExecuteResponsePromiseData } from 'n8n-workflow'; -import config from '../config'; -// eslint-disable-next-line import/no-cycle -import * as ActiveExecutions from './ActiveExecutions'; -// eslint-disable-next-line import/no-cycle -import * as WebhookHelpers from './WebhookHelpers'; +import config from '@/config'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import * as WebhookHelpers from '@/WebhookHelpers'; export type Job = Bull.Job; export type JobQueue = Bull.Queue; diff --git a/packages/cli/src/ResponseHelper.ts b/packages/cli/src/ResponseHelper.ts index 570cf7fa39..73fd09ce6a 100644 --- a/packages/cli/src/ResponseHelper.ts +++ b/packages/cli/src/ResponseHelper.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-console */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ @@ -8,14 +7,13 @@ import { Request, Response } from 'express'; import { parse, stringify } from 'flatted'; import { ErrorReporterProxy as ErrorReporter } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle -import { +import type { IExecutionDb, IExecutionFlatted, IExecutionFlattedDb, IExecutionResponse, IWorkflowDb, -} from '.'; +} from './Interfaces'; /** * Special Error which allows to return also an error code and http status code diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index c450681031..aa9c265f9b 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -9,7 +9,6 @@ /* eslint-disable no-return-assign */ /* eslint-disable no-param-reassign */ /* eslint-disable consistent-return */ -/* eslint-disable import/no-cycle */ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ @@ -83,20 +82,25 @@ import parseUrl from 'parseurl'; import promClient, { Registry } from 'prom-client'; import history from 'connect-history-api-fallback'; import bodyParser from 'body-parser'; +import glob from 'fast-glob'; -import config from '../config'; -import * as Queue from './Queue'; +import config from '@/config'; +import * as Queue from '@/Queue'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { getCredentialTranslationPath } from '@/TranslationHelpers'; +import { WEBHOOK_METHODS } from '@/WebhookHelpers'; +import { getSharedWorkflowIds, whereClause } from '@/WorkflowHelpers'; -import { InternalHooksManager } from './InternalHooksManager'; -import { getCredentialTranslationPath } from './TranslationHelpers'; -import { WEBHOOK_METHODS } from './WebhookHelpers'; -import { getSharedWorkflowIds, whereClause } from './WorkflowHelpers'; - -import { nodesController } from './api/nodes.api'; -import { workflowsController } from './workflows/workflows.controller'; -import { AUTH_COOKIE_NAME, RESPONSE_ERROR_MESSAGES } from './constants'; -import { credentialsController } from './credentials/credentials.controller'; -import { oauth2CredentialController } from './credentials/oauth2Credential.api'; +import { nodesController } from '@/api/nodes.api'; +import { workflowsController } from '@/workflows/workflows.controller'; +import { + AUTH_COOKIE_NAME, + NODES_BASE_DIR, + RESPONSE_ERROR_MESSAGES, + TEMPLATES_DIR, +} from '@/constants'; +import { credentialsController } from '@/credentials/credentials.controller'; +import { oauth2CredentialController } from '@/credentials/oauth2Credential.api'; import type { CurlHelper, ExecutionRequest, @@ -104,33 +108,24 @@ import type { NodeParameterOptionsRequest, OAuthRequest, WorkflowRequest, -} from './requests'; -import { userManagementRouter } from './UserManagement'; -import { resolveJwt } from './UserManagement/auth/jwt'; +} from '@/requests'; +import { userManagementRouter } from '@/UserManagement'; +import { resolveJwt } from '@/UserManagement/auth/jwt'; -import { executionsController } from './api/executions.api'; -import { nodeTypesController } from './api/nodeTypes.api'; -import { tagsController } from './api/tags.api'; -import { loadPublicApiVersions } from './PublicApi'; -import * as telemetryScripts from './telemetry/scripts'; +import { executionsController } from '@/api/executions.api'; +import { nodeTypesController } from '@/api/nodeTypes.api'; +import { tagsController } from '@/api/tags.api'; +import { loadPublicApiVersions } from '@/PublicApi'; +import * as telemetryScripts from '@/telemetry/scripts'; import { getInstanceBaseUrl, isEmailSetUp, isSharingEnabled, isUserManagementEnabled, -} from './UserManagement/UserManagementHelper'; +} from '@/UserManagement/UserManagementHelper'; +import * as Db from '@/Db'; import { - ActiveExecutions, - ActiveWorkflowRunner, - CredentialsHelper, - CredentialsOverwrites, - CredentialTypes, DatabaseType, - Db, - ExternalHooks, - GenericHelpers, - getCredentialForUser, - getCredentialWithoutUser, ICredentialsDb, ICredentialsOverwrite, ICustomRequest, @@ -141,21 +136,29 @@ import { IExternalHooksClass, IN8nUISettings, IPackageVersions, - NodeTypes, - Push, - ResponseHelper, - TestWebhooks, - WaitTracker, - WaitTrackerClass, - WebhookHelpers, - WebhookServer, - WorkflowExecuteAdditionalData, -} from '.'; -import glob from 'fast-glob'; -import { ResponseError } from './ResponseHelper'; - -import { toHttpNodeParameters } from './CurlConverterHelper'; -import { setupErrorMiddleware } from './ErrorReporting'; +} from '@/Interfaces'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import { + CredentialsHelper, + getCredentialForUser, + getCredentialWithoutUser, +} from '@/CredentialsHelper'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/CredentialTypes'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import { NodeTypes } from '@/NodeTypes'; +import * as Push from '@/Push'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as TestWebhooks from '@/TestWebhooks'; +import { WaitTracker, WaitTrackerClass } from '@/WaitTracker'; +import * as WebhookHelpers from '@/WebhookHelpers'; +import * as WebhookServer from '@/WebhookServer'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import { ResponseError } from '@/ResponseHelper'; +import { toHttpNodeParameters } from '@/CurlConverterHelper'; +import { setupErrorMiddleware } from '@/ErrorReporting'; require('body-parser-xml')(bodyParser); @@ -955,13 +958,11 @@ class App { ); // Returns node information based on node names and versions + const headersPath = pathJoin(NODES_BASE_DIR, 'dist', 'nodes', 'headers'); this.app.get( `/${this.restEndpoint}/node-translation-headers`, ResponseHelper.send( async (req: express.Request, res: express.Response): Promise => { - const packagesPath = pathJoin(__dirname, '..', '..', '..'); - const headersPath = pathJoin(packagesPath, 'nodes-base', 'dist', 'nodes', 'headers'); - try { await fsAccess(`${headersPath}.js`); } catch (_) { @@ -1395,7 +1396,7 @@ class App { userId: req.user?.id, credentialId, }); - res.sendFile(pathResolve(__dirname, '../../templates/oauth-callback.html')); + res.sendFile(pathResolve(TEMPLATES_DIR, 'oauth-callback.html')); } catch (error) { LoggerProxy.error('OAuth1 callback failed because of insufficient user permissions', { userId: req.user?.id, diff --git a/packages/cli/src/TagHelpers.ts b/packages/cli/src/TagHelpers.ts index 12165ceeb6..fef8f8f59e 100644 --- a/packages/cli/src/TagHelpers.ts +++ b/packages/cli/src/TagHelpers.ts @@ -1,11 +1,10 @@ /* eslint-disable no-param-reassign */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -/* eslint-disable import/no-cycle */ import { EntityManager, getConnection } from 'typeorm'; -import { TagEntity } from './databases/entities/TagEntity'; +import { TagEntity } from '@db/entities/TagEntity'; -import { ITagToImport, ITagWithCountDb, IWorkflowToImport } from './Interfaces'; +import { ITagToImport, ITagWithCountDb, IWorkflowToImport } from '@/Interfaces'; // ---------------------------------- // utils diff --git a/packages/cli/src/TestWebhooks.ts b/packages/cli/src/TestWebhooks.ts index f22a3ea898..1763dbf870 100644 --- a/packages/cli/src/TestWebhooks.ts +++ b/packages/cli/src/TestWebhooks.ts @@ -13,8 +13,10 @@ import { WorkflowActivateMode, WorkflowExecuteMode, } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle -import { IResponseCallbackData, IWorkflowDb, Push, ResponseHelper, WebhookHelpers } from '.'; +import { IResponseCallbackData, IWorkflowDb } from '@/Interfaces'; +import * as Push from '@/Push'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WebhookHelpers from '@/WebhookHelpers'; const WEBHOOK_TEST_UNREGISTERED_HINT = `Click the 'Execute workflow' button on the canvas, then try again. (In test mode, the webhook only works for one call after you click this button)`; diff --git a/packages/cli/src/TranslationHelpers.ts b/packages/cli/src/TranslationHelpers.ts index bcd3fa76f9..04525368bd 100644 --- a/packages/cli/src/TranslationHelpers.ts +++ b/packages/cli/src/TranslationHelpers.ts @@ -1,6 +1,7 @@ import { join, dirname } from 'path'; import { readdir } from 'fs/promises'; import { Dirent } from 'fs'; +import { NODES_BASE_DIR } from '@/constants'; const ALLOWED_VERSIONED_DIRNAME_LENGTH = [2, 3]; // e.g. v1, v10 @@ -57,8 +58,7 @@ export function getCredentialTranslationPath({ locale: string; credentialType: string; }): string { - const packagesPath = join(__dirname, '..', '..', '..'); - const credsPath = join(packagesPath, 'nodes-base', 'dist', 'credentials'); + const credsPath = join(NODES_BASE_DIR, 'dist', 'credentials'); return join(credsPath, 'translations', locale, `${credentialType}.json`); } diff --git a/packages/cli/src/UserManagement/Interfaces.ts b/packages/cli/src/UserManagement/Interfaces.ts index 85e086cd64..cf1c5307b8 100644 --- a/packages/cli/src/UserManagement/Interfaces.ts +++ b/packages/cli/src/UserManagement/Interfaces.ts @@ -1,8 +1,7 @@ -/* eslint-disable import/no-cycle */ import { Application } from 'express'; import { JwtFromRequestFunction } from 'passport-jwt'; -import { ActiveWorkflowRunner } from '..'; -import type { IExternalHooksClass, IPersonalizationSurveyAnswers } from '../Interfaces'; +import type { ActiveWorkflowRunner } from '@/ActiveWorkflowRunner'; +import type { IExternalHooksClass, IPersonalizationSurveyAnswers } from '@/Interfaces'; export interface JwtToken { token: string; @@ -37,5 +36,5 @@ export interface N8nApp { restEndpoint: string; externalHooks: IExternalHooksClass; defaultCredentialsName: string; - activeWorkflowRunner: ActiveWorkflowRunner.ActiveWorkflowRunner; + activeWorkflowRunner: ActiveWorkflowRunner; } diff --git a/packages/cli/src/UserManagement/UserManagementHelper.ts b/packages/cli/src/UserManagement/UserManagementHelper.ts index dbefaa27f7..e1aaeed9af 100644 --- a/packages/cli/src/UserManagement/UserManagementHelper.ts +++ b/packages/cli/src/UserManagement/UserManagementHelper.ts @@ -1,17 +1,17 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -/* eslint-disable import/no-cycle */ import { INode, NodeOperationError, Workflow } from 'n8n-workflow'; import { In } from 'typeorm'; import express from 'express'; import { compare, genSaltSync, hash } from 'bcryptjs'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; import { PublicUser } from './Interfaces'; -import { Db, ResponseHelper } from '..'; -import { MAX_PASSWORD_LENGTH, MIN_PASSWORD_LENGTH, User } from '../databases/entities/User'; -import { Role } from '../databases/entities/Role'; -import { AuthenticatedRequest } from '../requests'; -import * as config from '../../config'; +import { MAX_PASSWORD_LENGTH, MIN_PASSWORD_LENGTH, User } from '@db/entities/User'; +import { Role } from '@db/entities/Role'; +import { AuthenticatedRequest } from '@/requests'; +import config from '@/config'; import { getWebhookBaseUrl } from '../WebhookHelpers'; export async function getWorkflowOwner(workflowId: string | number): Promise { diff --git a/packages/cli/src/UserManagement/auth/jwt.ts b/packages/cli/src/UserManagement/auth/jwt.ts index f660782ccf..fb3eea487d 100644 --- a/packages/cli/src/UserManagement/auth/jwt.ts +++ b/packages/cli/src/UserManagement/auth/jwt.ts @@ -1,14 +1,13 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -/* eslint-disable import/no-cycle */ import jwt from 'jsonwebtoken'; import { Response } from 'express'; import { createHash } from 'crypto'; -import { Db } from '../..'; -import { AUTH_COOKIE_NAME } from '../../constants'; +import * as Db from '@/Db'; +import { AUTH_COOKIE_NAME } from '@/constants'; import { JwtPayload, JwtToken } from '../Interfaces'; -import { User } from '../../databases/entities/User'; -import * as config from '../../../config'; +import { User } from '@db/entities/User'; +import config from '@/config'; export function issueJWT(user: User): JwtToken { const { id, email, password } = user; diff --git a/packages/cli/src/UserManagement/email/NodeMailer.ts b/packages/cli/src/UserManagement/email/NodeMailer.ts index 6cf11b1455..e078157b70 100644 --- a/packages/cli/src/UserManagement/email/NodeMailer.ts +++ b/packages/cli/src/UserManagement/email/NodeMailer.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ import { createTransport, Transporter } from 'nodemailer'; import { ErrorReporterProxy as ErrorReporter, LoggerProxy as Logger } from 'n8n-workflow'; -import * as config from '../../../config'; +import * as config from '@/config'; import { MailData, SendEmailResult, UserManagementMailerImplementation } from './Interfaces'; export class NodeMailer implements UserManagementMailerImplementation { diff --git a/packages/cli/src/UserManagement/email/UserManagementMailer.ts b/packages/cli/src/UserManagement/email/UserManagementMailer.ts index ad08cd5c3e..43aed067a8 100644 --- a/packages/cli/src/UserManagement/email/UserManagementMailer.ts +++ b/packages/cli/src/UserManagement/email/UserManagementMailer.ts @@ -2,9 +2,8 @@ import { existsSync } from 'fs'; import { readFile } from 'fs/promises'; import Handlebars from 'handlebars'; import { join as pathJoin } from 'path'; -// eslint-disable-next-line import/no-cycle -import { GenericHelpers } from '../..'; -import * as config from '../../../config'; +import * as GenericHelpers from '@/GenericHelpers'; +import config from '@/config'; import { InviteEmailData, PasswordResetData, diff --git a/packages/cli/src/UserManagement/email/index.ts b/packages/cli/src/UserManagement/email/index.ts index 1d49343ff7..e577648f8e 100644 --- a/packages/cli/src/UserManagement/email/index.ts +++ b/packages/cli/src/UserManagement/email/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ import { getInstance, UserManagementMailer } from './UserManagementMailer'; export { getInstance, UserManagementMailer }; diff --git a/packages/cli/src/UserManagement/index.ts b/packages/cli/src/UserManagement/index.ts index b2d04508fe..56d5867e76 100644 --- a/packages/cli/src/UserManagement/index.ts +++ b/packages/cli/src/UserManagement/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ import { addRoutes } from './routes'; export const userManagementRouter = { addRoutes }; diff --git a/packages/cli/src/UserManagement/middlewares/auth.ts b/packages/cli/src/UserManagement/middlewares/auth.ts index 81bbf4a241..0a3138211f 100644 --- a/packages/cli/src/UserManagement/middlewares/auth.ts +++ b/packages/cli/src/UserManagement/middlewares/auth.ts @@ -1,13 +1,12 @@ -/* eslint-disable import/no-cycle */ import { Request, RequestHandler } from 'express'; import jwt from 'jsonwebtoken'; import passport from 'passport'; import { Strategy } from 'passport-jwt'; import { LoggerProxy as Logger } from 'n8n-workflow'; import { JwtPayload } from '../Interfaces'; -import type { AuthenticatedRequest } from '../../requests'; -import * as config from '../../../config'; -import { AUTH_COOKIE_NAME } from '../../constants'; +import type { AuthenticatedRequest } from '@/requests'; +import config from '@/config'; +import { AUTH_COOKIE_NAME } from '@/constants'; import { issueCookie, resolveJwtContent } from '../auth/jwt'; const jwtFromRequest = (req: Request) => { diff --git a/packages/cli/src/UserManagement/middlewares/index.ts b/packages/cli/src/UserManagement/middlewares/index.ts index b73e939959..269586ee8b 100644 --- a/packages/cli/src/UserManagement/middlewares/index.ts +++ b/packages/cli/src/UserManagement/middlewares/index.ts @@ -1,2 +1 @@ -/* eslint-disable import/no-cycle */ export * from './auth'; diff --git a/packages/cli/src/UserManagement/routes/auth.ts b/packages/cli/src/UserManagement/routes/auth.ts index b4567aed64..54652f37ba 100644 --- a/packages/cli/src/UserManagement/routes/auth.ts +++ b/packages/cli/src/UserManagement/routes/auth.ts @@ -1,16 +1,16 @@ /* eslint-disable @typescript-eslint/naming-convention */ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import { Request, Response } from 'express'; import { IDataObject } from 'n8n-workflow'; -import { Db, ResponseHelper } from '../..'; -import { AUTH_COOKIE_NAME } from '../../constants'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import { AUTH_COOKIE_NAME } from '@/constants'; import { issueCookie, resolveJwt } from '../auth/jwt'; import { N8nApp, PublicUser } from '../Interfaces'; import { compareHash, sanitizeUser } from '../UserManagementHelper'; -import { User } from '../../databases/entities/User'; -import type { LoginRequest } from '../../requests'; -import config = require('../../../config'); +import { User } from '@db/entities/User'; +import type { LoginRequest } from '@/requests'; +import config from '@/config'; export function authenticationMethods(this: N8nApp): void { /** diff --git a/packages/cli/src/UserManagement/routes/index.ts b/packages/cli/src/UserManagement/routes/index.ts index 8c77ec652a..2725471b6a 100644 --- a/packages/cli/src/UserManagement/routes/index.ts +++ b/packages/cli/src/UserManagement/routes/index.ts @@ -1,20 +1,19 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-return */ -/* eslint-disable import/no-cycle */ import cookieParser from 'cookie-parser'; import passport from 'passport'; import { NextFunction, Request, Response } from 'express'; import { LoggerProxy as Logger } from 'n8n-workflow'; import { N8nApp } from '../Interfaces'; -import { AuthenticatedRequest } from '../../requests'; +import { AuthenticatedRequest } from '@/requests'; import { isAuthExcluded, isPostUsersId, isAuthenticatedRequest, isUserManagementDisabled, } from '../UserManagementHelper'; -import { Db } from '../..'; +import * as Db from '@/Db'; import { jwtAuth, refreshExpiringCookie } from '../middlewares'; import { authenticationMethods } from './auth'; import { meNamespace } from './me'; diff --git a/packages/cli/src/UserManagement/routes/me.ts b/packages/cli/src/UserManagement/routes/me.ts index 3d4f49f55c..0e6e7ec62e 100644 --- a/packages/cli/src/UserManagement/routes/me.ts +++ b/packages/cli/src/UserManagement/routes/me.ts @@ -1,18 +1,19 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable import/no-cycle */ import express from 'express'; import validator from 'validator'; +import { randomBytes } from 'crypto'; import { LoggerProxy as Logger } from 'n8n-workflow'; -import { randomBytes } from 'crypto'; -import { Db, InternalHooksManager, ResponseHelper } from '../..'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import { InternalHooksManager } from '@/InternalHooksManager'; import { issueCookie } from '../auth/jwt'; import { N8nApp, PublicUser } from '../Interfaces'; import { validatePassword, sanitizeUser, compareHash, hashPassword } from '../UserManagementHelper'; -import type { AuthenticatedRequest, MeRequest } from '../../requests'; -import { validateEntity } from '../../GenericHelpers'; -import { User } from '../../databases/entities/User'; +import type { AuthenticatedRequest, MeRequest } from '@/requests'; +import { validateEntity } from '@/GenericHelpers'; +import { User } from '@db/entities/User'; export function meNamespace(this: N8nApp): void { /** diff --git a/packages/cli/src/UserManagement/routes/owner.ts b/packages/cli/src/UserManagement/routes/owner.ts index f97237a9c6..415ebeb6c3 100644 --- a/packages/cli/src/UserManagement/routes/owner.ts +++ b/packages/cli/src/UserManagement/routes/owner.ts @@ -1,13 +1,14 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import express from 'express'; import validator from 'validator'; import { LoggerProxy as Logger } from 'n8n-workflow'; -import { Db, InternalHooksManager, ResponseHelper } from '../..'; -import * as config from '../../../config'; -import { validateEntity } from '../../GenericHelpers'; -import { AuthenticatedRequest, OwnerRequest } from '../../requests'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import config from '@/config'; +import { validateEntity } from '@/GenericHelpers'; +import { AuthenticatedRequest, OwnerRequest } from '@/requests'; import { issueCookie } from '../auth/jwt'; import { N8nApp } from '../Interfaces'; import { hashPassword, sanitizeUser, validatePassword } from '../UserManagementHelper'; diff --git a/packages/cli/src/UserManagement/routes/passwordReset.ts b/packages/cli/src/UserManagement/routes/passwordReset.ts index ca22efd7c3..48011d7a11 100644 --- a/packages/cli/src/UserManagement/routes/passwordReset.ts +++ b/packages/cli/src/UserManagement/routes/passwordReset.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -/* eslint-disable import/no-cycle */ import express from 'express'; import { v4 as uuid } from 'uuid'; @@ -8,13 +7,15 @@ import validator from 'validator'; import { IsNull, MoreThanOrEqual, Not } from 'typeorm'; import { LoggerProxy as Logger } from 'n8n-workflow'; -import { Db, InternalHooksManager, ResponseHelper } from '../..'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import { InternalHooksManager } from '@/InternalHooksManager'; import { N8nApp } from '../Interfaces'; import { getInstanceBaseUrl, hashPassword, validatePassword } from '../UserManagementHelper'; import * as UserManagementMailer from '../email'; import type { PasswordResetRequest } from '../../requests'; import { issueCookie } from '../auth/jwt'; -import * as config from '../../../config'; +import config from '@/config'; export function passwordResetNamespace(this: N8nApp): void { /** diff --git a/packages/cli/src/UserManagement/routes/users.ts b/packages/cli/src/UserManagement/routes/users.ts index 8fc5efaf1f..4e702c06fe 100644 --- a/packages/cli/src/UserManagement/routes/users.ts +++ b/packages/cli/src/UserManagement/routes/users.ts @@ -1,15 +1,16 @@ /* eslint-disable no-restricted-syntax */ -/* eslint-disable import/no-cycle */ import { Response } from 'express'; import { ErrorReporterProxy as ErrorReporter, LoggerProxy as Logger } from 'n8n-workflow'; import { In } from 'typeorm'; import validator from 'validator'; -import { Db, InternalHooksManager, ITelemetryUserDeletionData, ResponseHelper } from '../..'; -import { SharedCredentials } from '../../databases/entities/SharedCredentials'; -import { SharedWorkflow } from '../../databases/entities/SharedWorkflow'; -import { User } from '../../databases/entities/User'; -import { UserRequest } from '../../requests'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import { ITelemetryUserDeletionData } from '@/Interfaces'; +import { SharedCredentials } from '@db/entities/SharedCredentials'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; +import { User } from '@db/entities/User'; +import { UserRequest } from '@/requests'; import * as UserManagementMailer from '../email/UserManagementMailer'; import { N8nApp, PublicUser } from '../Interfaces'; import { @@ -21,8 +22,9 @@ import { validatePassword, } from '../UserManagementHelper'; -import * as config from '../../../config'; +import config from '@/config'; import { issueCookie } from '../auth/jwt'; +import { InternalHooksManager } from '@/InternalHooksManager'; export function usersNamespace(this: N8nApp): void { /** diff --git a/packages/cli/src/WaitTracker.ts b/packages/cli/src/WaitTracker.ts index 51d120ec62..dbacda38be 100644 --- a/packages/cli/src/WaitTracker.ts +++ b/packages/cli/src/WaitTracker.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ /* eslint-disable @typescript-eslint/naming-convention */ @@ -12,20 +11,20 @@ import { WorkflowOperationError, } from 'n8n-workflow'; import { FindManyOptions, LessThanOrEqual, ObjectLiteral } from 'typeorm'; - import { DateUtils } from 'typeorm/util/DateUtils'; + +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as GenericHelpers from '@/GenericHelpers'; +import * as ActiveExecutions from '@/ActiveExecutions'; import { - ActiveExecutions, DatabaseType, - Db, - GenericHelpers, IExecutionFlattedDb, IExecutionsStopData, IWorkflowExecutionDataProcess, - ResponseHelper, - WorkflowRunner, -} from '.'; -import { getWorkflowOwner } from './UserManagement/UserManagementHelper'; +} from '@/Interfaces'; +import { WorkflowRunner } from '@/WorkflowRunner'; +import { getWorkflowOwner } from '@/UserManagement/UserManagementHelper'; export class WaitTrackerClass { activeExecutionsInstance: ActiveExecutions.ActiveExecutions; diff --git a/packages/cli/src/WaitingWebhooks.ts b/packages/cli/src/WaitingWebhooks.ts index f63623e234..e613902325 100644 --- a/packages/cli/src/WaitingWebhooks.ts +++ b/packages/cli/src/WaitingWebhooks.ts @@ -1,11 +1,8 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable no-param-reassign */ import { INode, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - IRunExecutionData, NodeHelpers, WebhookHttpMethod, Workflow, @@ -14,19 +11,13 @@ import { import express from 'express'; -import { - Db, - IExecutionResponse, - IResponseCallbackData, - IWorkflowDb, - NodeTypes, - ResponseHelper, - WebhookHelpers, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - WorkflowCredentials, - WorkflowExecuteAdditionalData, -} from '.'; -import { getWorkflowOwner } from './UserManagement/UserManagementHelper'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WebhookHelpers from '@/WebhookHelpers'; +import { NodeTypes } from '@/NodeTypes'; +import { IExecutionResponse, IResponseCallbackData, IWorkflowDb } from '@/Interfaces'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import { getWorkflowOwner } from '@/UserManagement/UserManagementHelper'; export class WaitingWebhooks { async executeWebhook( diff --git a/packages/cli/src/WebhookHelpers.ts b/packages/cli/src/WebhookHelpers.ts index f12dcac5b8..f16ebad4ba 100644 --- a/packages/cli/src/WebhookHelpers.ts +++ b/packages/cli/src/WebhookHelpers.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable no-param-reassign */ /* eslint-disable @typescript-eslint/prefer-optional-chain */ @@ -41,26 +40,21 @@ import { WorkflowExecuteMode, } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle import { - GenericHelpers, IExecutionDb, IResponseCallbackData, IWorkflowDb, IWorkflowExecutionDataProcess, - ResponseHelper, - WorkflowExecuteAdditionalData, - WorkflowHelpers, - WorkflowRunner, -} from '.'; - -// eslint-disable-next-line import/no-cycle -import * as ActiveExecutions from './ActiveExecutions'; -import { User } from './databases/entities/User'; -import { WorkflowEntity } from './databases/entities/WorkflowEntity'; -import { getWorkflowOwner } from './UserManagement/UserManagementHelper'; - -const activeExecutions = ActiveExecutions.getInstance(); +} from '@/Interfaces'; +import * as GenericHelpers from '@/GenericHelpers'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import { WorkflowRunner } from '@/WorkflowRunner'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import { User } from '@db/entities/User'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { getWorkflowOwner } from '@/UserManagement/UserManagementHelper'; export const WEBHOOK_METHODS = ['DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT']; @@ -459,9 +453,9 @@ export async function executeWebhook( ); // Get a promise which resolves when the workflow did execute and send then response - const executePromise = activeExecutions.getPostExecutePromise(executionId) as Promise< - IExecutionDb | undefined - >; + const executePromise = ActiveExecutions.getInstance().getPostExecutePromise( + executionId, + ) as Promise; executePromise .then(async (data) => { if (data === undefined) { diff --git a/packages/cli/src/WebhookServer.ts b/packages/cli/src/WebhookServer.ts index 2ef62cd1b6..c1a2db47d8 100644 --- a/packages/cli/src/WebhookServer.ts +++ b/packages/cli/src/WebhookServer.ts @@ -16,24 +16,18 @@ import compression from 'compression'; // eslint-disable-next-line import/no-extraneous-dependencies import parseUrl from 'parseurl'; import { WebhookHttpMethod } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle -import { - ActiveExecutions, - ActiveWorkflowRunner, - Db, - ExternalHooks, - GenericHelpers, - ICustomRequest, - IExternalHooksClass, - IPackageVersions, - ResponseHelper, - WaitingWebhooks, -} from '.'; -import config from '../config'; -// eslint-disable-next-line import/no-cycle -import { WEBHOOK_METHODS } from './WebhookHelpers'; -import { setupErrorMiddleware } from './ErrorReporting'; +import * as Db from '@/Db'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import * as ResponseHelper from '@/ResponseHelper'; +import { WaitingWebhooks } from '@/WaitingWebhooks'; +import type { ICustomRequest, IExternalHooksClass, IPackageVersions } from '@/Interfaces'; +import config from '@/config'; +import { WEBHOOK_METHODS } from '@/WebhookHelpers'; +import { setupErrorMiddleware } from '@/ErrorReporting'; // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-call require('body-parser-xml')(bodyParser); diff --git a/packages/cli/src/WorkflowCredentials.ts b/packages/cli/src/WorkflowCredentials.ts index f266b9bbc2..87f3c2dcf9 100644 --- a/packages/cli/src/WorkflowCredentials.ts +++ b/packages/cli/src/WorkflowCredentials.ts @@ -1,7 +1,6 @@ /* eslint-disable no-prototype-builtins */ import { INode, IWorkflowCredentials } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle -import { Db } from '.'; +import * as Db from '@/Db'; // eslint-disable-next-line @typescript-eslint/naming-convention export async function WorkflowCredentials(nodes: INode[]): Promise { diff --git a/packages/cli/src/WorkflowExecuteAdditionalData.ts b/packages/cli/src/WorkflowExecuteAdditionalData.ts index 7ddbe803d4..6a9caef48d 100644 --- a/packages/cli/src/WorkflowExecuteAdditionalData.ts +++ b/packages/cli/src/WorkflowExecuteAdditionalData.ts @@ -1,5 +1,4 @@ /* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable import/no-cycle */ /* eslint-disable no-restricted-syntax */ /* eslint-disable @typescript-eslint/restrict-plus-operands */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ @@ -42,34 +41,33 @@ import { import { LessThanOrEqual } from 'typeorm'; import { DateUtils } from 'typeorm/util/DateUtils'; -import config from '../config'; +import config from '@/config'; +import * as Db from '@/Db'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import { CredentialsHelper } from '@/CredentialsHelper'; +import { ExternalHooks } from '@/ExternalHooks'; import { - ActiveExecutions, - CredentialsHelper, - Db, - ExternalHooks, IExecutionDb, IExecutionFlattedDb, IExecutionResponse, - InternalHooksManager, IPushDataExecutionFinished, IWorkflowBase, IWorkflowExecuteProcess, IWorkflowExecutionDataProcess, - NodeTypes, - Push, - ResponseHelper, - WebhookHelpers, - WorkflowHelpers, -} from '.'; + IWorkflowErrorData, +} from '@/Interfaces'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { NodeTypes } from '@/NodeTypes'; +import * as Push from '@/Push'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WebhookHelpers from '@/WebhookHelpers'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; import { checkPermissionsForExecution, getUserById, getWorkflowOwner, -} from './UserManagement/UserManagementHelper'; -import { whereClause } from './WorkflowHelpers'; -import { IWorkflowErrorData } from './Interfaces'; -import { findSubworkflowStart } from './utils'; +} from '@/UserManagement/UserManagementHelper'; +import { findSubworkflowStart } from '@/utils'; const ERROR_TRIGGER_TYPE = config.getEnv('nodes.errorTriggerType'); @@ -857,7 +855,7 @@ export async function getWorkflowData( const shared = await Db.collections.SharedWorkflow.findOne({ relations, - where: whereClause({ + where: WorkflowHelpers.whereClause({ user, entityType: 'workflow', entityId: workflowInfo.id, diff --git a/packages/cli/src/WorkflowHelpers.ts b/packages/cli/src/WorkflowHelpers.ts index 9f12767ace..a644e115d4 100644 --- a/packages/cli/src/WorkflowHelpers.ts +++ b/packages/cli/src/WorkflowHelpers.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ @@ -26,25 +25,23 @@ import { WorkflowExecuteMode, } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; -// eslint-disable-next-line import/no-cycle +import { CredentialTypes } from '@/CredentialTypes'; +import * as Db from '@/Db'; import { - CredentialTypes, - Db, ICredentialsDb, ICredentialsTypeData, ITransferNodeTypes, IWorkflowErrorData, IWorkflowExecutionDataProcess, - NodeTypes, WhereClause, - WorkflowRunner, -} from '.'; +} from '@/Interfaces'; +import { NodeTypes } from '@/NodeTypes'; +import { WorkflowRunner } from '@/WorkflowRunner'; -import config from '../config'; -// eslint-disable-next-line import/no-cycle -import { WorkflowEntity } from './databases/entities/WorkflowEntity'; -import { User } from './databases/entities/User'; -import { getWorkflowOwner } from './UserManagement/UserManagementHelper'; +import config from '@/config'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { User } from '@db/entities/User'; +import { getWorkflowOwner } from '@/UserManagement/UserManagementHelper'; const ERROR_TRIGGER_TYPE = config.getEnv('nodes.errorTriggerType'); diff --git a/packages/cli/src/WorkflowRunner.ts b/packages/cli/src/WorkflowRunner.ts index a52d12b726..7bbee72c25 100644 --- a/packages/cli/src/WorkflowRunner.ts +++ b/packages/cli/src/WorkflowRunner.ts @@ -10,7 +10,6 @@ /* eslint-disable @typescript-eslint/prefer-optional-chain */ /* eslint-disable no-param-reassign */ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-unused-vars */ import { BinaryDataManager, IProcessMessage, WorkflowExecute } from 'n8n-core'; @@ -32,13 +31,12 @@ import PCancelable from 'p-cancelable'; import { join as pathJoin } from 'path'; import { fork } from 'child_process'; -import config from '../config'; -// eslint-disable-next-line import/no-cycle +import * as ActiveExecutions from '@/ActiveExecutions'; +import config from '@/config'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; import { - ActiveExecutions, - CredentialsOverwrites, - Db, - ExternalHooks, ICredentialsOverwrite, ICredentialsTypeData, IExecutionFlattedDb, @@ -46,18 +44,18 @@ import { ITransferNodeTypes, IWorkflowExecutionDataProcess, IWorkflowExecutionDataProcessWithExecution, - NodeTypes, - Push, - ResponseHelper, - WebhookHelpers, - WorkflowExecuteAdditionalData, - WorkflowHelpers, -} from '.'; -import * as Queue from './Queue'; -import { InternalHooksManager } from './InternalHooksManager'; -import { checkPermissionsForExecution } from './UserManagement/UserManagementHelper'; -import { generateFailedExecutionFromError } from './WorkflowHelpers'; -import { initErrorHandling } from './ErrorReporting'; +} from '@/Interfaces'; +import { NodeTypes } from '@/NodeTypes'; +import * as Push from '@/Push'; +import * as Queue from '@/Queue'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WebhookHelpers from '@/WebhookHelpers'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { checkPermissionsForExecution } from '@/UserManagement/UserManagementHelper'; +import { generateFailedExecutionFromError } from '@/WorkflowHelpers'; +import { initErrorHandling } from '@/ErrorReporting'; export class WorkflowRunner { activeExecutions: ActiveExecutions.ActiveExecutions; diff --git a/packages/cli/src/WorkflowRunnerProcess.ts b/packages/cli/src/WorkflowRunnerProcess.ts index ca73c9f66e..88e8be7150 100644 --- a/packages/cli/src/WorkflowRunnerProcess.ts +++ b/packages/cli/src/WorkflowRunnerProcess.ts @@ -32,28 +32,24 @@ import { WorkflowHooks, WorkflowOperationError, } from 'n8n-workflow'; -import { - CredentialsOverwrites, - CredentialTypes, - Db, - ExternalHooks, - GenericHelpers, - IWorkflowExecuteProcess, - IWorkflowExecutionDataProcessWithExecution, - NodeTypes, - WebhookHelpers, - WorkflowExecuteAdditionalData, - WorkflowHelpers, -} from '.'; +import { CredentialTypes } from '@/CredentialTypes'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import { IWorkflowExecuteProcess, IWorkflowExecutionDataProcessWithExecution } from '@/Interfaces'; +import { NodeTypes } from '@/NodeTypes'; +import * as WebhookHelpers from '@/WebhookHelpers'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import { getLogger } from '@/Logger'; -import { getLogger } from './Logger'; - -import config from '../config'; -import { InternalHooksManager } from './InternalHooksManager'; -import { checkPermissionsForExecution } from './UserManagement/UserManagementHelper'; -import { loadClassInIsolation } from './CommunityNodes/helpers'; -import { generateFailedExecutionFromError } from './WorkflowHelpers'; -import { initErrorHandling } from './ErrorReporting'; +import config from '@/config'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { checkPermissionsForExecution } from '@/UserManagement/UserManagementHelper'; +import { loadClassInIsolation } from '@/CommunityNodes/helpers'; +import { generateFailedExecutionFromError } from '@/WorkflowHelpers'; +import { initErrorHandling } from '@/ErrorReporting'; export class WorkflowRunnerProcess { data: IWorkflowExecutionDataProcessWithExecution | undefined; diff --git a/packages/cli/src/api/executions.api.ts b/packages/cli/src/api/executions.api.ts index 67e8126386..31d9448102 100644 --- a/packages/cli/src/api/executions.api.ts +++ b/packages/cli/src/api/executions.api.ts @@ -1,6 +1,5 @@ /* eslint-disable no-restricted-syntax */ /* eslint-disable import/no-extraneous-dependencies */ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/restrict-template-expressions */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ @@ -22,26 +21,26 @@ import { } from 'n8n-workflow'; import { FindOperator, In, IsNull, LessThanOrEqual, Not, Raw } from 'typeorm'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import * as Db from '@/Db'; +import * as GenericHelpers from '@/GenericHelpers'; import { - ActiveExecutions, DatabaseType, - Db, - GenericHelpers, IExecutionFlattedResponse, IExecutionResponse, IExecutionsListResponse, IWorkflowExecutionDataProcess, - NodeTypes, - WorkflowRunner, - ResponseHelper, -} from '..'; -import * as config from '../../config'; -import { User } from '../databases/entities/User'; -import { DEFAULT_EXECUTIONS_GET_ALL_LIMIT } from '../GenericHelpers'; -import { getLogger } from '../Logger'; -import * as Queue from '../Queue'; -import type { ExecutionRequest } from '../requests'; -import { getSharedWorkflowIds } from '../WorkflowHelpers'; +} from '@/Interfaces'; +import { NodeTypes } from '@/NodeTypes'; +import * as ResponseHelper from '@/ResponseHelper'; +import { WorkflowRunner } from '@/WorkflowRunner'; +import config from '@/config'; +import { User } from '@db/entities/User'; +import { DEFAULT_EXECUTIONS_GET_ALL_LIMIT } from '@/GenericHelpers'; +import { getLogger } from '@/Logger'; +import * as Queue from '@/Queue'; +import type { ExecutionRequest } from '@/requests'; +import { getSharedWorkflowIds } from '@/WorkflowHelpers'; export const executionsController = express.Router(); diff --git a/packages/cli/src/api/nodeTypes.api.ts b/packages/cli/src/api/nodeTypes.api.ts index 20e92966e4..cec7676080 100644 --- a/packages/cli/src/api/nodeTypes.api.ts +++ b/packages/cli/src/api/nodeTypes.api.ts @@ -1,5 +1,4 @@ /* eslint-disable import/no-extraneous-dependencies */ -/* eslint-disable import/no-cycle */ import express from 'express'; import { readFile } from 'fs/promises'; import _ from 'lodash'; @@ -12,9 +11,11 @@ import { NodeHelpers, } from 'n8n-workflow'; -import { CredentialTypes, NodeTypes, ResponseHelper } from '..'; -import config from '../../config'; -import { getNodeTranslationPath } from '../TranslationHelpers'; +import { CredentialTypes } from '@/CredentialTypes'; +import config from '@/config'; +import { NodeTypes } from '@/NodeTypes'; +import * as ResponseHelper from '@/ResponseHelper'; +import { getNodeTranslationPath } from '@/TranslationHelpers'; function isOAuth(credType: ICredentialType) { return ( diff --git a/packages/cli/src/api/nodes.api.ts b/packages/cli/src/api/nodes.api.ts index d2e315083d..8acc5d64a8 100644 --- a/packages/cli/src/api/nodes.api.ts +++ b/packages/cli/src/api/nodes.api.ts @@ -1,9 +1,11 @@ -/* eslint-disable import/no-cycle */ import express from 'express'; import { PublicInstalledPackage } from 'n8n-workflow'; -import { InternalHooksManager, LoadNodesAndCredentials, Push, ResponseHelper } from '..'; -import config from '../../config'; +import config from '@/config'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import * as Push from '@/Push'; +import * as ResponseHelper from '@/ResponseHelper'; import { checkNpmPackageStatus, @@ -16,22 +18,22 @@ import { parseNpmPackageName, removePackageFromMissingList, sanitizeNpmPackageName, -} from '../CommunityNodes/helpers'; +} from '@/CommunityNodes/helpers'; import { findInstalledPackage, getAllInstalledPackages, isPackageInstalled, -} from '../CommunityNodes/packageModel'; +} from '@/CommunityNodes/packageModel'; import { RESPONSE_ERROR_MESSAGES, STARTER_TEMPLATE_NAME, UNKNOWN_FAILURE_REASON, -} from '../constants'; -import { isAuthenticatedRequest } from '../UserManagement/UserManagementHelper'; +} from '@/constants'; +import { isAuthenticatedRequest } from '@/UserManagement/UserManagementHelper'; -import { InstalledPackages } from '../databases/entities/InstalledPackages'; -import type { CommunityPackages } from '../Interfaces'; -import type { NodeRequest } from '../requests'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; +import type { CommunityPackages } from '@/Interfaces'; +import type { NodeRequest } from '@/requests'; const { PACKAGE_NOT_INSTALLED, PACKAGE_NAME_NOT_PROVIDED } = RESPONSE_ERROR_MESSAGES; diff --git a/packages/cli/src/api/tags.api.ts b/packages/cli/src/api/tags.api.ts index 7c9452a4da..1008bf4a70 100644 --- a/packages/cli/src/api/tags.api.ts +++ b/packages/cli/src/api/tags.api.ts @@ -4,16 +4,18 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable no-param-reassign */ -/* eslint-disable import/no-cycle */ import express from 'express'; -import { Db, ExternalHooks, IExternalHooksClass, ITagWithCountDb, ResponseHelper } from '..'; -import config from '../../config'; -import * as TagHelpers from '../TagHelpers'; -import { validateEntity } from '../GenericHelpers'; -import { TagEntity } from '../databases/entities/TagEntity'; -import { TagsRequest } from '../requests'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; +import { IExternalHooksClass, ITagWithCountDb } from '@/Interfaces'; +import * as ResponseHelper from '@/ResponseHelper'; +import config from '@/config'; +import * as TagHelpers from '@/TagHelpers'; +import { validateEntity } from '@/GenericHelpers'; +import { TagEntity } from '@db/entities/TagEntity'; +import { TagsRequest } from '@/requests'; export const externalHooks: IExternalHooksClass = ExternalHooks(); diff --git a/packages/cli/commands/BaseCommand.ts b/packages/cli/src/commands/BaseCommand.ts similarity index 88% rename from packages/cli/commands/BaseCommand.ts rename to packages/cli/src/commands/BaseCommand.ts index d753e07237..e683d27e07 100644 --- a/packages/cli/commands/BaseCommand.ts +++ b/packages/cli/src/commands/BaseCommand.ts @@ -1,8 +1,8 @@ import { Command } from '@oclif/core'; import { LoggerProxy } from 'n8n-workflow'; -import { getLogger, Logger } from '../src/Logger'; -import { User } from '../src/databases/entities/User'; -import { Db } from '../src'; +import { getLogger, Logger } from '@/Logger'; +import { User } from '@db/entities/User'; +import * as Db from '@/Db'; export abstract class BaseCommand extends Command { logger: Logger; diff --git a/packages/cli/commands/Interfaces.d.ts b/packages/cli/src/commands/Interfaces.d.ts similarity index 100% rename from packages/cli/commands/Interfaces.d.ts rename to packages/cli/src/commands/Interfaces.d.ts diff --git a/packages/cli/commands/db/revert.ts b/packages/cli/src/commands/db/revert.ts similarity index 95% rename from packages/cli/commands/db/revert.ts rename to packages/cli/src/commands/db/revert.ts index b92608b013..8b86226e0d 100644 --- a/packages/cli/commands/db/revert.ts +++ b/packages/cli/src/commands/db/revert.ts @@ -4,9 +4,9 @@ import { Command, flags } from '@oclif/command'; import { Connection, ConnectionOptions, createConnection } from 'typeorm'; import { LoggerProxy } from 'n8n-workflow'; -import { getLogger } from '../../src/Logger'; +import { getLogger } from '@/Logger'; -import { Db } from '../../src'; +import * as Db from '@/Db'; export class DbRevertMigrationCommand extends Command { static description = 'Revert last database migration'; diff --git a/packages/cli/commands/execute.ts b/packages/cli/src/commands/execute.ts similarity index 87% rename from packages/cli/commands/execute.ts rename to packages/cli/src/commands/execute.ts index 772dd0e544..1c6ee01f65 100644 --- a/packages/cli/commands/execute.ts +++ b/packages/cli/src/commands/execute.ts @@ -6,26 +6,22 @@ import { Command, flags } from '@oclif/command'; import { BinaryDataManager, UserSettings, PLACEHOLDER_EMPTY_WORKFLOW_ID } from 'n8n-core'; import { LoggerProxy } from 'n8n-workflow'; -import { - ActiveExecutions, - CredentialsOverwrites, - CredentialTypes, - Db, - ExternalHooks, - GenericHelpers, - InternalHooksManager, - IWorkflowBase, - IWorkflowExecutionDataProcess, - LoadNodesAndCredentials, - NodeTypes, - WorkflowHelpers, - WorkflowRunner, -} from '../src'; - -import { getLogger } from '../src/Logger'; -import config from '../config'; -import { getInstanceOwner } from '../src/UserManagement/UserManagementHelper'; -import { findCliWorkflowStart } from '../src/utils'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/CredentialTypes'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { NodeTypes } from '@/NodeTypes'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import { WorkflowRunner } from '@/WorkflowRunner'; +import { IWorkflowBase, IWorkflowExecutionDataProcess } from '@/Interfaces'; +import { getLogger } from '@/Logger'; +import config from '@/config'; +import { getInstanceOwner } from '@/UserManagement/UserManagementHelper'; +import { findCliWorkflowStart } from '@/utils'; export class Execute extends Command { static description = '\nExecutes a given workflow'; diff --git a/packages/cli/commands/executeBatch.ts b/packages/cli/src/commands/executeBatch.ts similarity index 97% rename from packages/cli/commands/executeBatch.ts rename to packages/cli/src/commands/executeBatch.ts index 58fda6f9eb..26c9955a07 100644 --- a/packages/cli/commands/executeBatch.ts +++ b/packages/cli/src/commands/executeBatch.ts @@ -19,26 +19,23 @@ import { diff } from 'json-diff'; // eslint-disable-next-line import/no-extraneous-dependencies import { pick } from 'lodash'; -import { getLogger } from '../src/Logger'; +import { getLogger } from '@/Logger'; -import { - ActiveExecutions, - CredentialsOverwrites, - CredentialTypes, - Db, - ExternalHooks, - GenericHelpers, - InternalHooksManager, - IWorkflowDb, - IWorkflowExecutionDataProcess, - LoadNodesAndCredentials, - NodeTypes, - WorkflowRunner, -} from '../src'; -import config from '../config'; -import { User } from '../src/databases/entities/User'; -import { getInstanceOwner } from '../src/UserManagement/UserManagementHelper'; -import { findCliWorkflowStart } from '../src/utils'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/CredentialTypes'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { NodeTypes } from '@/NodeTypes'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { WorkflowRunner } from '@/WorkflowRunner'; +import { IWorkflowDb, IWorkflowExecutionDataProcess } from '@/Interfaces'; +import config from '@/config'; +import { User } from '@db/entities/User'; +import { getInstanceOwner } from '@/UserManagement/UserManagementHelper'; +import { findCliWorkflowStart } from '@/utils'; export class ExecuteBatch extends Command { static description = '\nExecutes multiple workflows once'; diff --git a/packages/cli/commands/export/credentials.ts b/packages/cli/src/commands/export/credentials.ts similarity index 97% rename from packages/cli/commands/export/credentials.ts rename to packages/cli/src/commands/export/credentials.ts index fa627dbdec..7a785b77c4 100644 --- a/packages/cli/commands/export/credentials.ts +++ b/packages/cli/src/commands/export/credentials.ts @@ -10,8 +10,9 @@ import { IDataObject, LoggerProxy } from 'n8n-workflow'; import fs from 'fs'; import path from 'path'; -import { getLogger } from '../../src/Logger'; -import { Db, ICredentialsDecryptedDb } from '../../src'; +import { getLogger } from '@/Logger'; +import * as Db from '@/Db'; +import type { ICredentialsDecryptedDb } from '@/Interfaces'; export class ExportCredentialsCommand extends Command { static description = 'Export credentials'; diff --git a/packages/cli/commands/export/workflow.ts b/packages/cli/src/commands/export/workflow.ts similarity index 98% rename from packages/cli/commands/export/workflow.ts rename to packages/cli/src/commands/export/workflow.ts index 1d79a630aa..cc863c9ccb 100644 --- a/packages/cli/commands/export/workflow.ts +++ b/packages/cli/src/commands/export/workflow.ts @@ -7,8 +7,8 @@ import { IDataObject, LoggerProxy } from 'n8n-workflow'; import fs from 'fs'; import path from 'path'; -import { getLogger } from '../../src/Logger'; -import { Db } from '../../src'; +import { getLogger } from '@/Logger'; +import * as Db from '@/Db'; export class ExportWorkflowsCommand extends Command { static description = 'Export workflows'; diff --git a/packages/cli/commands/import/credentials.ts b/packages/cli/src/commands/import/credentials.ts similarity index 94% rename from packages/cli/commands/import/credentials.ts rename to packages/cli/src/commands/import/credentials.ts index a1fec6b000..bcfc62ce12 100644 --- a/packages/cli/commands/import/credentials.ts +++ b/packages/cli/src/commands/import/credentials.ts @@ -15,12 +15,12 @@ import { LoggerProxy } from 'n8n-workflow'; import fs from 'fs'; import glob from 'fast-glob'; import { EntityManager, getConnection } from 'typeorm'; -import { getLogger } from '../../src/Logger'; -import { Db } from '../../src'; -import { User } from '../../src/databases/entities/User'; -import { SharedCredentials } from '../../src/databases/entities/SharedCredentials'; -import { Role } from '../../src/databases/entities/Role'; -import { CredentialsEntity } from '../../src/databases/entities/CredentialsEntity'; +import { getLogger } from '@/Logger'; +import * as Db from '@/Db'; +import { User } from '@db/entities/User'; +import { SharedCredentials } from '@db/entities/SharedCredentials'; +import { Role } from '@db/entities/Role'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; const FIX_INSTRUCTION = 'Please fix the database by running ./packages/cli/bin/n8n user-management:reset'; diff --git a/packages/cli/commands/import/workflow.ts b/packages/cli/src/commands/import/workflow.ts similarity index 94% rename from packages/cli/commands/import/workflow.ts rename to packages/cli/src/commands/import/workflow.ts index b365829b13..32031947f2 100644 --- a/packages/cli/commands/import/workflow.ts +++ b/packages/cli/src/commands/import/workflow.ts @@ -18,13 +18,14 @@ import glob from 'fast-glob'; import { UserSettings } from 'n8n-core'; import { EntityManager, getConnection } from 'typeorm'; import { v4 as uuid } from 'uuid'; -import { getLogger } from '../../src/Logger'; -import { Db, ICredentialsDb, IWorkflowToImport } from '../../src'; -import { SharedWorkflow } from '../../src/databases/entities/SharedWorkflow'; -import { WorkflowEntity } from '../../src/databases/entities/WorkflowEntity'; -import { Role } from '../../src/databases/entities/Role'; -import { User } from '../../src/databases/entities/User'; -import { setTagsForImport } from '../../src/TagHelpers'; +import { getLogger } from '@/Logger'; +import * as Db from '@/Db'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { Role } from '@db/entities/Role'; +import { User } from '@db/entities/User'; +import { setTagsForImport } from '@/TagHelpers'; +import type { ICredentialsDb, IWorkflowToImport } from '@/Interfaces'; const FIX_INSTRUCTION = 'Please fix the database by running ./packages/cli/bin/n8n user-management:reset'; diff --git a/packages/cli/commands/list/workflow.ts b/packages/cli/src/commands/list/workflow.ts similarity index 98% rename from packages/cli/commands/list/workflow.ts rename to packages/cli/src/commands/list/workflow.ts index 8d35ba7fab..ec90436256 100644 --- a/packages/cli/commands/list/workflow.ts +++ b/packages/cli/src/commands/list/workflow.ts @@ -4,7 +4,7 @@ import { Command, flags } from '@oclif/command'; import { IDataObject } from 'n8n-workflow'; -import { Db } from '../../src'; +import * as Db from '@/Db'; export class ListWorkflowCommand extends Command { static description = '\nList workflows'; diff --git a/packages/cli/commands/start.ts b/packages/cli/src/commands/start.ts similarity index 94% rename from packages/cli/commands/start.ts rename to packages/cli/src/commands/start.ts index 5837af8556..92e3c71161 100644 --- a/packages/cli/commands/start.ts +++ b/packages/cli/src/commands/start.ts @@ -14,28 +14,27 @@ import Redis from 'ioredis'; import { IDataObject, LoggerProxy, sleep } from 'n8n-workflow'; import { createHash } from 'crypto'; -import config from '../config'; -import { - ActiveExecutions, - ActiveWorkflowRunner, - CredentialsOverwrites, - CredentialTypes, - DatabaseType, - Db, - ExternalHooks, - GenericHelpers, - InternalHooksManager, - LoadNodesAndCredentials, - NodeTypes, - Server, - TestWebhooks, - WaitTracker, -} from '../src'; +import config from '@/config'; -import { getLogger } from '../src/Logger'; -import { getAllInstalledPackages } from '../src/CommunityNodes/packageModel'; -import { initErrorHandling } from '../src/ErrorReporting'; -import * as CrashJournal from '../src/CrashJournal'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/CredentialTypes'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { NodeTypes } from '@/NodeTypes'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import * as Server from '@/Server'; +import { DatabaseType } from '@/Interfaces'; +import * as TestWebhooks from '@/TestWebhooks'; +import { WaitTracker } from '@/WaitTracker'; + +import { getLogger } from '@/Logger'; +import { getAllInstalledPackages } from '@/CommunityNodes/packageModel'; +import { initErrorHandling } from '@/ErrorReporting'; +import * as CrashJournal from '@/CrashJournal'; // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires const open = require('open'); diff --git a/packages/cli/commands/update/workflow.ts b/packages/cli/src/commands/update/workflow.ts similarity index 96% rename from packages/cli/commands/update/workflow.ts rename to packages/cli/src/commands/update/workflow.ts index 2101ba3cd2..e3ace2984b 100644 --- a/packages/cli/commands/update/workflow.ts +++ b/packages/cli/src/commands/update/workflow.ts @@ -5,9 +5,9 @@ import { Command, flags } from '@oclif/command'; import { IDataObject, LoggerProxy } from 'n8n-workflow'; -import { Db } from '../../src'; +import * as Db from '@/Db'; -import { getLogger } from '../../src/Logger'; +import { getLogger } from '@/Logger'; export class UpdateWorkflowCommand extends Command { static description = 'Update workflows'; diff --git a/packages/cli/commands/user-management/reset.ts b/packages/cli/src/commands/user-management/reset.ts similarity index 94% rename from packages/cli/commands/user-management/reset.ts rename to packages/cli/src/commands/user-management/reset.ts index 7ac83f56c3..a111b57dfb 100644 --- a/packages/cli/commands/user-management/reset.ts +++ b/packages/cli/src/commands/user-management/reset.ts @@ -1,6 +1,6 @@ import { Not } from 'typeorm'; -import { Db } from '../../src'; -import { CredentialsEntity } from '../../src/databases/entities/CredentialsEntity'; +import * as Db from '@/Db'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; import { BaseCommand } from '../BaseCommand'; export class Reset extends BaseCommand { diff --git a/packages/cli/commands/webhook.ts b/packages/cli/src/commands/webhook.ts similarity index 91% rename from packages/cli/commands/webhook.ts rename to packages/cli/src/commands/webhook.ts index a1f3d727df..8faf2f5192 100644 --- a/packages/cli/commands/webhook.ts +++ b/packages/cli/src/commands/webhook.ts @@ -10,24 +10,21 @@ import { Command, flags } from '@oclif/command'; import Redis from 'ioredis'; import { IDataObject, LoggerProxy, sleep } from 'n8n-workflow'; -import config from '../config'; -import { - ActiveExecutions, - ActiveWorkflowRunner, - CredentialsOverwrites, - CredentialTypes, - Db, - ExternalHooks, - GenericHelpers, - InternalHooksManager, - LoadNodesAndCredentials, - NodeTypes, - WebhookServer, -} from '../src'; - -import { getLogger } from '../src/Logger'; -import { initErrorHandling } from '../src/ErrorReporting'; -import * as CrashJournal from '../src/CrashJournal'; +import config from '@/config'; +import * as ActiveExecutions from '@/ActiveExecutions'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/CredentialTypes'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { NodeTypes } from '@/NodeTypes'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import * as WebhookServer from '@/WebhookServer'; +import { getLogger } from '@/Logger'; +import { initErrorHandling } from '@/ErrorReporting'; +import * as CrashJournal from '@/CrashJournal'; let activeWorkflowRunner: ActiveWorkflowRunner.ActiveWorkflowRunner | undefined; let processExitCode = 0; diff --git a/packages/cli/commands/worker.ts b/packages/cli/src/commands/worker.ts similarity index 94% rename from packages/cli/commands/worker.ts rename to packages/cli/src/commands/worker.ts index 1836bbfb8c..b851a6b0a2 100644 --- a/packages/cli/commands/worker.ts +++ b/packages/cli/src/commands/worker.ts @@ -26,29 +26,26 @@ import { import { FindOneOptions, getConnectionManager } from 'typeorm'; -import { - CredentialsOverwrites, - CredentialTypes, - Db, - ExternalHooks, - GenericHelpers, - InternalHooksManager, - LoadNodesAndCredentials, - NodeTypes, - ResponseHelper, - WebhookHelpers, - WorkflowExecuteAdditionalData, -} from '../src'; +import { CredentialsOverwrites } from '@/CredentialsOverwrites'; +import { CredentialTypes } from '@/CredentialTypes'; +import * as Db from '@/Db'; +import { ExternalHooks } from '@/ExternalHooks'; +import * as GenericHelpers from '@/GenericHelpers'; +import { NodeTypes } from '@/NodeTypes'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WebhookHelpers from '@/WebhookHelpers'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { getLogger } from '@/Logger'; -import { getLogger } from '../src/Logger'; - -import config from '../config'; -import * as Queue from '../src/Queue'; +import config from '@/config'; +import * as Queue from '@/Queue'; import { checkPermissionsForExecution, getWorkflowOwner, -} from '../src/UserManagement/UserManagementHelper'; -import { generateFailedExecutionFromError } from '../src/WorkflowHelpers'; +} from '@/UserManagement/UserManagementHelper'; +import { generateFailedExecutionFromError } from '@/WorkflowHelpers'; export class Worker extends Command { static description = '\nStarts a n8n worker'; diff --git a/packages/cli/config/index.ts b/packages/cli/src/config/index.ts similarity index 100% rename from packages/cli/config/index.ts rename to packages/cli/src/config/index.ts diff --git a/packages/cli/config/schema.ts b/packages/cli/src/config/schema.ts similarity index 100% rename from packages/cli/config/schema.ts rename to packages/cli/src/config/schema.ts diff --git a/packages/cli/config/types.d.ts b/packages/cli/src/config/types.d.ts similarity index 98% rename from packages/cli/config/types.d.ts rename to packages/cli/src/config/types.d.ts index dbfb83b0d0..4c889e934a 100644 --- a/packages/cli/config/types.d.ts +++ b/packages/cli/src/config/types.d.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/no-unused-vars */ -import { IBinaryDataConfig } from '../../core/dist/src'; +import { IBinaryDataConfig } from 'n8n-core'; import { schema } from './schema'; // ----------------------------------- diff --git a/packages/cli/src/constants.ts b/packages/cli/src/constants.ts index 3f705bb8c3..61477997d3 100644 --- a/packages/cli/src/constants.ts +++ b/packages/cli/src/constants.ts @@ -1,9 +1,13 @@ /* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/naming-convention */ - +import { resolve, join } from 'path'; import { RESPONSE_ERROR_MESSAGES as CORE_RESPONSE_ERROR_MESSAGES } from 'n8n-core'; +export const CLI_DIR = resolve(__dirname, '..'); +export const TEMPLATES_DIR = join(CLI_DIR, 'templates'); +export const NODES_BASE_DIR = join(CLI_DIR, '..', 'nodes-base'); + export const NODE_PACKAGE_PREFIX = 'n8n-nodes-'; export const STARTER_TEMPLATE_NAME = `${NODE_PACKAGE_PREFIX}starter`; diff --git a/packages/cli/src/credentials/credentials.controller.ee.ts b/packages/cli/src/credentials/credentials.controller.ee.ts index 9e3966cfda..18d6289f13 100644 --- a/packages/cli/src/credentials/credentials.controller.ee.ts +++ b/packages/cli/src/credentials/credentials.controller.ee.ts @@ -1,11 +1,12 @@ -/* eslint-disable import/no-cycle */ import express from 'express'; import { INodeCredentialTestResult, LoggerProxy } from 'n8n-workflow'; -import { Db, InternalHooksManager, ResponseHelper } from '..'; -import type { CredentialsEntity } from '../databases/entities/CredentialsEntity'; +import * as Db from '@/Db'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import * as ResponseHelper from '@/ResponseHelper'; +import type { CredentialsEntity } from '@db/entities/CredentialsEntity'; -import type { CredentialRequest } from '../requests'; -import { isSharingEnabled, rightDiff } from '../UserManagement/UserManagementHelper'; +import type { CredentialRequest } from '@/requests'; +import { isSharingEnabled, rightDiff } from '@/UserManagement/UserManagementHelper'; import { EECredentialsService as EECredentials } from './credentials.service.ee'; import type { CredentialWithSharings } from './credentials.types'; diff --git a/packages/cli/src/credentials/credentials.controller.ts b/packages/cli/src/credentials/credentials.controller.ts index 42d4214a36..adbc54e41e 100644 --- a/packages/cli/src/credentials/credentials.controller.ts +++ b/packages/cli/src/credentials/credentials.controller.ts @@ -1,17 +1,18 @@ /* eslint-disable no-param-reassign */ /* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable import/no-cycle */ import express from 'express'; import { INodeCredentialTestResult, LoggerProxy } from 'n8n-workflow'; -import { GenericHelpers, InternalHooksManager, ResponseHelper } from '..'; -import config from '../../config'; -import { getLogger } from '../Logger'; +import * as GenericHelpers from '@/GenericHelpers'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import * as ResponseHelper from '@/ResponseHelper'; +import config from '@/config'; +import { getLogger } from '@/Logger'; import { EECredentialsController } from './credentials.controller.ee'; import { CredentialsService } from './credentials.service'; -import type { ICredentialsResponse } from '..'; -import type { CredentialRequest } from '../requests'; +import type { ICredentialsResponse } from '@/Interfaces'; +import type { CredentialRequest } from '@/requests'; export const credentialsController = express.Router(); diff --git a/packages/cli/src/credentials/credentials.service.ee.ts b/packages/cli/src/credentials/credentials.service.ee.ts index c636bb308b..6fcfe64a09 100644 --- a/packages/cli/src/credentials/credentials.service.ee.ts +++ b/packages/cli/src/credentials/credentials.service.ee.ts @@ -1,14 +1,12 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable no-param-reassign */ import { DeleteResult, EntityManager, In, Not } from 'typeorm'; -import { Db } from '..'; -import { RoleService } from '../role/role.service'; +import * as Db from '@/Db'; +import { RoleService } from '@/role/role.service'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { SharedCredentials } from '@db/entities/SharedCredentials'; +import { User } from '@db/entities/User'; +import { UserService } from '@/user/user.service'; import { CredentialsService } from './credentials.service'; - -import { CredentialsEntity } from '../databases/entities/CredentialsEntity'; -import { SharedCredentials } from '../databases/entities/SharedCredentials'; -import { User } from '../databases/entities/User'; -import { UserService } from '../user/user.service'; import type { CredentialWithSharings } from './credentials.types'; export class EECredentialsService extends CredentialsService { diff --git a/packages/cli/src/credentials/credentials.service.ts b/packages/cli/src/credentials/credentials.service.ts index 7345959a37..2b5c04a932 100644 --- a/packages/cli/src/credentials/credentials.service.ts +++ b/packages/cli/src/credentials/credentials.service.ts @@ -1,5 +1,4 @@ /* eslint-disable no-restricted-syntax */ -/* eslint-disable import/no-cycle */ import { Credentials, UserSettings } from 'n8n-core'; import { ICredentialDataDecryptedObject, @@ -9,21 +8,18 @@ import { } from 'n8n-workflow'; import { FindManyOptions, FindOneOptions, In } from 'typeorm'; -import { - createCredentialsFromCredentialsEntity, - CredentialsHelper, - Db, - ICredentialsDb, - ResponseHelper, -} from '..'; -import { RESPONSE_ERROR_MESSAGES } from '../constants'; -import { CredentialsEntity } from '../databases/entities/CredentialsEntity'; -import { SharedCredentials } from '../databases/entities/SharedCredentials'; -import { validateEntity } from '../GenericHelpers'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import { ICredentialsDb } from '@/Interfaces'; +import { CredentialsHelper, createCredentialsFromCredentialsEntity } from '@/CredentialsHelper'; +import { RESPONSE_ERROR_MESSAGES } from '@/constants'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { SharedCredentials } from '@db/entities/SharedCredentials'; +import { validateEntity } from '@/GenericHelpers'; import { externalHooks } from '../Server'; -import type { User } from '../databases/entities/User'; -import type { CredentialRequest } from '../requests'; +import type { User } from '@db/entities/User'; +import type { CredentialRequest } from '@/requests'; export class CredentialsService { static async get( diff --git a/packages/cli/src/credentials/credentials.types.ts b/packages/cli/src/credentials/credentials.types.ts index 9d1cefab30..f1f063b7e0 100644 --- a/packages/cli/src/credentials/credentials.types.ts +++ b/packages/cli/src/credentials/credentials.types.ts @@ -1,5 +1,5 @@ import type { IUser } from 'n8n-workflow'; -import type { ICredentialsDb } from '../Interfaces'; +import type { ICredentialsDb } from '@/Interfaces'; export interface CredentialWithSharings extends ICredentialsDb { ownedBy?: IUser | null; diff --git a/packages/cli/src/credentials/oauth2Credential.api.ts b/packages/cli/src/credentials/oauth2Credential.api.ts index 3cfa8c9261..3273bf1ce9 100644 --- a/packages/cli/src/credentials/oauth2Credential.api.ts +++ b/packages/cli/src/credentials/oauth2Credential.api.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ import ClientOAuth2 from 'client-oauth2'; import Csrf from 'csrf'; import express from 'express'; @@ -17,18 +16,20 @@ import { } from 'n8n-workflow'; import { resolve as pathResolve } from 'path'; -import { Db, ICredentialsDb, ResponseHelper } from '..'; -import { RESPONSE_ERROR_MESSAGES } from '../constants'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import { ICredentialsDb } from '@/Interfaces'; +import { RESPONSE_ERROR_MESSAGES, TEMPLATES_DIR } from '@/constants'; import { CredentialsHelper, getCredentialForUser, getCredentialWithoutUser, -} from '../CredentialsHelper'; -import { getLogger } from '../Logger'; -import { OAuthRequest } from '../requests'; -import { externalHooks } from '../Server'; -import config from '../../config'; -import { getInstanceBaseUrl } from '../UserManagement/UserManagementHelper'; +} from '@/CredentialsHelper'; +import { getLogger } from '@/Logger'; +import { OAuthRequest } from '@/requests'; +import { externalHooks } from '@/Server'; +import config from '@/config'; +import { getInstanceBaseUrl } from '@/UserManagement/UserManagementHelper'; export const oauth2CredentialController = express.Router(); @@ -334,7 +335,7 @@ oauth2CredentialController.get( credentialId: state.cid, }); - return res.sendFile(pathResolve(__dirname, '../../../templates/oauth-callback.html')); + return res.sendFile(pathResolve(TEMPLATES_DIR, 'oauth-callback.html')); } catch (error) { // Error response // eslint-disable-next-line @typescript-eslint/no-unsafe-argument diff --git a/packages/cli/src/CurlConverter.d.ts b/packages/cli/src/curlconverter.d.ts similarity index 100% rename from packages/cli/src/CurlConverter.d.ts rename to packages/cli/src/curlconverter.d.ts diff --git a/packages/cli/src/databases/config.ts b/packages/cli/src/databases/config.ts index dea4432d4e..17de6bc65e 100644 --- a/packages/cli/src/databases/config.ts +++ b/packages/cli/src/databases/config.ts @@ -8,9 +8,9 @@ import { entities } from './entities'; import { mysqlMigrations } from './migrations/mysqldb'; import { postgresMigrations } from './migrations/postgresdb'; import { sqliteMigrations } from './migrations/sqlite'; -import type { DatabaseType } from '../Interfaces'; -import config from '../../config'; -import { getConfigValue } from '../GenericHelpers'; +import type { DatabaseType } from '@/Interfaces'; +import config from '@/config'; +import { getConfigValue } from '@/GenericHelpers'; const entitiesDir = path.resolve(__dirname, 'entities'); diff --git a/packages/cli/src/databases/entities/AbstractEntity.ts b/packages/cli/src/databases/entities/AbstractEntity.ts index 5fabaa6c3d..befb4669fe 100644 --- a/packages/cli/src/databases/entities/AbstractEntity.ts +++ b/packages/cli/src/databases/entities/AbstractEntity.ts @@ -1,6 +1,6 @@ import { BeforeUpdate, CreateDateColumn, UpdateDateColumn } from 'typeorm'; import { IsDate, IsOptional } from 'class-validator'; -import config from '../../../config'; +import config from '@/config'; const dbType = config.getEnv('database.type'); diff --git a/packages/cli/src/databases/entities/CredentialsEntity.ts b/packages/cli/src/databases/entities/CredentialsEntity.ts index f87e850575..76eadcf03e 100644 --- a/packages/cli/src/databases/entities/CredentialsEntity.ts +++ b/packages/cli/src/databases/entities/CredentialsEntity.ts @@ -3,7 +3,7 @@ import { Column, Entity, Index, OneToMany, PrimaryGeneratedColumn } from 'typeor import { IsArray, IsObject, IsString, Length } from 'class-validator'; import { SharedCredentials } from './SharedCredentials'; import { AbstractEntity, jsonColumnType } from './AbstractEntity'; -import type { ICredentialsDb } from '../../Interfaces'; +import type { ICredentialsDb } from '@/Interfaces'; @Entity() export class CredentialsEntity extends AbstractEntity implements ICredentialsDb { diff --git a/packages/cli/src/databases/entities/ExecutionEntity.ts b/packages/cli/src/databases/entities/ExecutionEntity.ts index e2d7471d72..a3d76e2f66 100644 --- a/packages/cli/src/databases/entities/ExecutionEntity.ts +++ b/packages/cli/src/databases/entities/ExecutionEntity.ts @@ -1,7 +1,7 @@ import type { WorkflowExecuteMode } from 'n8n-workflow'; import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm'; import { datetimeColumnType, jsonColumnType } from './AbstractEntity'; -import type { IExecutionFlattedDb, IWorkflowDb } from '../../Interfaces'; +import type { IExecutionFlattedDb, IWorkflowDb } from '@/Interfaces'; @Entity() @Index(['workflowId', 'id']) diff --git a/packages/cli/src/databases/entities/Settings.ts b/packages/cli/src/databases/entities/Settings.ts index 0bd4bf36a9..c42421e299 100644 --- a/packages/cli/src/databases/entities/Settings.ts +++ b/packages/cli/src/databases/entities/Settings.ts @@ -1,6 +1,11 @@ +import type { IDataObject } from 'n8n-workflow'; import { Column, Entity, PrimaryColumn } from 'typeorm'; -import { ISettingsDb } from '../..'; +export interface ISettingsDb { + key: string; + value: string | boolean | IDataObject | number; + loadOnStartup: boolean; +} @Entity() export class Settings implements ISettingsDb { diff --git a/packages/cli/src/databases/entities/TagEntity.ts b/packages/cli/src/databases/entities/TagEntity.ts index 473b568ded..398059ad34 100644 --- a/packages/cli/src/databases/entities/TagEntity.ts +++ b/packages/cli/src/databases/entities/TagEntity.ts @@ -1,7 +1,7 @@ import { Column, Entity, Generated, Index, ManyToMany, PrimaryColumn } from 'typeorm'; import { IsString, Length } from 'class-validator'; -import { ITagDb } from '../../Interfaces'; +import { ITagDb } from '@/Interfaces'; import { idStringifier } from '../utils/transformers'; import { WorkflowEntity } from './WorkflowEntity'; import { AbstractEntity } from './AbstractEntity'; diff --git a/packages/cli/src/databases/entities/User.ts b/packages/cli/src/databases/entities/User.ts index 73fca0b8fe..cbd143dba2 100644 --- a/packages/cli/src/databases/entities/User.ts +++ b/packages/cli/src/databases/entities/User.ts @@ -18,7 +18,7 @@ import { SharedCredentials } from './SharedCredentials'; import { NoXss } from '../utils/customValidators'; import { objectRetriever, lowerCaser } from '../utils/transformers'; import { AbstractEntity, jsonColumnType } from './AbstractEntity'; -import type { IPersonalizationSurveyAnswers, IUserSettings } from '../../Interfaces'; +import type { IPersonalizationSurveyAnswers, IUserSettings } from '@/Interfaces'; export const MIN_PASSWORD_LENGTH = 8; diff --git a/packages/cli/src/databases/entities/WebhookEntity.ts b/packages/cli/src/databases/entities/WebhookEntity.ts index 47b2941668..1850071e11 100644 --- a/packages/cli/src/databases/entities/WebhookEntity.ts +++ b/packages/cli/src/databases/entities/WebhookEntity.ts @@ -1,6 +1,6 @@ import { Column, Entity, Index, PrimaryColumn } from 'typeorm'; -import { IWebhookDb } from '../../Interfaces'; +import { IWebhookDb } from '@/Interfaces'; @Entity() @Index(['webhookId', 'method', 'pathLength']) diff --git a/packages/cli/src/databases/entities/WorkflowEntity.ts b/packages/cli/src/databases/entities/WorkflowEntity.ts index 484c334f2b..4bb7168b82 100644 --- a/packages/cli/src/databases/entities/WorkflowEntity.ts +++ b/packages/cli/src/databases/entities/WorkflowEntity.ts @@ -23,13 +23,13 @@ import { PrimaryGeneratedColumn, } from 'typeorm'; -import * as config from '../../../config'; +import config from '@/config'; import { TagEntity } from './TagEntity'; import { SharedWorkflow } from './SharedWorkflow'; import { objectRetriever, sqlite } from '../utils/transformers'; import { AbstractEntity, jsonColumnType } from './AbstractEntity'; -import type { IWorkflowDb } from '../../Interfaces'; -import { alphabetizeKeys } from '../../utils'; +import type { IWorkflowDb } from '@/Interfaces'; +import { alphabetizeKeys } from '@/utils'; @Entity() export class WorkflowEntity extends AbstractEntity implements IWorkflowDb { diff --git a/packages/cli/src/databases/migrations/mysqldb/1588157391238-InitialMigration.ts b/packages/cli/src/databases/migrations/mysqldb/1588157391238-InitialMigration.ts index 8d41f70712..91ee93e509 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1588157391238-InitialMigration.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1588157391238-InitialMigration.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class InitialMigration1588157391238 implements MigrationInterface { name = 'InitialMigration1588157391238'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1592447867632-WebhookModel.ts b/packages/cli/src/databases/migrations/mysqldb/1592447867632-WebhookModel.ts index 2f7be5576a..6d8b2da92a 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1592447867632-WebhookModel.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1592447867632-WebhookModel.ts @@ -3,7 +3,7 @@ import { QueryRunner, } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class WebhookModel1592447867632 implements MigrationInterface { name = 'WebhookModel1592447867632'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1594902918301-CreateIndexStoppedAt.ts b/packages/cli/src/databases/migrations/mysqldb/1594902918301-CreateIndexStoppedAt.ts index 1b2777f4b5..fc0729758a 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1594902918301-CreateIndexStoppedAt.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1594902918301-CreateIndexStoppedAt.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class CreateIndexStoppedAt1594902918301 implements MigrationInterface { name = 'CreateIndexStoppedAt1594902918301'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1607431743767-MakeStoppedAtNullable.ts b/packages/cli/src/databases/migrations/mysqldb/1607431743767-MakeStoppedAtNullable.ts index 6c7930cd3f..841c0001de 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1607431743767-MakeStoppedAtNullable.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1607431743767-MakeStoppedAtNullable.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class MakeStoppedAtNullable1607431743767 implements MigrationInterface { diff --git a/packages/cli/src/databases/migrations/mysqldb/1611149998770-AddWebhookId.ts b/packages/cli/src/databases/migrations/mysqldb/1611149998770-AddWebhookId.ts index d3a5ceac9a..439f450726 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1611149998770-AddWebhookId.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1611149998770-AddWebhookId.ts @@ -1,5 +1,5 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class AddWebhookId1611149998770 implements MigrationInterface { name = 'AddWebhookId1611149998770'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1615306975123-ChangeDataSize.ts b/packages/cli/src/databases/migrations/mysqldb/1615306975123-ChangeDataSize.ts index fbb63069c4..af6d5b400b 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1615306975123-ChangeDataSize.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1615306975123-ChangeDataSize.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class ChangeDataSize1615306975123 implements MigrationInterface { name = 'ChangeDataSize1615306975123'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1617268711084-CreateTagEntity.ts b/packages/cli/src/databases/migrations/mysqldb/1617268711084-CreateTagEntity.ts index 738905d45e..74ce966e26 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1617268711084-CreateTagEntity.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1617268711084-CreateTagEntity.ts @@ -1,5 +1,5 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class CreateTagEntity1617268711084 implements MigrationInterface { name = 'CreateTagEntity1617268711084'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1620729500000-ChangeCredentialDataSize.ts b/packages/cli/src/databases/migrations/mysqldb/1620729500000-ChangeCredentialDataSize.ts index 0869e00a75..cb1bd5a092 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1620729500000-ChangeCredentialDataSize.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1620729500000-ChangeCredentialDataSize.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class ChangeCredentialDataSize1620729500000 implements MigrationInterface { name = 'ChangeCredentialDataSize1620729500000'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1620826335440-UniqueWorkflowNames.ts b/packages/cli/src/databases/migrations/mysqldb/1620826335440-UniqueWorkflowNames.ts index 954f6bab69..dd6e772ae8 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1620826335440-UniqueWorkflowNames.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1620826335440-UniqueWorkflowNames.ts @@ -1,5 +1,5 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class UniqueWorkflowNames1620826335440 implements MigrationInterface { name = 'UniqueWorkflowNames1620826335440'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1623936588000-CertifyCorrectCollation.ts b/packages/cli/src/databases/migrations/mysqldb/1623936588000-CertifyCorrectCollation.ts index 33875cb18b..ec36ff9768 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1623936588000-CertifyCorrectCollation.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1623936588000-CertifyCorrectCollation.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class CertifyCorrectCollation1623936588000 implements MigrationInterface { name = 'CertifyCorrectCollation1623936588000'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1626183952959-AddWaitColumn.ts b/packages/cli/src/databases/migrations/mysqldb/1626183952959-AddWaitColumn.ts index 052343237f..4d4462390c 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1626183952959-AddWaitColumn.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1626183952959-AddWaitColumn.ts @@ -1,5 +1,5 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class AddWaitColumnId1626183952959 implements MigrationInterface { name = 'AddWaitColumnId1626183952959'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1630451444017-UpdateWorkflowCredentials.ts b/packages/cli/src/databases/migrations/mysqldb/1630451444017-UpdateWorkflowCredentials.ts index 901f924b2d..5ce9629ce4 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1630451444017-UpdateWorkflowCredentials.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1630451444017-UpdateWorkflowCredentials.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { runInBatches } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { runInBatches } from '@db/utils/migrationHelpers'; // replacing the credentials in workflows and execution // `nodeType: name` changes to `nodeType: { id, name }` diff --git a/packages/cli/src/databases/migrations/mysqldb/1644424784709-AddExecutionEntityIndexes.ts b/packages/cli/src/databases/migrations/mysqldb/1644424784709-AddExecutionEntityIndexes.ts index c96c635182..d5252eb0b7 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1644424784709-AddExecutionEntityIndexes.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1644424784709-AddExecutionEntityIndexes.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class AddExecutionEntityIndexes1644424784709 implements MigrationInterface { name = 'AddExecutionEntityIndexes1644424784709'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.ts b/packages/cli/src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.ts index 799227648a..ed46e004f0 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1646992772331-CreateUserManagement.ts @@ -1,7 +1,7 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; import { v4 as uuid } from 'uuid'; -import * as config from '../../../../config'; -import { loadSurveyFromDisk } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { loadSurveyFromDisk } from '@db/utils/migrationHelpers'; export class CreateUserManagement1646992772331 implements MigrationInterface { name = 'CreateUserManagement1646992772331'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1648740597343-LowerCaseUserEmail.ts b/packages/cli/src/databases/migrations/mysqldb/1648740597343-LowerCaseUserEmail.ts index a627ed830a..47decf46de 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1648740597343-LowerCaseUserEmail.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1648740597343-LowerCaseUserEmail.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config = require('../../../../config'); +import config from '@/config'; export class LowerCaseUserEmail1648740597343 implements MigrationInterface { name = 'LowerCaseUserEmail1648740597343'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1652254514003-CommunityNodes.ts b/packages/cli/src/databases/migrations/mysqldb/1652254514003-CommunityNodes.ts index f23da9303e..3844bb99a2 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1652254514003-CommunityNodes.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1652254514003-CommunityNodes.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class CommunityNodes1652254514003 implements MigrationInterface { name = 'CommunityNodes1652254514003'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1652367743993-AddUserSettings.ts b/packages/cli/src/databases/migrations/mysqldb/1652367743993-AddUserSettings.ts index e0c79a3efa..ccbaad072d 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1652367743993-AddUserSettings.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1652367743993-AddUserSettings.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class AddUserSettings1652367743993 implements MigrationInterface { name = 'AddUserSettings1652367743993'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1652905585850-AddAPIKeyColumn.ts b/packages/cli/src/databases/migrations/mysqldb/1652905585850-AddAPIKeyColumn.ts index 58d476199f..df8fd5add2 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1652905585850-AddAPIKeyColumn.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1652905585850-AddAPIKeyColumn.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config from '../../../../config'; +import config from '@/config';; export class AddAPIKeyColumn1652905585850 implements MigrationInterface { name = 'AddAPIKeyColumn1652905585850'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1654090101303-IntroducePinData.ts b/packages/cli/src/databases/migrations/mysqldb/1654090101303-IntroducePinData.ts index c69a0848be..5d057b24a9 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1654090101303-IntroducePinData.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1654090101303-IntroducePinData.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; -import config from '../../../../config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import config from '@/config';; export class IntroducePinData1654090101303 implements MigrationInterface { name = 'IntroducePinData1654090101303'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1658932910559-AddNodeIds.ts b/packages/cli/src/databases/migrations/mysqldb/1658932910559-AddNodeIds.ts index 8d67380aad..9e52576665 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1658932910559-AddNodeIds.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1658932910559-AddNodeIds.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { runInBatches } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { runInBatches } from '@db/utils/migrationHelpers'; import { v4 as uuid } from 'uuid'; // add node ids in workflow objects diff --git a/packages/cli/src/databases/migrations/mysqldb/1659895550980-AddJsonKeyPinData.ts b/packages/cli/src/databases/migrations/mysqldb/1659895550980-AddJsonKeyPinData.ts index 2faca02f6d..f42c0dc86e 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1659895550980-AddJsonKeyPinData.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1659895550980-AddJsonKeyPinData.ts @@ -3,7 +3,7 @@ import { logMigrationEnd, runInBatches, getTablePrefix, -} from '../../utils/migrationHelpers'; +} from '@db/utils/migrationHelpers'; import { addJsonKeyToPinDataColumn } from '../sqlite/1659888469333-AddJsonKeyPinData'; import type { MigrationInterface, QueryRunner } from 'typeorm'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1660062385367-CreateCredentialsUserRole.ts b/packages/cli/src/databases/migrations/mysqldb/1660062385367-CreateCredentialsUserRole.ts index 1478e6df6d..edaddfd7e0 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1660062385367-CreateCredentialsUserRole.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1660062385367-CreateCredentialsUserRole.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config from '../../../../config'; +import config from '@/config';; export class CreateCredentialsUserRole1660062385367 implements MigrationInterface { name = 'CreateCredentialsUserRole1660062385367'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1663755770894-CreateWorkflowsEditorRole.ts b/packages/cli/src/databases/migrations/mysqldb/1663755770894-CreateWorkflowsEditorRole.ts index 61ace16951..5a49e3a40e 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1663755770894-CreateWorkflowsEditorRole.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1663755770894-CreateWorkflowsEditorRole.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateWorkflowsEditorRole1663755770894 implements MigrationInterface { name = 'CreateWorkflowsEditorRole1663755770894'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1665484192213-CreateCredentialUsageTable.ts b/packages/cli/src/databases/migrations/mysqldb/1665484192213-CreateCredentialUsageTable.ts index 9d92843529..fa06015555 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1665484192213-CreateCredentialUsageTable.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1665484192213-CreateCredentialUsageTable.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateCredentialUsageTable1665484192213 implements MigrationInterface { name = 'CreateCredentialUsageTable1665484192213'; diff --git a/packages/cli/src/databases/migrations/mysqldb/1665754637026-RemoveCredentialUsageTable.ts b/packages/cli/src/databases/migrations/mysqldb/1665754637026-RemoveCredentialUsageTable.ts index 339eefdd22..6849bfdfd2 100644 --- a/packages/cli/src/databases/migrations/mysqldb/1665754637026-RemoveCredentialUsageTable.ts +++ b/packages/cli/src/databases/migrations/mysqldb/1665754637026-RemoveCredentialUsageTable.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class RemoveCredentialUsageTable1665754637026 implements MigrationInterface { name = 'RemoveCredentialUsageTable1665754637026'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1587669153312-InitialMigration.ts b/packages/cli/src/databases/migrations/postgresdb/1587669153312-InitialMigration.ts index 85c1050be2..931e052056 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1587669153312-InitialMigration.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1587669153312-InitialMigration.ts @@ -1,7 +1,7 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class InitialMigration1587669153312 implements MigrationInterface { name = 'InitialMigration1587669153312'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1589476000887-WebhookModel.ts b/packages/cli/src/databases/migrations/postgresdb/1589476000887-WebhookModel.ts index 9596e32196..426f0cee87 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1589476000887-WebhookModel.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1589476000887-WebhookModel.ts @@ -3,7 +3,7 @@ import { QueryRunner, } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class WebhookModel1589476000887 implements MigrationInterface { name = 'WebhookModel1589476000887'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1594828256133-CreateIndexStoppedAt.ts b/packages/cli/src/databases/migrations/postgresdb/1594828256133-CreateIndexStoppedAt.ts index 6c0106c41f..3aa19a2dbe 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1594828256133-CreateIndexStoppedAt.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1594828256133-CreateIndexStoppedAt.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class CreateIndexStoppedAt1594828256133 implements MigrationInterface { name = 'CreateIndexStoppedAt1594828256133'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1607431743768-MakeStoppedAtNullable.ts b/packages/cli/src/databases/migrations/postgresdb/1607431743768-MakeStoppedAtNullable.ts index d5ffb1d9af..46cef700e4 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1607431743768-MakeStoppedAtNullable.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1607431743768-MakeStoppedAtNullable.ts @@ -1,6 +1,6 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class MakeStoppedAtNullable1607431743768 implements MigrationInterface { name = 'MakeStoppedAtNullable1607431743768'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1611144599516-AddWebhookId.ts b/packages/cli/src/databases/migrations/postgresdb/1611144599516-AddWebhookId.ts index 0c9a5bb3f1..614809b7bb 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1611144599516-AddWebhookId.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1611144599516-AddWebhookId.ts @@ -1,5 +1,5 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class AddWebhookId1611144599516 implements MigrationInterface { name = 'AddWebhookId1611144599516'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1617270242566-CreateTagEntity.ts b/packages/cli/src/databases/migrations/postgresdb/1617270242566-CreateTagEntity.ts index 737a27cf02..7bcdd14a29 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1617270242566-CreateTagEntity.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1617270242566-CreateTagEntity.ts @@ -1,5 +1,5 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class CreateTagEntity1617270242566 implements MigrationInterface { name = 'CreateTagEntity1617270242566'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1620824779533-UniqueWorkflowNames.ts b/packages/cli/src/databases/migrations/postgresdb/1620824779533-UniqueWorkflowNames.ts index 40f7451a5a..79c30e1f7d 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1620824779533-UniqueWorkflowNames.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1620824779533-UniqueWorkflowNames.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class UniqueWorkflowNames1620824779533 implements MigrationInterface { name = 'UniqueWorkflowNames1620824779533'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1626176912946-AddwaitTill.ts b/packages/cli/src/databases/migrations/postgresdb/1626176912946-AddwaitTill.ts index 81abce11fd..6f6fc0f07a 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1626176912946-AddwaitTill.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1626176912946-AddwaitTill.ts @@ -1,5 +1,5 @@ import {MigrationInterface, QueryRunner} from "typeorm"; -import * as config from '../../../../config'; +import config from '@/config'; export class AddwaitTill1626176912946 implements MigrationInterface { name = 'AddwaitTill1626176912946'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1630419189837-UpdateWorkflowCredentials.ts b/packages/cli/src/databases/migrations/postgresdb/1630419189837-UpdateWorkflowCredentials.ts index dd1425426a..b5620697b3 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1630419189837-UpdateWorkflowCredentials.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1630419189837-UpdateWorkflowCredentials.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { runInBatches } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { runInBatches } from '@db/utils/migrationHelpers'; // replacing the credentials in workflows and execution // `nodeType: name` changes to `nodeType: { id, name }` diff --git a/packages/cli/src/databases/migrations/postgresdb/1644422880309-AddExecutionEntityIndexes.ts b/packages/cli/src/databases/migrations/postgresdb/1644422880309-AddExecutionEntityIndexes.ts index 9fd2ea87fe..eb0f67b660 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1644422880309-AddExecutionEntityIndexes.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1644422880309-AddExecutionEntityIndexes.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class AddExecutionEntityIndexes1644422880309 implements MigrationInterface { name = 'AddExecutionEntityIndexes1644422880309'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1646834195327-IncreaseTypeVarcharLimit.ts b/packages/cli/src/databases/migrations/postgresdb/1646834195327-IncreaseTypeVarcharLimit.ts index 5fb2b04cb3..66220b6fe8 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1646834195327-IncreaseTypeVarcharLimit.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1646834195327-IncreaseTypeVarcharLimit.ts @@ -3,7 +3,7 @@ import { QueryRunner, } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class IncreaseTypeVarcharLimit1646834195327 implements MigrationInterface { name = 'IncreaseTypeVarcharLimit1646834195327'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1646992772331-CreateUserManagement.ts b/packages/cli/src/databases/migrations/postgresdb/1646992772331-CreateUserManagement.ts index 562f3e0ee6..6e0a501a42 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1646992772331-CreateUserManagement.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1646992772331-CreateUserManagement.ts @@ -1,7 +1,7 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; import { v4 as uuid } from 'uuid'; -import config from '../../../../config'; -import { loadSurveyFromDisk } from '../../utils/migrationHelpers'; +import config from '@/config';; +import { loadSurveyFromDisk } from '@db/utils/migrationHelpers'; export class CreateUserManagement1646992772331 implements MigrationInterface { name = 'CreateUserManagement1646992772331'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1648740597343-LowerCaseUserEmail.ts b/packages/cli/src/databases/migrations/postgresdb/1648740597343-LowerCaseUserEmail.ts index 306bf13ea5..85872af1c2 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1648740597343-LowerCaseUserEmail.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1648740597343-LowerCaseUserEmail.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config = require('../../../../config'); +import config from '@/config'; export class LowerCaseUserEmail1648740597343 implements MigrationInterface { name = 'LowerCaseUserEmail1648740597343'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1652254514002-CommunityNodes.ts b/packages/cli/src/databases/migrations/postgresdb/1652254514002-CommunityNodes.ts index 47ac01dd55..aeebd36611 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1652254514002-CommunityNodes.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1652254514002-CommunityNodes.ts @@ -1,9 +1,9 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config = require('../../../../config'); +import config from '@/config'; import { logMigrationEnd, logMigrationStart, -} from '../../utils/migrationHelpers'; +} from '@db/utils/migrationHelpers'; export class CommunityNodes1652254514002 implements MigrationInterface { name = 'CommunityNodes1652254514002'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1652367743993-AddUserSettings.ts b/packages/cli/src/databases/migrations/postgresdb/1652367743993-AddUserSettings.ts index b22a1ec8b8..03f78da838 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1652367743993-AddUserSettings.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1652367743993-AddUserSettings.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; +import config from '@/config'; export class AddUserSettings1652367743993 implements MigrationInterface { name = 'AddUserSettings1652367743993'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1652905585850-AddAPIKeyColumn.ts b/packages/cli/src/databases/migrations/postgresdb/1652905585850-AddAPIKeyColumn.ts index d52adb3a01..20dc45b088 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1652905585850-AddAPIKeyColumn.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1652905585850-AddAPIKeyColumn.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config from '../../../../config'; +import config from '@/config';; export class AddAPIKeyColumn1652905585850 implements MigrationInterface { name = 'AddAPIKeyColumn1652905585850'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1654090467022-IntroducePinData.ts b/packages/cli/src/databases/migrations/postgresdb/1654090467022-IntroducePinData.ts index 6b28194407..b6740cae9d 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1654090467022-IntroducePinData.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1654090467022-IntroducePinData.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; -import config from '../../../../config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import config from '@/config';; export class IntroducePinData1654090467022 implements MigrationInterface { name = 'IntroducePinData1654090467022'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1658932090381-AddNodeIds.ts b/packages/cli/src/databases/migrations/postgresdb/1658932090381-AddNodeIds.ts index e6bda6c001..afb7dd653b 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1658932090381-AddNodeIds.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1658932090381-AddNodeIds.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { runInBatches } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { runInBatches } from '@db/utils/migrationHelpers'; import { v4 as uuid } from 'uuid'; // add node ids in workflow objects diff --git a/packages/cli/src/databases/migrations/postgresdb/1659902242948-AddJsonKeyPinData.ts b/packages/cli/src/databases/migrations/postgresdb/1659902242948-AddJsonKeyPinData.ts index 2c0d1aad30..4cf7a98307 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1659902242948-AddJsonKeyPinData.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1659902242948-AddJsonKeyPinData.ts @@ -3,7 +3,7 @@ import { logMigrationEnd, logMigrationStart, runInBatches, -} from '../../utils/migrationHelpers'; +} from '@db/utils/migrationHelpers'; import { addJsonKeyToPinDataColumn } from '../sqlite/1659888469333-AddJsonKeyPinData'; import type { MigrationInterface, QueryRunner } from 'typeorm'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1660062385367-CreateCredentialsUserRole.ts b/packages/cli/src/databases/migrations/postgresdb/1660062385367-CreateCredentialsUserRole.ts index 564a4562da..38caec9ca7 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1660062385367-CreateCredentialsUserRole.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1660062385367-CreateCredentialsUserRole.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config from '../../../../config'; +import config from '@/config';; export class CreateCredentialsUserRole1660062385367 implements MigrationInterface { name = 'CreateCredentialsUserRole1660062385367'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1663755770893-CreateWorkflowsEditorRole.ts b/packages/cli/src/databases/migrations/postgresdb/1663755770893-CreateWorkflowsEditorRole.ts index a54192fa59..74498ddd78 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1663755770893-CreateWorkflowsEditorRole.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1663755770893-CreateWorkflowsEditorRole.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateWorkflowsEditorRole1663755770893 implements MigrationInterface { name = 'CreateWorkflowsEditorRole1663755770893'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1665484192212-CreateCredentialUsageTable.ts b/packages/cli/src/databases/migrations/postgresdb/1665484192212-CreateCredentialUsageTable.ts index 123d828f99..d9bc4bb4ed 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1665484192212-CreateCredentialUsageTable.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1665484192212-CreateCredentialUsageTable.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateCredentialUsageTable1665484192212 implements MigrationInterface { name = 'CreateCredentialUsageTable1665484192212'; diff --git a/packages/cli/src/databases/migrations/postgresdb/1665754637025-RemoveCredentialUsageTable.ts b/packages/cli/src/databases/migrations/postgresdb/1665754637025-RemoveCredentialUsageTable.ts index 4bbc76e357..e5c3a6784f 100644 --- a/packages/cli/src/databases/migrations/postgresdb/1665754637025-RemoveCredentialUsageTable.ts +++ b/packages/cli/src/databases/migrations/postgresdb/1665754637025-RemoveCredentialUsageTable.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class RemoveCredentialUsageTable1665754637025 implements MigrationInterface { name = 'RemoveCredentialUsageTable1665754637025'; diff --git a/packages/cli/src/databases/migrations/sqlite/1588102412422-InitialMigration.ts b/packages/cli/src/databases/migrations/sqlite/1588102412422-InitialMigration.ts index 6825c4ac11..2537328036 100644 --- a/packages/cli/src/databases/migrations/sqlite/1588102412422-InitialMigration.ts +++ b/packages/cli/src/databases/migrations/sqlite/1588102412422-InitialMigration.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class InitialMigration1588102412422 implements MigrationInterface { name = 'InitialMigration1588102412422'; diff --git a/packages/cli/src/databases/migrations/sqlite/1592445003908-WebhookModel.ts b/packages/cli/src/databases/migrations/sqlite/1592445003908-WebhookModel.ts index be9e1186dc..378abac4dc 100644 --- a/packages/cli/src/databases/migrations/sqlite/1592445003908-WebhookModel.ts +++ b/packages/cli/src/databases/migrations/sqlite/1592445003908-WebhookModel.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class WebhookModel1592445003908 implements MigrationInterface { name = 'WebhookModel1592445003908'; diff --git a/packages/cli/src/databases/migrations/sqlite/1594825041918-CreateIndexStoppedAt.ts b/packages/cli/src/databases/migrations/sqlite/1594825041918-CreateIndexStoppedAt.ts index b620f9455e..e5be8676e5 100644 --- a/packages/cli/src/databases/migrations/sqlite/1594825041918-CreateIndexStoppedAt.ts +++ b/packages/cli/src/databases/migrations/sqlite/1594825041918-CreateIndexStoppedAt.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateIndexStoppedAt1594825041918 implements MigrationInterface { name = 'CreateIndexStoppedAt1594825041918'; diff --git a/packages/cli/src/databases/migrations/sqlite/1607431743769-MakeStoppedAtNullable.ts b/packages/cli/src/databases/migrations/sqlite/1607431743769-MakeStoppedAtNullable.ts index 154c554e8a..7395c92dd3 100644 --- a/packages/cli/src/databases/migrations/sqlite/1607431743769-MakeStoppedAtNullable.ts +++ b/packages/cli/src/databases/migrations/sqlite/1607431743769-MakeStoppedAtNullable.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class MakeStoppedAtNullable1607431743769 implements MigrationInterface { name = 'MakeStoppedAtNullable1607431743769'; diff --git a/packages/cli/src/databases/migrations/sqlite/1611071044839-AddWebhookId.ts b/packages/cli/src/databases/migrations/sqlite/1611071044839-AddWebhookId.ts index 51d92858ec..71c1adbe8a 100644 --- a/packages/cli/src/databases/migrations/sqlite/1611071044839-AddWebhookId.ts +++ b/packages/cli/src/databases/migrations/sqlite/1611071044839-AddWebhookId.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class AddWebhookId1611071044839 implements MigrationInterface { name = 'AddWebhookId1611071044839'; diff --git a/packages/cli/src/databases/migrations/sqlite/1617213344594-CreateTagEntity.ts b/packages/cli/src/databases/migrations/sqlite/1617213344594-CreateTagEntity.ts index 20439b370f..09b845b322 100644 --- a/packages/cli/src/databases/migrations/sqlite/1617213344594-CreateTagEntity.ts +++ b/packages/cli/src/databases/migrations/sqlite/1617213344594-CreateTagEntity.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateTagEntity1617213344594 implements MigrationInterface { name = 'CreateTagEntity1617213344594'; diff --git a/packages/cli/src/databases/migrations/sqlite/1620821879465-UniqueWorkflowNames.ts b/packages/cli/src/databases/migrations/sqlite/1620821879465-UniqueWorkflowNames.ts index 93d456e710..001096b903 100644 --- a/packages/cli/src/databases/migrations/sqlite/1620821879465-UniqueWorkflowNames.ts +++ b/packages/cli/src/databases/migrations/sqlite/1620821879465-UniqueWorkflowNames.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class UniqueWorkflowNames1620821879465 implements MigrationInterface { name = 'UniqueWorkflowNames1620821879465'; diff --git a/packages/cli/src/databases/migrations/sqlite/1621707690587-AddWaitColumn.ts b/packages/cli/src/databases/migrations/sqlite/1621707690587-AddWaitColumn.ts index 502c3b86f1..f5a219fc76 100644 --- a/packages/cli/src/databases/migrations/sqlite/1621707690587-AddWaitColumn.ts +++ b/packages/cli/src/databases/migrations/sqlite/1621707690587-AddWaitColumn.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class AddWaitColumn1621707690587 implements MigrationInterface { name = 'AddWaitColumn1621707690587'; diff --git a/packages/cli/src/databases/migrations/sqlite/1630330987096-UpdateWorkflowCredentials.ts b/packages/cli/src/databases/migrations/sqlite/1630330987096-UpdateWorkflowCredentials.ts index 5ffad3a9ba..a423e3714c 100644 --- a/packages/cli/src/databases/migrations/sqlite/1630330987096-UpdateWorkflowCredentials.ts +++ b/packages/cli/src/databases/migrations/sqlite/1630330987096-UpdateWorkflowCredentials.ts @@ -1,7 +1,7 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; -import { runInBatches } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import { runInBatches } from '@db/utils/migrationHelpers'; // replacing the credentials in workflows and execution // `nodeType: name` changes to `nodeType: { id, name }` diff --git a/packages/cli/src/databases/migrations/sqlite/1644421939510-AddExecutionEntityIndexes.ts b/packages/cli/src/databases/migrations/sqlite/1644421939510-AddExecutionEntityIndexes.ts index 8d6192a9ae..a534043afc 100644 --- a/packages/cli/src/databases/migrations/sqlite/1644421939510-AddExecutionEntityIndexes.ts +++ b/packages/cli/src/databases/migrations/sqlite/1644421939510-AddExecutionEntityIndexes.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class AddExecutionEntityIndexes1644421939510 implements MigrationInterface { name = 'AddExecutionEntityIndexes1644421939510'; diff --git a/packages/cli/src/databases/migrations/sqlite/1646992772331-CreateUserManagement.ts b/packages/cli/src/databases/migrations/sqlite/1646992772331-CreateUserManagement.ts index 014753d813..8f0a6ee976 100644 --- a/packages/cli/src/databases/migrations/sqlite/1646992772331-CreateUserManagement.ts +++ b/packages/cli/src/databases/migrations/sqlite/1646992772331-CreateUserManagement.ts @@ -1,11 +1,11 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; import { v4 as uuid } from 'uuid'; -import * as config from '../../../../config'; +import config from '@/config'; import { loadSurveyFromDisk, logMigrationEnd, logMigrationStart, -} from '../../utils/migrationHelpers'; +} from '@db/utils/migrationHelpers'; export class CreateUserManagement1646992772331 implements MigrationInterface { name = 'CreateUserManagement1646992772331'; diff --git a/packages/cli/src/databases/migrations/sqlite/1648740597343-LowerCaseUserEmail.ts b/packages/cli/src/databases/migrations/sqlite/1648740597343-LowerCaseUserEmail.ts index 91c7427477..95c81401f2 100644 --- a/packages/cli/src/databases/migrations/sqlite/1648740597343-LowerCaseUserEmail.ts +++ b/packages/cli/src/databases/migrations/sqlite/1648740597343-LowerCaseUserEmail.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class LowerCaseUserEmail1648740597343 implements MigrationInterface { name = 'LowerCaseUserEmail1648740597343'; diff --git a/packages/cli/src/databases/migrations/sqlite/1652254514001-CommunityNodes.ts b/packages/cli/src/databases/migrations/sqlite/1652254514001-CommunityNodes.ts index 479e0300f4..c7a17a856d 100644 --- a/packages/cli/src/databases/migrations/sqlite/1652254514001-CommunityNodes.ts +++ b/packages/cli/src/databases/migrations/sqlite/1652254514001-CommunityNodes.ts @@ -1,9 +1,9 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import config = require('../../../../config'); +import config from '@/config'; import { logMigrationEnd, logMigrationStart, -} from '../../utils/migrationHelpers'; +} from '@db/utils/migrationHelpers'; export class CommunityNodes1652254514001 implements MigrationInterface { name = 'CommunityNodes1652254514001'; diff --git a/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts b/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts index 50496ea9f6..1cda80d5c9 100644 --- a/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts +++ b/packages/cli/src/databases/migrations/sqlite/1652367743993-AddUserSettings.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class AddUserSettings1652367743993 implements MigrationInterface { name = 'AddUserSettings1652367743993'; diff --git a/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts b/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts index 23d0cdd475..ac774373f7 100644 --- a/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts +++ b/packages/cli/src/databases/migrations/sqlite/1652905585850-AddAPIKeyColumn.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class AddAPIKeyColumn1652905585850 implements MigrationInterface { name = 'AddAPIKeyColumn1652905585850'; diff --git a/packages/cli/src/databases/migrations/sqlite/1654089251344-IntroducePinData.ts b/packages/cli/src/databases/migrations/sqlite/1654089251344-IntroducePinData.ts index d36bca491b..3524b7ed96 100644 --- a/packages/cli/src/databases/migrations/sqlite/1654089251344-IntroducePinData.ts +++ b/packages/cli/src/databases/migrations/sqlite/1654089251344-IntroducePinData.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; -import config from '../../../../config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import config from '@/config';; export class IntroducePinData1654089251344 implements MigrationInterface { name = 'IntroducePinData1654089251344'; diff --git a/packages/cli/src/databases/migrations/sqlite/1658930531669-AddNodeIds.ts b/packages/cli/src/databases/migrations/sqlite/1658930531669-AddNodeIds.ts index ea3a993d0f..47f5d5c759 100644 --- a/packages/cli/src/databases/migrations/sqlite/1658930531669-AddNodeIds.ts +++ b/packages/cli/src/databases/migrations/sqlite/1658930531669-AddNodeIds.ts @@ -1,8 +1,8 @@ import { INode } from 'n8n-workflow'; import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; -import { runInBatches } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; +import { runInBatches } from '@db/utils/migrationHelpers'; import { v4 as uuid } from 'uuid'; // add node ids in workflow objects diff --git a/packages/cli/src/databases/migrations/sqlite/1659888469333-AddJsonKeyPinData.ts b/packages/cli/src/databases/migrations/sqlite/1659888469333-AddJsonKeyPinData.ts index d2c5c4a233..f2fc0f65e5 100644 --- a/packages/cli/src/databases/migrations/sqlite/1659888469333-AddJsonKeyPinData.ts +++ b/packages/cli/src/databases/migrations/sqlite/1659888469333-AddJsonKeyPinData.ts @@ -4,7 +4,7 @@ import { runInBatches, getTablePrefix, escapeQuery, -} from '../../utils/migrationHelpers'; +} from '@db/utils/migrationHelpers'; import type { MigrationInterface, QueryRunner } from 'typeorm'; import { isJsonKeyObject, PinData } from '../../utils/migrations.types'; diff --git a/packages/cli/src/databases/migrations/sqlite/1660062385367-CreateCredentialsUserRole.ts b/packages/cli/src/databases/migrations/sqlite/1660062385367-CreateCredentialsUserRole.ts index 2e87d54680..2d2f4c5a08 100644 --- a/packages/cli/src/databases/migrations/sqlite/1660062385367-CreateCredentialsUserRole.ts +++ b/packages/cli/src/databases/migrations/sqlite/1660062385367-CreateCredentialsUserRole.ts @@ -1,6 +1,6 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import * as config from '../../../../config'; -import { logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import config from '@/config'; +import { logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateCredentialsUserRole1660062385367 implements MigrationInterface { name = 'CreateCredentialsUserRole1660062385367'; diff --git a/packages/cli/src/databases/migrations/sqlite/1663755770892-CreateWorkflowsUserRole.ts b/packages/cli/src/databases/migrations/sqlite/1663755770892-CreateWorkflowsUserRole.ts index 75f5a4837f..2bcf993c8e 100644 --- a/packages/cli/src/databases/migrations/sqlite/1663755770892-CreateWorkflowsUserRole.ts +++ b/packages/cli/src/databases/migrations/sqlite/1663755770892-CreateWorkflowsUserRole.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateWorkflowsEditorRole1663755770892 implements MigrationInterface { name = 'CreateWorkflowsEditorRole1663755770892'; diff --git a/packages/cli/src/databases/migrations/sqlite/1665484192211-CreateCredentialUsageTable.ts b/packages/cli/src/databases/migrations/sqlite/1665484192211-CreateCredentialUsageTable.ts index 3b3c1e39be..adda3742e9 100644 --- a/packages/cli/src/databases/migrations/sqlite/1665484192211-CreateCredentialUsageTable.ts +++ b/packages/cli/src/databases/migrations/sqlite/1665484192211-CreateCredentialUsageTable.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class CreateCredentialUsageTable1665484192211 implements MigrationInterface { name = 'CreateCredentialUsageTable1665484192211'; diff --git a/packages/cli/src/databases/migrations/sqlite/1665754637024-RemoveCredentialUsageTable.ts b/packages/cli/src/databases/migrations/sqlite/1665754637024-RemoveCredentialUsageTable.ts index 61d898cf30..b92ee11ef7 100644 --- a/packages/cli/src/databases/migrations/sqlite/1665754637024-RemoveCredentialUsageTable.ts +++ b/packages/cli/src/databases/migrations/sqlite/1665754637024-RemoveCredentialUsageTable.ts @@ -1,5 +1,5 @@ import { MigrationInterface, QueryRunner } from 'typeorm'; -import { getTablePrefix, logMigrationEnd, logMigrationStart } from '../../utils/migrationHelpers'; +import { getTablePrefix, logMigrationEnd, logMigrationStart } from '@db/utils/migrationHelpers'; export class RemoveCredentialUsageTable1665754637024 implements MigrationInterface { name = 'RemoveCredentialUsageTable1665754637024'; diff --git a/packages/cli/src/databases/utils/migrationHelpers.ts b/packages/cli/src/databases/utils/migrationHelpers.ts index f9e6b89dd4..9ffb0884ae 100644 --- a/packages/cli/src/databases/utils/migrationHelpers.ts +++ b/packages/cli/src/databases/utils/migrationHelpers.ts @@ -2,8 +2,8 @@ import { readFileSync, rmSync } from 'fs'; import { UserSettings } from 'n8n-core'; import type { QueryRunner } from 'typeorm/query-runner/QueryRunner'; -import config from '../../../config'; -import { getLogger } from '../../Logger'; +import config from '@/config'; +import { getLogger } from '@/Logger'; const PERSONALIZATION_SURVEY_FILENAME = 'personalizationSurvey.json'; diff --git a/packages/cli/src/databases/utils/transformers.ts b/packages/cli/src/databases/utils/transformers.ts index c890e16644..1385369d3d 100644 --- a/packages/cli/src/databases/utils/transformers.ts +++ b/packages/cli/src/databases/utils/transformers.ts @@ -1,6 +1,6 @@ import { jsonParse } from 'n8n-workflow'; import { ValueTransformer } from 'typeorm'; -import config from '../../../config'; +import config from '@/config'; export const idStringifier = { from: (value: number): string | number => (typeof value === 'number' ? value.toString() : value), diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index c98040e648..f9609a77c0 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,5 +1,4 @@ /* eslint-disable import/first */ -/* eslint-disable import/no-cycle */ export * from './CredentialsHelper'; export * from './CredentialTypes'; export * from './CredentialsOverwrites'; diff --git a/packages/cli/src/requests.d.ts b/packages/cli/src/requests.d.ts index 022437f57e..cbc2398a03 100644 --- a/packages/cli/src/requests.d.ts +++ b/packages/cli/src/requests.d.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ import express from 'express'; import { IConnections, @@ -12,10 +11,10 @@ import { } from 'n8n-workflow'; import type { IExecutionDeleteFilter, IWorkflowDb } from '.'; -import type { Role } from './databases/entities/Role'; -import type { User } from './databases/entities/User'; -import * as UserManagementMailer from './UserManagement/email/UserManagementMailer'; -import type { PublicUser } from './UserManagement/Interfaces'; +import type { Role } from '@db/entities/Role'; +import type { User } from '@db/entities/User'; +import * as UserManagementMailer from '@/UserManagement/email/UserManagementMailer'; +import type { PublicUser } from '@/UserManagement/Interfaces'; export type AuthlessRequest< RouteParams = {}, diff --git a/packages/cli/src/role/role.service.ts b/packages/cli/src/role/role.service.ts index 66e3ff8b74..e8d2cf70c7 100644 --- a/packages/cli/src/role/role.service.ts +++ b/packages/cli/src/role/role.service.ts @@ -1,7 +1,6 @@ -/* eslint-disable import/no-cycle */ import { EntityManager } from 'typeorm'; -import { Db } from '..'; -import { Role } from '../databases/entities/Role'; +import * as Db from '@/Db'; +import { Role } from '@db/entities/Role'; export class RoleService { static async get(role: Partial): Promise { diff --git a/packages/cli/src/telemetry/index.ts b/packages/cli/src/telemetry/index.ts index 6ce3e3d54a..b60b419d7d 100644 --- a/packages/cli/src/telemetry/index.ts +++ b/packages/cli/src/telemetry/index.ts @@ -1,12 +1,11 @@ -/* eslint-disable import/no-cycle */ /* eslint-disable @typescript-eslint/no-unsafe-call */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import RudderStack from '@rudderstack/rudder-sdk-node'; import PostHog from 'posthog-node'; import { ITelemetryTrackProperties, LoggerProxy } from 'n8n-workflow'; -import config from '../../config'; -import { IExecutionTrackProperties } from '../Interfaces'; -import { getLogger } from '../Logger'; +import config from '@/config'; +import { IExecutionTrackProperties } from '@/Interfaces'; +import { getLogger } from '@/Logger'; type ExecutionTrackDataKey = 'manual_error' | 'manual_success' | 'prod_error' | 'prod_success'; diff --git a/packages/cli/src/user/user.service.ts b/packages/cli/src/user/user.service.ts index dd9008ae6b..20bb4d0055 100644 --- a/packages/cli/src/user/user.service.ts +++ b/packages/cli/src/user/user.service.ts @@ -1,7 +1,6 @@ -/* eslint-disable import/no-cycle */ import { EntityManager, In } from 'typeorm'; -import { Db } from '..'; -import { User } from '../databases/entities/User'; +import * as Db from '@/Db'; +import { User } from '@db/entities/User'; export class UserService { static async get(user: Partial): Promise { diff --git a/packages/cli/src/workflows/workflows.controller.ee.ts b/packages/cli/src/workflows/workflows.controller.ee.ts index aa89594adb..45ea5cc9ff 100644 --- a/packages/cli/src/workflows/workflows.controller.ee.ts +++ b/packages/cli/src/workflows/workflows.controller.ee.ts @@ -1,15 +1,18 @@ import express from 'express'; -import { Db, InternalHooksManager, ResponseHelper, WorkflowHelpers } from '..'; -import config from '../../config'; -import { WorkflowEntity } from '../databases/entities/WorkflowEntity'; -import { validateEntity } from '../GenericHelpers'; -import type { WorkflowRequest } from '../requests'; -import { isSharingEnabled, rightDiff } from '../UserManagement/UserManagementHelper'; +import * as Db from '@/Db'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import config from '@/config'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { validateEntity } from '@/GenericHelpers'; +import type { WorkflowRequest } from '@/requests'; +import { isSharingEnabled, rightDiff } from '@/UserManagement/UserManagementHelper'; import { EEWorkflowsService as EEWorkflows } from './workflows.services.ee'; import { externalHooks } from '../Server'; -import { SharedWorkflow } from '../databases/entities/SharedWorkflow'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; import { LoggerProxy } from 'n8n-workflow'; -import * as TagHelpers from '../TagHelpers'; +import * as TagHelpers from '@/TagHelpers'; import { EECredentialsService as EECredentials } from '../credentials/credentials.service.ee'; import { WorkflowsService } from './workflows.services'; diff --git a/packages/cli/src/workflows/workflows.controller.ts b/packages/cli/src/workflows/workflows.controller.ts index 3263a34bfb..c3c9c1817d 100644 --- a/packages/cli/src/workflows/workflows.controller.ts +++ b/packages/cli/src/workflows/workflows.controller.ts @@ -1,40 +1,38 @@ /* eslint-disable no-param-reassign */ -/* eslint-disable import/no-cycle */ import express from 'express'; import { INode, IPinData, LoggerProxy, Workflow } from 'n8n-workflow'; import axios from 'axios'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import * as Db from '@/Db'; +import * as GenericHelpers from '@/GenericHelpers'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import { whereClause } from '@/CredentialsHelper'; +import { NodeTypes } from '@/NodeTypes'; +import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'; +import * as TestWebhooks from '@/TestWebhooks'; +import { WorkflowRunner } from '@/WorkflowRunner'; import { - ActiveWorkflowRunner, - Db, - GenericHelpers, - NodeTypes, - ResponseHelper, - whereClause, - WorkflowHelpers, - WorkflowExecuteAdditionalData, IWorkflowResponse, IExecutionPushResponse, IWorkflowExecutionDataProcess, - TestWebhooks, - WorkflowRunner, IWorkflowDb, -} from '..'; -import config from '../../config'; -import * as TagHelpers from '../TagHelpers'; -import { SharedWorkflow } from '../databases/entities/SharedWorkflow'; -import { WorkflowEntity } from '../databases/entities/WorkflowEntity'; -import { validateEntity } from '../GenericHelpers'; -import { InternalHooksManager } from '../InternalHooksManager'; -import { externalHooks } from '../Server'; -import { getLogger } from '../Logger'; -import type { WorkflowRequest } from '../requests'; -import { isBelowOnboardingThreshold } from '../WorkflowHelpers'; +} from '@/Interfaces'; +import config from '@/config'; +import * as TagHelpers from '@/TagHelpers'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { validateEntity } from '@/GenericHelpers'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { externalHooks } from '@/Server'; +import { getLogger } from '@/Logger'; +import type { WorkflowRequest } from '@/requests'; +import { isBelowOnboardingThreshold } from '@/WorkflowHelpers'; import { EEWorkflowController } from './workflows.controller.ee'; import { WorkflowsService } from './workflows.services'; -const activeWorkflowRunner = ActiveWorkflowRunner.getInstance(); export const workflowsController = express.Router(); /** @@ -325,7 +323,7 @@ workflowsController.delete( if (shared.workflow.active) { // deactivate before deleting - await activeWorkflowRunner.remove(workflowId); + await ActiveWorkflowRunner.getInstance().remove(workflowId); } await Db.collections.Workflow.delete(workflowId); diff --git a/packages/cli/src/workflows/workflows.services.ee.ts b/packages/cli/src/workflows/workflows.services.ee.ts index a5b68758f4..046f457423 100644 --- a/packages/cli/src/workflows/workflows.services.ee.ts +++ b/packages/cli/src/workflows/workflows.services.ee.ts @@ -1,13 +1,16 @@ import { DeleteResult, EntityManager, In, Not } from 'typeorm'; -import { Db, ICredentialsDb, ResponseHelper, WorkflowHelpers } from '..'; -import { SharedWorkflow } from '../databases/entities/SharedWorkflow'; -import { User } from '../databases/entities/User'; -import { WorkflowEntity } from '../databases/entities/WorkflowEntity'; -import { RoleService } from '../role/role.service'; -import { UserService } from '../user/user.service'; +import * as Db from '@/Db'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import { ICredentialsDb } from '@/Interfaces'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; +import { User } from '@db/entities/User'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { RoleService } from '@/role/role.service'; +import { UserService } from '@/user/user.service'; import { WorkflowsService } from './workflows.services'; import type { WorkflowWithSharingsAndCredentials } from './workflows.types'; -import { EECredentialsService as EECredentials } from '../credentials/credentials.service.ee'; +import { EECredentialsService as EECredentials } from '@/credentials/credentials.service.ee'; export class EEWorkflowsService extends WorkflowsService { static async isOwned( diff --git a/packages/cli/src/workflows/workflows.services.ts b/packages/cli/src/workflows/workflows.services.ts index 1fdf5496cf..95489fca06 100644 --- a/packages/cli/src/workflows/workflows.services.ts +++ b/packages/cli/src/workflows/workflows.services.ts @@ -1,22 +1,20 @@ import { JsonObject, jsonParse, LoggerProxy } from 'n8n-workflow'; import { FindManyOptions, FindOneOptions, In, ObjectLiteral } from 'typeorm'; -import { - ActiveWorkflowRunner, - Db, - InternalHooksManager, - ResponseHelper, - whereClause, - WorkflowHelpers, -} from '..'; -import config from '../../config'; -import { SharedWorkflow } from '../databases/entities/SharedWorkflow'; -import { User } from '../databases/entities/User'; -import { WorkflowEntity } from '../databases/entities/WorkflowEntity'; -import { validateEntity } from '../GenericHelpers'; -import { externalHooks } from '../Server'; -import * as TagHelpers from '../TagHelpers'; -import { getSharedWorkflowIds } from '../WorkflowHelpers'; import { validate as jsonSchemaValidate } from 'jsonschema'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import * as Db from '@/Db'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import * as ResponseHelper from '@/ResponseHelper'; +import * as WorkflowHelpers from '@/WorkflowHelpers'; +import { whereClause } from '@/CredentialsHelper'; +import config from '@/config'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; +import { User } from '@db/entities/User'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { validateEntity } from '@/GenericHelpers'; +import { externalHooks } from '@/Server'; +import * as TagHelpers from '@/TagHelpers'; +import { getSharedWorkflowIds } from '@/WorkflowHelpers'; export interface IGetWorkflowsQueryFilter { id?: number | string; diff --git a/packages/cli/src/workflows/workflows.types.ts b/packages/cli/src/workflows/workflows.types.ts index 53edabae07..01cfe8fdcb 100644 --- a/packages/cli/src/workflows/workflows.types.ts +++ b/packages/cli/src/workflows/workflows.types.ts @@ -1,6 +1,6 @@ import type { IUser } from 'n8n-workflow'; -import { SharedWorkflow } from '../databases/entities/SharedWorkflow'; -import { WorkflowEntity } from '../databases/entities/WorkflowEntity'; +import { SharedWorkflow } from '@db/entities/SharedWorkflow'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; export interface WorkflowWithSharingsAndCredentials extends Omit { ownedBy?: IUser | null; diff --git a/packages/cli/test/integration/auth.api.test.ts b/packages/cli/test/integration/auth.api.test.ts index 86dd387986..fb38d695e9 100644 --- a/packages/cli/test/integration/auth.api.test.ts +++ b/packages/cli/test/integration/auth.api.test.ts @@ -1,16 +1,16 @@ -import express = require('express'); +import express from 'express'; import validator from 'validator'; -import config from '../../config'; -import { Db } from '../../src'; -import { AUTH_COOKIE_NAME } from '../../src/constants'; -import type { Role } from '../../src/databases/entities/Role'; +import config from '@/config'; +import * as Db from '@/Db'; +import { AUTH_COOKIE_NAME } from '@/constants'; +import type { Role } from '@db/entities/Role'; import { LOGGED_OUT_RESPONSE_BODY } from './shared/constants'; import { randomValidPassword } from './shared/random'; import * as testDb from './shared/testDb'; import type { AuthAgent } from './shared/types'; import * as utils from './shared/utils'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; diff --git a/packages/cli/test/integration/auth.mw.test.ts b/packages/cli/test/integration/auth.mw.test.ts index 5dd130f1b6..e19eacc0eb 100644 --- a/packages/cli/test/integration/auth.mw.test.ts +++ b/packages/cli/test/integration/auth.mw.test.ts @@ -1,7 +1,7 @@ import express from 'express'; import request from 'supertest'; -import type { Role } from '../../src/databases/entities/Role'; +import type { Role } from '@db/entities/Role'; import { REST_PATH_SEGMENT, ROUTES_REQUIRING_AUTHENTICATION, @@ -11,7 +11,7 @@ import * as testDb from './shared/testDb'; import type { AuthAgent } from './shared/types'; import * as utils from './shared/utils'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; diff --git a/packages/cli/test/integration/commands/reset.cmd.test.ts b/packages/cli/test/integration/commands/reset.cmd.test.ts index eb09b7773c..81ea1eec2a 100644 --- a/packages/cli/test/integration/commands/reset.cmd.test.ts +++ b/packages/cli/test/integration/commands/reset.cmd.test.ts @@ -1,10 +1,10 @@ import express from 'express'; -import { Db } from '../../../src'; -import { Reset } from '../../../commands/user-management/reset'; +import * as Db from '@/Db'; +import { Reset } from '@/commands/user-management/reset'; +import type { Role } from '@db/entities/Role'; import * as utils from '../shared/utils'; import * as testDb from '../shared/testDb'; -import type { Role } from '../../../src/databases/entities/Role'; let app: express.Application; let testDbName = ''; diff --git a/packages/cli/test/integration/credentials.ee.test.ts b/packages/cli/test/integration/credentials.ee.test.ts index b59682231c..9742c9ee44 100644 --- a/packages/cli/test/integration/credentials.ee.test.ts +++ b/packages/cli/test/integration/credentials.ee.test.ts @@ -2,18 +2,18 @@ import express from 'express'; import { UserSettings } from 'n8n-core'; import { In } from 'typeorm'; -import { Db } from '../../src'; -import { RESPONSE_ERROR_MESSAGES } from '../../src/constants'; -import type { CredentialWithSharings } from '../../src/credentials/credentials.types'; -import * as UserManagementHelpers from '../../src/UserManagement/UserManagementHelper'; -import type { Role } from '../../src/databases/entities/Role'; +import * as Db from '@/Db'; +import { RESPONSE_ERROR_MESSAGES } from '@/constants'; +import type { CredentialWithSharings } from '@/credentials/credentials.types'; +import * as UserManagementHelpers from '@/UserManagement/UserManagementHelper'; +import type { Role } from '@db/entities/Role'; import { randomCredentialPayload } from './shared/random'; import * as testDb from './shared/testDb'; import type { AuthAgent, SaveCredentialFunction } from './shared/types'; import * as utils from './shared/utils'; import type { IUser } from 'n8n-workflow'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; diff --git a/packages/cli/test/integration/credentials.test.ts b/packages/cli/test/integration/credentials.test.ts index 6bb433a1e7..3d5c909746 100644 --- a/packages/cli/test/integration/credentials.test.ts +++ b/packages/cli/test/integration/credentials.test.ts @@ -1,20 +1,20 @@ import express from 'express'; import { UserSettings } from 'n8n-core'; -import { Db } from '../../src'; -import { RESPONSE_ERROR_MESSAGES } from '../../src/constants'; -import * as UserManagementHelpers from '../../src/UserManagement/UserManagementHelper'; -import type { Role } from '../../src/databases/entities/Role'; +import * as Db from '@/Db'; +import { RESPONSE_ERROR_MESSAGES } from '@/constants'; +import * as UserManagementHelpers from '@/UserManagement/UserManagementHelper'; +import type { Role } from '@db/entities/Role'; import { randomCredentialPayload, randomName, randomString } from './shared/random'; import * as testDb from './shared/testDb'; import type { SaveCredentialFunction } from './shared/types'; import * as utils from './shared/utils'; -import config from '../../config'; -import type { CredentialsEntity } from '../../src/databases/entities/CredentialsEntity'; +import config from '@/config'; +import type { CredentialsEntity } from '@db/entities/CredentialsEntity'; import type { AuthAgent } from './shared/types'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); // mock that credentialsSharing is not enabled const mockIsCredentialsSharingEnabled = jest.spyOn(UserManagementHelpers, 'isSharingEnabled'); diff --git a/packages/cli/test/integration/me.api.test.ts b/packages/cli/test/integration/me.api.test.ts index 8e2ad67c96..86e651c913 100644 --- a/packages/cli/test/integration/me.api.test.ts +++ b/packages/cli/test/integration/me.api.test.ts @@ -2,9 +2,9 @@ import express from 'express'; import { IsNull } from 'typeorm'; import validator from 'validator'; -import config from '../../config'; -import { Db } from '../../src'; -import type { Role } from '../../src/databases/entities/Role'; +import config from '@/config'; +import * as Db from '@/Db'; +import type { Role } from '@db/entities/Role'; import { SUCCESS_RESPONSE_BODY } from './shared/constants'; import { randomApiKey, @@ -17,7 +17,7 @@ import * as testDb from './shared/testDb'; import type { AuthAgent } from './shared/types'; import * as utils from './shared/utils'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; diff --git a/packages/cli/test/integration/nodes.api.test.ts b/packages/cli/test/integration/nodes.api.test.ts index 7432f3edf1..f9b2132573 100644 --- a/packages/cli/test/integration/nodes.api.test.ts +++ b/packages/cli/test/integration/nodes.api.test.ts @@ -11,23 +11,23 @@ import { hasPackageLoaded, removePackageFromMissingList, isNpmError, -} from '../../src/CommunityNodes/helpers'; -import { findInstalledPackage, isPackageInstalled } from '../../src/CommunityNodes/packageModel'; -import { LoadNodesAndCredentials } from '../../src/LoadNodesAndCredentials'; -import { InstalledPackages } from '../../src/databases/entities/InstalledPackages'; +} from '@/CommunityNodes/helpers'; +import { findInstalledPackage, isPackageInstalled } from '@/CommunityNodes/packageModel'; +import { LoadNodesAndCredentials } from '@/LoadNodesAndCredentials'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; -import type { Role } from '../../src/databases/entities/Role'; +import type { Role } from '@db/entities/Role'; import type { AuthAgent } from './shared/types'; -import type { InstalledNodes } from '../../src/databases/entities/InstalledNodes'; +import type { InstalledNodes } from '@db/entities/InstalledNodes'; import { COMMUNITY_PACKAGE_VERSION } from './shared/constants'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); -jest.mock('../../src/Push'); +jest.mock('@/Push'); -jest.mock('../../src/CommunityNodes/helpers', () => { +jest.mock('@/CommunityNodes/helpers', () => { return { - ...jest.requireActual('../../src/CommunityNodes/helpers'), + ...jest.requireActual('@/CommunityNodes/helpers'), checkNpmPackageStatus: jest.fn(), executeCommand: jest.fn(), hasPackageLoaded: jest.fn(), @@ -36,9 +36,9 @@ jest.mock('../../src/CommunityNodes/helpers', () => { }; }); -jest.mock('../../src/CommunityNodes/packageModel', () => { +jest.mock('@/CommunityNodes/packageModel', () => { return { - ...jest.requireActual('../../src/CommunityNodes/packageModel'), + ...jest.requireActual('@/CommunityNodes/packageModel'), isPackageInstalled: jest.fn(), findInstalledPackage: jest.fn(), }; diff --git a/packages/cli/test/integration/owner.api.test.ts b/packages/cli/test/integration/owner.api.test.ts index ae7e2f1e53..f47eef644e 100644 --- a/packages/cli/test/integration/owner.api.test.ts +++ b/packages/cli/test/integration/owner.api.test.ts @@ -1,9 +1,9 @@ import express from 'express'; import validator from 'validator'; -import config from '../../config'; -import { Db } from '../../src'; -import type { Role } from '../../src/databases/entities/Role'; +import config from '@/config'; +import * as Db from '@/Db'; +import type { Role } from '@db/entities/Role'; import { randomEmail, randomInvalidPassword, @@ -14,7 +14,7 @@ import * as testDb from './shared/testDb'; import type { AuthAgent } from './shared/types'; import * as utils from './shared/utils'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; diff --git a/packages/cli/test/integration/passwordReset.api.test.ts b/packages/cli/test/integration/passwordReset.api.test.ts index abc9bf227f..95a233d566 100644 --- a/packages/cli/test/integration/passwordReset.api.test.ts +++ b/packages/cli/test/integration/passwordReset.api.test.ts @@ -2,8 +2,8 @@ import express from 'express'; import { v4 as uuid } from 'uuid'; import * as utils from './shared/utils'; -import { Db } from '../../src'; -import config from '../../config'; +import * as Db from '@/Db'; +import config from '@/config'; import { compare } from 'bcryptjs'; import { randomEmail, @@ -12,10 +12,10 @@ import { randomValidPassword, } from './shared/random'; import * as testDb from './shared/testDb'; -import type { Role } from '../../src/databases/entities/Role'; +import type { Role } from '@db/entities/Role'; -jest.mock('../../src/telemetry'); -jest.mock('../../src/UserManagement/email/NodeMailer'); +jest.mock('@/telemetry'); +jest.mock('@/UserManagement/email/NodeMailer'); let app: express.Application; let testDbName = ''; @@ -37,7 +37,7 @@ beforeAll(async () => { beforeEach(async () => { await testDb.truncate(['User'], testDbName); - jest.mock('../../config'); + jest.mock('@/config'); config.set('userManagement.isInstanceOwnerSetUp', true); config.set('userManagement.emails.mode', ''); diff --git a/packages/cli/test/integration/publicApi/credentials.test.ts b/packages/cli/test/integration/publicApi/credentials.test.ts index 3d878082d4..843923c120 100644 --- a/packages/cli/test/integration/publicApi/credentials.test.ts +++ b/packages/cli/test/integration/publicApi/credentials.test.ts @@ -2,14 +2,13 @@ import express from 'express'; import { UserSettings } from 'n8n-core'; -import { Db } from '../../../src'; +import * as Db from '@/Db'; +import type { Role } from '@db/entities/Role'; +import { RESPONSE_ERROR_MESSAGES } from '@/constants'; import { randomApiKey, randomName, randomString } from '../shared/random'; import * as utils from '../shared/utils'; import type { CredentialPayload, SaveCredentialFunction } from '../shared/types'; -import type { Role } from '../../../src/databases/entities/Role'; -import type { User } from '../../../src/databases/entities/User'; import * as testDb from '../shared/testDb'; -import { RESPONSE_ERROR_MESSAGES } from '../../../src/constants'; let app: express.Application; let testDbName = ''; @@ -19,7 +18,7 @@ let credentialOwnerRole: Role; let saveCredential: SaveCredentialFunction; -jest.mock('../../../src/telemetry'); +jest.mock('@/telemetry'); beforeAll(async () => { app = await utils.initTestServer({ endpointGroups: ['publicApi'], applyAuth: false }); diff --git a/packages/cli/test/integration/publicApi/executions.test.ts b/packages/cli/test/integration/publicApi/executions.test.ts index d1c5ff8874..eb5bec5b86 100644 --- a/packages/cli/test/integration/publicApi/executions.test.ts +++ b/packages/cli/test/integration/publicApi/executions.test.ts @@ -1,19 +1,19 @@ import express from 'express'; -import { ActiveWorkflowRunner } from '../../../src'; -import config from '../../../config'; -import { Role } from '../../../src/databases/entities/Role'; -import { randomApiKey } from '../shared/random'; +import config from '@/config'; +import { Role } from '@db/entities/Role'; +import { ActiveWorkflowRunner } from '@/ActiveWorkflowRunner'; +import { randomApiKey } from '../shared/random'; import * as utils from '../shared/utils'; import * as testDb from '../shared/testDb'; -jest.mock('../../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; let globalOwnerRole: Role; -let workflowRunner: ActiveWorkflowRunner.ActiveWorkflowRunner; +let workflowRunner: ActiveWorkflowRunner; beforeAll(async () => { app = await utils.initTestServer({ endpointGroups: ['publicApi'], applyAuth: false }); diff --git a/packages/cli/test/integration/publicApi/workflows.test.ts b/packages/cli/test/integration/publicApi/workflows.test.ts index 46090532d2..6736b3c110 100644 --- a/packages/cli/test/integration/publicApi/workflows.test.ts +++ b/packages/cli/test/integration/publicApi/workflows.test.ts @@ -1,22 +1,23 @@ import express from 'express'; -import { ActiveWorkflowRunner, Db } from '../../../src'; -import config from '../../../config'; -import { Role } from '../../../src/databases/entities/Role'; -import { randomApiKey } from '../shared/random'; +import * as Db from '@/Db'; +import config from '@/config'; +import { Role } from '@db/entities/Role'; +import { TagEntity } from '@db/entities/TagEntity'; +import { ActiveWorkflowRunner } from '@/ActiveWorkflowRunner'; +import { randomApiKey } from '../shared/random'; import * as utils from '../shared/utils'; import * as testDb from '../shared/testDb'; -import { TagEntity } from '../../../src/databases/entities/TagEntity'; let app: express.Application; let testDbName = ''; let globalOwnerRole: Role; let globalMemberRole: Role; let workflowOwnerRole: Role; -let workflowRunner: ActiveWorkflowRunner.ActiveWorkflowRunner; +let workflowRunner: ActiveWorkflowRunner; -jest.mock('../../../src/telemetry'); +jest.mock('@/telemetry'); beforeAll(async () => { app = await utils.initTestServer({ endpointGroups: ['publicApi'], applyAuth: false }); diff --git a/packages/cli/test/integration/shared/constants.ts b/packages/cli/test/integration/shared/constants.ts index 22b49e2109..4196738777 100644 --- a/packages/cli/test/integration/shared/constants.ts +++ b/packages/cli/test/integration/shared/constants.ts @@ -1,4 +1,4 @@ -import config from '../../../config'; +import config from '@/config'; export const REST_PATH_SEGMENT = config.getEnv('endpoints.rest') as Readonly; diff --git a/packages/cli/test/integration/shared/random.ts b/packages/cli/test/integration/shared/random.ts index cdafe0f8d3..1eac084060 100644 --- a/packages/cli/test/integration/shared/random.ts +++ b/packages/cli/test/integration/shared/random.ts @@ -1,5 +1,5 @@ import { randomBytes } from 'crypto'; -import { MAX_PASSWORD_LENGTH, MIN_PASSWORD_LENGTH } from '../../../src/databases/entities/User'; +import { MAX_PASSWORD_LENGTH, MIN_PASSWORD_LENGTH } from '@db/entities/User'; import type { CredentialPayload } from './types'; /** diff --git a/packages/cli/test/integration/shared/testDb.ts b/packages/cli/test/integration/shared/testDb.ts index 9872b29914..5c3029f2c6 100644 --- a/packages/cli/test/integration/shared/testDb.ts +++ b/packages/cli/test/integration/shared/testDb.ts @@ -1,15 +1,15 @@ import { UserSettings } from 'n8n-core'; import { Connection, ConnectionOptions, createConnection, getConnection } from 'typeorm'; -import config from '../../../config'; -import { DatabaseType, Db, ICredentialsDb } from '../../../src'; -import { createCredentialsFromCredentialsEntity } from '../../../src/CredentialsHelper'; -import { entities } from '../../../src/databases/entities'; -import { CredentialsEntity } from '../../../src/databases/entities/CredentialsEntity'; -import { mysqlMigrations } from '../../../src/databases/migrations/mysqldb'; -import { postgresMigrations } from '../../../src/databases/migrations/postgresdb'; -import { sqliteMigrations } from '../../../src/databases/migrations/sqlite'; -import { hashPassword } from '../../../src/UserManagement/UserManagementHelper'; +import config from '@/config'; +import * as Db from '@/Db'; +import { createCredentialsFromCredentialsEntity } from '@/CredentialsHelper'; +import { entities } from '@db/entities'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { mysqlMigrations } from '@db/migrations/mysqldb'; +import { postgresMigrations } from '@db/migrations/postgresdb'; +import { sqliteMigrations } from '@db/migrations/sqlite'; +import { hashPassword } from '@/UserManagement/UserManagementHelper'; import { DB_INITIALIZATION_TIMEOUT, MAPPING_TABLES, MAPPING_TABLES_TO_CLEAR } from './constants'; import { randomApiKey, @@ -21,13 +21,13 @@ import { } from './random'; import { categorize, getPostgresSchemaSection } from './utils'; -import { ExecutionEntity } from '../../../src/databases/entities/ExecutionEntity'; -import { InstalledNodes } from '../../../src/databases/entities/InstalledNodes'; -import { InstalledPackages } from '../../../src/databases/entities/InstalledPackages'; -import type { Role } from '../../../src/databases/entities/Role'; -import { TagEntity } from '../../../src/databases/entities/TagEntity'; -import { User } from '../../../src/databases/entities/User'; -import { WorkflowEntity } from '../../../src/databases/entities/WorkflowEntity'; +import { ExecutionEntity } from '@db/entities/ExecutionEntity'; +import { InstalledNodes } from '@db/entities/InstalledNodes'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; +import type { Role } from '@db/entities/Role'; +import { TagEntity } from '@db/entities/TagEntity'; +import { User } from '@db/entities/User'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; import type { CollectionName, CredentialPayload, @@ -35,6 +35,7 @@ import type { InstalledPackagePayload, MappingName, } from './types'; +import type { DatabaseType, ICredentialsDb } from '@/Interfaces'; export type TestDBType = 'postgres' | 'mysql'; diff --git a/packages/cli/test/integration/shared/types.d.ts b/packages/cli/test/integration/shared/types.d.ts index 1e74ad548f..5a87e96d9d 100644 --- a/packages/cli/test/integration/shared/types.d.ts +++ b/packages/cli/test/integration/shared/types.d.ts @@ -1,9 +1,9 @@ import type { ICredentialDataDecryptedObject, ICredentialNodeAccess } from 'n8n-workflow'; import type { SuperAgentTest } from 'supertest'; -import type { ICredentialsDb, IDatabaseCollections } from '../../../src'; -import type { CredentialsEntity } from '../../../src/databases/entities/CredentialsEntity'; -import type { User } from '../../../src/databases/entities/User'; +import type { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import type { User } from '@db/entities/User'; +import type { ICredentialsDb, IDatabaseCollections } from '@/Interfaces'; import { MAPPING_TABLES } from './constants'; export type CollectionName = keyof IDatabaseCollections; diff --git a/packages/cli/test/integration/shared/utils.ts b/packages/cli/test/integration/shared/utils.ts index 4f23843b91..c716ebe698 100644 --- a/packages/cli/test/integration/shared/utils.ts +++ b/packages/cli/test/integration/shared/utils.ts @@ -22,35 +22,35 @@ import { toCronExpression, TriggerTime, } from 'n8n-workflow'; -import type { N8nApp } from '../../../src/UserManagement/Interfaces'; +import type { N8nApp } from '@/UserManagement/Interfaces'; import superagent from 'superagent'; import request from 'supertest'; import { URL } from 'url'; +import { v4 as uuid } from 'uuid'; -import config from '../../../config'; -import { - ActiveWorkflowRunner, - CredentialTypes, - Db, - ExternalHooks, - InternalHooksManager, - NodeTypes, -} from '../../../src'; -import { meNamespace as meEndpoints } from '../../../src/UserManagement/routes/me'; -import { usersNamespace as usersEndpoints } from '../../../src/UserManagement/routes/users'; -import { authenticationMethods as authEndpoints } from '../../../src/UserManagement/routes/auth'; -import { ownerNamespace as ownerEndpoints } from '../../../src/UserManagement/routes/owner'; -import { passwordResetNamespace as passwordResetEndpoints } from '../../../src/UserManagement/routes/passwordReset'; -import { nodesController } from '../../../src/api/nodes.api'; -import { workflowsController } from '../../../src/workflows/workflows.controller'; -import { AUTH_COOKIE_NAME, NODE_PACKAGE_PREFIX } from '../../../src/constants'; -import { credentialsController } from '../../../src/credentials/credentials.controller'; -import { InstalledPackages } from '../../../src/databases/entities/InstalledPackages'; -import type { User } from '../../../src/databases/entities/User'; -import { getLogger } from '../../../src/Logger'; -import { loadPublicApiVersions } from '../../../src/PublicApi/'; -import { issueJWT } from '../../../src/UserManagement/auth/jwt'; -import { addRoutes as authMiddleware } from '../../../src/UserManagement/routes'; +import config from '@/config'; +import * as Db from '@/Db'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { CredentialTypes } from '@/CredentialTypes'; +import { ExternalHooks } from '@/ExternalHooks'; +import { InternalHooksManager } from '@/InternalHooksManager'; +import { NodeTypes } from '@/NodeTypes'; +import * as ActiveWorkflowRunner from '@/ActiveWorkflowRunner'; +import { meNamespace as meEndpoints } from '@/UserManagement/routes/me'; +import { usersNamespace as usersEndpoints } from '@/UserManagement/routes/users'; +import { authenticationMethods as authEndpoints } from '@/UserManagement/routes/auth'; +import { ownerNamespace as ownerEndpoints } from '@/UserManagement/routes/owner'; +import { passwordResetNamespace as passwordResetEndpoints } from '@/UserManagement/routes/passwordReset'; +import { nodesController } from '@/api/nodes.api'; +import { workflowsController } from '@/workflows/workflows.controller'; +import { AUTH_COOKIE_NAME, NODE_PACKAGE_PREFIX } from '@/constants'; +import { credentialsController } from '@/credentials/credentials.controller'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; +import type { User } from '@db/entities/User'; +import { getLogger } from '@/Logger'; +import { loadPublicApiVersions } from '@/PublicApi/'; +import { issueJWT } from '@/UserManagement/auth/jwt'; +import { addRoutes as authMiddleware } from '@/UserManagement/routes'; import { AUTHLESS_ENDPOINTS, COMMUNITY_NODE_VERSION, @@ -66,8 +66,6 @@ import type { InstalledPackagePayload, PostgresSchemaSection, } from './types'; -import { WorkflowEntity } from '../../../src/databases/entities/WorkflowEntity'; -import { v4 as uuid } from 'uuid'; /** * Initialize a test server. diff --git a/packages/cli/test/integration/users.api.test.ts b/packages/cli/test/integration/users.api.test.ts index 64704c60db..bdd9d6e235 100644 --- a/packages/cli/test/integration/users.api.test.ts +++ b/packages/cli/test/integration/users.api.test.ts @@ -1,13 +1,13 @@ import express from 'express'; import validator from 'validator'; -import config from '../../config'; -import { Db } from '../../src'; -import { CredentialsEntity } from '../../src/databases/entities/CredentialsEntity'; -import type { Role } from '../../src/databases/entities/Role'; -import type { User } from '../../src/databases/entities/User'; -import { WorkflowEntity } from '../../src/databases/entities/WorkflowEntity'; -import { compareHash } from '../../src/UserManagement/UserManagementHelper'; +import config from '@/config'; +import * as Db from '@/Db'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import type { Role } from '@db/entities/Role'; +import type { User } from '@db/entities/User'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { compareHash } from '@/UserManagement/UserManagementHelper'; import { SUCCESS_RESPONSE_BODY } from './shared/constants'; import { randomEmail, @@ -19,11 +19,11 @@ import * as testDb from './shared/testDb'; import type { AuthAgent } from './shared/types'; import * as utils from './shared/utils'; -import * as UserManagementMailer from '../../src/UserManagement/email/UserManagementMailer'; -import { NodeMailer } from '../../src/UserManagement/email/NodeMailer'; +import * as UserManagementMailer from '@/UserManagement/email/UserManagementMailer'; +import { NodeMailer } from '@/UserManagement/email/NodeMailer'; -jest.mock('../../src/telemetry'); -jest.mock('../../src/UserManagement/email/NodeMailer'); +jest.mock('@/telemetry'); +jest.mock('@/UserManagement/email/NodeMailer'); let app: express.Application; let testDbName = ''; @@ -62,7 +62,7 @@ beforeEach(async () => { testDbName, ); - jest.mock('../../config'); + jest.mock('@/config'); config.set('userManagement.disabled', false); config.set('userManagement.isInstanceOwnerSetUp', true); diff --git a/packages/cli/test/integration/workflows.controller.ee.test.ts b/packages/cli/test/integration/workflows.controller.ee.test.ts index 20cbdfcccf..1ba75e0f2f 100644 --- a/packages/cli/test/integration/workflows.controller.ee.test.ts +++ b/packages/cli/test/integration/workflows.controller.ee.test.ts @@ -1,20 +1,19 @@ import express from 'express'; +import { v4 as uuid } from 'uuid'; +import { INode } from 'n8n-workflow'; import * as utils from './shared/utils'; import * as testDb from './shared/testDb'; import { createWorkflow } from './shared/testDb'; -import * as UserManagementHelpers from '../../src/UserManagement/UserManagementHelper'; -import { v4 as uuid } from 'uuid'; - -import type { Role } from '../../src/databases/entities/Role'; -import config from '../../config'; +import * as UserManagementHelpers from '@/UserManagement/UserManagementHelper'; +import type { Role } from '@db/entities/Role'; +import config from '@/config'; import type { AuthAgent, SaveCredentialFunction } from './shared/types'; import { makeWorkflow } from './shared/utils'; import { randomCredentialPayload } from './shared/random'; -import { ActiveWorkflowRunner } from '../../src'; -import { INode } from 'n8n-workflow'; +import { ActiveWorkflowRunner } from '@/ActiveWorkflowRunner'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; @@ -24,7 +23,7 @@ let globalMemberRole: Role; let credentialOwnerRole: Role; let authAgent: AuthAgent; let saveCredential: SaveCredentialFunction; -let workflowRunner: ActiveWorkflowRunner.ActiveWorkflowRunner; +let workflowRunner: ActiveWorkflowRunner; let sharingSpy: jest.SpyInstance; beforeAll(async () => { diff --git a/packages/cli/test/integration/workflows.controller.test.ts b/packages/cli/test/integration/workflows.controller.test.ts index 4288de5c7e..c270288f7e 100644 --- a/packages/cli/test/integration/workflows.controller.test.ts +++ b/packages/cli/test/integration/workflows.controller.test.ts @@ -2,14 +2,13 @@ import express from 'express'; import * as utils from './shared/utils'; import * as testDb from './shared/testDb'; -import { WorkflowEntity } from '../../src/databases/entities/WorkflowEntity'; -import * as UserManagementHelpers from '../../src/UserManagement/UserManagementHelper'; +import * as UserManagementHelpers from '@/UserManagement/UserManagementHelper'; -import type { Role } from '../../src/databases/entities/Role'; +import type { Role } from '@db/entities/Role'; import type { IPinData } from 'n8n-workflow'; import { makeWorkflow, MOCK_PINDATA } from './shared/utils'; -jest.mock('../../src/telemetry'); +jest.mock('@/telemetry'); let app: express.Application; let testDbName = ''; diff --git a/packages/cli/test/teardown.ts b/packages/cli/test/teardown.ts index 259534c76a..07cebbab58 100644 --- a/packages/cli/test/teardown.ts +++ b/packages/cli/test/teardown.ts @@ -1,5 +1,6 @@ +import 'tsconfig-paths/register'; import { createConnection } from 'typeorm'; -import config from '../config'; +import config from '@/config'; import { getBootstrapDBOptions } from './integration/shared/testDb'; export default async () => { diff --git a/packages/cli/test/unit/ActiveExecutions.test.ts b/packages/cli/test/unit/ActiveExecutions.test.ts index 452ee4e1b0..75e233d662 100644 --- a/packages/cli/test/unit/ActiveExecutions.test.ts +++ b/packages/cli/test/unit/ActiveExecutions.test.ts @@ -1,29 +1,35 @@ -import { ActiveExecutions, IWorkflowExecutionDataProcess, Db } from '../../src'; +import * as Db from '@/Db'; +import { ActiveExecutions } from '@/ActiveExecutions'; import { mocked } from 'jest-mock'; import PCancelable from 'p-cancelable'; import { v4 as uuid } from 'uuid'; -import { createDeferredPromise, IDeferredPromise, IExecuteResponsePromiseData, IRun } from 'n8n-workflow'; +import { + createDeferredPromise, + IDeferredPromise, + IExecuteResponsePromiseData, + IRun, +} from 'n8n-workflow'; +import { IWorkflowExecutionDataProcess } from '@/Interfaces'; const FAKE_EXECUTION_ID = '15'; const FAKE_SECOND_EXECUTION_ID = '20'; -jest.mock('../../src/Db', () => { +jest.mock('@/Db', () => { return { collections: { Execution: { - save: jest.fn(async () => Promise.resolve({id: FAKE_EXECUTION_ID})), + save: jest.fn(async () => Promise.resolve({ id: FAKE_EXECUTION_ID })), update: jest.fn(), - } - } + }, + }, }; }); describe('ActiveExecutions', () => { - - let activeExecutions: ActiveExecutions.ActiveExecutions; + let activeExecutions: ActiveExecutions; beforeEach(() => { - activeExecutions = new ActiveExecutions.ActiveExecutions(); + activeExecutions = new ActiveExecutions(); }); afterEach(() => { @@ -46,7 +52,11 @@ describe('ActiveExecutions', () => { test('Should update execution if add is called with execution ID', async () => { const newExecution = mockExecutionData(); - const executionId = await activeExecutions.add(newExecution, undefined, FAKE_SECOND_EXECUTION_ID); + const executionId = await activeExecutions.add( + newExecution, + undefined, + FAKE_SECOND_EXECUTION_ID, + ); expect(executionId).toBe(FAKE_SECOND_EXECUTION_ID); expect(activeExecutions.getActiveExecutions().length).toBe(1); @@ -67,7 +77,9 @@ describe('ActiveExecutions', () => { await activeExecutions.add(newExecution, undefined, FAKE_EXECUTION_ID); const deferredPromise = mockCancelablePromise(); - expect(() => activeExecutions.attachWorkflowExecution(FAKE_EXECUTION_ID, deferredPromise)).not.toThrow(); + expect(() => + activeExecutions.attachWorkflowExecution(FAKE_EXECUTION_ID, deferredPromise), + ).not.toThrow(); }); test('Should attach and resolve response promise to existing execution', async () => { @@ -75,7 +87,7 @@ describe('ActiveExecutions', () => { await activeExecutions.add(newExecution, undefined, FAKE_EXECUTION_ID); const deferredPromise = await mockDeferredPromise(); activeExecutions.attachResponsePromise(FAKE_EXECUTION_ID, deferredPromise); - const fakeResponse = {data: {resultData: {runData: {}}}}; + const fakeResponse = { data: { resultData: { runData: {} } } }; activeExecutions.resolveResponsePromise(FAKE_EXECUTION_ID, fakeResponse); expect(deferredPromise.promise()).resolves.toEqual(fakeResponse); @@ -103,10 +115,8 @@ describe('ActiveExecutions', () => { expect(postExecutePromise).resolves.toEqual(fakeOutput); }); - test('Should throw error when trying to create a promise with invalid execution', async() => { - expect( - activeExecutions.getPostExecutePromise(FAKE_EXECUTION_ID) - ).rejects.toThrow(); + test('Should throw error when trying to create a promise with invalid execution', async () => { + expect(activeExecutions.getPostExecutePromise(FAKE_EXECUTION_ID)).rejects.toThrow(); }); test('Should call function to cancel execution when asked to stop', async () => { @@ -120,7 +130,6 @@ describe('ActiveExecutions', () => { expect(cancelExecution).toHaveBeenCalledTimes(1); }); - }); function mockExecutionData(): IWorkflowExecutionDataProcess { @@ -132,18 +141,18 @@ function mockExecutionData(): IWorkflowExecutionDataProcess { createdAt: new Date(), updatedAt: new Date(), nodes: [], - connections: {} + connections: {}, }, userId: uuid(), - } + }; } function mockFullRunData(): IRun { return { data: { resultData: { - runData: {} - } + runData: {}, + }, }, mode: 'manual', startedAt: new Date(), @@ -159,4 +168,3 @@ function mockCancelablePromise(): PCancelable { function mockDeferredPromise(): Promise> { return createDeferredPromise(); } - diff --git a/packages/cli/test/unit/CommunityNodeHelpers.test.ts b/packages/cli/test/unit/CommunityNodeHelpers.test.ts index 1724ae5293..6cb69d0085 100644 --- a/packages/cli/test/unit/CommunityNodeHelpers.test.ts +++ b/packages/cli/test/unit/CommunityNodeHelpers.test.ts @@ -11,20 +11,20 @@ import { matchMissingPackages, hasPackageLoaded, removePackageFromMissingList, -} from '../../src/CommunityNodes/helpers'; +} from '@/CommunityNodes/helpers'; import { NODE_PACKAGE_PREFIX, NPM_COMMAND_TOKENS, NPM_PACKAGE_STATUS_GOOD, RESPONSE_ERROR_MESSAGES, -} from '../../src/constants'; -import { InstalledPackages } from '../../src/databases/entities/InstalledPackages'; -import { InstalledNodes } from '../../src/databases/entities/InstalledNodes'; +} from '@/constants'; +import { InstalledPackages } from '@db/entities/InstalledPackages'; +import { InstalledNodes } from '@db/entities/InstalledNodes'; import { randomName } from '../integration/shared/random'; -import config from '../../config'; +import config from '@/config'; import { installedPackagePayload, installedNodePayload } from '../integration/shared/utils'; -import type { CommunityPackages } from '../../src/Interfaces'; +import type { CommunityPackages } from '@/Interfaces'; jest.mock('fs/promises'); jest.mock('child_process'); diff --git a/packages/cli/test/unit/CredentialTypes.test.ts b/packages/cli/test/unit/CredentialTypes.test.ts index e074504676..3fdb88a894 100644 --- a/packages/cli/test/unit/CredentialTypes.test.ts +++ b/packages/cli/test/unit/CredentialTypes.test.ts @@ -1,8 +1,7 @@ -import { CredentialTypes } from '../../src'; import type { ICredentialTypeData, ICredentialTypes } from 'n8n-workflow'; +import { CredentialTypes } from '@/CredentialTypes'; describe('ActiveExecutions', () => { - let credentialTypes: ICredentialTypes; beforeEach(() => { @@ -35,7 +34,9 @@ describe('ActiveExecutions', () => { test('Should return correct credential type for valid name', () => { credentialTypes.init(mockCredentialTypes()); const mockedCredentialTypes = mockCredentialTypes(); - expect(credentialTypes.getByName('fakeFirstCredential')).toStrictEqual(mockedCredentialTypes.fakeFirstCredential.type); + expect(credentialTypes.getByName('fakeFirstCredential')).toStrictEqual( + mockedCredentialTypes.fakeFirstCredential.type, + ); }); }); diff --git a/packages/cli/test/unit/CredentialsHelper.test.ts b/packages/cli/test/unit/CredentialsHelper.test.ts index b766804000..7ad8c9fc49 100644 --- a/packages/cli/test/unit/CredentialsHelper.test.ts +++ b/packages/cli/test/unit/CredentialsHelper.test.ts @@ -1,5 +1,3 @@ -import { CredentialsHelper, CredentialTypes } from '../../src'; -import * as Helpers from './Helpers'; import { IAuthenticateGeneric, ICredentialDataDecryptedObject, @@ -10,6 +8,9 @@ import { INodeProperties, Workflow, } from 'n8n-workflow'; +import { CredentialsHelper } from '@/CredentialsHelper'; +import { CredentialTypes } from '@/CredentialTypes'; +import * as Helpers from './Helpers'; const TEST_ENCRYPTION_KEY = 'test'; diff --git a/packages/cli/test/unit/CurlConverterHelper.test.ts b/packages/cli/test/unit/CurlConverterHelper.test.ts index d83bd19c19..dd492bfdca 100644 --- a/packages/cli/test/unit/CurlConverterHelper.test.ts +++ b/packages/cli/test/unit/CurlConverterHelper.test.ts @@ -1,9 +1,9 @@ -import { toHttpNodeParameters } from "../../src/CurlConverterHelper"; +import { toHttpNodeParameters } from '@/CurlConverterHelper'; describe('CurlConverterHelper', () => { - test('Should parse form-urlencoded content type correctly', () => { - const curl = 'curl -X POST https://reqbin.com/echo/post/form -H "Content-Type: application/x-www-form-urlencoded" -d "param1=value1¶m2=value2"'; + const curl = + 'curl -X POST https://reqbin.com/echo/post/form -H "Content-Type: application/x-www-form-urlencoded" -d "param1=value1¶m2=value2"'; const parameters = toHttpNodeParameters(curl); expect(parameters.url).toBe('https://reqbin.com/echo/post/form'); expect(parameters.sendBody).toBe(true); @@ -113,7 +113,9 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); }); test('Should parse location flag with --location', () => { @@ -125,7 +127,9 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); expect(parameters.options.redirect.redirect.followRedirects).toBe(true); }); @@ -138,7 +142,9 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); expect(parameters.options.redirect.redirect.followRedirects).toBe(true); }); @@ -151,9 +157,11 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); expect(parameters.options.redirect.redirect.followRedirects).toBe(true); - expect(parameters.options.redirect.redirect.maxRedirects).toBe("10"); + expect(parameters.options.redirect.redirect.maxRedirects).toBe('10'); }); test('Should parse proxy flag -x', () => { @@ -165,7 +173,9 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); expect(parameters.options.proxy).toBe('https://google.com'); }); @@ -178,7 +188,9 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); expect(parameters.options.proxy).toBe('https://google.com'); }); @@ -191,7 +203,9 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); expect(parameters.options.response.response.fullResponse).toBe(true); }); @@ -204,7 +218,9 @@ describe('CurlConverterHelper', () => { expect(parameters.sendQuery).toBe(false); expect(parameters.sendHeaders).toBe(true); expect(parameters.headerParameters?.parameters[0].name).toBe('authorization'); - expect(parameters.headerParameters?.parameters[0].value).toBe(`Basic ${Buffer.from('login:password').toString('base64')}`); + expect(parameters.headerParameters?.parameters[0].value).toBe( + `Basic ${Buffer.from('login:password').toString('base64')}`, + ); expect(parameters.options.response.response.fullResponse).toBe(true); }); @@ -235,13 +251,13 @@ describe('CurlConverterHelper', () => { test('Should parse download file flag -O', () => { const curl = `curl --request POST https://reqbin.com/echo -u "login:password" -O`; -; const parameters = toHttpNodeParameters(curl); + const parameters = toHttpNodeParameters(curl); expect(parameters.url).toBe('https://reqbin.com/echo'); expect(parameters.method).toBe('POST'); expect(parameters.sendBody).toBe(false); expect(parameters.options.response.response.responseFormat).toBe('file'); expect(parameters.options.response.response.outputPropertyName).toBe('data'); - }) + }); test('Should parse download file flag -o', () => { const curl = `curl --request POST https://reqbin.com/echo -u "login:password" -o`; @@ -251,7 +267,7 @@ describe('CurlConverterHelper', () => { expect(parameters.sendBody).toBe(false); expect(parameters.options.response.response.responseFormat).toBe('file'); expect(parameters.options.response.response.outputPropertyName).toBe('data'); - }) + }); test('Should parse ignore SSL flag -k', () => { const curl = `curl --request POST https://reqbin.com/echo -u "login:password" -k`; @@ -260,7 +276,7 @@ describe('CurlConverterHelper', () => { expect(parameters.method).toBe('POST'); expect(parameters.sendBody).toBe(false); expect(parameters.options.allowUnauthorizedCerts).toBe(true); - }) + }); test('Should parse ignore SSL flag --insecure', () => { const curl = `curl --request POST https://reqbin.com/echo -u "login:password" --insecure`; @@ -269,6 +285,5 @@ describe('CurlConverterHelper', () => { expect(parameters.method).toBe('POST'); expect(parameters.sendBody).toBe(false); expect(parameters.options.allowUnauthorizedCerts).toBe(true); - }) + }); }); - diff --git a/packages/cli/test/unit/Telemetry.test.ts b/packages/cli/test/unit/Telemetry.test.ts index 888aec6166..94c8ffeb9c 100644 --- a/packages/cli/test/unit/Telemetry.test.ts +++ b/packages/cli/test/unit/Telemetry.test.ts @@ -1,5 +1,5 @@ -import { Telemetry } from '../../src/telemetry'; -import config from '../../config'; +import { Telemetry } from '@/telemetry'; +import config from '@/config'; jest.spyOn(Telemetry.prototype as any, 'initRudderStack').mockImplementation(() => { return { diff --git a/packages/cli/test/unit/WorkflowCredentials.test.ts b/packages/cli/test/unit/WorkflowCredentials.test.ts index 22185b8003..82bb3ee27a 100644 --- a/packages/cli/test/unit/WorkflowCredentials.test.ts +++ b/packages/cli/test/unit/WorkflowCredentials.test.ts @@ -1,10 +1,17 @@ -import { WorkflowCredentials, Db } from '../../src'; import { mocked } from 'jest-mock'; -import type { IRun, INode, IWorkflowCredentials, IDataObject } from 'n8n-workflow'; +import type { INode, IWorkflowCredentials } from 'n8n-workflow'; +import * as Db from '@/Db'; +import { WorkflowCredentials } from '@/WorkflowCredentials'; // Define a function used to mock the findOne function -async function mockFind({ id, type }): Promise { - // Simple statement that maps a return value based on the `id` paremeter +async function mockFind({ + id, + type, +}: { + id: string | number; + type: string; +}): Promise { + // Simple statement that maps a return value based on the `id` parameter if (id === notFoundNode.credentials!!.test.id) { return null; } @@ -22,7 +29,7 @@ async function mockFind({ id, type }): Promise { }; } -jest.mock('../../src/Db', () => { +jest.mock('@/Db', () => { return { collections: { Credentials: { diff --git a/packages/cli/test/unit/WorkflowHelpers.test.ts b/packages/cli/test/unit/WorkflowHelpers.test.ts index 1ff6df8724..fc206d0d40 100644 --- a/packages/cli/test/unit/WorkflowHelpers.test.ts +++ b/packages/cli/test/unit/WorkflowHelpers.test.ts @@ -1,11 +1,8 @@ import { INode, LoggerProxy } from 'n8n-workflow'; -import { WorkflowEntity } from '../../src/databases/entities/WorkflowEntity'; -import { CredentialsEntity } from '../../src/databases/entities/CredentialsEntity'; -import { - getNodesWithInaccessibleCreds, - validateWorkflowCredentialUsage, -} from '../../src/WorkflowHelpers'; -import { getLogger } from '../../src/Logger'; +import { WorkflowEntity } from '@db/entities/WorkflowEntity'; +import { CredentialsEntity } from '@db/entities/CredentialsEntity'; +import { getNodesWithInaccessibleCreds, validateWorkflowCredentialUsage } from '@/WorkflowHelpers'; +import { getLogger } from '@/Logger'; const FIRST_CREDENTIAL_ID = '1'; const SECOND_CREDENTIAL_ID = '2'; diff --git a/packages/cli/tsconfig.build.json b/packages/cli/tsconfig.build.json new file mode 100644 index 0000000000..c8f44354c7 --- /dev/null +++ b/packages/cli/tsconfig.build.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "types": ["node"], + "noEmit": false, + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "include": ["src/**/*.ts"], + "exclude": ["test/**"] +} diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 5f3b004a1e..6dda22b70d 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -1,14 +1,25 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "dist", + "rootDir": ".", "types": ["node", "jest"], + "noEmit": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, + "baseUrl": "src", + "paths": { + "@/*": ["./*"], + "@db/*": ["./databases/*"] + }, + "tsBuildInfoFile": "dist/typecheck.tsbuildinfo", // TODO: remove all options below this line "strict": false, "noUnusedLocals": false, "useUnknownInCatchVariables": false }, - "include": ["**/*.d.ts", "commands/**/*", "config/**/*", "src/**/*"] + "include": ["src/**/*.ts", "test/**/*.ts"], + "references": [ + { "path": "../workflow/tsconfig.build.json" }, + { "path": "../core/tsconfig.build.json" } + ] } diff --git a/packages/core/.eslintrc.js b/packages/core/.eslintrc.js index 2055297741..9ce181979f 100644 --- a/packages/core/.eslintrc.js +++ b/packages/core/.eslintrc.js @@ -3,6 +3,12 @@ */ module.exports = { extends: ['@n8n_io/eslint-config/node'], + + parserOptions: { + project: ['./tsconfig.json'], + tsconfigRootDir: __dirname, + }, + rules: { // TODO: Remove this 'import/order': 'off', diff --git a/packages/core/package.json b/packages/core/package.json index 8645fd40a0..4d544f2563 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -12,10 +12,11 @@ "type": "git", "url": "git+https://github.com/n8n-io/n8n.git" }, - "main": "dist/src/index", - "types": "dist/src/index.d.ts", + "main": "dist/index", + "types": "dist/index.d.ts", "scripts": { - "build": "tsc", + "typecheck": "tsc", + "build": "tsc -p tsconfig.build.json", "dev": "npm run watch", "format": "cd ../.. && node_modules/prettier/bin-prettier.js packages/core/**/**.ts --write", "lint": "eslint .", diff --git a/packages/core/src/ActiveWebhooks.ts b/packages/core/src/ActiveWebhooks.ts index cd8f86e117..954868e7dc 100644 --- a/packages/core/src/ActiveWebhooks.ts +++ b/packages/core/src/ActiveWebhooks.ts @@ -6,8 +6,7 @@ import { WorkflowExecuteMode, } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle -import { NodeExecuteFunctions } from '.'; +import * as NodeExecuteFunctions from './NodeExecuteFunctions'; export class ActiveWebhooks { private workflowWebhooks: { diff --git a/packages/core/src/ActiveWorkflows.ts b/packages/core/src/ActiveWorkflows.ts index 344ada4067..c935ba8f24 100644 --- a/packages/core/src/ActiveWorkflows.ts +++ b/packages/core/src/ActiveWorkflows.ts @@ -20,8 +20,7 @@ import { WorkflowExecuteMode, } from 'n8n-workflow'; -// eslint-disable-next-line import/no-cycle -import type { IWorkflowData } from '.'; +import type { IWorkflowData } from './Interfaces'; export class ActiveWorkflows { private workflowData: { diff --git a/packages/core/src/LoadNodeListSearch.ts b/packages/core/src/LoadNodeListSearch.ts index 6676aa814f..bac92c269b 100644 --- a/packages/core/src/LoadNodeListSearch.ts +++ b/packages/core/src/LoadNodeListSearch.ts @@ -1,6 +1,6 @@ import type { INodeListSearchResult, IWorkflowExecuteAdditionalData } from 'n8n-workflow'; -import { NodeExecuteFunctions } from '.'; +import * as NodeExecuteFunctions from './NodeExecuteFunctions'; import { LoadNodeDetails } from './LoadNodeDetails'; export class LoadNodeListSearch extends LoadNodeDetails { diff --git a/packages/core/src/LoadNodeParameterOptions.ts b/packages/core/src/LoadNodeParameterOptions.ts index 37781faff6..08bb862a0c 100644 --- a/packages/core/src/LoadNodeParameterOptions.ts +++ b/packages/core/src/LoadNodeParameterOptions.ts @@ -10,7 +10,7 @@ import { RoutingNode, } from 'n8n-workflow'; -import { NodeExecuteFunctions } from '.'; +import * as NodeExecuteFunctions from './NodeExecuteFunctions'; import { LoadNodeDetails } from './LoadNodeDetails'; export class LoadNodeParameterOptions extends LoadNodeDetails { diff --git a/packages/core/src/NodeExecuteFunctions.ts b/packages/core/src/NodeExecuteFunctions.ts index f972954a19..38af75fefe 100644 --- a/packages/core/src/NodeExecuteFunctions.ts +++ b/packages/core/src/NodeExecuteFunctions.ts @@ -81,7 +81,7 @@ import { OptionsWithUri, OptionsWithUrl, RequestCallback, RequiredUriUrl } from import requestPromise, { RequestPromiseOptions } from 'request-promise-native'; import { fromBuffer } from 'file-type'; import { lookup } from 'mime-types'; - +import { IncomingHttpHeaders } from 'http'; import axios, { AxiosError, AxiosPromise, @@ -92,18 +92,16 @@ import axios, { } from 'axios'; import url, { URL, URLSearchParams } from 'url'; import { BinaryDataManager } from './BinaryDataManager'; -// eslint-disable-next-line import/no-cycle import { ICredentialTestFunctions, IHookFunctions, ILoadOptionsFunctions, IResponseError, IWorkflowSettings, - PLACEHOLDER_EMPTY_EXECUTION_ID, -} from '.'; +} from './Interfaces'; import { extractValue } from './ExtractValue'; import { getClientCredentialsToken } from './OAuth2Helper'; -import { IncomingHttpHeaders } from 'http'; +import { PLACEHOLDER_EMPTY_EXECUTION_ID } from './Constants'; axios.defaults.timeout = 300000; // Prevent axios from adding x-form-www-urlencoded headers by default diff --git a/packages/core/src/UserSettings.ts b/packages/core/src/UserSettings.ts index 11f93f708d..4ba0bcae59 100644 --- a/packages/core/src/UserSettings.ts +++ b/packages/core/src/UserSettings.ts @@ -5,21 +5,18 @@ import fs from 'fs'; import path from 'path'; import { createHash, randomBytes } from 'crypto'; -// eslint-disable-next-line import/no-cycle +import { promisify } from 'util'; +import { deepCopy } from 'n8n-workflow'; import { ENCRYPTION_KEY_ENV_OVERWRITE, EXTENSIONS_SUBDIRECTORY, DOWNLOADED_NODES_SUBDIRECTORY, - IUserSettings, RESPONSE_ERROR_MESSAGES, USER_FOLDER_ENV_OVERWRITE, USER_SETTINGS_FILE_NAME, USER_SETTINGS_SUBFOLDER, -} from '.'; -import { deepCopy } from 'n8n-workflow'; - -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { promisify } = require('util'); +} from './Constants'; +import type { IUserSettings } from './Interfaces'; const fsAccess = promisify(fs.access); const fsReadFile = promisify(fs.readFile); diff --git a/packages/core/src/WorkflowExecute.ts b/packages/core/src/WorkflowExecute.ts index 6f8318f7fd..9cbf6334d6 100644 --- a/packages/core/src/WorkflowExecute.ts +++ b/packages/core/src/WorkflowExecute.ts @@ -39,8 +39,7 @@ import { } from 'n8n-workflow'; // eslint-disable-next-line import/no-extraneous-dependencies import { get } from 'lodash'; -// eslint-disable-next-line import/no-cycle -import { NodeExecuteFunctions } from '.'; +import * as NodeExecuteFunctions from './NodeExecuteFunctions'; export class WorkflowExecute { runExecutionData: IRunExecutionData; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index e5fda891e8..88d41b6214 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ import * as NodeExecuteFunctions from './NodeExecuteFunctions'; import * as UserSettings from './UserSettings'; diff --git a/packages/core/test/Credentials.test.ts b/packages/core/test/Credentials.test.ts index 860c842341..e2794b6c24 100644 --- a/packages/core/test/Credentials.test.ts +++ b/packages/core/test/Credentials.test.ts @@ -1,4 +1,4 @@ -import { Credentials } from '../src'; +import { Credentials } from '@/Credentials'; describe('Credentials', () => { describe('without nodeType set', () => { diff --git a/packages/core/test/Helpers.ts b/packages/core/test/Helpers.ts index bc510015a1..7d43f1ade1 100644 --- a/packages/core/test/Helpers.ts +++ b/packages/core/test/Helpers.ts @@ -23,8 +23,8 @@ import { NodeParameterValue, WorkflowHooks, } from 'n8n-workflow'; - -import { Credentials, IExecuteFunctions } from '../src'; +import { Credentials } from '@/Credentials'; +import { IExecuteFunctions } from '@/Interfaces'; export class CredentialsHelper extends ICredentialsHelper { async authenticate( diff --git a/packages/core/test/NodeExecuteFunctions.test.ts b/packages/core/test/NodeExecuteFunctions.test.ts index c3ec81a180..731db0061a 100644 --- a/packages/core/test/NodeExecuteFunctions.test.ts +++ b/packages/core/test/NodeExecuteFunctions.test.ts @@ -2,8 +2,9 @@ import { join } from 'path'; import { tmpdir } from 'os'; import { readFileSync, mkdtempSync } from 'fs'; -import { BinaryDataManager, NodeExecuteFunctions } from '../src'; import { IBinaryData, ITaskDataConnections } from 'n8n-workflow'; +import { BinaryDataManager } from '@/BinaryDataManager'; +import * as NodeExecuteFunctions from '@/NodeExecuteFunctions'; const temporaryDir = mkdtempSync(join(tmpdir(), 'n8n')); diff --git a/packages/core/test/WorkflowExecute.test.ts b/packages/core/test/WorkflowExecute.test.ts index 54873ca8ba..b80a7e0a5b 100644 --- a/packages/core/test/WorkflowExecute.test.ts +++ b/packages/core/test/WorkflowExecute.test.ts @@ -7,8 +7,7 @@ import { LoggerProxy, Workflow, } from 'n8n-workflow'; - -import { WorkflowExecute } from '../src'; +import { WorkflowExecute } from '@/WorkflowExecute'; import * as Helpers from './Helpers'; diff --git a/packages/core/tsconfig.build.json b/packages/core/tsconfig.build.json new file mode 100644 index 0000000000..c8f44354c7 --- /dev/null +++ b/packages/core/tsconfig.build.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "types": ["node"], + "noEmit": false, + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "include": ["src/**/*.ts"], + "exclude": ["test/**"] +} diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index d90855aab0..69536da448 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -2,10 +2,17 @@ "extends": "../../tsconfig.json", "compilerOptions": { "rootDir": ".", - "outDir": "dist", "types": ["node", "jest"], + "composite": true, + "noEmit": true, + "baseUrl": "src", + "paths": { + "@/*": ["./*"] + }, + "tsBuildInfoFile": "dist/typecheck.tsbuildinfo", // TODO: remove all options below this line "useUnknownInCatchVariables": false }, - "include": ["src/**/*.ts"] + "include": ["src/**/*.ts", "test/**/*.ts"], + "references": [{ "path": "../workflow/tsconfig.build.json" }] } diff --git a/packages/workflow/.eslintrc.js b/packages/workflow/.eslintrc.js index e2623ca9aa..d1043d52a0 100644 --- a/packages/workflow/.eslintrc.js +++ b/packages/workflow/.eslintrc.js @@ -3,6 +3,12 @@ */ module.exports = { extends: ['@n8n_io/eslint-config/base'], + + parserOptions: { + project: ['./tsconfig.json'], + tsconfigRootDir: __dirname, + }, + rules: { 'import/order': 'off', // TODO: remove this }, diff --git a/packages/workflow/package.json b/packages/workflow/package.json index 8e31cdfa60..3c20414b30 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -12,20 +12,21 @@ "type": "git", "url": "git+https://github.com/n8n-io/n8n.git" }, - "main": "dist/src/index.js", + "main": "dist/index.js", "module": "src/index.ts", - "types": "dist/src/index.d.ts", + "types": "dist/index.d.ts", "exports": { ".": { - "require": "./dist/src/index.js", + "require": "./dist/index.js", "import": "./src/index.ts", - "types": "./dist/src/index.d.ts" + "types": "./dist/index.d.ts" }, "./*": "./*" }, "scripts": { "dev": "npm run watch", - "build": "tsc", + "typecheck": "tsc", + "build": "tsc -p tsconfig.build.json", "format": "cd ../.. && node_modules/prettier/bin-prettier.js packages/workflow/**/**.ts --write", "lint": "eslint .", "lintfix": "eslint . --fix", diff --git a/packages/workflow/src/ExpressionError.ts b/packages/workflow/src/ExpressionError.ts index 245034dfca..2704a99a82 100644 --- a/packages/workflow/src/ExpressionError.ts +++ b/packages/workflow/src/ExpressionError.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-cycle */ import { IDataObject } from './Interfaces'; import { ExecutionBaseError } from './NodeErrors'; diff --git a/packages/workflow/src/RoutingNode.ts b/packages/workflow/src/RoutingNode.ts index 1c645923c0..7505c8ea08 100644 --- a/packages/workflow/src/RoutingNode.ts +++ b/packages/workflow/src/RoutingNode.ts @@ -43,7 +43,7 @@ import { import { NodeApiError, NodeOperationError } from './NodeErrors'; import * as NodeHelpers from './NodeHelpers'; -import type { Workflow } from '.'; +import type { Workflow } from './Workflow'; export class RoutingNode { additionalData: IWorkflowExecuteAdditionalData; diff --git a/packages/workflow/test/Cron.test.ts b/packages/workflow/test/Cron.test.ts index b4139df461..d1e48f9f85 100644 --- a/packages/workflow/test/Cron.test.ts +++ b/packages/workflow/test/Cron.test.ts @@ -1,4 +1,4 @@ -import { toCronExpression } from '../src/Cron'; +import { toCronExpression } from '@/Cron'; describe('Cron', () => { describe('toCronExpression', () => { diff --git a/packages/workflow/test/Expression.test.ts b/packages/workflow/test/Expression.test.ts index cba4ff4e4b..7d33dc15ef 100644 --- a/packages/workflow/test/Expression.test.ts +++ b/packages/workflow/test/Expression.test.ts @@ -2,9 +2,10 @@ * @jest-environment jsdom */ -import { Expression, Workflow } from '../src'; -import * as Helpers from './Helpers'; import { DateTime, Duration, Interval } from 'luxon'; +import { Expression } from '@/Expression'; +import { Workflow } from '@/Workflow'; +import * as Helpers from './Helpers'; describe('Expression', () => { describe('getParameterValue()', () => { diff --git a/packages/workflow/test/Helpers.ts b/packages/workflow/test/Helpers.ts index b423d93d9f..bf0a00934e 100644 --- a/packages/workflow/test/Helpers.ts +++ b/packages/workflow/test/Helpers.ts @@ -1,13 +1,11 @@ import get from 'lodash.get'; -import { +import type { CredentialInformation, IAdditionalCredentialOptions, IAllExecuteFunctions, IContextObject, ICredentialDataDecryptedObject, - ICredentials, ICredentialsEncrypted, - ICredentialsHelper, IDataObject, IExecuteData, IExecuteFunctions, @@ -32,13 +30,14 @@ import { IWorkflowDataProxyAdditionalKeys, IWorkflowDataProxyData, IWorkflowExecuteAdditionalData, - NodeHelpers, NodeParameterValue, - Workflow, - WorkflowDataProxy, WorkflowExecuteMode, - WorkflowHooks, -} from '../src'; +} from '@/Interfaces'; +import { ICredentials, ICredentialsHelper } from '@/Interfaces'; +import { Workflow } from '@/Workflow'; +import { WorkflowDataProxy } from '@/WorkflowDataProxy'; +import { WorkflowHooks } from '@/WorkflowHooks'; +import * as NodeHelpers from '@/NodeHelpers'; export interface INodeTypesObject { [key: string]: INodeType; diff --git a/packages/workflow/test/NodeHelpers.test.ts b/packages/workflow/test/NodeHelpers.test.ts index ad7c1cbb22..0814bf40f0 100644 --- a/packages/workflow/test/NodeHelpers.test.ts +++ b/packages/workflow/test/NodeHelpers.test.ts @@ -1,6 +1,7 @@ -import { INodeParameters, INodeProperties, NodeHelpers } from '../src'; +import type { INodeParameters, INodeProperties } from '@/Interfaces'; +import { getNodeParameters } from '@/NodeHelpers'; -describe('Workflow', () => { +describe('NodeHelpers', () => { describe('getParameterValue', () => { const tests: Array<{ description: string; @@ -3340,7 +3341,7 @@ describe('Workflow', () => { for (const testData of tests) { test(testData.description, () => { // returnDefaults: false | returnNoneDisplayed: false - let result = NodeHelpers.getNodeParameters( + let result = getNodeParameters( testData.input.nodePropertiesArray, testData.input.nodeValues, false, @@ -3350,7 +3351,7 @@ describe('Workflow', () => { expect(result).toEqual(testData.output.noneDisplayedFalse.defaultsFalse); // returnDefaults: true | returnNoneDisplayed: false - result = NodeHelpers.getNodeParameters( + result = getNodeParameters( testData.input.nodePropertiesArray, testData.input.nodeValues, true, @@ -3360,7 +3361,7 @@ describe('Workflow', () => { expect(result).toEqual(testData.output.noneDisplayedFalse.defaultsTrue); // returnDefaults: false | returnNoneDisplayed: true - result = NodeHelpers.getNodeParameters( + result = getNodeParameters( testData.input.nodePropertiesArray, testData.input.nodeValues, false, @@ -3370,7 +3371,7 @@ describe('Workflow', () => { expect(result).toEqual(testData.output.noneDisplayedTrue.defaultsFalse); // returnDefaults: true | returnNoneDisplayed: true - result = NodeHelpers.getNodeParameters( + result = getNodeParameters( testData.input.nodePropertiesArray, testData.input.nodeValues, true, diff --git a/packages/workflow/test/ObservableObject.test.ts b/packages/workflow/test/ObservableObject.test.ts index 2aa4f3e21a..1cbf6d0029 100644 --- a/packages/workflow/test/ObservableObject.test.ts +++ b/packages/workflow/test/ObservableObject.test.ts @@ -1,4 +1,5 @@ -import { IDataObject, ObservableObject } from '../src'; +import type { IDataObject } from '@/Interfaces'; +import * as ObservableObject from '@/ObservableObject'; describe('ObservableObject', () => { test('should recognize that item on parent level got added (init empty)', () => { diff --git a/packages/workflow/test/RoutingNode.test.ts b/packages/workflow/test/RoutingNode.test.ts index 2725527159..7eb9a1f9be 100644 --- a/packages/workflow/test/RoutingNode.test.ts +++ b/packages/workflow/test/RoutingNode.test.ts @@ -1,11 +1,9 @@ -import { +import type { INode, INodeExecutionData, INodeParameters, DeclarativeRestApiSettings, IRunExecutionData, - RoutingNode, - Workflow, INodeProperties, IDataObject, IExecuteSingleFunctions, @@ -17,7 +15,9 @@ import { INodeCredentialDescription, IExecuteData, INodeTypeDescription, -} from '../src'; +} from '@/Interfaces'; +import { RoutingNode } from '@/RoutingNode'; +import { Workflow } from '@/Workflow'; import * as Helpers from './Helpers'; diff --git a/packages/workflow/test/TelemetryHelpers.test.ts b/packages/workflow/test/TelemetryHelpers.test.ts index 8b7cceab8c..763d528d98 100644 --- a/packages/workflow/test/TelemetryHelpers.test.ts +++ b/packages/workflow/test/TelemetryHelpers.test.ts @@ -1,9 +1,5 @@ import { v5 as uuidv5, v3 as uuidv3, v4 as uuidv4, v1 as uuidv1 } from 'uuid'; -import { - ANONYMIZATION_CHARACTER as CHAR, - getDomainBase, - getDomainPath, -} from '../src/TelemetryHelpers'; +import { ANONYMIZATION_CHARACTER as CHAR, getDomainBase, getDomainPath } from '@/TelemetryHelpers'; describe('getDomainBase should return protocol plus domain', () => { test('in valid URLs', () => { diff --git a/packages/workflow/test/Workflow.test.ts b/packages/workflow/test/Workflow.test.ts index 8b07046ebd..2f8fa01254 100644 --- a/packages/workflow/test/Workflow.test.ts +++ b/packages/workflow/test/Workflow.test.ts @@ -1,4 +1,4 @@ -import { +import type { IBinaryKeyData, IConnections, IDataObject, @@ -7,8 +7,8 @@ import { INodeParameters, IRunExecutionData, NodeParameterValueType, - Workflow, -} from '../src'; +} from '@/Interfaces'; +import { Workflow } from '@/Workflow'; process.env.TEST_VARIABLE_1 = 'valueEnvVariable1'; diff --git a/packages/workflow/test/WorkflowDataProxy.test.ts b/packages/workflow/test/WorkflowDataProxy.test.ts index 16980fd367..f3f360ac77 100644 --- a/packages/workflow/test/WorkflowDataProxy.test.ts +++ b/packages/workflow/test/WorkflowDataProxy.test.ts @@ -1,6 +1,7 @@ -import { Workflow, WorkflowDataProxy } from '../src'; +import { IConnections, IExecuteData, INode, IRunExecutionData } from '@/Interfaces'; +import { Workflow } from '@/Workflow'; +import { WorkflowDataProxy } from '@/WorkflowDataProxy'; import * as Helpers from './Helpers'; -import { IConnections, IExecuteData, INode, IRunExecutionData } from '../src/Interfaces'; describe('WorkflowDataProxy', () => { describe('test data proxy', () => { diff --git a/packages/workflow/test/utils.test.ts b/packages/workflow/test/utils.test.ts index 9fe8a6d490..04cfe0da58 100644 --- a/packages/workflow/test/utils.test.ts +++ b/packages/workflow/test/utils.test.ts @@ -1,4 +1,4 @@ -import { jsonParse, deepCopy } from '../src/utils'; +import { jsonParse, deepCopy } from '@/utils'; describe('jsonParse', () => { it('parses JSON', () => { diff --git a/packages/workflow/tsconfig.build.json b/packages/workflow/tsconfig.build.json new file mode 100644 index 0000000000..c8f44354c7 --- /dev/null +++ b/packages/workflow/tsconfig.build.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "types": ["node"], + "noEmit": false, + "tsBuildInfoFile": "dist/build.tsbuildinfo" + }, + "include": ["src/**/*.ts"], + "exclude": ["test/**"] +} diff --git a/packages/workflow/tsconfig.json b/packages/workflow/tsconfig.json index d90855aab0..84ea36482c 100644 --- a/packages/workflow/tsconfig.json +++ b/packages/workflow/tsconfig.json @@ -2,10 +2,16 @@ "extends": "../../tsconfig.json", "compilerOptions": { "rootDir": ".", - "outDir": "dist", "types": ["node", "jest"], + "composite": true, + "noEmit": true, + "baseUrl": "src", + "paths": { + "@/*": ["./*"] + }, + "tsBuildInfoFile": "dist/typecheck.tsbuildinfo", // TODO: remove all options below this line "useUnknownInCatchVariables": false }, - "include": ["src/**/*.ts"] + "include": ["src/**/*.ts", "test/**/*.ts"] } diff --git a/packages/workflow/tsconfig.test.json b/packages/workflow/tsconfig.test.json deleted file mode 100644 index 1e4f6ed316..0000000000 --- a/packages/workflow/tsconfig.test.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [ - "test/**/*.d.ts", - "test/**/*" - ] -}