n8n 0.167.0 → 0.168.2

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 (258) hide show
  1. package/dist/commands/execute.js +3 -0
  2. package/dist/commands/execute.js.map +1 -1
  3. package/dist/commands/executeBatch.d.ts +2 -0
  4. package/dist/commands/executeBatch.js +3 -0
  5. package/dist/commands/executeBatch.js.map +1 -1
  6. package/dist/commands/import/credentials.d.ts +10 -0
  7. package/dist/commands/import/credentials.js +87 -26
  8. package/dist/commands/import/credentials.js.map +1 -1
  9. package/dist/commands/import/workflow.d.ts +11 -1
  10. package/dist/commands/import/workflow.js +109 -48
  11. package/dist/commands/import/workflow.js.map +1 -1
  12. package/dist/commands/start.js +25 -0
  13. package/dist/commands/start.js.map +1 -1
  14. package/dist/commands/user-management/reset.d.ts +7 -0
  15. package/dist/commands/user-management/reset.js +66 -0
  16. package/dist/commands/user-management/reset.js.map +1 -0
  17. package/dist/commands/worker.js +4 -1
  18. package/dist/commands/worker.js.map +1 -1
  19. package/dist/config/index.d.ts +23 -0
  20. package/dist/config/index.js +92 -4
  21. package/dist/config/index.js.map +1 -1
  22. package/dist/src/ActiveWorkflowRunner.d.ts +2 -1
  23. package/dist/src/ActiveWorkflowRunner.js +44 -24
  24. package/dist/src/ActiveWorkflowRunner.js.map +1 -1
  25. package/dist/src/CredentialsHelper.d.ts +10 -2
  26. package/dist/src/CredentialsHelper.js +40 -11
  27. package/dist/src/CredentialsHelper.js.map +1 -1
  28. package/dist/src/Db.d.ts +4 -1
  29. package/dist/src/Db.js +90 -66
  30. package/dist/src/Db.js.map +1 -1
  31. package/dist/src/GenericHelpers.d.ts +6 -0
  32. package/dist/src/GenericHelpers.js +18 -1
  33. package/dist/src/GenericHelpers.js.map +1 -1
  34. package/dist/src/Interfaces.d.ts +74 -9
  35. package/dist/src/InternalHooks.d.ts +42 -6
  36. package/dist/src/InternalHooks.js +54 -13
  37. package/dist/src/InternalHooks.js.map +1 -1
  38. package/dist/src/ResponseHelper.js +5 -0
  39. package/dist/src/ResponseHelper.js.map +1 -1
  40. package/dist/src/Server.d.ts +2 -0
  41. package/dist/src/Server.js +584 -458
  42. package/dist/src/Server.js.map +1 -1
  43. package/dist/src/TagHelpers.d.ts +3 -3
  44. package/dist/src/TagHelpers.js +5 -24
  45. package/dist/src/TagHelpers.js.map +1 -1
  46. package/dist/src/UserManagement/Interfaces.d.ts +34 -0
  47. package/dist/src/UserManagement/Interfaces.js +3 -0
  48. package/dist/src/UserManagement/Interfaces.js.map +1 -0
  49. package/dist/src/UserManagement/UserManagementHelper.d.ts +17 -0
  50. package/dist/src/UserManagement/UserManagementHelper.js +158 -0
  51. package/dist/src/UserManagement/UserManagementHelper.js.map +1 -0
  52. package/dist/src/UserManagement/auth/jwt.d.ts +7 -0
  53. package/dist/src/UserManagement/auth/jwt.js +57 -0
  54. package/dist/src/UserManagement/auth/jwt.js.map +1 -0
  55. package/dist/src/UserManagement/email/Interfaces.d.ts +29 -0
  56. package/dist/src/UserManagement/email/Interfaces.js +3 -0
  57. package/dist/src/UserManagement/email/Interfaces.js.map +1 -0
  58. package/dist/src/UserManagement/email/NodeMailer.d.ts +7 -0
  59. package/dist/src/UserManagement/email/NodeMailer.js +67 -0
  60. package/dist/src/UserManagement/email/NodeMailer.js.map +1 -0
  61. package/dist/src/UserManagement/email/UserManagementMailer.d.ts +9 -0
  62. package/dist/src/UserManagement/email/UserManagementMailer.js +77 -0
  63. package/dist/src/UserManagement/email/UserManagementMailer.js.map +1 -0
  64. package/dist/src/UserManagement/email/index.d.ts +2 -0
  65. package/dist/src/UserManagement/email/index.js +7 -0
  66. package/dist/src/UserManagement/email/index.js.map +1 -0
  67. package/dist/src/UserManagement/email/templates/instanceSetup.html +5 -0
  68. package/dist/src/UserManagement/email/templates/invite.html +4 -0
  69. package/dist/src/UserManagement/email/templates/passwordReset.html +5 -0
  70. package/dist/src/UserManagement/index.d.ts +4 -0
  71. package/dist/src/UserManagement/index.js +6 -0
  72. package/dist/src/UserManagement/index.js.map +1 -0
  73. package/dist/src/UserManagement/routes/auth.d.ts +2 -0
  74. package/dist/src/UserManagement/routes/auth.js +74 -0
  75. package/dist/src/UserManagement/routes/auth.js.map +1 -0
  76. package/dist/src/UserManagement/routes/index.d.ts +2 -0
  77. package/dist/src/UserManagement/routes/index.js +100 -0
  78. package/dist/src/UserManagement/routes/index.js.map +1 -0
  79. package/dist/src/UserManagement/routes/me.d.ts +2 -0
  80. package/dist/src/UserManagement/routes/me.js +85 -0
  81. package/dist/src/UserManagement/routes/me.js.map +1 -0
  82. package/dist/src/UserManagement/routes/owner.d.ts +2 -0
  83. package/dist/src/UserManagement/routes/owner.js +68 -0
  84. package/dist/src/UserManagement/routes/owner.js.map +1 -0
  85. package/dist/src/UserManagement/routes/passwordReset.d.ts +2 -0
  86. package/dist/src/UserManagement/routes/passwordReset.js +129 -0
  87. package/dist/src/UserManagement/routes/passwordReset.js.map +1 -0
  88. package/dist/src/UserManagement/routes/users.d.ts +2 -0
  89. package/dist/src/UserManagement/routes/users.js +334 -0
  90. package/dist/src/UserManagement/routes/users.js.map +1 -0
  91. package/dist/src/WaitTracker.js +6 -0
  92. package/dist/src/WaitTracker.js.map +1 -1
  93. package/dist/src/WaitingWebhooks.js +9 -1
  94. package/dist/src/WaitingWebhooks.js.map +1 -1
  95. package/dist/src/WebhookHelpers.js +17 -1
  96. package/dist/src/WebhookHelpers.js.map +1 -1
  97. package/dist/src/WorkflowExecuteAdditionalData.d.ts +3 -3
  98. package/dist/src/WorkflowExecuteAdditionalData.js +41 -13
  99. package/dist/src/WorkflowExecuteAdditionalData.js.map +1 -1
  100. package/dist/src/WorkflowHelpers.d.ts +9 -10
  101. package/dist/src/WorkflowHelpers.js +48 -17
  102. package/dist/src/WorkflowHelpers.js.map +1 -1
  103. package/dist/src/WorkflowRunner.js +4 -2
  104. package/dist/src/WorkflowRunner.js.map +1 -1
  105. package/dist/src/WorkflowRunnerProcess.js +7 -4
  106. package/dist/src/WorkflowRunnerProcess.js.map +1 -1
  107. package/dist/src/api/credentials.api.d.ts +1 -0
  108. package/dist/src/api/credentials.api.js +222 -0
  109. package/dist/src/api/credentials.api.js.map +1 -0
  110. package/dist/src/constants.d.ts +5 -0
  111. package/dist/src/constants.js +9 -0
  112. package/dist/src/constants.js.map +1 -0
  113. package/dist/src/databases/entities/CredentialsEntity.d.ts +2 -0
  114. package/dist/src/databases/entities/CredentialsEntity.js +13 -2
  115. package/dist/src/databases/entities/CredentialsEntity.js.map +1 -1
  116. package/dist/src/databases/entities/Role.d.ts +16 -0
  117. package/dist/src/databases/entities/Role.js +87 -0
  118. package/dist/src/databases/entities/Role.js.map +1 -0
  119. package/dist/src/databases/entities/Settings.d.ts +6 -0
  120. package/dist/src/databases/entities/Settings.js +32 -0
  121. package/dist/src/databases/entities/Settings.js.map +1 -0
  122. package/dist/src/databases/entities/SharedCredentials.d.ts +13 -0
  123. package/dist/src/databases/entities/SharedCredentials.js +83 -0
  124. package/dist/src/databases/entities/SharedCredentials.js.map +1 -0
  125. package/dist/src/databases/entities/SharedWorkflow.d.ts +13 -0
  126. package/dist/src/databases/entities/SharedWorkflow.js +83 -0
  127. package/dist/src/databases/entities/SharedWorkflow.js.map +1 -0
  128. package/dist/src/databases/entities/TagEntity.js +6 -2
  129. package/dist/src/databases/entities/TagEntity.js.map +1 -1
  130. package/dist/src/databases/entities/User.d.ts +24 -0
  131. package/dist/src/databases/entities/User.js +145 -0
  132. package/dist/src/databases/entities/User.js.map +1 -0
  133. package/dist/src/databases/entities/WorkflowEntity.d.ts +2 -0
  134. package/dist/src/databases/entities/WorkflowEntity.js +8 -1
  135. package/dist/src/databases/entities/WorkflowEntity.js.map +1 -1
  136. package/dist/src/databases/entities/index.d.ts +10 -0
  137. package/dist/src/databases/entities/index.js +10 -0
  138. package/dist/src/databases/entities/index.js.map +1 -1
  139. package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js +0 -1
  140. package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js.map +1 -1
  141. package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js +0 -3
  142. package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js.map +1 -1
  143. package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js +21 -8
  144. package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js.map +1 -1
  145. package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
  146. package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js +100 -0
  147. package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
  148. package/dist/src/databases/mysqldb/migrations/index.js +2 -0
  149. package/dist/src/databases/mysqldb/migrations/index.js.map +1 -1
  150. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.d.ts +1 -1
  151. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js +1 -1
  152. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js.map +1 -1
  153. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js +0 -1
  154. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js.map +1 -1
  155. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js +0 -3
  156. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js.map +1 -1
  157. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js +16 -17
  158. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js.map +1 -1
  159. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
  160. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js +106 -0
  161. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
  162. package/dist/src/databases/postgresdb/migrations/index.js +2 -0
  163. package/dist/src/databases/postgresdb/migrations/index.js.map +1 -1
  164. package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js +3 -0
  165. package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js.map +1 -1
  166. package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js +3 -0
  167. package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js.map +1 -1
  168. package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.d.ts +1 -1
  169. package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js +3 -0
  170. package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js.map +1 -1
  171. package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.d.ts +2 -1
  172. package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js +6 -0
  173. package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js.map +1 -1
  174. package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.d.ts +1 -1
  175. package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js +3 -0
  176. package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js.map +1 -1
  177. package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.d.ts +1 -1
  178. package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js +3 -0
  179. package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js.map +1 -1
  180. package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.d.ts +1 -1
  181. package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js +3 -0
  182. package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js.map +1 -1
  183. package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js +3 -1
  184. package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js.map +1 -1
  185. package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js +3 -3
  186. package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js.map +1 -1
  187. package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js +17 -13
  188. package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js.map +1 -1
  189. package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
  190. package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js +73 -0
  191. package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js.map +1 -0
  192. package/dist/src/databases/sqlite/migrations/index.d.ts +3 -2
  193. package/dist/src/databases/sqlite/migrations/index.js +4 -1
  194. package/dist/src/databases/sqlite/migrations/index.js.map +1 -1
  195. package/dist/src/databases/utils/customValidators.d.ts +1 -0
  196. package/dist/src/databases/utils/customValidators.js +22 -0
  197. package/dist/src/databases/utils/customValidators.js.map +1 -0
  198. package/dist/src/databases/utils/migrationHelpers.d.ts +3 -0
  199. package/dist/src/databases/utils/migrationHelpers.js +60 -0
  200. package/dist/src/databases/utils/migrationHelpers.js.map +1 -0
  201. package/dist/src/databases/utils/transformers.d.ts +9 -0
  202. package/dist/src/databases/utils/transformers.js +16 -0
  203. package/dist/src/databases/utils/transformers.js.map +1 -0
  204. package/dist/src/telemetry/index.d.ts +4 -1
  205. package/dist/src/telemetry/index.js +4 -2
  206. package/dist/src/telemetry/index.js.map +1 -1
  207. package/dist/test/{CredentialsHelper.test.d.ts → integration/auth.endpoints.test.d.ts} +0 -0
  208. package/dist/test/integration/auth.endpoints.test.js +99 -0
  209. package/dist/test/integration/auth.endpoints.test.js.map +1 -0
  210. package/dist/test/integration/auth.middleware.test.d.ts +1 -0
  211. package/dist/test/integration/auth.middleware.test.js +46 -0
  212. package/dist/test/integration/auth.middleware.test.js.map +1 -0
  213. package/dist/test/integration/credentials.api.test.d.ts +1 -0
  214. package/dist/test/integration/credentials.api.test.js +401 -0
  215. package/dist/test/integration/credentials.api.test.js.map +1 -0
  216. package/dist/test/integration/me.endpoints.test.d.ts +1 -0
  217. package/dist/test/integration/me.endpoints.test.js +383 -0
  218. package/dist/test/integration/me.endpoints.test.js.map +1 -0
  219. package/dist/test/integration/owner.endpoints.test.d.ts +1 -0
  220. package/dist/test/integration/owner.endpoints.test.js +125 -0
  221. package/dist/test/integration/owner.endpoints.test.js.map +1 -0
  222. package/dist/test/integration/passwordReset.endpoints.test.d.ts +1 -0
  223. package/dist/test/integration/passwordReset.endpoints.test.js +221 -0
  224. package/dist/test/integration/passwordReset.endpoints.test.js.map +1 -0
  225. package/dist/test/integration/shared/constants.d.ts +16 -0
  226. package/dist/test/integration/shared/constants.js +41 -0
  227. package/dist/test/integration/shared/constants.js.map +1 -0
  228. package/dist/test/integration/shared/random.d.ts +5 -0
  229. package/dist/test/integration/shared/random.js +34 -0
  230. package/dist/test/integration/shared/random.js.map +1 -0
  231. package/dist/test/integration/shared/testDb.d.ts +47 -0
  232. package/dist/test/integration/shared/testDb.js +280 -0
  233. package/dist/test/integration/shared/testDb.js.map +1 -0
  234. package/dist/test/integration/shared/utils.d.ts +20 -0
  235. package/dist/test/integration/shared/utils.js +132 -0
  236. package/dist/test/integration/shared/utils.js.map +1 -0
  237. package/dist/test/integration/users.endpoints.test.d.ts +1 -0
  238. package/dist/test/integration/users.endpoints.test.js +420 -0
  239. package/dist/test/integration/users.endpoints.test.js.map +1 -0
  240. package/dist/test/setup.d.ts +1 -0
  241. package/dist/test/setup.js +27 -0
  242. package/dist/test/setup.js.map +1 -0
  243. package/dist/test/teardown.d.ts +2 -0
  244. package/dist/test/teardown.js +33 -0
  245. package/dist/test/teardown.js.map +1 -0
  246. package/dist/test/unit/CredentialsHelper.test.d.ts +1 -0
  247. package/dist/test/{CredentialsHelper.test.js → unit/CredentialsHelper.test.js} +1 -1
  248. package/dist/test/unit/CredentialsHelper.test.js.map +1 -0
  249. package/dist/test/{Helpers.d.ts → unit/Helpers.d.ts} +0 -0
  250. package/dist/test/{Helpers.js → unit/Helpers.js} +0 -0
  251. package/dist/test/unit/Helpers.js.map +1 -0
  252. package/oclif.manifest.json +1 -1
  253. package/package.json +30 -29
  254. package/dist/src/PersonalizationSurvey.d.ts +0 -3
  255. package/dist/src/PersonalizationSurvey.js +0 -48
  256. package/dist/src/PersonalizationSurvey.js.map +0 -1
  257. package/dist/test/CredentialsHelper.test.js.map +0 -1
  258. package/dist/test/Helpers.js.map +0 -1
