@n8n/db 1.10.3 → 1.11.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 (35) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +4 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/migrations/common/1770220686000-CreateWorkflowBuilderSessionTable.js +1 -1
  6. package/dist/migrations/common/1770220686000-CreateWorkflowBuilderSessionTable.js.map +1 -1
  7. package/dist/migrations/common/1771500000001-AddUnshareScopeToCustomRoles.d.ts +5 -0
  8. package/dist/migrations/common/1771500000001-AddUnshareScopeToCustomRoles.js +62 -0
  9. package/dist/migrations/common/1771500000001-AddUnshareScopeToCustomRoles.js.map +1 -0
  10. package/dist/migrations/dsl/column.d.ts +0 -1
  11. package/dist/migrations/dsl/column.js +2 -13
  12. package/dist/migrations/dsl/column.js.map +1 -1
  13. package/dist/migrations/postgresdb/index.js +2 -0
  14. package/dist/migrations/postgresdb/index.js.map +1 -1
  15. package/dist/migrations/sqlite/index.js +2 -0
  16. package/dist/migrations/sqlite/index.js.map +1 -1
  17. package/dist/repositories/execution.repository.d.ts +1 -0
  18. package/dist/repositories/execution.repository.js +10 -0
  19. package/dist/repositories/execution.repository.js.map +1 -1
  20. package/dist/repositories/role.repository.d.ts +18 -0
  21. package/dist/repositories/role.repository.js +58 -0
  22. package/dist/repositories/role.repository.js.map +1 -1
  23. package/dist/repositories/secrets-provider-connection.repository.ee.d.ts +1 -0
  24. package/dist/repositories/secrets-provider-connection.repository.ee.js +12 -0
  25. package/dist/repositories/secrets-provider-connection.repository.ee.js.map +1 -1
  26. package/dist/services/auth.roles.service.d.ts +3 -5
  27. package/dist/services/auth.roles.service.js +28 -26
  28. package/dist/services/auth.roles.service.js.map +1 -1
  29. package/dist/services/db-lock.service.d.ts +16 -0
  30. package/dist/services/db-lock.service.js +64 -0
  31. package/dist/services/db-lock.service.js.map +1 -0
  32. package/dist/services/index.d.ts +1 -0
  33. package/dist/services/index.js +4 -1
  34. package/dist/services/index.js.map +1 -1
  35. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"secrets-provider-connection.repository.ee.js","sourceRoot":"","sources":["../../src/repositories/secrets-provider-connection.repository.ee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets-provider-connection.repository.ee.js","sourceRoot":"","sources":["../../src/repositories/secrets-provider-connection.repository.ee.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,9 @@
1
1
  import { Logger } from '@n8n/backend-common';
2
- import { RoleRepository, ScopeRepository, SettingsRepository } from '../repositories';
2
+ import { DbLockService } from './db-lock.service';
3
3
  export declare class AuthRolesService {
4
4
  private readonly logger;
5
- private readonly scopeRepository;
6
- private readonly roleRepository;
7
- private readonly settingsRepository;
8
- constructor(logger: Logger, scopeRepository: ScopeRepository, roleRepository: RoleRepository, settingsRepository: SettingsRepository);
5
+ private readonly dbLockService;
6
+ constructor(logger: Logger, dbLockService: DbLockService);
9
7
  private syncScopes;
10
8
  private getPersonalOwnerSettingsScopes;
11
9
  private updateScopesBasedOnSettings;
@@ -15,16 +15,16 @@ const di_1 = require("@n8n/di");
15
15
  const permissions_1 = require("@n8n/permissions");
16
16
  const typeorm_1 = require("@n8n/typeorm");
17
17
  const entities_1 = require("../entities");
18
- const repositories_1 = require("../repositories");
18
+ const db_lock_service_1 = require("./db-lock.service");
19
19
  let AuthRolesService = class AuthRolesService {
20
- constructor(logger, scopeRepository, roleRepository, settingsRepository) {
20
+ constructor(logger, dbLockService) {
21
21
  this.logger = logger;
22
- this.scopeRepository = scopeRepository;
23
- this.roleRepository = roleRepository;
24
- this.settingsRepository = settingsRepository;
22
+ this.dbLockService = dbLockService;
25
23
  }
26
- async syncScopes() {
27
- const availableScopes = await this.scopeRepository.find({
24
+ async syncScopes(tx) {
25
+ const scopeRepo = tx.getRepository(entities_1.Scope);
26
+ const roleRepo = tx.getRepository(entities_1.Role);
27
+ const availableScopes = await scopeRepo.find({
28
28
  select: {
29
29
  slug: true,
30
30
  displayName: true,
@@ -56,7 +56,7 @@ let AuthRolesService = class AuthRolesService {
56
56
  }).filter((scope) => scope !== null);
57
57
  if (scopesToUpdate.length > 0) {
58
58
  this.logger.debug(`Updating ${scopesToUpdate.length} scopes...`);
59
- await this.scopeRepository.save(scopesToUpdate);
59
+ await scopeRepo.save(scopesToUpdate);
60
60
  this.logger.debug('Scopes updated successfully.');
61
61
  }
62
62
  else {
@@ -66,7 +66,7 @@ let AuthRolesService = class AuthRolesService {
66
66
  if (scopesToDelete.length > 0) {
67
67
  this.logger.debug(`Deleting ${scopesToDelete.length} obsolete scopes: ${scopesToDelete.map((s) => s.slug).join(', ')}`);
68
68
  const obsoleteScopeSlugs = scopesToDelete.map((s) => s.slug);
69
- const rolesWithObsoleteScopes = await this.roleRepository.find({
69
+ const rolesWithObsoleteScopes = await roleRepo.find({
70
70
  relations: ['scopes'],
71
71
  where: { scopes: { slug: (0, typeorm_1.In)(obsoleteScopeSlugs) } },
72
72
  });
@@ -76,18 +76,18 @@ let AuthRolesService = class AuthRolesService {
76
76
  });
77
77
  if (rolesToUpdate.length > 0) {
78
78
  this.logger.debug(`Removing obsolete scopes from ${rolesToUpdate.length} roles...`);
79
- await this.roleRepository.save(rolesToUpdate);
79
+ await roleRepo.save(rolesToUpdate);
80
80
  }
81
- await this.scopeRepository.remove(scopesToDelete);
81
+ await scopeRepo.remove(scopesToDelete);
82
82
  this.logger.debug('Obsolete scopes deleted successfully.');
83
83
  }
84
84
  else {
85
85
  this.logger.debug('No obsolete scopes to delete.');
86
86
  }
87
87
  }
88
- async getPersonalOwnerSettingsScopes() {
88
+ async getPersonalOwnerSettingsScopes(tx) {
89
89
  const settingKeys = [permissions_1.PERSONAL_SPACE_PUBLISHING_SETTING.key, permissions_1.PERSONAL_SPACE_SHARING_SETTING.key];
90
- const rows = (await this.settingsRepository.findByKeys(settingKeys)) ?? [];
90
+ const rows = await tx.findBy(entities_1.Settings, { key: (0, typeorm_1.In)(settingKeys) });
91
91
  const personalSpacePublishingValue = rows.find((r) => r.key === permissions_1.PERSONAL_SPACE_PUBLISHING_SETTING.key)?.value;
92
92
  const personalSpaceSharingValue = rows.find((r) => r.key === permissions_1.PERSONAL_SPACE_SHARING_SETTING.key)?.value;
93
93
  const scopes = [];
@@ -101,15 +101,17 @@ let AuthRolesService = class AuthRolesService {
101
101
  }
102
102
  return scopes;
103
103
  }
104
- async updateScopesBasedOnSettings(roleSlug, defaultScopes) {
104
+ async updateScopesBasedOnSettings(roleSlug, defaultScopes, tx) {
105
105
  const scopes = [...defaultScopes];
106
106
  if (roleSlug === permissions_1.PROJECT_OWNER_ROLE_SLUG) {
107
- scopes.push(...(await this.getPersonalOwnerSettingsScopes()));
107
+ scopes.push(...(await this.getPersonalOwnerSettingsScopes(tx)));
108
108
  }
109
109
  return scopes;
110
110
  }
111
- async syncRoles() {
112
- const existingRoles = await this.roleRepository.find({
111
+ async syncRoles(tx) {
112
+ const roleRepo = tx.getRepository(entities_1.Role);
113
+ const scopeRepo = tx.getRepository(entities_1.Scope);
114
+ const existingRoles = await roleRepo.find({
113
115
  select: {
114
116
  slug: true,
115
117
  displayName: true,
@@ -121,7 +123,7 @@ let AuthRolesService = class AuthRolesService {
121
123
  systemRole: true,
122
124
  },
123
125
  });
124
- const allScopes = await this.scopeRepository.find({
126
+ const allScopes = await scopeRepo.find({
125
127
  select: {
126
128
  slug: true,
127
129
  },
@@ -130,9 +132,9 @@ let AuthRolesService = class AuthRolesService {
130
132
  for (const roleNamespace of Object.keys(permissions_1.ALL_ROLES)) {
131
133
  const rolesToUpdate = await Promise.all(permissions_1.ALL_ROLES[roleNamespace].map(async (role) => {
132
134
  const existingRole = existingRolesMap.get(role.slug);
133
- const expectedScopes = await this.updateScopesBasedOnSettings(role.slug, role.scopes);
135
+ const expectedScopes = await this.updateScopesBasedOnSettings(role.slug, role.scopes, tx);
134
136
  if (!existingRole) {
135
- const newRole = this.roleRepository.create({
137
+ const newRole = roleRepo.create({
136
138
  slug: role.slug,
137
139
  displayName: role.displayName,
138
140
  description: role.description ?? null,
@@ -159,7 +161,7 @@ let AuthRolesService = class AuthRolesService {
159
161
  const filteredRolesToUpdate = rolesToUpdate.filter((role) => role !== null);
160
162
  if (filteredRolesToUpdate.length > 0) {
161
163
  this.logger.debug(`Updating ${filteredRolesToUpdate.length} ${roleNamespace} roles...`);
162
- await this.roleRepository.save(filteredRolesToUpdate);
164
+ await roleRepo.save(filteredRolesToUpdate);
163
165
  this.logger.debug(`${roleNamespace} roles updated successfully.`);
164
166
  }
165
167
  else {
@@ -169,8 +171,10 @@ let AuthRolesService = class AuthRolesService {
169
171
  }
170
172
  async init() {
171
173
  this.logger.debug('Initializing AuthRolesService...');
172
- await this.syncScopes();
173
- await this.syncRoles();
174
+ await this.dbLockService.withLock(1001, async (tx) => {
175
+ await this.syncScopes(tx);
176
+ await this.syncRoles(tx);
177
+ });
174
178
  this.logger.debug('AuthRolesService initialized successfully.');
175
179
  }
176
180
  };
@@ -178,8 +182,6 @@ exports.AuthRolesService = AuthRolesService;
178
182
  exports.AuthRolesService = AuthRolesService = __decorate([
179
183
  (0, di_1.Service)(),
180
184
  __metadata("design:paramtypes", [backend_common_1.Logger,
181
- repositories_1.ScopeRepository,
182
- repositories_1.RoleRepository,
183
- repositories_1.SettingsRepository])
185
+ db_lock_service_1.DbLockService])
184
186
  ], AuthRolesService);
185
187
  //# sourceMappingURL=auth.roles.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.roles.service.js","sourceRoot":"","sources":["../../src/services/auth.roles.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.roles.service.js","sourceRoot":"","sources":["../../src/services/auth.roles.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { DatabaseConfig } from '@n8n/config';
2
+ import { DataSource } from '@n8n/typeorm';
3
+ import type { EntityManager } from '@n8n/typeorm';
4
+ export declare const enum DbLock {
5
+ AUTH_ROLES_SYNC = 1001,
6
+ TEST = 9999
7
+ }
8
+ export declare class DbLockService {
9
+ private readonly dataSource;
10
+ private readonly databaseConfig;
11
+ constructor(dataSource: DataSource, databaseConfig: DatabaseConfig);
12
+ withLock<T>(lockId: DbLock, fn: (tx: EntityManager) => Promise<T>, options?: {
13
+ timeoutMs?: number;
14
+ }): Promise<T>;
15
+ tryWithLock<T>(lockId: DbLock, fn: (tx: EntityManager) => Promise<T>): Promise<T>;
16
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DbLockService = exports.DbLock = void 0;
13
+ const config_1 = require("@n8n/config");
14
+ const di_1 = require("@n8n/di");
15
+ const typeorm_1 = require("@n8n/typeorm");
16
+ const n8n_workflow_1 = require("n8n-workflow");
17
+ var DbLock;
18
+ (function (DbLock) {
19
+ DbLock[DbLock["AUTH_ROLES_SYNC"] = 1001] = "AUTH_ROLES_SYNC";
20
+ DbLock[DbLock["TEST"] = 9999] = "TEST";
21
+ })(DbLock || (exports.DbLock = DbLock = {}));
22
+ let DbLockService = class DbLockService {
23
+ constructor(dataSource, databaseConfig) {
24
+ this.dataSource = dataSource;
25
+ this.databaseConfig = databaseConfig;
26
+ }
27
+ async withLock(lockId, fn, options) {
28
+ return await this.dataSource.manager.transaction(async (tx) => {
29
+ if (this.databaseConfig.type === 'postgresdb') {
30
+ if (options?.timeoutMs !== undefined) {
31
+ await tx.query(`SET LOCAL lock_timeout = '${Number(options.timeoutMs)}'`);
32
+ }
33
+ try {
34
+ await tx.query('SELECT pg_advisory_xact_lock($1)', [lockId]);
35
+ }
36
+ catch (error) {
37
+ if (error instanceof typeorm_1.QueryFailedError && error.message.includes('lock timeout')) {
38
+ throw new n8n_workflow_1.OperationalError(`Timed out waiting for DbLock ${lockId} after ${options?.timeoutMs}ms`, { cause: error });
39
+ }
40
+ throw error;
41
+ }
42
+ }
43
+ return await fn(tx);
44
+ });
45
+ }
46
+ async tryWithLock(lockId, fn) {
47
+ return await this.dataSource.manager.transaction(async (tx) => {
48
+ if (this.databaseConfig.type === 'postgresdb') {
49
+ const result = await tx.query('SELECT pg_try_advisory_xact_lock($1)', [lockId]);
50
+ if (!result[0].pg_try_advisory_xact_lock) {
51
+ throw new n8n_workflow_1.OperationalError(`DbLock ${lockId} is already held by another process`);
52
+ }
53
+ }
54
+ return await fn(tx);
55
+ });
56
+ }
57
+ };
58
+ exports.DbLockService = DbLockService;
59
+ exports.DbLockService = DbLockService = __decorate([
60
+ (0, di_1.Service)(),
61
+ __metadata("design:paramtypes", [typeorm_1.DataSource,
62
+ config_1.DatabaseConfig])
63
+ ], DbLockService);
64
+ //# sourceMappingURL=db-lock.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db-lock.service.js","sourceRoot":"","sources":["../../src/services/db-lock.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAA6C;AAC7C,gCAAkC;AAElC,0CAA4D;AAE5D,+CAAgD;AAMhD,IAAkB,MAIjB;AAJD,WAAkB,MAAM;IACvB,4DAAsB,CAAA;IAEtB,sCAAW,CAAA;AACZ,CAAC,EAJiB,MAAM,sBAAN,MAAM,QAIvB;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAa;IACzB,YACkB,UAAsB,EACtB,cAA8B;QAD9B,eAAU,GAAV,UAAU,CAAY;QACtB,mBAAc,GAAd,cAAc,CAAgB;IAC7C,CAAC;IAaJ,KAAK,CAAC,QAAQ,CACb,MAAc,EACd,EAAqC,EACrC,OAAgC;QAEhC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC7D,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/C,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;oBAGtC,MAAM,EAAE,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC3E,CAAC;gBACD,IAAI,CAAC;oBACJ,MAAM,EAAE,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC9D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,IAAI,KAAK,YAAY,0BAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;wBACjF,MAAM,IAAI,+BAAgB,CACzB,gCAAgC,MAAM,UAAU,OAAO,EAAE,SAAS,IAAI,EACtE,EAAE,KAAK,EAAE,KAAK,EAAE,CAChB,CAAC;oBACH,CAAC;oBACD,MAAM,KAAK,CAAC;gBACb,CAAC;YACF,CAAC;YACD,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;IASD,KAAK,CAAC,WAAW,CAAI,MAAc,EAAE,EAAqC;QACzE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC7D,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAkD,MAAM,EAAE,CAAC,KAAK,CAC3E,sCAAsC,EACtC,CAAC,MAAM,CAAC,CACR,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yBAAyB,EAAE,CAAC;oBAC1C,MAAM,IAAI,+BAAgB,CAAC,UAAU,MAAM,qCAAqC,CAAC,CAAC;gBACnF,CAAC;YACF,CAAC;YACD,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD,CAAA;AAlEY,sCAAa;wBAAb,aAAa;IADzB,IAAA,YAAO,GAAE;qCAGqB,oBAAU;QACN,uBAAc;GAHpC,aAAa,CAkEzB"}
@@ -1 +1,2 @@
1
1
  export { AuthRolesService } from './auth.roles.service';
2
+ export { DbLock, DbLockService } from './db-lock.service';
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuthRolesService = void 0;
3
+ exports.DbLockService = exports.DbLock = exports.AuthRolesService = void 0;
4
4
  var auth_roles_service_1 = require("./auth.roles.service");
5
5
  Object.defineProperty(exports, "AuthRolesService", { enumerable: true, get: function () { return auth_roles_service_1.AuthRolesService; } });
6
+ var db_lock_service_1 = require("./db-lock.service");
7
+ Object.defineProperty(exports, "DbLock", { enumerable: true, get: function () { return db_lock_service_1.DbLock; } });
8
+ Object.defineProperty(exports, "DbLockService", { enumerable: true, get: function () { return db_lock_service_1.DbLockService; } });
6
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;AAAA,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,qDAA0D;AAAjD,yGAAA,MAAM,OAAA;AAAE,gHAAA,aAAa,OAAA"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@n8n/db",
3
- "version": "1.10.3",
3
+ "version": "1.11.0",
4
4
  "main": "dist/index.js",
5
5
  "module": "src/index.ts",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
8
8
  "dist/**/*",
9
- "LICENSE.md",
10
- "LICENSE_EE.md"
9
+ "LICENSE_EE.md",
10
+ "LICENSE.md"
11
11
  ],
12
12
  "dependencies": {
13
13
  "@n8n/typeorm": "0.3.20-16",
@@ -20,16 +20,16 @@
20
20
  "uuid": "10.0.0",
21
21
  "xss": "1.0.15",
22
22
  "zod": "3.25.67",
23
- "@n8n/backend-common": "1.10.2",
23
+ "@n8n/backend-common": "1.11.0",
24
+ "@n8n/config": "2.10.0",
24
25
  "@n8n/constants": "0.19.0",
25
- "@n8n/config": "2.9.0",
26
- "@n8n/api-types": "1.10.3",
26
+ "@n8n/api-types": "1.11.0",
27
+ "@n8n/decorators": "1.11.0",
27
28
  "@n8n/di": "0.10.0",
28
- "@n8n/decorators": "1.10.2",
29
- "@n8n/permissions": "0.51.0",
29
+ "@n8n/permissions": "0.52.0",
30
30
  "@n8n/utils": "1.25.0",
31
- "n8n-core": "2.10.2",
32
- "n8n-workflow": "2.10.2"
31
+ "n8n-core": "2.11.0",
32
+ "n8n-workflow": "2.11.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/lodash": "4.17.17",