n8n 0.178.2 → 0.181.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/dist/commands/export/workflow.js +4 -1
  2. package/dist/commands/export/workflow.js.map +1 -1
  3. package/dist/commands/import/workflow.js +22 -5
  4. package/dist/commands/import/workflow.js.map +1 -1
  5. package/dist/commands/worker.js +3 -2
  6. package/dist/commands/worker.js.map +1 -1
  7. package/dist/config/index.d.ts +4 -0
  8. package/dist/config/schema.d.ts +14 -0
  9. package/dist/config/schema.js +16 -2
  10. package/dist/config/schema.js.map +1 -1
  11. package/dist/src/ActiveWorkflowRunner.d.ts +2 -1
  12. package/dist/src/ActiveWorkflowRunner.js +66 -6
  13. package/dist/src/ActiveWorkflowRunner.js.map +1 -1
  14. package/dist/src/CredentialsHelper.d.ts +2 -0
  15. package/dist/src/CredentialsHelper.js +13 -5
  16. package/dist/src/CredentialsHelper.js.map +1 -1
  17. package/dist/src/Interfaces.d.ts +41 -6
  18. package/dist/src/InternalHooks.d.ts +46 -4
  19. package/dist/src/InternalHooks.js +36 -6
  20. package/dist/src/InternalHooks.js.map +1 -1
  21. package/dist/src/PublicApi/index.d.ts +5 -0
  22. package/dist/src/PublicApi/index.js +122 -0
  23. package/dist/src/PublicApi/index.js.map +1 -0
  24. package/dist/src/PublicApi/swaggerTheme.css +26 -0
  25. package/dist/src/PublicApi/v1/handlers/credentials/credentials.handler.d.ts +7 -0
  26. package/dist/src/PublicApi/v1/handlers/credentials/credentials.handler.js +72 -0
  27. package/dist/src/PublicApi/v1/handlers/credentials/credentials.handler.js.map +1 -0
  28. package/dist/src/PublicApi/v1/handlers/credentials/credentials.middleware.d.ts +3 -0
  29. package/dist/src/PublicApi/v1/handlers/credentials/credentials.middleware.js +34 -0
  30. package/dist/src/PublicApi/v1/handlers/credentials/credentials.middleware.js.map +1 -0
  31. package/dist/src/PublicApi/v1/handlers/credentials/credentials.service.d.ts +14 -0
  32. package/dist/src/PublicApi/v1/handlers/credentials/credentials.service.js +180 -0
  33. package/dist/src/PublicApi/v1/handlers/credentials/credentials.service.js.map +1 -0
  34. package/dist/src/PublicApi/v1/handlers/executions/executions.handler.d.ts +8 -0
  35. package/dist/src/PublicApi/v1/handlers/executions/executions.handler.js +97 -0
  36. package/dist/src/PublicApi/v1/handlers/executions/executions.handler.js.map +1 -0
  37. package/dist/src/PublicApi/v1/handlers/executions/executions.service.d.ts +19 -0
  38. package/dist/src/PublicApi/v1/handlers/executions/executions.service.js +80 -0
  39. package/dist/src/PublicApi/v1/handlers/executions/executions.service.js.map +1 -0
  40. package/dist/src/PublicApi/v1/handlers/users/users.service.d.ts +4 -0
  41. package/dist/src/PublicApi/v1/handlers/users/users.service.js +16 -0
  42. package/dist/src/PublicApi/v1/handlers/users/users.service.js.map +1 -0
  43. package/dist/src/PublicApi/v1/handlers/workflows/workflows.handler.d.ts +12 -0
  44. package/dist/src/PublicApi/v1/handlers/workflows/workflows.handler.js +199 -0
  45. package/dist/src/PublicApi/v1/handlers/workflows/workflows.handler.js.map +1 -0
  46. package/dist/src/PublicApi/v1/handlers/workflows/workflows.service.d.ts +24 -0
  47. package/dist/src/PublicApi/v1/handlers/workflows/workflows.service.js +113 -0
  48. package/dist/src/PublicApi/v1/handlers/workflows/workflows.service.js.map +1 -0
  49. package/dist/src/PublicApi/v1/openapi.yml +703 -0
  50. package/dist/src/PublicApi/v1/shared/middlewares/global.middleware.d.ts +5 -0
  51. package/dist/src/PublicApi/v1/shared/middlewares/global.middleware.js +38 -0
  52. package/dist/src/PublicApi/v1/shared/middlewares/global.middleware.js.map +1 -0
  53. package/dist/src/PublicApi/v1/shared/services/pagination.service.d.ts +3 -0
  54. package/dist/src/PublicApi/v1/shared/services/pagination.service.js +33 -0
  55. package/dist/src/PublicApi/v1/shared/services/pagination.service.js.map +1 -0
  56. package/dist/src/ResponseHelper.d.ts +1 -1
  57. package/dist/src/ResponseHelper.js +2 -2
  58. package/dist/src/ResponseHelper.js.map +1 -1
  59. package/dist/src/Server.js +29 -13
  60. package/dist/src/Server.js.map +1 -1
  61. package/dist/src/TagHelpers.d.ts +3 -1
  62. package/dist/src/TagHelpers.js +47 -1
  63. package/dist/src/TagHelpers.js.map +1 -1
  64. package/dist/src/UserManagement/UserManagementHelper.js +1 -1
  65. package/dist/src/UserManagement/UserManagementHelper.js.map +1 -1
  66. package/dist/src/UserManagement/auth/jwt.d.ts +1 -1
  67. package/dist/src/UserManagement/routes/me.js +27 -0
  68. package/dist/src/UserManagement/routes/me.js.map +1 -1
  69. package/dist/src/UserManagement/routes/passwordReset.js +2 -0
  70. package/dist/src/UserManagement/routes/passwordReset.js.map +1 -1
  71. package/dist/src/UserManagement/routes/users.js +7 -1
  72. package/dist/src/UserManagement/routes/users.js.map +1 -1
  73. package/dist/src/WebhookHelpers.js +8 -7
  74. package/dist/src/WebhookHelpers.js.map +1 -1
  75. package/dist/src/WebhookServer.js.map +1 -1
  76. package/dist/src/WorkflowExecuteAdditionalData.d.ts +2 -1
  77. package/dist/src/WorkflowExecuteAdditionalData.js +45 -16
  78. package/dist/src/WorkflowExecuteAdditionalData.js.map +1 -1
  79. package/dist/src/WorkflowHelpers.js +2 -0
  80. package/dist/src/WorkflowHelpers.js.map +1 -1
  81. package/dist/src/WorkflowRunner.js +2 -0
  82. package/dist/src/WorkflowRunner.js.map +1 -1
  83. package/dist/src/api/credentials.api.js +4 -3
  84. package/dist/src/api/credentials.api.js.map +1 -1
  85. package/dist/src/databases/entities/User.d.ts +1 -0
  86. package/dist/src/databases/entities/User.js +7 -2
  87. package/dist/src/databases/entities/User.js.map +1 -1
  88. package/dist/src/databases/mysqldb/migrations/1652905585850-AddAPIKeyColumn.d.ts +6 -0
  89. package/dist/src/databases/mysqldb/migrations/1652905585850-AddAPIKeyColumn.js +28 -0
  90. package/dist/src/databases/mysqldb/migrations/1652905585850-AddAPIKeyColumn.js.map +1 -0
  91. package/dist/src/databases/mysqldb/migrations/index.js +2 -0
  92. package/dist/src/databases/mysqldb/migrations/index.js.map +1 -1
  93. package/dist/src/databases/postgresdb/migrations/1587669153312-InitialMigration.js +2 -0
  94. package/dist/src/databases/postgresdb/migrations/1587669153312-InitialMigration.js.map +1 -1
  95. package/dist/src/databases/postgresdb/migrations/1589476000887-WebhookModel.js +2 -0
  96. package/dist/src/databases/postgresdb/migrations/1589476000887-WebhookModel.js.map +1 -1
  97. package/dist/src/databases/postgresdb/migrations/1594828256133-CreateIndexStoppedAt.js +9 -2
  98. package/dist/src/databases/postgresdb/migrations/1594828256133-CreateIndexStoppedAt.js.map +1 -1
  99. package/dist/src/databases/postgresdb/migrations/1607431743768-MakeStoppedAtNullable.js +1 -0
  100. package/dist/src/databases/postgresdb/migrations/1607431743768-MakeStoppedAtNullable.js.map +1 -1
  101. package/dist/src/databases/postgresdb/migrations/1611144599516-AddWebhookId.js +2 -0
  102. package/dist/src/databases/postgresdb/migrations/1611144599516-AddWebhookId.js.map +1 -1
  103. package/dist/src/databases/postgresdb/migrations/1617270242566-CreateTagEntity.js +2 -0
  104. package/dist/src/databases/postgresdb/migrations/1617270242566-CreateTagEntity.js.map +1 -1
  105. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js +2 -0
  106. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js.map +1 -1
  107. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js +2 -0
  108. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js.map +1 -1
  109. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js +2 -0
  110. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js.map +1 -1
  111. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js +7 -6
  112. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js.map +1 -1
  113. package/dist/src/databases/postgresdb/migrations/1646834195327-IncreaseTypeVarcharLimit.js +6 -1
  114. package/dist/src/databases/postgresdb/migrations/1646834195327-IncreaseTypeVarcharLimit.js.map +1 -1
  115. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js +5 -3
  116. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js.map +1 -1
  117. package/dist/src/databases/postgresdb/migrations/1648740597343-LowerCaseUserEmail.js +1 -0
  118. package/dist/src/databases/postgresdb/migrations/1648740597343-LowerCaseUserEmail.js.map +1 -1
  119. package/dist/src/databases/postgresdb/migrations/1652367743993-AddUserSettings.js +2 -0
  120. package/dist/src/databases/postgresdb/migrations/1652367743993-AddUserSettings.js.map +1 -1
  121. package/dist/src/databases/postgresdb/migrations/1652905585850-AddAPIKeyColumn.d.ts +6 -0
  122. package/dist/src/databases/postgresdb/migrations/1652905585850-AddAPIKeyColumn.js +32 -0
  123. package/dist/src/databases/postgresdb/migrations/1652905585850-AddAPIKeyColumn.js.map +1 -0
  124. package/dist/src/databases/postgresdb/migrations/index.js +2 -0
  125. package/dist/src/databases/postgresdb/migrations/index.js.map +1 -1
  126. package/dist/src/databases/sqlite/migrations/1652905585850-AddAPIKeyColumn.d.ts +6 -0
  127. package/dist/src/databases/sqlite/migrations/1652905585850-AddAPIKeyColumn.js +58 -0
  128. package/dist/src/databases/sqlite/migrations/1652905585850-AddAPIKeyColumn.js.map +1 -0
  129. package/dist/src/databases/sqlite/migrations/index.js +2 -0
  130. package/dist/src/databases/sqlite/migrations/index.js.map +1 -1
  131. package/dist/test/integration/auth.api.test.js +11 -6
  132. package/dist/test/integration/auth.api.test.js.map +1 -1
  133. package/dist/test/integration/auth.mw.test.js +1 -1
  134. package/dist/test/integration/auth.mw.test.js.map +1 -1
  135. package/dist/test/integration/commands/reset.cmd.test.d.ts +1 -0
  136. package/dist/test/integration/commands/reset.cmd.test.js +59 -0
  137. package/dist/test/integration/commands/reset.cmd.test.js.map +1 -0
  138. package/dist/test/integration/credentials.api.test.js +1 -1
  139. package/dist/test/integration/credentials.api.test.js.map +1 -1
  140. package/dist/test/integration/me.api.test.js +78 -7
  141. package/dist/test/integration/me.api.test.js.map +1 -1
  142. package/dist/test/integration/owner.api.test.js +3 -2
  143. package/dist/test/integration/owner.api.test.js.map +1 -1
  144. package/dist/test/integration/passwordReset.api.test.js +1 -1
  145. package/dist/test/integration/passwordReset.api.test.js.map +1 -1
  146. package/dist/test/integration/publicApi/credentials.test.d.ts +1 -0
  147. package/dist/test/integration/publicApi/credentials.test.js +321 -0
  148. package/dist/test/integration/publicApi/credentials.test.js.map +1 -0
  149. package/dist/test/integration/publicApi/executions.test.d.ts +1 -0
  150. package/dist/test/integration/publicApi/executions.test.js +289 -0
  151. package/dist/test/integration/publicApi/executions.test.js.map +1 -0
  152. package/dist/test/integration/publicApi/workflows.test.d.ts +1 -0
  153. package/dist/test/integration/publicApi/workflows.test.js +948 -0
  154. package/dist/test/integration/publicApi/workflows.test.js.map +1 -0
  155. package/dist/test/integration/shared/constants.d.ts +1 -0
  156. package/dist/test/integration/shared/constants.js +2 -1
  157. package/dist/test/integration/shared/constants.js.map +1 -1
  158. package/dist/test/integration/shared/random.d.ts +1 -0
  159. package/dist/test/integration/shared/random.js +8 -2
  160. package/dist/test/integration/shared/random.js.map +1 -1
  161. package/dist/test/integration/shared/testDb.d.ts +115 -4
  162. package/dist/test/integration/shared/testDb.js +132 -10
  163. package/dist/test/integration/shared/testDb.js.map +1 -1
  164. package/dist/test/integration/shared/utils.d.ts +206 -3
  165. package/dist/test/integration/shared/utils.js +582 -18
  166. package/dist/test/integration/shared/utils.js.map +1 -1
  167. package/dist/test/integration/users.api.test.js +6 -4
  168. package/dist/test/integration/users.api.test.js.map +1 -1
  169. package/oclif.manifest.json +1 -1
  170. package/package.json +22 -15
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ const CredentialsHelper_1 = require("../../../../CredentialsHelper");
3
+ const CredentialTypes_1 = require("../../../../CredentialTypes");
4
+ const global_middleware_1 = require("../../shared/middlewares/global.middleware");
5
+ const credentials_middleware_1 = require("./credentials.middleware");
6
+ const credentials_service_1 = require("./credentials.service");
7
+ module.exports = {
8
+ createCredential: [
9
+ (0, global_middleware_1.authorize)(['owner', 'member']),
10
+ credentials_middleware_1.validCredentialType,
11
+ credentials_middleware_1.validCredentialsProperties,
12
+ async (req, res) => {
13
+ try {
14
+ const newCredential = await (0, credentials_service_1.createCredential)(req.body);
15
+ const encryptedData = await (0, credentials_service_1.encryptCredential)(newCredential);
16
+ Object.assign(newCredential, encryptedData);
17
+ const savedCredential = await (0, credentials_service_1.saveCredential)(newCredential, req.user, encryptedData);
18
+ return res.json((0, credentials_service_1.sanitizeCredentials)(savedCredential));
19
+ }
20
+ catch ({ message, httpStatusCode }) {
21
+ return res.status(httpStatusCode !== null && httpStatusCode !== void 0 ? httpStatusCode : 500).json({ message });
22
+ }
23
+ },
24
+ ],
25
+ deleteCredential: [
26
+ (0, global_middleware_1.authorize)(['owner', 'member']),
27
+ async (req, res) => {
28
+ const { id: credentialId } = req.params;
29
+ let credentials;
30
+ if (req.user.globalRole.name !== 'owner') {
31
+ const shared = await (0, credentials_service_1.getSharedCredentials)(req.user.id, credentialId, [
32
+ 'credentials',
33
+ 'role',
34
+ ]);
35
+ if ((shared === null || shared === void 0 ? void 0 : shared.role.name) === 'owner') {
36
+ credentials = shared.credentials;
37
+ }
38
+ else {
39
+ }
40
+ }
41
+ else {
42
+ credentials = (await (0, credentials_service_1.getCredentials)(credentialId));
43
+ }
44
+ if (!credentials) {
45
+ return res.status(404).json({
46
+ message: 'Not Found',
47
+ });
48
+ }
49
+ await (0, credentials_service_1.removeCredential)(credentials);
50
+ credentials.id = Number(credentialId);
51
+ return res.json((0, credentials_service_1.sanitizeCredentials)(credentials));
52
+ },
53
+ ],
54
+ getCredentialType: [
55
+ (0, global_middleware_1.authorize)(['owner', 'member']),
56
+ async (req, res) => {
57
+ const { credentialTypeName } = req.params;
58
+ try {
59
+ (0, CredentialTypes_1.CredentialTypes)().getByName(credentialTypeName);
60
+ }
61
+ catch (error) {
62
+ return res.status(404).json({
63
+ message: 'Not Found',
64
+ });
65
+ }
66
+ let schema = new CredentialsHelper_1.CredentialsHelper('').getCredentialsProperties(credentialTypeName);
67
+ schema = schema.filter((nodeProperty) => nodeProperty.type !== 'hidden');
68
+ return res.json((0, credentials_service_1.toJsonSchema)(schema));
69
+ },
70
+ ],
71
+ };
72
+ //# sourceMappingURL=credentials.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.handler.js","sourceRoot":"","sources":["../../../../../../src/PublicApi/v1/handlers/credentials/credentials.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { RequestHandler } from 'express';
2
+ export declare const validCredentialType: RequestHandler;
3
+ export declare const validCredentialsProperties: RequestHandler;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validCredentialsProperties = exports.validCredentialType = void 0;
4
+ const jsonschema_1 = require("jsonschema");
5
+ const __1 = require("../../../..");
6
+ const credentials_service_1 = require("./credentials.service");
7
+ const validCredentialType = async (req, res, next) => {
8
+ const { type } = req.body;
9
+ try {
10
+ (0, __1.CredentialTypes)().getByName(type);
11
+ }
12
+ catch (error) {
13
+ return res.status(400).json({
14
+ message: 'req.body.type is not a known type',
15
+ });
16
+ }
17
+ next();
18
+ };
19
+ exports.validCredentialType = validCredentialType;
20
+ const validCredentialsProperties = async (req, res, next) => {
21
+ const { type, data } = req.body;
22
+ let properties = new __1.CredentialsHelper('').getCredentialsProperties(type);
23
+ properties = properties.filter((nodeProperty) => nodeProperty.type !== 'hidden');
24
+ const schema = (0, credentials_service_1.toJsonSchema)(properties);
25
+ const { valid, errors } = (0, jsonschema_1.validate)(data, schema, { nestedErrors: true });
26
+ if (!valid) {
27
+ return res.status(400).json({
28
+ message: errors.map((error) => `request.body.data ${error.message}`).join(','),
29
+ });
30
+ }
31
+ next();
32
+ };
33
+ exports.validCredentialsProperties = validCredentialsProperties;
34
+ //# sourceMappingURL=credentials.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.middleware.js","sourceRoot":"","sources":["../../../../../../src/PublicApi/v1/handlers/credentials/credentials.middleware.ts"],"names":[],"mappings":";;;AAGA,2CAAsC;AACtC,mCAAiE;AAEjE,+DAAqD;AAE9C,MAAM,mBAAmB,GAAmB,KAAK,EACvD,GAA6B,EAC7B,GAAG,EACH,IAAI,EACW,EAAE;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;IAC1B,IAAI;QACH,IAAA,mBAAe,GAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAClC;IAAC,OAAO,KAAK,EAAE;QACf,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC3B,OAAO,EAAE,mCAAmC;SAC5C,CAAC,CAAC;KACH;IACD,IAAI,EAAE,CAAC;AACR,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEK,MAAM,0BAA0B,GAAmB,KAAK,EAC9D,GAA6B,EAC7B,GAAG,EACH,IAAI,EACW,EAAE;IACjB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;IAEhC,IAAI,UAAU,GAAG,IAAI,qBAAiB,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAE1E,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAEjF,MAAM,MAAM,GAAG,IAAA,kCAAY,EAAC,UAAU,CAAC,CAAC;IAExC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAA,qBAAQ,EAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzE,IAAI,CAAC,KAAK,EAAE;QACX,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC3B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SAC9E,CAAC,CAAC;KACH;IAED,IAAI,EAAE,CAAC;AACR,CAAC,CAAC;AAtBW,QAAA,0BAA0B,8BAsBrC"}
@@ -0,0 +1,14 @@
1
+ import { IDataObject, INodeProperties } from 'n8n-workflow';
2
+ import { ICredentialsDb } from '../../../..';
3
+ import { CredentialsEntity } from '../../../../databases/entities/CredentialsEntity';
4
+ import { SharedCredentials } from '../../../../databases/entities/SharedCredentials';
5
+ import { User } from '../../../../databases/entities/User';
6
+ export declare function getCredentials(credentialId: number | string): Promise<ICredentialsDb | undefined>;
7
+ export declare function getSharedCredentials(userId: string, credentialId: number | string, relations?: string[]): Promise<SharedCredentials | undefined>;
8
+ export declare function createCredential(properties: Partial<CredentialsEntity>): Promise<CredentialsEntity>;
9
+ export declare function saveCredential(credential: CredentialsEntity, user: User, encryptedData: ICredentialsDb): Promise<CredentialsEntity>;
10
+ export declare function removeCredential(credentials: CredentialsEntity): Promise<ICredentialsDb>;
11
+ export declare function encryptCredential(credential: CredentialsEntity): Promise<ICredentialsDb>;
12
+ export declare function sanitizeCredentials(credentials: CredentialsEntity): Partial<CredentialsEntity>;
13
+ export declare function sanitizeCredentials(credentials: CredentialsEntity[]): Array<Partial<CredentialsEntity>>;
14
+ export declare function toJsonSchema(properties: INodeProperties[]): IDataObject;
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.toJsonSchema = exports.sanitizeCredentials = exports.encryptCredential = exports.removeCredential = exports.saveCredential = exports.createCredential = exports.getSharedCredentials = exports.getCredentials = void 0;
15
+ const n8n_core_1 = require("n8n-core");
16
+ const __1 = require("../../../..");
17
+ const CredentialsEntity_1 = require("../../../../databases/entities/CredentialsEntity");
18
+ const SharedCredentials_1 = require("../../../../databases/entities/SharedCredentials");
19
+ const Server_1 = require("../../../../Server");
20
+ async function getCredentials(credentialId) {
21
+ return __1.Db.collections.Credentials.findOne(credentialId);
22
+ }
23
+ exports.getCredentials = getCredentials;
24
+ async function getSharedCredentials(userId, credentialId, relations) {
25
+ const options = {
26
+ where: {
27
+ user: { id: userId },
28
+ credentials: { id: credentialId },
29
+ },
30
+ };
31
+ if (relations) {
32
+ options.relations = relations;
33
+ }
34
+ return __1.Db.collections.SharedCredentials.findOne(options);
35
+ }
36
+ exports.getSharedCredentials = getSharedCredentials;
37
+ async function createCredential(properties) {
38
+ var _a, _b;
39
+ const newCredential = new CredentialsEntity_1.CredentialsEntity();
40
+ Object.assign(newCredential, properties);
41
+ if (!newCredential.nodesAccess || newCredential.nodesAccess.length === 0) {
42
+ newCredential.nodesAccess = [
43
+ {
44
+ nodeType: `n8n-nodes-base.${(_b = (_a = properties.type) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : 'unknown'}`,
45
+ date: new Date(),
46
+ },
47
+ ];
48
+ }
49
+ else {
50
+ newCredential.nodesAccess.forEach((nodeAccess) => {
51
+ nodeAccess.date = new Date();
52
+ });
53
+ }
54
+ return newCredential;
55
+ }
56
+ exports.createCredential = createCredential;
57
+ async function saveCredential(credential, user, encryptedData) {
58
+ const role = await __1.Db.collections.Role.findOneOrFail({
59
+ name: 'owner',
60
+ scope: 'credential',
61
+ });
62
+ await Server_1.externalHooks.run('credentials.create', [encryptedData]);
63
+ return __1.Db.transaction(async (transactionManager) => {
64
+ const savedCredential = await transactionManager.save(credential);
65
+ savedCredential.data = credential.data;
66
+ const newSharedCredential = new SharedCredentials_1.SharedCredentials();
67
+ Object.assign(newSharedCredential, {
68
+ role,
69
+ user,
70
+ credentials: savedCredential,
71
+ });
72
+ await transactionManager.save(newSharedCredential);
73
+ return savedCredential;
74
+ });
75
+ }
76
+ exports.saveCredential = saveCredential;
77
+ async function removeCredential(credentials) {
78
+ await Server_1.externalHooks.run('credentials.delete', [credentials.id]);
79
+ return __1.Db.collections.Credentials.remove(credentials);
80
+ }
81
+ exports.removeCredential = removeCredential;
82
+ async function encryptCredential(credential) {
83
+ const encryptionKey = await n8n_core_1.UserSettings.getEncryptionKey();
84
+ const coreCredential = new n8n_core_1.Credentials({ id: null, name: credential.name }, credential.type, credential.nodesAccess);
85
+ coreCredential.setData(credential.data, encryptionKey);
86
+ return coreCredential.getDataToSave();
87
+ }
88
+ exports.encryptCredential = encryptCredential;
89
+ function sanitizeCredentials(credentials) {
90
+ const argIsArray = Array.isArray(credentials);
91
+ const credentialsList = argIsArray ? credentials : [credentials];
92
+ const sanitizedCredentials = credentialsList.map((credential) => {
93
+ const { data, nodesAccess, shared } = credential, rest = __rest(credential, ["data", "nodesAccess", "shared"]);
94
+ return rest;
95
+ });
96
+ return argIsArray ? sanitizedCredentials : sanitizedCredentials[0];
97
+ }
98
+ exports.sanitizeCredentials = sanitizeCredentials;
99
+ function toJsonSchema(properties) {
100
+ const jsonSchema = {
101
+ additionalProperties: false,
102
+ type: 'object',
103
+ properties: {},
104
+ allOf: [],
105
+ required: [],
106
+ };
107
+ const optionsValues = {};
108
+ const resolveProperties = [];
109
+ properties
110
+ .filter((property) => property.type === 'options')
111
+ .forEach((property) => {
112
+ var _a;
113
+ Object.assign(optionsValues, {
114
+ [property.name]: (_a = property.options) === null || _a === void 0 ? void 0 : _a.map((option) => option.value),
115
+ });
116
+ });
117
+ let requiredFields = [];
118
+ const propertyRequiredDependencies = {};
119
+ properties.forEach((property) => {
120
+ var _a, _b, _c, _d, _e;
121
+ requiredFields.push(property.name);
122
+ if (property.type === 'options') {
123
+ Object.assign(jsonSchema.properties, {
124
+ [property.name]: {
125
+ type: 'string',
126
+ enum: (_a = property.options) === null || _a === void 0 ? void 0 : _a.map((data) => data.value),
127
+ },
128
+ });
129
+ }
130
+ else {
131
+ Object.assign(jsonSchema.properties, {
132
+ [property.name]: {
133
+ type: property.type,
134
+ },
135
+ });
136
+ }
137
+ if ((_b = property.displayOptions) === null || _b === void 0 ? void 0 : _b.show) {
138
+ const dependantName = Object.keys((_c = property.displayOptions) === null || _c === void 0 ? void 0 : _c.show)[0] || '';
139
+ const displayOptionsValues = property.displayOptions.show[dependantName];
140
+ let dependantValue = '';
141
+ if (displayOptionsValues && Array.isArray(displayOptionsValues) && displayOptionsValues[0]) {
142
+ dependantValue = displayOptionsValues[0];
143
+ }
144
+ if (propertyRequiredDependencies[dependantName] === undefined) {
145
+ propertyRequiredDependencies[dependantName] = {};
146
+ }
147
+ if (!resolveProperties.includes(dependantName)) {
148
+ propertyRequiredDependencies[dependantName] = {
149
+ if: {
150
+ properties: {
151
+ [dependantName]: {
152
+ enum: [dependantValue],
153
+ },
154
+ },
155
+ },
156
+ then: {
157
+ oneOf: [],
158
+ },
159
+ else: {
160
+ allOf: [],
161
+ },
162
+ };
163
+ }
164
+ (_d = propertyRequiredDependencies[dependantName].then) === null || _d === void 0 ? void 0 : _d.oneOf.push({ required: [property.name] });
165
+ (_e = propertyRequiredDependencies[dependantName].else) === null || _e === void 0 ? void 0 : _e.allOf.push({
166
+ not: { required: [property.name] },
167
+ });
168
+ resolveProperties.push(dependantName);
169
+ requiredFields = requiredFields.filter((field) => field !== property.name);
170
+ }
171
+ });
172
+ Object.assign(jsonSchema, { required: requiredFields });
173
+ jsonSchema.allOf = Object.values(propertyRequiredDependencies);
174
+ if (!jsonSchema.allOf.length) {
175
+ delete jsonSchema.allOf;
176
+ }
177
+ return jsonSchema;
178
+ }
179
+ exports.toJsonSchema = toJsonSchema;
180
+ //# sourceMappingURL=credentials.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.service.js","sourceRoot":"","sources":["../../../../../../src/PublicApi/v1/handlers/credentials/credentials.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import express = require('express');
2
+ import { ExecutionRequest } from '../../../types';
3
+ declare const _default: {
4
+ deleteExecution: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: ExecutionRequest.Delete, res: express.Response) => Promise<express.Response>))[];
5
+ getExecution: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: ExecutionRequest.Get, res: express.Response) => Promise<express.Response>))[];
6
+ getExecutions: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: ExecutionRequest.GetAll, res: express.Response) => Promise<express.Response>))[];
7
+ };
8
+ export = _default;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ const n8n_core_1 = require("n8n-core");
3
+ const executions_service_1 = require("./executions.service");
4
+ const __1 = require("../../../..");
5
+ const global_middleware_1 = require("../../shared/middlewares/global.middleware");
6
+ const workflows_service_1 = require("../workflows/workflows.service");
7
+ const pagination_service_1 = require("../../shared/services/pagination.service");
8
+ const InternalHooksManager_1 = require("../../../../InternalHooksManager");
9
+ module.exports = {
10
+ deleteExecution: [
11
+ (0, global_middleware_1.authorize)(['owner', 'member']),
12
+ async (req, res) => {
13
+ const { id } = req.params;
14
+ const sharedWorkflowsIds = await (0, workflows_service_1.getSharedWorkflowIds)(req.user);
15
+ if (!sharedWorkflowsIds.length) {
16
+ return res.status(404).json({
17
+ message: 'Not Found',
18
+ });
19
+ }
20
+ const execution = await (0, executions_service_1.getExecutionInWorkflows)(id, sharedWorkflowsIds, false);
21
+ if (!execution) {
22
+ return res.status(404).json({
23
+ message: 'Not Found',
24
+ });
25
+ }
26
+ const binaryDataManager = n8n_core_1.BinaryDataManager.getInstance();
27
+ await binaryDataManager.deleteBinaryDataByExecutionId(execution.id.toString());
28
+ await (0, executions_service_1.deleteExecution)(execution);
29
+ execution.id = id;
30
+ return res.json(execution);
31
+ },
32
+ ],
33
+ getExecution: [
34
+ (0, global_middleware_1.authorize)(['owner', 'member']),
35
+ async (req, res) => {
36
+ const { id } = req.params;
37
+ const { includeData = false } = req.query;
38
+ const sharedWorkflowsIds = await (0, workflows_service_1.getSharedWorkflowIds)(req.user);
39
+ if (!sharedWorkflowsIds.length) {
40
+ return res.status(404).json({
41
+ message: 'Not Found',
42
+ });
43
+ }
44
+ const execution = await (0, executions_service_1.getExecutionInWorkflows)(id, sharedWorkflowsIds, includeData);
45
+ if (!execution) {
46
+ return res.status(404).json({
47
+ message: 'Not Found',
48
+ });
49
+ }
50
+ const telemetryData = {
51
+ user_id: req.user.id,
52
+ public_api: true,
53
+ };
54
+ void InternalHooksManager_1.InternalHooksManager.getInstance().onUserRetrievedExecution(telemetryData);
55
+ return res.json(execution);
56
+ },
57
+ ],
58
+ getExecutions: [
59
+ (0, global_middleware_1.authorize)(['owner', 'member']),
60
+ global_middleware_1.validCursor,
61
+ async (req, res) => {
62
+ const { lastId = undefined, limit = 100, status = undefined, includeData = false, workflowId = undefined, } = req.query;
63
+ const sharedWorkflowsIds = await (0, workflows_service_1.getSharedWorkflowIds)(req.user);
64
+ if (!sharedWorkflowsIds.length) {
65
+ return res.status(200).json({
66
+ data: [],
67
+ nextCursor: null,
68
+ });
69
+ }
70
+ const runningExecutionsIds = __1.ActiveExecutions.getInstance()
71
+ .getActiveExecutions()
72
+ .map(({ id }) => Number(id));
73
+ const filters = Object.assign(Object.assign({ status,
74
+ limit,
75
+ lastId,
76
+ includeData }, (workflowId && { workflowIds: [workflowId] })), { excludedExecutionsIds: runningExecutionsIds });
77
+ const executions = await (0, executions_service_1.getExecutions)(filters);
78
+ const newLastId = !executions.length ? 0 : executions.slice(-1)[0].id;
79
+ filters.lastId = newLastId;
80
+ const count = await (0, executions_service_1.getExecutionsCount)(filters);
81
+ const telemetryData = {
82
+ user_id: req.user.id,
83
+ public_api: true,
84
+ };
85
+ void InternalHooksManager_1.InternalHooksManager.getInstance().onUserRetrievedAllExecutions(telemetryData);
86
+ return res.json({
87
+ data: executions,
88
+ nextCursor: (0, pagination_service_1.encodeNextCursor)({
89
+ lastId: newLastId,
90
+ limit,
91
+ numberOfNextRecords: count,
92
+ }),
93
+ });
94
+ },
95
+ ],
96
+ };
97
+ //# sourceMappingURL=executions.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executions.handler.js","sourceRoot":"","sources":["../../../../../../src/PublicApi/v1/handlers/executions/executions.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { IExecutionResponseApi } from '../../../..';
2
+ import { ExecutionStatus } from '../../../types';
3
+ export declare function getExecutions(data: {
4
+ limit: number;
5
+ includeData?: boolean;
6
+ lastId?: number;
7
+ workflowIds?: number[];
8
+ status?: ExecutionStatus;
9
+ excludedExecutionsIds?: number[];
10
+ }): Promise<IExecutionResponseApi[]>;
11
+ export declare function getExecutionsCount(data: {
12
+ limit: number;
13
+ lastId?: number;
14
+ workflowIds?: number[];
15
+ status?: ExecutionStatus;
16
+ excludedWorkflowIds?: number[];
17
+ }): Promise<number>;
18
+ export declare function getExecutionInWorkflows(id: number, workflows: number[], includeData?: boolean): Promise<IExecutionResponseApi | undefined>;
19
+ export declare function deleteExecution(execution: IExecutionResponseApi | undefined): Promise<void>;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteExecution = exports.getExecutionInWorkflows = exports.getExecutionsCount = exports.getExecutions = void 0;
4
+ const flatted_1 = require("flatted");
5
+ const typeorm_1 = require("typeorm");
6
+ const __1 = require("../../../..");
7
+ function prepareExecutionData(execution) {
8
+ if (execution === undefined) {
9
+ return undefined;
10
+ }
11
+ if (!execution.data) {
12
+ return execution;
13
+ }
14
+ return Object.assign(Object.assign({}, execution), { data: (0, flatted_1.parse)(execution.data) });
15
+ }
16
+ function getStatusCondition(status) {
17
+ const condition = {};
18
+ if (status === 'success') {
19
+ condition.finished = true;
20
+ }
21
+ else if (status === 'waiting') {
22
+ condition.waitTill = (0, typeorm_1.Not)((0, typeorm_1.IsNull)());
23
+ }
24
+ else if (status === 'error') {
25
+ condition.stoppedAt = (0, typeorm_1.Not)((0, typeorm_1.IsNull)());
26
+ condition.finished = false;
27
+ }
28
+ return condition;
29
+ }
30
+ function getExecutionSelectableProperties(includeData) {
31
+ const returnData = [
32
+ 'id',
33
+ 'mode',
34
+ 'retryOf',
35
+ 'retrySuccessId',
36
+ 'startedAt',
37
+ 'stoppedAt',
38
+ 'workflowId',
39
+ 'waitTill',
40
+ 'finished',
41
+ ];
42
+ if (includeData) {
43
+ returnData.push('data');
44
+ }
45
+ return returnData;
46
+ }
47
+ async function getExecutions(data) {
48
+ const executions = await __1.Db.collections.Execution.find({
49
+ select: getExecutionSelectableProperties(data.includeData),
50
+ where: Object.assign(Object.assign(Object.assign(Object.assign({}, (data.lastId && { id: (0, typeorm_1.LessThan)(data.lastId) })), (data.status && Object.assign({}, getStatusCondition(data.status)))), (data.workflowIds && { workflowId: (0, typeorm_1.In)(data.workflowIds.map(String)) })), (data.excludedExecutionsIds && { id: (0, typeorm_1.Not)((0, typeorm_1.In)(data.excludedExecutionsIds)) })),
51
+ order: { id: 'DESC' },
52
+ take: data.limit,
53
+ });
54
+ return executions.map((execution) => prepareExecutionData(execution));
55
+ }
56
+ exports.getExecutions = getExecutions;
57
+ async function getExecutionsCount(data) {
58
+ const executions = await __1.Db.collections.Execution.count({
59
+ where: Object.assign(Object.assign(Object.assign(Object.assign({}, (data.lastId && { id: (0, typeorm_1.LessThan)(data.lastId) })), (data.status && Object.assign({}, getStatusCondition(data.status)))), (data.workflowIds && { workflowId: (0, typeorm_1.In)(data.workflowIds) })), (data.excludedWorkflowIds && { workflowId: (0, typeorm_1.Not)((0, typeorm_1.In)(data.excludedWorkflowIds)) })),
60
+ take: data.limit,
61
+ });
62
+ return executions;
63
+ }
64
+ exports.getExecutionsCount = getExecutionsCount;
65
+ async function getExecutionInWorkflows(id, workflows, includeData) {
66
+ const execution = await __1.Db.collections.Execution.findOne({
67
+ select: getExecutionSelectableProperties(includeData),
68
+ where: {
69
+ id,
70
+ workflowId: (0, typeorm_1.In)(workflows),
71
+ },
72
+ });
73
+ return prepareExecutionData(execution);
74
+ }
75
+ exports.getExecutionInWorkflows = getExecutionInWorkflows;
76
+ async function deleteExecution(execution) {
77
+ await __1.Db.collections.Execution.remove(execution);
78
+ }
79
+ exports.deleteExecution = deleteExecution;
80
+ //# sourceMappingURL=executions.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executions.service.js","sourceRoot":"","sources":["../../../../../../src/PublicApi/v1/handlers/executions/executions.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Role } from '../../../../databases/entities/Role';
2
+ import { User } from '../../../../databases/entities/User';
3
+ export declare function isInstanceOwner(user: User): boolean;
4
+ export declare function getWorkflowOwnerRole(): Promise<Role>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getWorkflowOwnerRole = exports.isInstanceOwner = void 0;
4
+ const __1 = require("../../../..");
5
+ function isInstanceOwner(user) {
6
+ return user.globalRole.name === 'owner';
7
+ }
8
+ exports.isInstanceOwner = isInstanceOwner;
9
+ async function getWorkflowOwnerRole() {
10
+ return __1.Db.collections.Role.findOneOrFail({
11
+ name: 'owner',
12
+ scope: 'workflow',
13
+ });
14
+ }
15
+ exports.getWorkflowOwnerRole = getWorkflowOwnerRole;
16
+ //# sourceMappingURL=users.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.service.js","sourceRoot":"","sources":["../../../../../../src/PublicApi/v1/handlers/users/users.service.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AAIjC,SAAgB,eAAe,CAAC,IAAU;IACzC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC;AACzC,CAAC;AAFD,0CAEC;AAEM,KAAK,UAAU,oBAAoB;IACzC,OAAO,MAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,UAAU;KACjB,CAAC,CAAC;AACJ,CAAC;AALD,oDAKC"}
@@ -0,0 +1,12 @@
1
+ import express = require('express');
2
+ import { WorkflowRequest } from '../../../types';
3
+ declare const _default: {
4
+ createWorkflow: express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>[];
5
+ deleteWorkflow: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: WorkflowRequest.Get, res: express.Response) => Promise<express.Response>))[];
6
+ getWorkflow: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: WorkflowRequest.Get, res: express.Response) => Promise<express.Response>))[];
7
+ getWorkflows: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: WorkflowRequest.GetAll, res: express.Response) => Promise<express.Response>))[];
8
+ updateWorkflow: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: WorkflowRequest.Update, res: express.Response) => Promise<express.Response>))[];
9
+ activateWorkflow: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: WorkflowRequest.Activate, res: express.Response) => Promise<express.Response>))[];
10
+ deactivateWorkflow: (express.RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>> | ((req: WorkflowRequest.Activate, res: express.Response) => Promise<express.Response>))[];
11
+ };
12
+ export = _default;