@n8n/db 0.19.1 → 0.21.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 (81) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/constants.d.ts +13 -0
  3. package/dist/constants.js +52 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/entities/index.d.ts +1 -5
  6. package/dist/entities/index.js +1 -7
  7. package/dist/entities/index.js.map +1 -1
  8. package/dist/entities/project-relation.d.ts +2 -2
  9. package/dist/entities/project-relation.js +4 -2
  10. package/dist/entities/project-relation.js.map +1 -1
  11. package/dist/entities/role.d.ts +2 -0
  12. package/dist/entities/role.js +4 -0
  13. package/dist/entities/role.js.map +1 -1
  14. package/dist/entities/types-db.d.ts +2 -3
  15. package/dist/entities/user.d.ts +3 -2
  16. package/dist/entities/user.js +13 -16
  17. package/dist/entities/user.js.map +1 -1
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.js +4 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/migrations/common/1742918400000-AddScopesColumnToApiKeys.js +5 -1
  22. package/dist/migrations/common/1742918400000-AddScopesColumnToApiKeys.js.map +1 -1
  23. package/dist/migrations/common/1750252139170-RemoveOldRoleColumn.d.ts +5 -0
  24. package/dist/migrations/common/1750252139170-RemoveOldRoleColumn.js +25 -0
  25. package/dist/migrations/common/1750252139170-RemoveOldRoleColumn.js.map +1 -0
  26. package/dist/migrations/common/1753953244168-LinkRoleToProjectRelationTable.d.ts +5 -0
  27. package/dist/migrations/common/1753953244168-LinkRoleToProjectRelationTable.js +32 -0
  28. package/dist/migrations/common/1753953244168-LinkRoleToProjectRelationTable.js.map +1 -0
  29. package/dist/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.d.ts +5 -0
  30. package/dist/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.js +55 -0
  31. package/dist/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.js.map +1 -0
  32. package/dist/migrations/dsl/column.d.ts +1 -0
  33. package/dist/migrations/dsl/column.js +15 -0
  34. package/dist/migrations/dsl/column.js.map +1 -1
  35. package/dist/migrations/mysqldb/index.js +6 -0
  36. package/dist/migrations/mysqldb/index.js.map +1 -1
  37. package/dist/migrations/postgresdb/index.js +6 -0
  38. package/dist/migrations/postgresdb/index.js.map +1 -1
  39. package/dist/migrations/sqlite/index.js +6 -0
  40. package/dist/migrations/sqlite/index.js.map +1 -1
  41. package/dist/repositories/index.d.ts +0 -2
  42. package/dist/repositories/index.js +1 -5
  43. package/dist/repositories/index.js.map +1 -1
  44. package/dist/repositories/project-relation.repository.d.ts +1 -1
  45. package/dist/repositories/project-relation.repository.js +9 -3
  46. package/dist/repositories/project-relation.repository.js.map +1 -1
  47. package/dist/repositories/project.repository.js +10 -2
  48. package/dist/repositories/project.repository.js.map +1 -1
  49. package/dist/repositories/role.repository.d.ts +9 -1
  50. package/dist/repositories/role.repository.js +57 -2
  51. package/dist/repositories/role.repository.js.map +1 -1
  52. package/dist/repositories/scope.repository.d.ts +1 -0
  53. package/dist/repositories/scope.repository.js +3 -0
  54. package/dist/repositories/scope.repository.js.map +1 -1
  55. package/dist/repositories/shared-credentials.repository.js +1 -1
  56. package/dist/repositories/shared-credentials.repository.js.map +1 -1
  57. package/dist/repositories/shared-workflow.repository.d.ts +1 -1
  58. package/dist/repositories/shared-workflow.repository.js +3 -2
  59. package/dist/repositories/shared-workflow.repository.js.map +1 -1
  60. package/dist/repositories/user.repository.js +25 -13
  61. package/dist/repositories/user.repository.js.map +1 -1
  62. package/dist/repositories/workflow-statistics.repository.js +2 -1
  63. package/dist/repositories/workflow-statistics.repository.js.map +1 -1
  64. package/dist/services/auth.roles.service.js +11 -11
  65. package/dist/services/auth.roles.service.js.map +1 -1
  66. package/dist/utils/is-valid-email.d.ts +1 -0
  67. package/dist/utils/is-valid-email.js +8 -0
  68. package/dist/utils/is-valid-email.js.map +1 -0
  69. package/package.json +10 -9
  70. package/dist/entities/installed-nodes.d.ts +0 -7
  71. package/dist/entities/installed-nodes.js +0 -38
  72. package/dist/entities/installed-nodes.js.map +0 -1
  73. package/dist/entities/installed-packages.d.ts +0 -9
  74. package/dist/entities/installed-packages.js +0 -42
  75. package/dist/entities/installed-packages.js.map +0 -1
  76. package/dist/repositories/installed-nodes.repository.d.ts +0 -5
  77. package/dist/repositories/installed-nodes.repository.js +0 -26
  78. package/dist/repositories/installed-nodes.repository.js.map +0 -1
  79. package/dist/repositories/installed-packages.repository.d.ts +0 -9
  80. package/dist/repositories/installed-packages.repository.js +0 -54
  81. package/dist/repositories/installed-packages.repository.js.map +0 -1