package/dist/src/Db.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.init = exports.collections = void 0;
3
+ exports.init = exports.linkRepository = exports.transaction = exports.collections = void 0;
4
4
  const n8n_core_1 = require("n8n-core");
5
5
  const typeorm_1 = require("typeorm");
6
6
  const path = require("path");
@@ -16,70 +16,89 @@ exports.collections = {
16
16
  Workflow: null,
17
17
  Webhook: null,
18
18
  Tag: null,
19
+ Role: null,
20
+ User: null,
21
+ SharedCredentials: null,
22
+ SharedWorkflow: null,
23
+ Settings: null,
19
24
  };
20
- async function init() {
25
+ let connection;
26
+ async function transaction(fn) {
27
+ return connection.transaction(fn);
28
+ }
29
+ exports.transaction = transaction;
30
+ function linkRepository(entityClass) {
31
+ return typeorm_1.getRepository(entityClass, connection.name);
32
+ }
33
+ exports.linkRepository = linkRepository;
34
+ async function init(testConnectionOptions) {
21
35
  const dbType = (await _1.GenericHelpers.getConfigValue('database.type'));
22
36
  const n8nFolder = n8n_core_1.UserSettings.getUserN8nFolderPath();
23
37
  let connectionOptions;
24
38
  const entityPrefix = config.get('database.tablePrefix');
25
- switch (dbType) {
26
- case 'postgresdb':
27
- const sslCa = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.ca'));
28
- const sslCert = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.cert'));
29
- const sslKey = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.key'));
30
- const sslRejectUnauthorized = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.rejectUnauthorized'));
31
- let ssl;
32
- if (sslCa !== '' || sslCert !== '' || sslKey !== '' || !sslRejectUnauthorized) {
33
- ssl = {
34
- ca: sslCa || undefined,
35
- cert: sslCert || undefined,
36
- key: sslKey || undefined,
37
- rejectUnauthorized: sslRejectUnauthorized,
39
+ if (testConnectionOptions) {
40
+ connectionOptions = testConnectionOptions;
41
+ }
42
+ else {
43
+ switch (dbType) {
44
+ case 'postgresdb':
45
+ const sslCa = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.ca'));
46
+ const sslCert = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.cert'));
47
+ const sslKey = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.key'));
48
+ const sslRejectUnauthorized = (await _1.GenericHelpers.getConfigValue('database.postgresdb.ssl.rejectUnauthorized'));
49
+ let ssl;
50
+ if (sslCa !== '' || sslCert !== '' || sslKey !== '' || !sslRejectUnauthorized) {
51
+ ssl = {
52
+ ca: sslCa || undefined,
53
+ cert: sslCert || undefined,
54
+ key: sslKey || undefined,
55
+ rejectUnauthorized: sslRejectUnauthorized,
56
+ };
57
+ }
58
+ connectionOptions = {
59
+ type: 'postgres',
60
+ entityPrefix,
61
+ database: (await _1.GenericHelpers.getConfigValue('database.postgresdb.database')),
62
+ host: (await _1.GenericHelpers.getConfigValue('database.postgresdb.host')),
63
+ password: (await _1.GenericHelpers.getConfigValue('database.postgresdb.password')),
64
+ port: (await _1.GenericHelpers.getConfigValue('database.postgresdb.port')),
65
+ username: (await _1.GenericHelpers.getConfigValue('database.postgresdb.user')),
66
+ schema: config.get('database.postgresdb.schema'),
67
+ migrations: migrations_1.postgresMigrations,
68
+ migrationsRun: true,
69
+ migrationsTableName: `${entityPrefix}migrations`,
70
+ ssl,
38
71
  };
39
- }
40
- connectionOptions = {
41
- type: 'postgres',
42
- entityPrefix,
43
- database: (await _1.GenericHelpers.getConfigValue('database.postgresdb.database')),
44
- host: (await _1.GenericHelpers.getConfigValue('database.postgresdb.host')),
45
- password: (await _1.GenericHelpers.getConfigValue('database.postgresdb.password')),
46
- port: (await _1.GenericHelpers.getConfigValue('database.postgresdb.port')),
47
- username: (await _1.GenericHelpers.getConfigValue('database.postgresdb.user')),
48
- schema: config.get('database.postgresdb.schema'),
49
- migrations: migrations_1.postgresMigrations,
50
- migrationsRun: true,
51
- migrationsTableName: `${entityPrefix}migrations`,
52
- ssl,
53
- };
54
- break;
55
- case 'mariadb':
56
- case 'mysqldb':
57
- connectionOptions = {
58
- type: dbType === 'mysqldb' ? 'mysql' : 'mariadb',
59
- database: (await _1.GenericHelpers.getConfigValue('database.mysqldb.database')),
60
- entityPrefix,
61
- host: (await _1.GenericHelpers.getConfigValue('database.mysqldb.host')),
62
- password: (await _1.GenericHelpers.getConfigValue('database.mysqldb.password')),
63
- port: (await _1.GenericHelpers.getConfigValue('database.mysqldb.port')),
64
- username: (await _1.GenericHelpers.getConfigValue('database.mysqldb.user')),
65
- migrations: migrations_2.mysqlMigrations,
66
- migrationsRun: true,
67
- migrationsTableName: `${entityPrefix}migrations`,
68
- timezone: 'Z',
69
- };
70
- break;
71
- case 'sqlite':
72
- connectionOptions = {
73
- type: 'sqlite',
74
- database: path.join(n8nFolder, 'database.sqlite'),
75
- entityPrefix,
76
- migrations: migrations_3.sqliteMigrations,
77
- migrationsRun: false,
78
- migrationsTableName: `${entityPrefix}migrations`,
79
- };
80
- break;
81
- default:
82
- throw new Error(`The database "${dbType}" is currently not supported!`);
72
+ break;
73
+ case 'mariadb':
74
+ case 'mysqldb':
75
+ connectionOptions = {
76
+ type: dbType === 'mysqldb' ? 'mysql' : 'mariadb',
77
+ database: (await _1.GenericHelpers.getConfigValue('database.mysqldb.database')),
78
+ entityPrefix,
79
+ host: (await _1.GenericHelpers.getConfigValue('database.mysqldb.host')),
80
+ password: (await _1.GenericHelpers.getConfigValue('database.mysqldb.password')),
81
+ port: (await _1.GenericHelpers.getConfigValue('database.mysqldb.port')),
82
+ username: (await _1.GenericHelpers.getConfigValue('database.mysqldb.user')),
83
+ migrations: migrations_2.mysqlMigrations,
84
+ migrationsRun: true,
85
+ migrationsTableName: `${entityPrefix}migrations`,
86
+ timezone: 'Z',
87
+ };
88
+ break;
89
+ case 'sqlite':
90
+ connectionOptions = {
91
+ type: 'sqlite',
92
+ database: path.join(n8nFolder, 'database.sqlite'),
93
+ entityPrefix,
94
+ migrations: migrations_3.sqliteMigrations,
95
+ migrationsRun: false,
96
+ migrationsTableName: `${entityPrefix}migrations`,
97
+ };
98
+ break;
99
+ default:
100
+ throw new Error(`The database "${dbType}" is currently not supported!`);
101
+ }
83
102
  }
84
103
  let loggingOption = (await _1.GenericHelpers.getConfigValue('database.logging.enabled'));
85
104
  if (loggingOption) {
@@ -97,8 +116,8 @@ async function init() {
97
116
  logging: loggingOption,
98
117
  maxQueryExecutionTime: (await _1.GenericHelpers.getConfigValue('database.logging.maxQueryExecutionTime')),
99
118
  });
100
- let connection = await typeorm_1.createConnection(connectionOptions);
101
- if (dbType === 'sqlite') {
119
+ connection = await typeorm_1.createConnection(connectionOptions);
120
+ if (!testConnectionOptions && dbType === 'sqlite') {
102
121
  let migrations = [];
103
122
  try {
104
123
  migrations = await connection.query(`SELECT id FROM ${entityPrefix}migrations where name = "MakeStoppedAtNullable1607431743769"`);
@@ -113,11 +132,16 @@ async function init() {
113
132
  connection = await typeorm_1.createConnection(connectionOptions);
114
133
  }
115
134
  }
116
- exports.collections.Credentials = typeorm_1.getRepository(entities_1.entities.CredentialsEntity);
117
- exports.collections.Execution = typeorm_1.getRepository(entities_1.entities.ExecutionEntity);
118
- exports.collections.Workflow = typeorm_1.getRepository(entities_1.entities.WorkflowEntity);
119
- exports.collections.Webhook = typeorm_1.getRepository(entities_1.entities.WebhookEntity);
120
- exports.collections.Tag = typeorm_1.getRepository(entities_1.entities.TagEntity);
135
+ exports.collections.Credentials = linkRepository(entities_1.entities.CredentialsEntity);
136
+ exports.collections.Execution = linkRepository(entities_1.entities.ExecutionEntity);
137
+ exports.collections.Workflow = linkRepository(entities_1.entities.WorkflowEntity);
138
+ exports.collections.Webhook = linkRepository(entities_1.entities.WebhookEntity);
139
+ exports.collections.Tag = linkRepository(entities_1.entities.TagEntity);
140
+ exports.collections.Role = linkRepository(entities_1.entities.Role);
141
+ exports.collections.User = linkRepository(entities_1.entities.User);
142
+ exports.collections.SharedCredentials = linkRepository(entities_1.entities.SharedCredentials);
143
+ exports.collections.SharedWorkflow = linkRepository(entities_1.entities.SharedWorkflow);
144
+ exports.collections.Settings = linkRepository(entities_1.entities.Settings);
121
145
  return exports.collections;
122
146
  }
123
147
  exports.init = init;
@@ -1 +1 @@
1
- {"version":3,"file":"Db.js","sourceRoot":"","sources":["../../src/Db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Db.js","sourceRoot":"","sources":["../../src/Db.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import * as express from 'express';
2
2
  import { IPackageVersions } from '.';
3
+ import { WorkflowEntity } from './databases/entities/WorkflowEntity';
4
+ import { CredentialsEntity } from './databases/entities/CredentialsEntity';
5
+ import { TagEntity } from './databases/entities/TagEntity';
6
+ import { User } from './databases/entities/User';
3
7
  export declare function getBaseUrl(): string;
4
8
  export declare function getSessionId(req: express.Request): string | undefined;
5
9
  export declare function getVersions(): Promise<IPackageVersions>;
@@ -7,3 +11,5 @@ export declare function getConfigValue(configKey: string): Promise<string | bool
7
11
  export declare function generateUniqueName(requestedName: string, entityType: 'workflow' | 'credentials'): Promise<{
8
12
  name: string;
9
13
  }>;
14
+ export declare function validateEntity(entity: WorkflowEntity | CredentialsEntity | TagEntity | User): Promise<void>;
15
+ export declare const DEFAULT_EXECUTIONS_GET_ALL_LIMIT = 20;
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateUniqueName = exports.getConfigValue = exports.getVersions = exports.getSessionId = exports.getBaseUrl = void 0;
3
+ exports.DEFAULT_EXECUTIONS_GET_ALL_LIMIT = exports.validateEntity = exports.generateUniqueName = exports.getConfigValue = exports.getVersions = exports.getSessionId = exports.getBaseUrl = void 0;
4
4
  const path_1 = require("path");
5
5
  const promises_1 = require("fs/promises");
6
+ const class_validator_1 = require("class-validator");
6
7
  const config = require("../config");
7
8
  const _1 = require(".");
8
9
  const typeorm_1 = require("typeorm");
@@ -101,4 +102,20 @@ async function generateUniqueName(requestedName, entityType) {
101
102
  return { name: `${requestedName} ${maxSuffix + 1}` };
102
103
  }
103
104
  exports.generateUniqueName = generateUniqueName;
105
+ async function validateEntity(entity) {
106
+ const errors = await class_validator_1.validate(entity);
107
+ const errorMessages = errors
108
+ .reduce((acc, cur) => {
109
+ if (!cur.constraints)
110
+ return acc;
111
+ acc.push(...Object.values(cur.constraints));
112
+ return acc;
113
+ }, [])
114
+ .join(' | ');
115
+ if (errorMessages) {
116
+ throw new _1.ResponseHelper.ResponseError(errorMessages, undefined, 400);
117
+ }
118
+ }
119
+ exports.validateEntity = validateEntity;
120
+ exports.DEFAULT_EXECUTIONS_GET_ALL_LIMIT = 20;
104
121
  //# sourceMappingURL=GenericHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GenericHelpers.js","sourceRoot":"","sources":["../../src/GenericHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericHelpers.js","sourceRoot":"","sources":["../../src/GenericHelpers.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,11 @@ import { Url } from 'url';
8
8
  import { Request } from 'express';
9
9
  import { WorkflowEntity } from './databases/entities/WorkflowEntity';
10
10
  import { TagEntity } from './databases/entities/TagEntity';
11
+ import { Role } from './databases/entities/Role';
12
+ import { User } from './databases/entities/User';
13
+ import { SharedCredentials } from './databases/entities/SharedCredentials';
14
+ import { SharedWorkflow } from './databases/entities/SharedWorkflow';
15
+ import { Settings } from './databases/entities/Settings';
11
16
  export interface IActivationError {
12
17
  time: number;
13
18
  error: {
@@ -43,6 +48,11 @@ export interface IDatabaseCollections {
43
48
  Workflow: Repository<WorkflowEntity> | null;
44
49
  Webhook: Repository<IWebhookDb> | null;
45
50
  Tag: Repository<TagEntity> | null;
51
+ Role: Repository<Role> | null;
52
+ User: Repository<User> | null;
53
+ SharedCredentials: Repository<SharedCredentials> | null;
54
+ SharedWorkflow: Repository<SharedWorkflow> | null;
55
+ Settings: Repository<Settings> | null;
46
56
  }
47
57
  export interface IWebhookDb {
48
58
  workflowId: number | string;
@@ -52,6 +62,11 @@ export interface IWebhookDb {
52
62
  webhookId?: string;
53
63
  pathLength?: number;
54
64
  }
65
+ export interface ISettingsDb {
66
+ key: string;
67
+ value: string | boolean | IDataObject | number;
68
+ loadOnStartup: boolean;
69
+ }
55
70
  export interface ITagDb {
56
71
  id: number;
57
72
  name: string;
@@ -240,15 +255,56 @@ export interface IDiagnosticInfo {
240
255
  };
241
256
  deploymentType: string;
242
257
  binaryDataMode: string;
258
+ n8n_multi_user_allowed: boolean;
259
+ smtp_set_up: boolean;
260
+ }
261
+ export interface ITelemetryUserDeletionData {
262
+ user_id: string;
263
+ target_user_old_status: 'active' | 'invited';
264
+ migration_strategy?: 'transfer_data' | 'delete_data';
265
+ target_user_id?: string;
266
+ migration_user_id?: string;
243
267
  }
244
268
  export interface IInternalHooksClass {
245
269
  onN8nStop(): Promise<void>;
246
270
  onServerStarted(diagnosticInfo: IDiagnosticInfo, firstWorkflowCreatedAt?: Date): Promise<unknown[]>;
247
- onPersonalizationSurveySubmitted(answers: IPersonalizationSurveyAnswers): Promise<void>;
248
- onWorkflowCreated(workflow: IWorkflowBase): Promise<void>;
249
- onWorkflowDeleted(workflowId: string): Promise<void>;
250
- onWorkflowSaved(workflow: IWorkflowBase): Promise<void>;
251
- onWorkflowPostExecute(executionId: string, workflow: IWorkflowBase, runData?: IRun): Promise<void>;
271
+ onPersonalizationSurveySubmitted(userId: string, answers: Record<string, string>): Promise<void>;
272
+ onWorkflowCreated(userId: string, workflow: IWorkflowBase): Promise<void>;
273
+ onWorkflowDeleted(userId: string, workflowId: string): Promise<void>;
274
+ onWorkflowSaved(userId: string, workflow: IWorkflowBase): Promise<void>;
275
+ onWorkflowPostExecute(executionId: string, workflow: IWorkflowBase, runData?: IRun, userId?: string): Promise<void>;
276
+ onUserDeletion(userId: string, userDeletionData: ITelemetryUserDeletionData): Promise<void>;
277
+ onUserInvite(userInviteData: {
278
+ user_id: string;
279
+ target_user_id: string[];
280
+ }): Promise<void>;
281
+ onUserReinvite(userReinviteData: {
282
+ user_id: string;
283
+ target_user_id: string;
284
+ }): Promise<void>;
285
+ onUserUpdate(userUpdateData: {
286
+ user_id: string;
287
+ fields_changed: string[];
288
+ }): Promise<void>;
289
+ onUserInviteEmailClick(userInviteClickData: {
290
+ user_id: string;
291
+ }): Promise<void>;
292
+ onUserPasswordResetEmailClick(userPasswordResetData: {
293
+ user_id: string;
294
+ }): Promise<void>;
295
+ onUserTransactionalEmail(userTransactionalEmailData: {
296
+ user_id: string;
297
+ message_type: 'Reset password' | 'New user invite' | 'Resend invite';
298
+ }): Promise<void>;
299
+ onUserPasswordResetRequestClick(userPasswordResetData: {
300
+ user_id: string;
301
+ }): Promise<void>;
302
+ onInstanceOwnerSetup(instanceOwnerSetupData: {
303
+ user_id: string;
304
+ }): Promise<void>;
305
+ onUserSignup(userSignupData: {
306
+ user_id: string;
307
+ }): Promise<void>;
252
308
  }
253
309
  export interface IN8nConfig {
254
310
  database: IN8nConfigDatabase;
@@ -310,6 +366,7 @@ export interface IN8nUISettings {
310
366
  };
311
367
  timezone: string;
312
368
  urlBaseWebhook: string;
369
+ urlBaseEditor: string;
313
370
  versionCli: string;
314
371
  n8nMetadata?: {
315
372
  [key: string]: string | number | undefined;
@@ -317,8 +374,10 @@ export interface IN8nUISettings {
317
374
  versionNotifications: IVersionNotificationSettings;
318
375
  instanceId: string;
319
376
  telemetry: ITelemetrySettings;
320
- personalizationSurvey: IPersonalizationSurvey;
377
+ personalizationSurveyEnabled: boolean;
321
378
  defaultLocale: string;
379
+ userManagement: IUserManagementSettings;
380
+ workflowTagsDisabled: boolean;
322
381
  logLevel: 'info' | 'debug' | 'warn' | 'error' | 'verbose';
323
382
  hiringBannerEnabled: boolean;
324
383
  templates: {
@@ -334,9 +393,10 @@ export interface IPersonalizationSurveyAnswers {
334
393
  otherWorkArea: string | null;
335
394
  workArea: string[] | string | null;
336
395
  }
337
- export interface IPersonalizationSurvey {
338
- answers?: IPersonalizationSurveyAnswers;
339
- shouldShow: boolean;
396
+ export interface IUserManagementSettings {
397
+ enabled: boolean;
398
+ showSetupOnFirstLoad?: boolean;
399
+ smtpSetup: boolean;
340
400
  }
341
401
  export interface IPackageVersions {
342
402
  cli: string;
@@ -435,16 +495,21 @@ export interface IWorkflowExecutionDataProcess {
435
495
  sessionId?: string;
436
496
  startNodes?: string[];
437
497
  workflowData: IWorkflowBase;
498
+ userId: string;
438
499
  }
439
500
  export interface IWorkflowExecutionDataProcessWithExecution extends IWorkflowExecutionDataProcess {
440
501
  credentialsOverwrite: ICredentialsOverwrite;
441
502
  credentialsTypeData: ICredentialsTypeData;
442
503
  executionId: string;
443
504
  nodeTypeData: ITransferNodeTypes;
505
+ userId: string;
444
506
  }
445
507
  export interface IWorkflowExecuteProcess {
446
508
  startedAt: Date;
447
509
  workflow: Workflow;
448
510
  workflowExecute: WorkflowExecute;
449
511
  }
512
+ export declare type WhereClause = Record<string, {
513
+ id: string;
514
+ }>;
450
515
  export {};
@@ -1,5 +1,5 @@
1
1
  import { INodeTypes, IRun } from 'n8n-workflow';
2
- import { IDiagnosticInfo, IInternalHooksClass, IPersonalizationSurveyAnswers, IWorkflowBase, IWorkflowDb } from '.';
2
+ import { IDiagnosticInfo, IInternalHooksClass, ITelemetryUserDeletionData, IWorkflowBase, IWorkflowDb } from '.';
3
3
  import { Telemetry } from './telemetry';
4
4
  export declare class InternalHooksClass implements IInternalHooksClass {
5
5
  private telemetry;
@@ -7,10 +7,46 @@ export declare class InternalHooksClass implements IInternalHooksClass {
7
7
  private nodeTypes;
8
8
  constructor(telemetry: Telemetry, versionCli: string, nodeTypes: INodeTypes);
9
9
  onServerStarted(diagnosticInfo: IDiagnosticInfo, earliestWorkflowCreatedAt?: Date): Promise<unknown[]>;
10
- onPersonalizationSurveySubmitted(answers: IPersonalizationSurveyAnswers): Promise<void>;
11
- onWorkflowCreated(workflow: IWorkflowBase): Promise<void>;
12
- onWorkflowDeleted(workflowId: string): Promise<void>;
13
- onWorkflowSaved(workflow: IWorkflowDb): Promise<void>;
14
- onWorkflowPostExecute(executionId: string, workflow: IWorkflowBase, runData?: IRun): Promise<void>;
10
+ onPersonalizationSurveySubmitted(userId: string, answers: Record<string, string>): Promise<void>;
11
+ onWorkflowCreated(userId: string, workflow: IWorkflowBase): Promise<void>;
12
+ onWorkflowDeleted(userId: string, workflowId: string): Promise<void>;
13
+ onWorkflowSaved(userId: string, workflow: IWorkflowDb): Promise<void>;
14
+ onWorkflowPostExecute(executionId: string, workflow: IWorkflowBase, runData?: IRun, userId?: string): Promise<void>;
15
15
  onN8nStop(): Promise<void>;
16
+ onUserDeletion(userId: string, userDeletionData: ITelemetryUserDeletionData): Promise<void>;
17
+ onUserInvite(userInviteData: {
18
+ user_id: string;
19
+ target_user_id: string[];
20
+ }): Promise<void>;
21
+ onUserReinvite(userReinviteData: {
22
+ user_id: string;
23
+ target_user_id: string;
24
+ }): Promise<void>;
25
+ onUserUpdate(userUpdateData: {
26
+ user_id: string;
27
+ fields_changed: string[];
28
+ }): Promise<void>;
29
+ onUserInviteEmailClick(userInviteClickData: {
30
+ user_id: string;
31
+ }): Promise<void>;
32
+ onUserPasswordResetEmailClick(userPasswordResetData: {
33
+ user_id: string;
34
+ }): Promise<void>;
35
+ onUserTransactionalEmail(userTransactionalEmailData: {
36
+ user_id: string;
37
+ message_type: 'Reset password' | 'New user invite' | 'Resend invite';
38
+ }): Promise<void>;
39
+ onUserPasswordResetRequestClick(userPasswordResetData: {
40
+ user_id: string;
41
+ }): Promise<void>;
42
+ onInstanceOwnerSetup(instanceOwnerSetupData: {
43
+ user_id: string;
44
+ }): Promise<void>;
45
+ onUserSignup(userSignupData: {
46
+ user_id: string;
47
+ }): Promise<void>;
48
+ onEmailFailed(failedEmailData: {
49
+ user_id: string;
50
+ message_type: 'Reset password' | 'New user invite' | 'Resend invite';
51
+ }): Promise<void>;
16
52
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InternalHooksClass = void 0;
4
4
  const n8n_core_1 = require("n8n-core");
5
5
  const n8n_workflow_1 = require("n8n-workflow");
6
+ const change_case_1 = require("change-case");
6
7
  class InternalHooksClass {
7
8
  constructor(telemetry, versionCli, nodeTypes) {
8
9
  this.telemetry = telemetry;
@@ -20,46 +21,50 @@ class InternalHooksClass {
20
21
  execution_variables: diagnosticInfo.executionVariables,
21
22
  n8n_deployment_type: diagnosticInfo.deploymentType,
22
23
  n8n_binary_data_mode: diagnosticInfo.binaryDataMode,
24
+ n8n_multi_user_allowed: diagnosticInfo.n8n_multi_user_allowed,
25
+ smtp_set_up: diagnosticInfo.smtp_set_up,
23
26
  };
24
27
  return Promise.all([
25
28
  this.telemetry.identify(info),
26
29
  this.telemetry.track('Instance started', Object.assign(Object.assign({}, info), { earliest_workflow_created: earliestWorkflowCreatedAt })),
27
30
  ]);
28
31
  }
29
- async onPersonalizationSurveySubmitted(answers) {
30
- return this.telemetry.track('User responded to personalization questions', {
31
- company_size: answers.companySize,
32
- coding_skill: answers.codingSkill,
33
- work_area: answers.workArea,
34
- other_work_area: answers.otherWorkArea,
35
- company_industry: answers.companyIndustry,
36
- other_company_industry: answers.otherCompanyIndustry,
32
+ async onPersonalizationSurveySubmitted(userId, answers) {
33
+ const camelCaseKeys = Object.keys(answers);
34
+ const personalizationSurveyData = { user_id: userId };
35
+ camelCaseKeys.forEach((camelCaseKey) => {
36
+ personalizationSurveyData[change_case_1.snakeCase(camelCaseKey)] = answers[camelCaseKey];
37
37
  });
38
+ return this.telemetry.track('User responded to personalization questions', personalizationSurveyData);
38
39
  }
39
- async onWorkflowCreated(workflow) {
40
+ async onWorkflowCreated(userId, workflow) {
40
41
  const { nodeGraph } = n8n_workflow_1.TelemetryHelpers.generateNodesGraph(workflow, this.nodeTypes);
41
42
  return this.telemetry.track('User created workflow', {
43
+ user_id: userId,
42
44
  workflow_id: workflow.id,
43
45
  node_graph: nodeGraph,
44
46
  node_graph_string: JSON.stringify(nodeGraph),
45
47
  });
46
48
  }
47
- async onWorkflowDeleted(workflowId) {
49
+ async onWorkflowDeleted(userId, workflowId) {
48
50
  return this.telemetry.track('User deleted workflow', {
51
+ user_id: userId,
49
52
  workflow_id: workflowId,
50
53
  });
51
54
  }
52
- async onWorkflowSaved(workflow) {
55
+ async onWorkflowSaved(userId, workflow) {
56
+ var _a, _b;
53
57
  const { nodeGraph } = n8n_workflow_1.TelemetryHelpers.generateNodesGraph(workflow, this.nodeTypes);
54
58
  return this.telemetry.track('User saved workflow', {
59
+ user_id: userId,
55
60
  workflow_id: workflow.id,
56
61
  node_graph: nodeGraph,
57
62
  node_graph_string: JSON.stringify(nodeGraph),
58
63
  version_cli: this.versionCli,
59
- num_tags: workflow.tags.length,
64
+ num_tags: (_b = (_a = workflow.tags) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
60
65
  });
61
66
  }
62
- async onWorkflowPostExecute(executionId, workflow, runData) {
67
+ async onWorkflowPostExecute(executionId, workflow, runData, userId) {
63
68
  var _a, _b, _c, _d, _e, _f;
64
69
  const promises = [Promise.resolve()];
65
70
  const properties = {
@@ -67,6 +72,9 @@ class InternalHooksClass {
67
72
  is_manual: false,
68
73
  version_cli: this.versionCli,
69
74
  };
75
+ if (userId) {
76
+ properties.user_id = userId;
77
+ }
70
78
  if (runData !== undefined) {
71
79
  properties.execution_mode = runData.mode;
72
80
  properties.success = !!runData.finished;
@@ -132,6 +140,39 @@ class InternalHooksClass {
132
140
  });
133
141
  return Promise.race([timeoutPromise, this.telemetry.trackN8nStop()]);
134
142
  }
143
+ async onUserDeletion(userId, userDeletionData) {
144
+ return this.telemetry.track('User deleted user', Object.assign(Object.assign({}, userDeletionData), { user_id: userId }));
145
+ }
146
+ async onUserInvite(userInviteData) {
147
+ return this.telemetry.track('User invited new user', userInviteData);
148
+ }
149
+ async onUserReinvite(userReinviteData) {
150
+ return this.telemetry.track('User resent new user invite email', userReinviteData);
151
+ }
152
+ async onUserUpdate(userUpdateData) {
153
+ return this.telemetry.track('User changed personal settings', userUpdateData);
154
+ }
155
+ async onUserInviteEmailClick(userInviteClickData) {
156
+ return this.telemetry.track('User clicked invite link from email', userInviteClickData);
157
+ }
158
+ async onUserPasswordResetEmailClick(userPasswordResetData) {
159
+ return this.telemetry.track('User clicked password reset link from email', userPasswordResetData);
160
+ }
161
+ async onUserTransactionalEmail(userTransactionalEmailData) {
162
+ return this.telemetry.track('Instance sent transactional email to user', userTransactionalEmailData);
163
+ }
164
+ async onUserPasswordResetRequestClick(userPasswordResetData) {
165
+ return this.telemetry.track('User requested password reset while logged out', userPasswordResetData);
166
+ }
167
+ async onInstanceOwnerSetup(instanceOwnerSetupData) {
168
+ return this.telemetry.track('Owner finished instance setup', instanceOwnerSetupData);
169
+ }
170
+ async onUserSignup(userSignupData) {
171
+ return this.telemetry.track('User signed up', userSignupData);
172
+ }
173
+ async onEmailFailed(failedEmailData) {
174
+ return this.telemetry.track('Instance failed to send transactional email to user', failedEmailData);
175
+ }
135
176
  }
136
177
  exports.InternalHooksClass = InternalHooksClass;
137
178
  //# sourceMappingURL=InternalHooks.js.map