@@ -0,0 +1,13 @@
1
+ import { type ProjectRole, type GlobalRole, type Role as RoleDTO } from '@n8n/permissions';
2
+ import type { Role } from 'entities';
3
+ export declare function builtInRoleToRoleObject(role: RoleDTO, roleType: 'global' | 'project' | 'workflow' | 'credential'): Role;
4
+ export declare const ALL_BUILTIN_ROLES: Record<string, Role>;
5
+ export declare const GLOBAL_OWNER_ROLE: Role;
6
+ export declare const GLOBAL_ADMIN_ROLE: Role;
7
+ export declare const GLOBAL_MEMBER_ROLE: Role;
8
+ export declare const PROJECT_OWNER_ROLE: Role;
9
+ export declare const PROJECT_ADMIN_ROLE: Role;
10
+ export declare const PROJECT_EDITOR_ROLE: Role;
11
+ export declare const PROJECT_VIEWER_ROLE: Role;
12
+ export declare const GLOBAL_ROLES: Record<GlobalRole, Role>;
13
+ export declare const PROJECT_ROLES: Record<ProjectRole, Role>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROJECT_ROLES = exports.GLOBAL_ROLES = exports.PROJECT_VIEWER_ROLE = exports.PROJECT_EDITOR_ROLE = exports.PROJECT_ADMIN_ROLE = exports.PROJECT_OWNER_ROLE = exports.GLOBAL_MEMBER_ROLE = exports.GLOBAL_ADMIN_ROLE = exports.GLOBAL_OWNER_ROLE = exports.ALL_BUILTIN_ROLES = void 0;
4
+ exports.builtInRoleToRoleObject = builtInRoleToRoleObject;
5
+ const permissions_1 = require("@n8n/permissions");
6
+ function builtInRoleToRoleObject(role, roleType) {
7
+ return {
8
+ slug: role.slug,
9
+ displayName: role.displayName,
10
+ scopes: role.scopes.map((scope) => {
11
+ return {
12
+ slug: scope,
13
+ displayName: scope,
14
+ description: null,
15
+ };
16
+ }),
17
+ systemRole: true,
18
+ roleType,
19
+ description: role.description,
20
+ };
21
+ }
22
+ function toRoleMap(allRoles) {
23
+ return allRoles.reduce((acc, role) => {
24
+ acc[role.slug] = role;
25
+ return acc;
26
+ }, {});
27
+ }
28
+ exports.ALL_BUILTIN_ROLES = toRoleMap([
29
+ ...permissions_1.ALL_ROLES.global.map((role) => builtInRoleToRoleObject(role, 'global')),
30
+ ...permissions_1.ALL_ROLES.project.map((role) => builtInRoleToRoleObject(role, 'project')),
31
+ ...permissions_1.ALL_ROLES.credential.map((role) => builtInRoleToRoleObject(role, 'credential')),
32
+ ...permissions_1.ALL_ROLES.workflow.map((role) => builtInRoleToRoleObject(role, 'workflow')),
33
+ ]);
34
+ exports.GLOBAL_OWNER_ROLE = exports.ALL_BUILTIN_ROLES['global:owner'];
35
+ exports.GLOBAL_ADMIN_ROLE = exports.ALL_BUILTIN_ROLES['global:admin'];
36
+ exports.GLOBAL_MEMBER_ROLE = exports.ALL_BUILTIN_ROLES['global:member'];
37
+ exports.PROJECT_OWNER_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_OWNER_ROLE_SLUG];
38
+ exports.PROJECT_ADMIN_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_ADMIN_ROLE_SLUG];
39
+ exports.PROJECT_EDITOR_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_EDITOR_ROLE_SLUG];
40
+ exports.PROJECT_VIEWER_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_VIEWER_ROLE_SLUG];
41
+ exports.GLOBAL_ROLES = {
42
+ 'global:owner': exports.GLOBAL_OWNER_ROLE,
43
+ 'global:admin': exports.GLOBAL_ADMIN_ROLE,
44
+ 'global:member': exports.GLOBAL_MEMBER_ROLE,
45
+ };
46
+ exports.PROJECT_ROLES = {
47
+ [permissions_1.PROJECT_OWNER_ROLE_SLUG]: exports.PROJECT_OWNER_ROLE,
48
+ [permissions_1.PROJECT_ADMIN_ROLE_SLUG]: exports.PROJECT_ADMIN_ROLE,
49
+ [permissions_1.PROJECT_EDITOR_ROLE_SLUG]: exports.PROJECT_EDITOR_ROLE,
50
+ [permissions_1.PROJECT_VIEWER_ROLE_SLUG]: exports.PROJECT_VIEWER_ROLE,
51
+ };
52
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAaA,0DAkBC;AA/BD,kDAS0B;AAI1B,SAAgB,uBAAuB,CACtC,IAAa,EACb,QAA0D;IAE1D,OAAO;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,OAAO;gBACN,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,IAAI;aACjB,CAAC;QACH,CAAC,CAAC;QACF,UAAU,EAAE,IAAI;QAChB,QAAQ;QACR,WAAW,EAAE,IAAI,CAAC,WAAW;KACrB,CAAC;AACX,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB;IAClC,OAAO,QAAQ,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACtB,OAAO,GAAG,CAAC;IACZ,CAAC,EACD,EAA0B,CAC1B,CAAC;AACH,CAAC;AAEY,QAAA,iBAAiB,GAAG,SAAS,CAAC;IAC1C,GAAG,uBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1E,GAAG,uBAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5E,GAAG,uBAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClF,GAAG,uBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;CAC9E,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,yBAAiB,CAAC,cAAc,CAAC,CAAC;AACtD,QAAA,iBAAiB,GAAG,yBAAiB,CAAC,cAAc,CAAC,CAAC;AACtD,QAAA,kBAAkB,GAAG,yBAAiB,CAAC,eAAe,CAAC,CAAC;AAExD,QAAA,kBAAkB,GAAG,yBAAiB,CAAC,qCAAuB,CAAC,CAAC;AAChE,QAAA,kBAAkB,GAAG,yBAAiB,CAAC,qCAAuB,CAAC,CAAC;AAChE,QAAA,mBAAmB,GAAG,yBAAiB,CAAC,sCAAwB,CAAC,CAAC;AAClE,QAAA,mBAAmB,GAAG,yBAAiB,CAAC,sCAAwB,CAAC,CAAC;AAElE,QAAA,YAAY,GAA6B;IACrD,cAAc,EAAE,yBAAiB;IACjC,cAAc,EAAE,yBAAiB;IACjC,eAAe,EAAE,0BAAkB;CACnC,CAAC;AAEW,QAAA,aAAa,GAA8B;IACvD,CAAC,qCAAuB,CAAC,EAAE,0BAAkB;IAC7C,CAAC,qCAAuB,CAAC,EAAE,0BAAkB;IAC7C,CAAC,sCAAwB,CAAC,EAAE,2BAAmB;IAC/C,CAAC,sCAAwB,CAAC,EAAE,2BAAmB;CAC/C,CAAC"}
@@ -11,8 +11,6 @@ import { ExecutionEntity } from './execution-entity';
11
11
  import { ExecutionMetadata } from './execution-metadata';
12
12
  import { Folder } from './folder';
13
13
  import { FolderTagMapping } from './folder-tag-mapping';
14
- import { InstalledNodes } from './installed-nodes';
15
- import { InstalledPackages } from './installed-packages';
16
14
  import { InvalidAuthToken } from './invalid-auth-token';
17
15
  import { ProcessedData } from './processed-data';
18
16
  import { Project } from './project';
@@ -32,11 +30,9 @@ import { WorkflowEntity } from './workflow-entity';
32
30
  import { WorkflowHistory } from './workflow-history';
33
31
  import { WorkflowStatistics } from './workflow-statistics';
34
32
  import { WorkflowTagMapping } from './workflow-tag-mapping';
35
- export { EventDestinations, InstalledNodes, InstalledPackages, InvalidAuthToken, ProcessedData, Settings, Variables, ApiKey, WebhookEntity, AuthIdentity, CredentialsEntity, Folder, Project, ProjectRelation, Role, Scope, SharedCredentials, SharedWorkflow, TagEntity, User, WorkflowEntity, WorkflowStatistics, WorkflowTagMapping, FolderTagMapping, AuthProviderSyncHistory, WorkflowHistory, ExecutionData, ExecutionMetadata, AnnotationTagEntity, ExecutionAnnotation, AnnotationTagMapping, TestRun, TestCaseExecution, ExecutionEntity, };
33
+ export { EventDestinations, InvalidAuthToken, ProcessedData, Settings, Variables, ApiKey, WebhookEntity, AuthIdentity, CredentialsEntity, Folder, Project, ProjectRelation, Role, Scope, SharedCredentials, SharedWorkflow, TagEntity, User, WorkflowEntity, WorkflowStatistics, WorkflowTagMapping, FolderTagMapping, AuthProviderSyncHistory, WorkflowHistory, ExecutionData, ExecutionMetadata, AnnotationTagEntity, ExecutionAnnotation, AnnotationTagMapping, TestRun, TestCaseExecution, ExecutionEntity, };
36
34
  export declare const entities: {
37
35
  EventDestinations: typeof EventDestinations;
38
- InstalledNodes: typeof InstalledNodes;
39
- InstalledPackages: typeof InstalledPackages;
40
36
  InvalidAuthToken: typeof InvalidAuthToken;
41
37
  ProcessedData: typeof ProcessedData;
42
38
  Settings: typeof Settings;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.entities = exports.ExecutionEntity = exports.TestCaseExecution = exports.TestRun = exports.AnnotationTagMapping = exports.ExecutionAnnotation = exports.AnnotationTagEntity = exports.ExecutionMetadata = exports.ExecutionData = exports.WorkflowHistory = exports.AuthProviderSyncHistory = exports.FolderTagMapping = exports.WorkflowTagMapping = exports.WorkflowStatistics = exports.WorkflowEntity = exports.User = exports.TagEntity = exports.SharedWorkflow = exports.SharedCredentials = exports.Scope = exports.Role = exports.ProjectRelation = exports.Project = exports.Folder = exports.CredentialsEntity = exports.AuthIdentity = exports.WebhookEntity = exports.ApiKey = exports.Variables = exports.Settings = exports.ProcessedData = exports.InvalidAuthToken = exports.InstalledPackages = exports.InstalledNodes = exports.EventDestinations = void 0;
3
+ exports.entities = exports.ExecutionEntity = exports.TestCaseExecution = exports.TestRun = exports.AnnotationTagMapping = exports.ExecutionAnnotation = exports.AnnotationTagEntity = exports.ExecutionMetadata = exports.ExecutionData = exports.WorkflowHistory = exports.AuthProviderSyncHistory = exports.FolderTagMapping = exports.WorkflowTagMapping = exports.WorkflowStatistics = exports.WorkflowEntity = exports.User = exports.TagEntity = exports.SharedWorkflow = exports.SharedCredentials = exports.Scope = exports.Role = exports.ProjectRelation = exports.Project = exports.Folder = exports.CredentialsEntity = exports.AuthIdentity = exports.WebhookEntity = exports.ApiKey = exports.Variables = exports.Settings = exports.ProcessedData = exports.InvalidAuthToken = exports.EventDestinations = void 0;
4
4
  const annotation_tag_entity_ee_1 = require("./annotation-tag-entity.ee");
5
5
  Object.defineProperty(exports, "AnnotationTagEntity", { enumerable: true, get: function () { return annotation_tag_entity_ee_1.AnnotationTagEntity; } });
6
6
  const annotation_tag_mapping_ee_1 = require("./annotation-tag-mapping.ee");
@@ -27,10 +27,6 @@ const folder_1 = require("./folder");
27
27
  Object.defineProperty(exports, "Folder", { enumerable: true, get: function () { return folder_1.Folder; } });
28
28
  const folder_tag_mapping_1 = require("./folder-tag-mapping");
29
29
  Object.defineProperty(exports, "FolderTagMapping", { enumerable: true, get: function () { return folder_tag_mapping_1.FolderTagMapping; } });
30
- const installed_nodes_1 = require("./installed-nodes");
31
- Object.defineProperty(exports, "InstalledNodes", { enumerable: true, get: function () { return installed_nodes_1.InstalledNodes; } });
32
- const installed_packages_1 = require("./installed-packages");
33
- Object.defineProperty(exports, "InstalledPackages", { enumerable: true, get: function () { return installed_packages_1.InstalledPackages; } });
34
30
  const invalid_auth_token_1 = require("./invalid-auth-token");
35
31
  Object.defineProperty(exports, "InvalidAuthToken", { enumerable: true, get: function () { return invalid_auth_token_1.InvalidAuthToken; } });
36
32
  const processed_data_1 = require("./processed-data");
@@ -71,8 +67,6 @@ const workflow_tag_mapping_1 = require("./workflow-tag-mapping");
71
67
  Object.defineProperty(exports, "WorkflowTagMapping", { enumerable: true, get: function () { return workflow_tag_mapping_1.WorkflowTagMapping; } });
72
68
  exports.entities = {
73
69
  EventDestinations: event_destinations_1.EventDestinations,
74
- InstalledNodes: installed_nodes_1.InstalledNodes,
75
- InstalledPackages: installed_packages_1.InstalledPackages,
76
70
  InvalidAuthToken: invalid_auth_token_1.InvalidAuthToken,
77
71
  ProcessedData: processed_data_1.ProcessedData,
78
72
  Settings: settings_1.Settings,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { ProjectRole } from '@n8n/permissions';
2
1
  import { WithTimestamps } from './abstract-entity';
3
2
  import { Project } from './project';
3
+ import { Role } from './role';
4
4
  import { User } from './user';
5
5
  export declare class ProjectRelation extends WithTimestamps {
6
- role: ProjectRole;
6
+ role: Role;
7
7
  user: User;
8
8
  userId: string;
9
9
  project: Project;
@@ -13,13 +13,15 @@ exports.ProjectRelation = void 0;
13
13
  const typeorm_1 = require("@n8n/typeorm");
14
14
  const abstract_entity_1 = require("./abstract-entity");
15
15
  const project_1 = require("./project");
16
+ const role_1 = require("./role");
16
17
  const user_1 = require("./user");
17
18
  let ProjectRelation = class ProjectRelation extends abstract_entity_1.WithTimestamps {
18
19
  };
19
20
  exports.ProjectRelation = ProjectRelation;
20
21
  __decorate([
21
- (0, typeorm_1.Column)({ type: 'varchar' }),
22
- __metadata("design:type", String)
22
+ (0, typeorm_1.ManyToOne)('Role', 'projectRelations'),
23
+ (0, typeorm_1.JoinColumn)({ name: 'role', referencedColumnName: 'slug' }),
24
+ __metadata("design:type", role_1.Role)
23
25
  ], ProjectRelation.prototype, "role", void 0);
24
26
  __decorate([
25
27
  (0, typeorm_1.ManyToOne)('User', 'projectRelations'),
@@ -1 +1 @@
1
- {"version":3,"file":"project-relation.js","sourceRoot":"","sources":["../../src/entities/project-relation.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,0CAAwE;AAExE,uDAAmD;AACnD,uCAAoC;AACpC,iCAA8B;AAGvB,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,gCAAc;CAelD,CAAA;AAfY,0CAAe;AAE3B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;6CACV;AAGlB;IADC,IAAA,mBAAS,EAAC,MAAM,EAAE,kBAAkB,CAAC;8BAChC,WAAI;6CAAC;AAGX;IADC,IAAA,uBAAa,EAAC,MAAM,CAAC;;+CACP;AAGf;IADC,IAAA,mBAAS,EAAC,SAAS,EAAE,kBAAkB,CAAC;8BAChC,iBAAO;gDAAC;AAGjB;IADC,IAAA,uBAAa,GAAE;;kDACE;0BAdN,eAAe;IAD3B,IAAA,gBAAM,GAAE;GACI,eAAe,CAe3B"}
1
+ {"version":3,"file":"project-relation.js","sourceRoot":"","sources":["../../src/entities/project-relation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAA4E;AAE5E,uDAAmD;AACnD,uCAAoC;AACpC,iCAA8B;AAC9B,iCAA8B;AAGvB,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,gCAAc;CAgBlD,CAAA;AAhBY,0CAAe;AAG3B;IAFC,IAAA,mBAAS,EAAC,MAAM,EAAE,kBAAkB,CAAC;IACrC,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC;8BACrD,WAAI;6CAAC;AAGX;IADC,IAAA,mBAAS,EAAC,MAAM,EAAE,kBAAkB,CAAC;8BAChC,WAAI;6CAAC;AAGX;IADC,IAAA,uBAAa,EAAC,MAAM,CAAC;;+CACP;AAGf;IADC,IAAA,mBAAS,EAAC,SAAS,EAAE,kBAAkB,CAAC;8BAChC,iBAAO;gDAAC;AAGjB;IADC,IAAA,uBAAa,GAAE;;kDACE;0BAfN,eAAe;IAD3B,IAAA,gBAAM,GAAE;GACI,eAAe,CAgB3B"}
@@ -1,3 +1,4 @@
1
+ import type { ProjectRelation } from './project-relation';
1
2
  import { Scope } from './scope';
2
3
  export declare class Role {
3
4
  slug: string;
@@ -5,5 +6,6 @@ export declare class Role {
5
6
  description: string | null;
6
7
  systemRole: boolean;
7
8
  roleType: 'global' | 'project' | 'workflow' | 'credential';
9
+ projectRelations: ProjectRelation[];
8
10
  scopes: Scope[];
9
11
  }
@@ -53,6 +53,10 @@ __decorate([
53
53
  }),
54
54
  __metadata("design:type", String)
55
55
  ], Role.prototype, "roleType", void 0);
56
+ __decorate([
57
+ (0, typeorm_1.OneToMany)('ProjectRelation', 'role'),
58
+ __metadata("design:type", Array)
59
+ ], Role.prototype, "projectRelations", void 0);
56
60
  __decorate([
57
61
  (0, typeorm_1.ManyToMany)(() => scope_1.Scope, {
58
62
  eager: true,
@@ -1 +1 @@
1
- {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/entities/role.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAoF;AAEpF,mCAAgC;AAKzB,IAAM,IAAI,GAAV,MAAM,IAAI;CAiDhB,CAAA;AAjDY,oBAAI;AAKhB;IAJC,IAAA,uBAAa,EAAC;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;KACZ,CAAC;;kCACW;AAOb;IALC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,aAAa;KACnB,CAAC;;yCACkB;AAOpB;IALC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;KACnB,CAAC;;yCACyB;AAU3B;IARC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,YAAY;KAClB,CAAC;;wCAIkB;AASpB;IAPC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,UAAU;KAChB,CAAC;;sCAIyD;AAU3D;IARC,IAAA,oBAAU,EAAC,GAAG,EAAE,CAAC,aAAK,EAAE;QACxB,KAAK,EAAE,IAAI;KACX,CAAC;IACD,IAAA,mBAAS,EAAC;QACV,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE;QAC9D,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE;KACtE,CAAC;;oCACc;eAhDJ,IAAI;IAHhB,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;KACZ,CAAC;GACW,IAAI,CAiDhB"}
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/entities/role.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAA+F;AAG/F,mCAAgC;AAKzB,IAAM,IAAI,GAAV,MAAM,IAAI;CAoDhB,CAAA;AApDY,oBAAI;AAKhB;IAJC,IAAA,uBAAa,EAAC;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;KACZ,CAAC;;kCACW;AAOb;IALC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,aAAa;KACnB,CAAC;;yCACkB;AAOpB;IALC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;KACnB,CAAC;;yCACyB;AAU3B;IARC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,YAAY;KAClB,CAAC;;wCAIkB;AASpB;IAPC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,UAAU;KAChB,CAAC;;sCAIyD;AAG3D;IADC,IAAA,mBAAS,EAAC,iBAAiB,EAAE,MAAM,CAAC;;8CACD;AAUpC;IARC,IAAA,oBAAU,EAAC,GAAG,EAAE,CAAC,aAAK,EAAE;QACxB,KAAK,EAAE,IAAI;KACX,CAAC;IACD,IAAA,mBAAS,EAAC;QACV,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE;QAC9D,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE;KACtE,CAAC;;oCACc;eAnDJ,IAAI;IAHhB,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;KACZ,CAAC;GACW,IAAI,CAoDhB"}
@@ -1,4 +1,4 @@
1
- import type { GlobalRole, Scope } from '@n8n/permissions';
1
+ import type { Scope } from '@n8n/permissions';
2
2
  import type { FindOperator } from '@n8n/typeorm';
3
3
  import type express from 'express';
4
4
  import type { ICredentialsEncrypted, IRunExecutionData, IWorkflowBase, WorkflowExecuteMode, ExecutionStatus, FeatureFlags, IUserSettings, AnnotationVote, ExecutionSummary, IUser } from 'n8n-workflow';
@@ -76,7 +76,7 @@ export interface PublicUser {
76
76
  passwordResetToken?: string;
77
77
  createdAt: Date;
78
78
  isPending: boolean;
79
- role?: GlobalRole;
79
+ role?: string;
80
80
  globalScopes?: Scope[];
81
81
  signInType: AuthProviderType;
82
82
  disabled: boolean;
@@ -242,7 +242,6 @@ export declare namespace ListQuery {
242
242
  sortBy?: string;
243
243
  };
244
244
  }
245
- export type ProjectRole = 'project:personalOwner' | 'project:admin' | 'project:editor' | 'project:viewer';
246
245
  export interface IGetExecutionsQueryFilter {
247
246
  id?: FindOperator<string> | string;
248
247
  finished?: boolean;
@@ -1,9 +1,10 @@
1
- import type { AuthPrincipal, GlobalRole } from '@n8n/permissions';
1
+ import type { AuthPrincipal } from '@n8n/permissions';
2
2
  import type { IUser, IUserSettings } from 'n8n-workflow';
3
3
  import { WithTimestamps } from './abstract-entity';
4
4
  import type { ApiKey } from './api-key';
5
5
  import type { AuthIdentity } from './auth-identity';
6
6
  import type { ProjectRelation } from './project-relation';
7
+ import { Role } from './role';
7
8
  import type { SharedCredentials } from './shared-credentials';
8
9
  import type { SharedWorkflow } from './shared-workflow';
9
10
  import type { IPersonalizationSurveyAnswers } from './types-db';
@@ -15,7 +16,7 @@ export declare class User extends WithTimestamps implements IUser, AuthPrincipal
15
16
  password: string | null;
16
17
  personalizationAnswers: IPersonalizationSurveyAnswers | null;
17
18
  settings: IUserSettings | null;
18
- role: GlobalRole;
19
+ role: Role;
19
20
  authIdentities: AuthIdentity[];
20
21
  apiKeys: ApiKey[];
21
22
  sharedWorkflows: SharedWorkflow[];
@@ -11,17 +11,23 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.User = void 0;
13
13
  const typeorm_1 = require("@n8n/typeorm");
14
- const class_validator_1 = require("class-validator");
15
14
  const abstract_entity_1 = require("./abstract-entity");
15
+ const role_1 = require("./role");
16
+ const constants_1 = require("../constants");
17
+ const is_valid_email_1 = require("../utils/is-valid-email");
16
18
  const transformers_1 = require("../utils/transformers");
17
- const no_url_validator_1 = require("../utils/validators/no-url.validator");
18
- const no_xss_validator_1 = require("../utils/validators/no-xss.validator");
19
19
  let User = class User extends abstract_entity_1.WithTimestamps {
20
20
  preUpsertHook() {
21
21
  this.email = this.email?.toLowerCase() ?? null;
22
+ if (this.email !== null && this.email !== undefined) {
23
+ const result = (0, is_valid_email_1.isValidEmail)(this.email);
24
+ if (!result) {
25
+ throw new Error(`Cannot save user <${this.email}>: Provided email is invalid`);
26
+ }
27
+ }
22
28
  }
23
29
  computeIsPending() {
24
- this.isPending = this.password === null && this.role !== 'global:owner';
30
+ this.isPending = this.password === null && this.role?.slug !== constants_1.GLOBAL_OWNER_ROLE.slug;
25
31
  }
26
32
  toJSON() {
27
33
  const { password, mfaSecret, mfaRecoveryCodes, ...rest } = this;
@@ -55,28 +61,18 @@ __decorate([
55
61
  transformer: transformers_1.lowerCaser,
56
62
  }),
57
63
  (0, typeorm_1.Index)({ unique: true }),
58
- (0, class_validator_1.IsEmail)(),
59
64
  __metadata("design:type", String)
60
65
  ], User.prototype, "email", void 0);
61
66
  __decorate([
62
67
  (0, typeorm_1.Column)({ length: 32, nullable: true }),
63
- (0, no_xss_validator_1.NoXss)(),
64
- (0, no_url_validator_1.NoUrl)(),
65
- (0, class_validator_1.IsString)({ message: 'First name must be of type string.' }),
66
- (0, class_validator_1.Length)(1, 32, { message: 'First name must be $constraint1 to $constraint2 characters long.' }),
67
68
  __metadata("design:type", String)
68
69
  ], User.prototype, "firstName", void 0);
69
70
  __decorate([
70
71
  (0, typeorm_1.Column)({ length: 32, nullable: true }),
71
- (0, no_xss_validator_1.NoXss)(),
72
- (0, no_url_validator_1.NoUrl)(),
73
- (0, class_validator_1.IsString)({ message: 'Last name must be of type string.' }),
74
- (0, class_validator_1.Length)(1, 32, { message: 'Last name must be $constraint1 to $constraint2 characters long.' }),
75
72
  __metadata("design:type", String)
76
73
  ], User.prototype, "lastName", void 0);
77
74
  __decorate([
78
75
  (0, typeorm_1.Column)({ type: String, nullable: true }),
79
- (0, class_validator_1.IsString)({ message: 'Password must be of type string.' }),
80
76
  __metadata("design:type", Object)
81
77
  ], User.prototype, "password", void 0);
82
78
  __decorate([
@@ -91,8 +87,9 @@ __decorate([
91
87
  __metadata("design:type", Object)
92
88
  ], User.prototype, "settings", void 0);
93
89
  __decorate([
94
- (0, typeorm_1.Column)({ type: String }),
95
- __metadata("design:type", String)
90
+ (0, typeorm_1.ManyToOne)(() => role_1.Role),
91
+ (0, typeorm_1.JoinColumn)({ name: 'roleSlug', referencedColumnName: 'slug' }),
92
+ __metadata("design:type", role_1.Role)
96
93
  ], User.prototype, "role", void 0);
97
94
  __decorate([
98
95
  (0, typeorm_1.OneToMany)('AuthIdentity', 'user'),
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/entities/user.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/entities/user.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  export { WithStringId, WithTimestamps, WithTimestampsAndStringId, jsonColumnType, datetimeColumnType, dbType, JsonColumn, DateTimeColumn, } from './entities/abstract-entity';
2
2
  export { generateNanoId } from './utils/generators';
3
3
  export { isStringArray } from './utils/is-string-array';
4
+ export { isValidEmail } from './utils/is-valid-email';
4
5
  export { separate } from './utils/separate';
5
6
  export { sql } from './utils/sql';
6
7
  export { idStringifier, lowerCaser, objectRetriever, sqlite } from './utils/transformers';
8
+ export * from './constants';
7
9
  export * from './entities';
8
10
  export * from './entities/types-db';
9
11
  export { NoXss } from './utils/validators/no-xss.validator';
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.AuthRolesService = exports.DbConnectionOptions = exports.DbConnection = exports.wrapMigration = exports.postgresMigrations = exports.mysqlMigrations = exports.sqliteMigrations = exports.CreateTable = exports.DslColumn = exports.NoUrl = exports.NoXss = exports.sqlite = exports.objectRetriever = exports.lowerCaser = exports.idStringifier = exports.sql = exports.separate = exports.isStringArray = exports.generateNanoId = exports.DateTimeColumn = exports.JsonColumn = exports.dbType = exports.datetimeColumnType = exports.jsonColumnType = exports.WithTimestampsAndStringId = exports.WithTimestamps = exports.WithStringId = void 0;
17
+ exports.AuthRolesService = exports.DbConnectionOptions = exports.DbConnection = exports.wrapMigration = exports.postgresMigrations = exports.mysqlMigrations = exports.sqliteMigrations = exports.CreateTable = exports.DslColumn = exports.NoUrl = exports.NoXss = exports.sqlite = exports.objectRetriever = exports.lowerCaser = exports.idStringifier = exports.sql = exports.separate = exports.isValidEmail = exports.isStringArray = exports.generateNanoId = exports.DateTimeColumn = exports.JsonColumn = exports.dbType = exports.datetimeColumnType = exports.jsonColumnType = exports.WithTimestampsAndStringId = exports.WithTimestamps = exports.WithStringId = void 0;
18
18
  var abstract_entity_1 = require("./entities/abstract-entity");
19
19
  Object.defineProperty(exports, "WithStringId", { enumerable: true, get: function () { return abstract_entity_1.WithStringId; } });
20
20
  Object.defineProperty(exports, "WithTimestamps", { enumerable: true, get: function () { return abstract_entity_1.WithTimestamps; } });
@@ -28,6 +28,8 @@ var generators_1 = require("./utils/generators");
28
28
  Object.defineProperty(exports, "generateNanoId", { enumerable: true, get: function () { return generators_1.generateNanoId; } });
29
29
  var is_string_array_1 = require("./utils/is-string-array");
30
30
  Object.defineProperty(exports, "isStringArray", { enumerable: true, get: function () { return is_string_array_1.isStringArray; } });
31
+ var is_valid_email_1 = require("./utils/is-valid-email");
32
+ Object.defineProperty(exports, "isValidEmail", { enumerable: true, get: function () { return is_valid_email_1.isValidEmail; } });
31
33
  var separate_1 = require("./utils/separate");
32
34
  Object.defineProperty(exports, "separate", { enumerable: true, get: function () { return separate_1.separate; } });
33
35
  var sql_1 = require("./utils/sql");
@@ -37,6 +39,7 @@ Object.defineProperty(exports, "idStringifier", { enumerable: true, get: functio
37
39
  Object.defineProperty(exports, "lowerCaser", { enumerable: true, get: function () { return transformers_1.lowerCaser; } });
38
40
  Object.defineProperty(exports, "objectRetriever", { enumerable: true, get: function () { return transformers_1.objectRetriever; } });
39
41
  Object.defineProperty(exports, "sqlite", { enumerable: true, get: function () { return transformers_1.sqlite; } });
42
+ __exportStar(require("./constants"), exports);
40
43
  __exportStar(require("./entities"), exports);
41
44
  __exportStar(require("./entities/types-db"), exports);
42
45
  var no_xss_validator_1 = require("./utils/validators/no-xss.validator");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DASoC;AARnC,+GAAA,YAAY,OAAA;AACZ,iHAAA,cAAc,OAAA;AACd,4HAAA,yBAAyB,OAAA;AACzB,iHAAA,cAAc,OAAA;AACd,qHAAA,kBAAkB,OAAA;AAClB,yGAAA,MAAM,OAAA;AACN,6GAAA,UAAU,OAAA;AACV,iHAAA,cAAc,OAAA;AAGf,iDAAoD;AAA3C,4GAAA,cAAc,OAAA;AACvB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,6CAA4C;AAAnC,oGAAA,QAAQ,OAAA;AACjB,mCAAkC;AAAzB,0FAAA,GAAG,OAAA;AACZ,qDAA0F;AAAjF,6GAAA,aAAa,OAAA;AAAE,0GAAA,UAAU,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,sGAAA,MAAM,OAAA;AAE3D,6CAA2B;AAC3B,sDAAoC;AACpC,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AACd,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AAEd,iDAA+B;AAC/B,gDAA8B;AAE9B,kDAA8D;AAArD,mGAAA,MAAM,OAAa;AAC5B,gDAAqD;AAA5C,oGAAA,WAAW,OAAA;AACpB,8CAAuD;AAA9C,0GAAA,gBAAgB,OAAA;AACzB,gDAAuD;AAA9C,0GAAA,eAAe,OAAA;AACxB,sDAA6D;AAApD,gHAAA,kBAAkB,OAAA;AAE3B,oEAA+D;AAAtD,kHAAA,aAAa,OAAA;AACtB,+DAA6C;AAC7C,4DAA0D;AAAjD,6GAAA,YAAY,OAAA;AACrB,4EAAyE;AAAhE,4HAAA,mBAAmB,OAAA;AAE5B,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DASoC;AARnC,+GAAA,YAAY,OAAA;AACZ,iHAAA,cAAc,OAAA;AACd,4HAAA,yBAAyB,OAAA;AACzB,iHAAA,cAAc,OAAA;AACd,qHAAA,kBAAkB,OAAA;AAClB,yGAAA,MAAM,OAAA;AACN,6GAAA,UAAU,OAAA;AACV,iHAAA,cAAc,OAAA;AAGf,iDAAoD;AAA3C,4GAAA,cAAc,OAAA;AACvB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,yDAAsD;AAA7C,8GAAA,YAAY,OAAA;AACrB,6CAA4C;AAAnC,oGAAA,QAAQ,OAAA;AACjB,mCAAkC;AAAzB,0FAAA,GAAG,OAAA;AACZ,qDAA0F;AAAjF,6GAAA,aAAa,OAAA;AAAE,0GAAA,UAAU,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,sGAAA,MAAM,OAAA;AAE3D,8CAA4B;AAC5B,6CAA2B;AAC3B,sDAAoC;AACpC,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AACd,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AAEd,iDAA+B;AAC/B,gDAA8B;AAE9B,kDAA8D;AAArD,mGAAA,MAAM,OAAa;AAC5B,gDAAqD;AAA5C,oGAAA,WAAW,OAAA;AACpB,8CAAuD;AAA9C,0GAAA,gBAAgB,OAAA;AACzB,gDAAuD;AAA9C,0GAAA,eAAe,OAAA;AACxB,sDAA6D;AAApD,gHAAA,kBAAkB,OAAA;AAE3B,oEAA+D;AAAtD,kHAAA,aAAa,OAAA;AACtB,+DAA6C;AAC7C,4DAA0D;AAAjD,6GAAA,YAAY,OAAA;AACrB,4EAAyE;AAAhE,4HAAA,mBAAmB,OAAA;AAE5B,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AddScopesColumnToApiKeys1742918400000 = void 0;
4
4
  const permissions_1 = require("@n8n/permissions");
5
+ const constants_1 = require("../../constants");
5
6
  const entities_1 = require("../../entities");
6
7
  class AddScopesColumnToApiKeys1742918400000 {
7
8
  async up({ runQuery, escape, queryRunner, schemaBuilder: { addColumns, column }, }) {
@@ -13,7 +14,10 @@ class AddScopesColumnToApiKeys1742918400000 {
13
14
  const roleColumn = escape.columnName('role');
14
15
  const apiKeysWithRoles = await runQuery(`SELECT ${userApiKeysTable}.${idColumn} AS id, ${userTable}.${roleColumn} AS role FROM ${userApiKeysTable} JOIN ${userTable} ON ${userTable}.${idColumn} = ${userApiKeysTable}.${userIdColumn}`);
15
16
  for (const { id, role } of apiKeysWithRoles) {
16
- const scopes = (0, permissions_1.getApiKeyScopesForRole)(role);
17
+ const dbRole = constants_1.GLOBAL_ROLES[role];
18
+ const scopes = (0, permissions_1.getApiKeyScopesForRole)({
19
+ role: dbRole,
20
+ });
17
21
  await queryRunner.manager.update(entities_1.ApiKey, { id }, { scopes });
18
22
  }
19
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"1742918400000-AddScopesColumnToApiKeys.js","sourceRoot":"","sources":["../../../src/migrations/common/1742918400000-AddScopesColumnToApiKeys.ts"],"names":[],"mappings":";;;AACA,kDAA0D;AAE1D,6CAAwC;AAKxC,MAAa,qCAAqC;IACjD,KAAK,CAAC,EAAE,CAAC,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GACnB;QAClB,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CACtC,UAAU,gBAAgB,IAAI,QAAQ,WAAW,SAAS,IAAI,UAAU,iBAAiB,gBAAgB,SAAS,SAAS,OAAO,SAAS,IAAI,QAAQ,MAAM,gBAAgB,IAAI,YAAY,EAAE,CAC/L,CAAC;QAEF,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAA,oCAAsB,EAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,EAAoB;QAC9D,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;CACD;AA5BD,sFA4BC"}
1
+ {"version":3,"file":"1742918400000-AddScopesColumnToApiKeys.js","sourceRoot":"","sources":["../../../src/migrations/common/1742918400000-AddScopesColumnToApiKeys.ts"],"names":[],"mappings":";;;AACA,kDAA0D;AAE1D,+CAA+C;AAC/C,6CAAwC;AAKxC,MAAa,qCAAqC;IACjD,KAAK,CAAC,EAAE,CAAC,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GACnB;QAClB,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CACtC,UAAU,gBAAgB,IAAI,QAAQ,WAAW,SAAS,IAAI,UAAU,iBAAiB,gBAAgB,SAAS,SAAS,OAAO,SAAS,IAAI,QAAQ,MAAM,gBAAgB,IAAI,YAAY,EAAE,CAC/L,CAAC;QAEF,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,wBAAY,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,oCAAsB,EAAC;gBACrC,IAAI,EAAE,MAAM;aACZ,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,EAAoB;QAC9D,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;CACD;AA/BD,sFA+BC"}
@@ -0,0 +1,5 @@
1
+ import type { MigrationContext, ReversibleMigration } from '../migration-types';
2
+ export declare class RemoveOldRoleColumn1750252139170 implements ReversibleMigration {
3
+ up({ schemaBuilder: { dropColumns }, escape, runQuery }: MigrationContext): Promise<void>;
4
+ down({ schemaBuilder: { addColumns, column }, escape, runQuery }: MigrationContext): Promise<void>;
5
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RemoveOldRoleColumn1750252139170 = void 0;
4
+ class RemoveOldRoleColumn1750252139170 {
5
+ async up({ schemaBuilder: { dropColumns }, escape, runQuery }) {
6
+ const roleTableName = escape.tableName('role');
7
+ const userTableName = escape.tableName('user');
8
+ const slugColumn = escape.columnName('slug');
9
+ const roleColumn = escape.columnName('role');
10
+ const roleSlugColumn = escape.columnName('roleSlug');
11
+ await runQuery(`UPDATE ${userTableName} SET ${roleSlugColumn} = 'global:member', ${roleColumn} = 'global:member' WHERE NOT EXISTS (SELECT 1 FROM ${roleTableName} WHERE ${slugColumn} = ${roleColumn})`);
12
+ await runQuery(`UPDATE ${userTableName} SET ${roleSlugColumn} = ${roleColumn} WHERE ${roleColumn} != ${roleSlugColumn}`);
13
+ await dropColumns('user', ['role']);
14
+ }
15
+ async down({ schemaBuilder: { addColumns, column }, escape, runQuery }) {
16
+ const userTableName = escape.tableName('user');
17
+ const roleColumn = escape.columnName('role');
18
+ const roleSlugColumn = escape.columnName('roleSlug');
19
+ await addColumns('user', [column('role').varchar(128).default("'global:member'").notNull]);
20
+ await runQuery(`UPDATE ${userTableName} SET ${roleColumn} = ${roleSlugColumn} WHERE ${roleSlugColumn} != ${roleColumn}`);
21
+ await runQuery(`UPDATE ${userTableName} SET ${roleColumn} = 'global:member' WHERE NOT EXISTS (SELECT 1 FROM role WHERE slug = ${roleColumn})`);
22
+ }
23
+ }
24
+ exports.RemoveOldRoleColumn1750252139170 = RemoveOldRoleColumn1750252139170;
25
+ //# sourceMappingURL=1750252139170-RemoveOldRoleColumn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1750252139170-RemoveOldRoleColumn.js","sourceRoot":"","sources":["../../../src/migrations/common/1750252139170-RemoveOldRoleColumn.ts"],"names":[],"mappings":";;;AASA,MAAa,gCAAgC;IAC5C,KAAK,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAoB;QAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAKrD,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,cAAc,uBAAuB,UAAU,sDAAsD,aAAa,UAAU,UAAU,MAAM,UAAU,GAAG,CACxL,CAAC;QAEF,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,cAAc,MAAM,UAAU,UAAU,UAAU,OAAO,cAAc,EAAE,CACxG,CAAC;QAEF,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAoB;QACvF,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAErD,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3F,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,UAAU,MAAM,cAAc,UAAU,cAAc,OAAO,UAAU,EAAE,CACxG,CAAC;QAGF,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,UAAU,wEAAwE,UAAU,GAAG,CAC9H,CAAC;IACH,CAAC;CACD;AAtCD,4EAsCC"}
@@ -0,0 +1,5 @@
1
+ import type { MigrationContext, ReversibleMigration } from '../migration-types';
2
+ export declare class LinkRoleToProjectRelationTable1753953244168 implements ReversibleMigration {
3
+ up({ schemaBuilder: { addForeignKey }, escape, dbType, runQuery }: MigrationContext): Promise<void>;
4
+ down({ schemaBuilder: { dropForeignKey } }: MigrationContext): Promise<void>;
5
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LinkRoleToProjectRelationTable1753953244168 = void 0;
4
+ const constants_1 = require("../../constants");
5
+ class LinkRoleToProjectRelationTable1753953244168 {
6
+ async up({ schemaBuilder: { addForeignKey }, escape, dbType, runQuery }) {
7
+ const roleTableName = escape.tableName('role');
8
+ const projectRelationTableName = escape.tableName('project_relation');
9
+ const slugColumn = escape.columnName('slug');
10
+ const roleColumn = escape.columnName('role');
11
+ const roleTypeColumn = escape.columnName('roleType');
12
+ const systemRoleColumn = escape.columnName('systemRole');
13
+ const isPostgresOrSqlite = dbType === 'postgresdb' || dbType === 'sqlite';
14
+ const query = isPostgresOrSqlite
15
+ ? `INSERT INTO ${roleTableName} (${slugColumn}, ${roleTypeColumn}, ${systemRoleColumn}) VALUES (:slug, :roleType, :systemRole) ON CONFLICT DO NOTHING`
16
+ : `INSERT IGNORE INTO ${roleTableName} (${slugColumn}, ${roleTypeColumn}, ${systemRoleColumn}) VALUES (:slug, :roleType, :systemRole)`;
17
+ for (const role of Object.values(constants_1.PROJECT_ROLES)) {
18
+ await runQuery(query, {
19
+ slug: role.slug,
20
+ roleType: role.roleType,
21
+ systemRole: role.systemRole,
22
+ });
23
+ }
24
+ await runQuery(`UPDATE ${projectRelationTableName} SET ${roleColumn} = '${constants_1.PROJECT_VIEWER_ROLE.slug}' WHERE NOT EXISTS (SELECT 1 FROM ${roleTableName} WHERE ${slugColumn} = ${roleColumn})`);
25
+ await addForeignKey('project_relation', 'role', ['role', 'slug']);
26
+ }
27
+ async down({ schemaBuilder: { dropForeignKey } }) {
28
+ await dropForeignKey('project_relation', 'role', ['role', 'slug']);
29
+ }
30
+ }
31
+ exports.LinkRoleToProjectRelationTable1753953244168 = LinkRoleToProjectRelationTable1753953244168;
32
+ //# sourceMappingURL=1753953244168-LinkRoleToProjectRelationTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1753953244168-LinkRoleToProjectRelationTable.js","sourceRoot":"","sources":["../../../src/migrations/common/1753953244168-LinkRoleToProjectRelationTable.ts"],"names":[],"mappings":";;;AAAA,+CAAqE;AASrE,MAAa,2CAA2C;IACvD,KAAK,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAoB;QACxF,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,wBAAwB,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEzD,MAAM,kBAAkB,GAAG,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,QAAQ,CAAC;QAC1E,MAAM,KAAK,GAAG,kBAAkB;YAC/B,CAAC,CAAC,eAAe,aAAa,KAAK,UAAU,KAAK,cAAc,KAAK,gBAAgB,iEAAiE;YACtJ,CAAC,CAAC,sBAAsB,aAAa,KAAK,UAAU,KAAK,cAAc,KAAK,gBAAgB,0CAA0C,CAAC;QAGxI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAa,CAAC,EAAE,CAAC;YACjD,MAAM,QAAQ,CAAC,KAAK,EAAE;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC3B,CAAC,CAAC;QACJ,CAAC;QAKD,MAAM,QAAQ,CACb,UAAU,wBAAwB,QAAQ,UAAU,OAAO,+BAAmB,CAAC,IAAI,qCAAqC,aAAa,UAAU,UAAU,MAAM,UAAU,GAAG,CAC5K,CAAC;QAEF,MAAM,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAoB;QACjE,MAAM,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;CACD;AApCD,kGAoCC"}
@@ -0,0 +1,5 @@
1
+ import type { MigrationContext, ReversibleMigration } from '../migration-types';
2
+ export declare class ReplaceDataStoreTablesWithDataTables1754475614602 implements ReversibleMigration {
3
+ up({ schemaBuilder: { createTable, column, dropTable } }: MigrationContext): Promise<void>;
4
+ down({ schemaBuilder: { createTable, column, dropTable } }: MigrationContext): Promise<void>;
5
+ }
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReplaceDataStoreTablesWithDataTables1754475614602 = void 0;
4
+ const TABLE_TABLE_NAME_BEFORE = 'data_store';
5
+ const COLUMN_TABLE_NAME_BEFORE = 'data_store_column';
6
+ const TABLE_TABLE_NAME_AFTER = 'data_table';
7
+ const COLUMN_TABLE_NAME_AFTER = 'data_table_column';
8
+ class ReplaceDataStoreTablesWithDataTables1754475614602 {
9
+ async up({ schemaBuilder: { createTable, column, dropTable } }) {
10
+ await dropTable(COLUMN_TABLE_NAME_BEFORE);
11
+ await dropTable(TABLE_TABLE_NAME_BEFORE);
12
+ await createTable(TABLE_TABLE_NAME_AFTER)
13
+ .withColumns(column('id').varchar(36).primary, column('name').varchar(128).notNull, column('projectId').varchar(36).notNull)
14
+ .withForeignKey('projectId', {
15
+ tableName: 'project',
16
+ columnName: 'id',
17
+ onDelete: 'CASCADE',
18
+ })
19
+ .withUniqueConstraintOn(['projectId', 'name']).withTimestamps;
20
+ await createTable(COLUMN_TABLE_NAME_AFTER)
21
+ .withColumns(column('id').varchar(36).primary.notNull, column('name').varchar(128).notNull, column('type')
22
+ .varchar(32)
23
+ .notNull.comment('Expected: string, number, boolean, or date (not enforced as a constraint)'), column('index').int.notNull.comment('Column order, starting from 0 (0 = first column)'), column('dataTableId').varchar(36).notNull)
24
+ .withForeignKey('dataTableId', {
25
+ tableName: TABLE_TABLE_NAME_AFTER,
26
+ columnName: 'id',
27
+ onDelete: 'CASCADE',
28
+ })
29
+ .withUniqueConstraintOn(['dataTableId', 'name']).withTimestamps;
30
+ }
31
+ async down({ schemaBuilder: { createTable, column, dropTable } }) {
32
+ await dropTable(COLUMN_TABLE_NAME_AFTER);
33
+ await dropTable(TABLE_TABLE_NAME_AFTER);
34
+ await createTable(TABLE_TABLE_NAME_BEFORE)
35
+ .withColumns(column('id').varchar(36).primary, column('name').varchar(128).notNull, column('projectId').varchar(36).notNull, column('sizeBytes').int.default(0).notNull)
36
+ .withForeignKey('projectId', {
37
+ tableName: 'project',
38
+ columnName: 'id',
39
+ onDelete: 'CASCADE',
40
+ })
41
+ .withUniqueConstraintOn(['projectId', 'name']).withTimestamps;
42
+ await createTable(COLUMN_TABLE_NAME_BEFORE)
43
+ .withColumns(column('id').varchar(36).primary.notNull, column('name').varchar(128).notNull, column('type')
44
+ .varchar(32)
45
+ .notNull.comment('Expected: string, number, boolean, or date (not enforced as a constraint)'), column('index').int.notNull.comment('Column order, starting from 0 (0 = first column)'), column('dataStoreId').varchar(36).notNull)
46
+ .withForeignKey('dataStoreId', {
47
+ tableName: TABLE_TABLE_NAME_BEFORE,
48
+ columnName: 'id',
49
+ onDelete: 'CASCADE',
50
+ })
51
+ .withUniqueConstraintOn(['dataStoreId', 'name']).withTimestamps;
52
+ }
53
+ }
54
+ exports.ReplaceDataStoreTablesWithDataTables1754475614602 = ReplaceDataStoreTablesWithDataTables1754475614602;
55
+ //# sourceMappingURL=1754475614602-ReplaceDataStoreTablesWithDataTables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1754475614602-ReplaceDataStoreTablesWithDataTables.js","sourceRoot":"","sources":["../../../src/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare class Column {
13
13
  constructor(name: string);
14
14
  get bool(): this;
15
15
  get int(): this;
16
+ get double(): this;
16
17
  varchar(length?: number): this;
17
18
  get text(): this;
18
19
  get json(): this;