@forklaunch/implementation-iam-base 0.3.1 → 0.3.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.
@@ -1,90 +1,98 @@
1
- import { IdDto, IdsDto } from '@forklaunch/common';
2
- import { MetricsDefinition, OpenTelemetryCollector, TelemetryOptions } from '@forklaunch/core/http';
3
- import { ResponseDtoMapperConstructor, RequestDtoMapperConstructor } from '@forklaunch/core/mappers';
4
- import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
1
+ import { InstanceTypeRecord, IdDto, IdsDto } from '@forklaunch/common';
2
+ import { OpenTelemetryCollector, MetricsDefinition, TelemetryOptions } from '@forklaunch/core/http';
5
3
  import { OrganizationService, PermissionService, RoleService, UserService } from '@forklaunch/interfaces-iam/interfaces';
6
- import { OrganizationDto, CreateOrganizationDto, UpdateOrganizationDto, PermissionDto, CreatePermissionDto, UpdatePermissionDto, UpdateRoleDto, RoleDto, CreateRoleDto, UserDto, CreateUserDto, UpdateUserDto } from '@forklaunch/interfaces-iam/types';
4
+ import { ResponseMapperConstructor, RequestMapperConstructor, InternalMapper } from '@forklaunch/internal';
7
5
  import { AnySchemaValidator } from '@forklaunch/validator';
8
6
  import { EntityManager } from '@mikro-orm/core';
7
+ import { OrganizationDto, CreateOrganizationDto, UpdateOrganizationDto, PermissionDto, CreatePermissionDto, UpdatePermissionDto, UpdateRoleDto, RoleDto, CreateRoleDto, UserDto, CreateUserDto, UpdateUserDto } from '@forklaunch/interfaces-iam/types';
8
+ import { MapNestedDtoArraysToCollections } from '@forklaunch/core/services';
9
+
10
+ type OrganizationDtos<OrganizationStatus> = {
11
+ OrganizationMapper: OrganizationDto<OrganizationStatus>;
12
+ CreateOrganizationMapper: CreateOrganizationDto;
13
+ UpdateOrganizationMapper: UpdateOrganizationDto;
14
+ };
15
+ type PermissionDtos = {
16
+ PermissionMapper: PermissionDto;
17
+ CreatePermissionMapper: CreatePermissionDto;
18
+ UpdatePermissionMapper: UpdatePermissionDto;
19
+ RoleEntityMapper: UpdateRoleDto;
20
+ };
21
+ type RoleDtos = {
22
+ RoleMapper: RoleDto;
23
+ CreateRoleMapper: CreateRoleDto;
24
+ UpdateRoleMapper: UpdateRoleDto;
25
+ };
26
+ type UserDtos = {
27
+ UserMapper: UserDto;
28
+ CreateUserMapper: CreateUserDto;
29
+ UpdateUserMapper: UpdateUserDto;
30
+ };
9
31
 
10
- declare class BaseOrganizationService<SchemaValidator extends AnySchemaValidator, OrganizationStatus, Metrics extends MetricsDefinition = MetricsDefinition, Dto extends {
11
- OrganizationDtoMapper: OrganizationDto<OrganizationStatus>;
12
- CreateOrganizationDtoMapper: CreateOrganizationDto;
13
- UpdateOrganizationDtoMapper: UpdateOrganizationDto;
14
- } = {
15
- OrganizationDtoMapper: OrganizationDto<OrganizationStatus>;
16
- CreateOrganizationDtoMapper: CreateOrganizationDto;
17
- UpdateOrganizationDtoMapper: UpdateOrganizationDto;
18
- }, Entities extends {
19
- OrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
20
- CreateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
21
- UpdateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
22
- } = {
23
- OrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
24
- CreateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
25
- UpdateOrganizationDtoMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
26
- }> implements OrganizationService<OrganizationStatus> {
27
- #private;
32
+ type OrganizationEntities<OrganizationStatus> = {
33
+ OrganizationMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
34
+ CreateOrganizationMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
35
+ UpdateOrganizationMapper: MapNestedDtoArraysToCollections<OrganizationDto<OrganizationStatus>, 'users'>;
36
+ };
37
+ type PermissionEntities = {
38
+ PermissionMapper: PermissionDto;
39
+ CreatePermissionMapper: PermissionDto;
40
+ UpdatePermissionMapper: PermissionDto;
41
+ RoleEntityMapper: MapNestedDtoArraysToCollections<UpdateRoleDto, 'permissions'>;
42
+ };
43
+ type RoleEntities = {
44
+ RoleMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
45
+ CreateRoleMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
46
+ UpdateRoleMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
47
+ };
48
+ type UserEntities = {
49
+ UserMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
50
+ CreateUserMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
51
+ UpdateUserMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
52
+ };
53
+
54
+ declare class BaseOrganizationService<SchemaValidator extends AnySchemaValidator, OrganizationStatus, MapperEntities extends OrganizationEntities<OrganizationStatus>, MapperDtos extends OrganizationDtos<OrganizationStatus> = OrganizationDtos<OrganizationStatus>> implements OrganizationService<OrganizationStatus> {
28
55
  em: EntityManager;
29
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
56
+ protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
30
57
  protected schemaValidator: SchemaValidator;
31
58
  protected mappers: {
32
- OrganizationDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['OrganizationDtoMapper'], Entities['OrganizationDtoMapper']>;
33
- CreateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateOrganizationDtoMapper'], Entities['CreateOrganizationDtoMapper']>;
34
- UpdateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateOrganizationDtoMapper'], Entities['UpdateOrganizationDtoMapper']>;
59
+ OrganizationMapper: ResponseMapperConstructor<SchemaValidator, MapperDtos['OrganizationMapper'], MapperEntities['OrganizationMapper']>;
60
+ CreateOrganizationMapper: RequestMapperConstructor<SchemaValidator, MapperDtos['CreateOrganizationMapper'], MapperEntities['CreateOrganizationMapper'], (dto: MapperDtos['CreateOrganizationMapper'], em: EntityManager) => Promise<MapperEntities['CreateOrganizationMapper']>>;
61
+ UpdateOrganizationMapper: RequestMapperConstructor<SchemaValidator, MapperDtos['UpdateOrganizationMapper'], MapperEntities['UpdateOrganizationMapper'], (dto: MapperDtos['UpdateOrganizationMapper'], em: EntityManager) => Promise<MapperEntities['UpdateOrganizationMapper']>>;
35
62
  };
63
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
36
64
  private evaluatedTelemetryOptions;
37
- constructor(em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<Metrics>, schemaValidator: SchemaValidator, mappers: {
38
- OrganizationDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['OrganizationDtoMapper'], Entities['OrganizationDtoMapper']>;
39
- CreateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateOrganizationDtoMapper'], Entities['CreateOrganizationDtoMapper']>;
40
- UpdateOrganizationDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateOrganizationDtoMapper'], Entities['UpdateOrganizationDtoMapper']>;
65
+ constructor(em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
66
+ OrganizationMapper: ResponseMapperConstructor<SchemaValidator, MapperDtos['OrganizationMapper'], MapperEntities['OrganizationMapper']>;
67
+ CreateOrganizationMapper: RequestMapperConstructor<SchemaValidator, MapperDtos['CreateOrganizationMapper'], MapperEntities['CreateOrganizationMapper'], (dto: MapperDtos['CreateOrganizationMapper'], em: EntityManager) => Promise<MapperEntities['CreateOrganizationMapper']>>;
68
+ UpdateOrganizationMapper: RequestMapperConstructor<SchemaValidator, MapperDtos['UpdateOrganizationMapper'], MapperEntities['UpdateOrganizationMapper'], (dto: MapperDtos['UpdateOrganizationMapper'], em: EntityManager) => Promise<MapperEntities['UpdateOrganizationMapper']>>;
41
69
  }, options?: {
42
70
  telemetry?: TelemetryOptions;
43
71
  });
44
- createOrganization(organizationDto: Dto['CreateOrganizationDtoMapper'], em?: EntityManager): Promise<Dto['OrganizationDtoMapper']>;
45
- getOrganization(idDto: IdDto, em?: EntityManager): Promise<Dto['OrganizationDtoMapper']>;
46
- updateOrganization(organizationDto: Dto['UpdateOrganizationDtoMapper'], em?: EntityManager): Promise<Dto['OrganizationDtoMapper']>;
72
+ createOrganization(organizationDto: MapperDtos['CreateOrganizationMapper'], em?: EntityManager): Promise<MapperDtos['OrganizationMapper']>;
73
+ getOrganization(idDto: IdDto, em?: EntityManager): Promise<MapperDtos['OrganizationMapper']>;
74
+ updateOrganization(organizationDto: MapperDtos['UpdateOrganizationMapper'], em?: EntityManager): Promise<MapperDtos['OrganizationMapper']>;
47
75
  deleteOrganization(idDto: IdDto, em?: EntityManager): Promise<void>;
48
76
  }
49
77
 
50
- declare class BasePermissionService<SchemaValidator extends AnySchemaValidator, Metrics extends MetricsDefinition = MetricsDefinition, Dto extends {
51
- PermissionDtoMapper: PermissionDto;
52
- CreatePermissionDtoMapper: CreatePermissionDto;
53
- UpdatePermissionDtoMapper: UpdatePermissionDto;
54
- RoleEntityMapper: UpdateRoleDto;
55
- } = {
56
- PermissionDtoMapper: PermissionDto;
57
- CreatePermissionDtoMapper: CreatePermissionDto;
58
- UpdatePermissionDtoMapper: UpdatePermissionDto;
59
- RoleEntityMapper: UpdateRoleDto;
60
- }, Entities extends {
61
- PermissionDtoMapper: PermissionDto;
62
- CreatePermissionDtoMapper: PermissionDto;
63
- UpdatePermissionDtoMapper: PermissionDto;
64
- RoleEntityMapper: MapNestedDtoArraysToCollections<UpdateRoleDto, 'permissions'>;
65
- } = {
66
- PermissionDtoMapper: PermissionDto;
67
- CreatePermissionDtoMapper: PermissionDto;
68
- UpdatePermissionDtoMapper: PermissionDto;
69
- RoleEntityMapper: MapNestedDtoArraysToCollections<UpdateRoleDto, 'permissions'>;
70
- }> implements PermissionService {
71
- #private;
78
+ declare class BasePermissionService<SchemaValidator extends AnySchemaValidator, MapperEntities extends PermissionEntities, MapperDto extends PermissionDtos = PermissionDtos> implements PermissionService {
72
79
  em: EntityManager;
73
80
  protected roleServiceFactory: () => RoleService;
74
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
81
+ protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
75
82
  protected schemaValidator: SchemaValidator;
76
83
  protected mappers: {
77
- PermissionDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['PermissionDtoMapper'], Entities['PermissionDtoMapper']>;
78
- CreatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreatePermissionDtoMapper'], Entities['CreatePermissionDtoMapper']>;
79
- UpdatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdatePermissionDtoMapper'], Entities['UpdatePermissionDtoMapper']>;
80
- RoleEntityMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['RoleEntityMapper'], Entities['RoleEntityMapper']>;
84
+ PermissionMapper: ResponseMapperConstructor<SchemaValidator, MapperDto['PermissionMapper'], MapperEntities['PermissionMapper']>;
85
+ CreatePermissionMapper: RequestMapperConstructor<SchemaValidator, MapperDto['CreatePermissionMapper'], MapperEntities['CreatePermissionMapper'], (dto: MapperDto['CreatePermissionMapper'], em: EntityManager) => Promise<MapperEntities['CreatePermissionMapper']>>;
86
+ UpdatePermissionMapper: RequestMapperConstructor<SchemaValidator, MapperDto['UpdatePermissionMapper'], MapperEntities['UpdatePermissionMapper'], (dto: MapperDto['UpdatePermissionMapper'], em: EntityManager) => Promise<MapperEntities['UpdatePermissionMapper']>>;
87
+ RoleEntityMapper: RequestMapperConstructor<SchemaValidator, MapperDto['RoleEntityMapper'], MapperEntities['RoleEntityMapper'], (dto: MapperDto['RoleEntityMapper'], em: EntityManager) => Promise<MapperEntities['RoleEntityMapper']>>;
81
88
  };
89
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
82
90
  private evaluatedTelemetryOptions;
83
- constructor(em: EntityManager, roleServiceFactory: () => RoleService, openTelemetryCollector: OpenTelemetryCollector<Metrics>, schemaValidator: SchemaValidator, mappers: {
84
- PermissionDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['PermissionDtoMapper'], Entities['PermissionDtoMapper']>;
85
- CreatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreatePermissionDtoMapper'], Entities['CreatePermissionDtoMapper']>;
86
- UpdatePermissionDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdatePermissionDtoMapper'], Entities['UpdatePermissionDtoMapper']>;
87
- RoleEntityMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['RoleEntityMapper'], Entities['RoleEntityMapper']>;
91
+ constructor(em: EntityManager, roleServiceFactory: () => RoleService, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
92
+ PermissionMapper: ResponseMapperConstructor<SchemaValidator, MapperDto['PermissionMapper'], MapperEntities['PermissionMapper']>;
93
+ CreatePermissionMapper: RequestMapperConstructor<SchemaValidator, MapperDto['CreatePermissionMapper'], MapperEntities['CreatePermissionMapper'], (dto: MapperDto['CreatePermissionMapper'], em: EntityManager) => Promise<MapperEntities['CreatePermissionMapper']>>;
94
+ UpdatePermissionMapper: RequestMapperConstructor<SchemaValidator, MapperDto['UpdatePermissionMapper'], MapperEntities['UpdatePermissionMapper'], (dto: MapperDto['UpdatePermissionMapper'], em: EntityManager) => Promise<MapperEntities['UpdatePermissionMapper']>>;
95
+ RoleEntityMapper: RequestMapperConstructor<SchemaValidator, MapperDto['RoleEntityMapper'], MapperEntities['RoleEntityMapper'], (dto: MapperDto['RoleEntityMapper'], em: EntityManager) => Promise<MapperEntities['RoleEntityMapper']>>;
88
96
  }, options?: {
89
97
  telemetry?: TelemetryOptions;
90
98
  });
@@ -93,107 +101,75 @@ declare class BasePermissionService<SchemaValidator extends AnySchemaValidator,
93
101
  private getBatchRoles;
94
102
  private createPermissionDto;
95
103
  private extractCreatePermissionDtoToEntityData;
96
- createPermission(createPermissionDto: Dto['CreatePermissionDtoMapper'], em?: EntityManager): Promise<Dto['PermissionDtoMapper']>;
97
- createBatchPermissions(permissionDtos: Dto['CreatePermissionDtoMapper'][], em?: EntityManager): Promise<Dto['PermissionDtoMapper'][]>;
98
- getPermission(idDto: IdDto, em?: EntityManager): Promise<Dto['PermissionDtoMapper']>;
99
- getBatchPermissions(idsDto: IdsDto, em?: EntityManager): Promise<Dto['PermissionDtoMapper'][]>;
104
+ createPermission(createPermissionDto: MapperDto['CreatePermissionMapper'], em?: EntityManager): Promise<MapperDto['PermissionMapper']>;
105
+ createBatchPermissions(permissionDtos: MapperDto['CreatePermissionMapper'][], em?: EntityManager): Promise<MapperDto['PermissionMapper'][]>;
106
+ getPermission(idDto: IdDto, em?: EntityManager): Promise<MapperDto['PermissionMapper']>;
107
+ getBatchPermissions(idsDto: IdsDto, em?: EntityManager): Promise<MapperDto['PermissionMapper'][]>;
100
108
  private updatePermissionDto;
101
- updatePermission(permissionDto: Dto['UpdatePermissionDtoMapper'], em?: EntityManager): Promise<Dto['PermissionDtoMapper']>;
102
- updateBatchPermissions(permissionDtos: Dto['UpdatePermissionDtoMapper'][], em?: EntityManager): Promise<Dto['PermissionDtoMapper'][]>;
109
+ updatePermission(permissionDto: MapperDto['UpdatePermissionMapper'], em?: EntityManager): Promise<MapperDto['PermissionMapper']>;
110
+ updateBatchPermissions(permissionDtos: MapperDto['UpdatePermissionMapper'][], em?: EntityManager): Promise<MapperDto['PermissionMapper'][]>;
103
111
  deletePermission(idDto: IdDto, em?: EntityManager): Promise<void>;
104
112
  deleteBatchPermissions(idsDto: IdsDto, em?: EntityManager): Promise<void>;
105
113
  }
106
114
 
107
- declare class BaseRoleService<SchemaValidator extends AnySchemaValidator, Metrics extends MetricsDefinition = MetricsDefinition, Dto extends {
108
- RoleDtoMapper: RoleDto;
109
- CreateRoleDtoMapper: CreateRoleDto;
110
- UpdateRoleDtoMapper: UpdateRoleDto;
111
- } = {
112
- RoleDtoMapper: RoleDto;
113
- CreateRoleDtoMapper: CreateRoleDto;
114
- UpdateRoleDtoMapper: UpdateRoleDto;
115
- }, Entities extends {
116
- RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
117
- CreateRoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
118
- UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
119
- } = {
120
- RoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
121
- CreateRoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
122
- UpdateRoleDtoMapper: MapNestedDtoArraysToCollections<RoleDto, 'permissions'>;
123
- }> implements RoleService {
124
- #private;
115
+ declare class BaseRoleService<SchemaValidator extends AnySchemaValidator, MapperEntities extends RoleEntities, MapperDto extends RoleDtos = RoleDtos> implements RoleService {
125
116
  em: EntityManager;
126
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
117
+ protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
127
118
  protected schemaValidator: SchemaValidator;
128
119
  protected mappers: {
129
- RoleDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['RoleDtoMapper'], Entities['RoleDtoMapper']>;
130
- CreateRoleDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateRoleDtoMapper'], Entities['CreateRoleDtoMapper']>;
131
- UpdateRoleDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateRoleDtoMapper'], Entities['UpdateRoleDtoMapper']>;
120
+ RoleMapper: ResponseMapperConstructor<SchemaValidator, MapperDto['RoleMapper'], MapperEntities['RoleMapper']>;
121
+ CreateRoleMapper: RequestMapperConstructor<SchemaValidator, MapperDto['CreateRoleMapper'], MapperEntities['CreateRoleMapper'], (dto: MapperDto['CreateRoleMapper'], em: EntityManager) => Promise<MapperEntities['CreateRoleMapper']>>;
122
+ UpdateRoleMapper: RequestMapperConstructor<SchemaValidator, MapperDto['UpdateRoleMapper'], MapperEntities['UpdateRoleMapper'], (dto: MapperDto['UpdateRoleMapper'], em: EntityManager) => Promise<MapperEntities['UpdateRoleMapper']>>;
132
123
  };
124
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
133
125
  private evaluatedTelemetryOptions;
134
- constructor(em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<Metrics>, schemaValidator: SchemaValidator, mappers: {
135
- RoleDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['RoleDtoMapper'], Entities['RoleDtoMapper']>;
136
- CreateRoleDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateRoleDtoMapper'], Entities['CreateRoleDtoMapper']>;
137
- UpdateRoleDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateRoleDtoMapper'], Entities['UpdateRoleDtoMapper']>;
126
+ constructor(em: EntityManager, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
127
+ RoleMapper: ResponseMapperConstructor<SchemaValidator, MapperDto['RoleMapper'], MapperEntities['RoleMapper']>;
128
+ CreateRoleMapper: RequestMapperConstructor<SchemaValidator, MapperDto['CreateRoleMapper'], MapperEntities['CreateRoleMapper'], (dto: MapperDto['CreateRoleMapper'], em: EntityManager) => Promise<MapperEntities['CreateRoleMapper']>>;
129
+ UpdateRoleMapper: RequestMapperConstructor<SchemaValidator, MapperDto['UpdateRoleMapper'], MapperEntities['UpdateRoleMapper'], (dto: MapperDto['UpdateRoleMapper'], em: EntityManager) => Promise<MapperEntities['UpdateRoleMapper']>>;
138
130
  }, options?: {
139
131
  telemetry?: TelemetryOptions;
140
132
  });
141
- createRole(roleDto: Dto['CreateRoleDtoMapper'], em?: EntityManager): Promise<Dto['RoleDtoMapper']>;
142
- createBatchRoles(roleDtos: Dto['CreateRoleDtoMapper'][], em?: EntityManager): Promise<Dto['RoleDtoMapper'][]>;
133
+ createRole(roleDto: MapperDto['CreateRoleMapper'], em?: EntityManager): Promise<MapperDto['RoleMapper']>;
134
+ createBatchRoles(roleDtos: MapperDto['CreateRoleMapper'][], em?: EntityManager): Promise<MapperDto['RoleMapper'][]>;
143
135
  getRole({ id }: IdDto, em?: EntityManager): Promise<RoleDto>;
144
136
  getBatchRoles({ ids }: IdsDto, em?: EntityManager): Promise<RoleDto[]>;
145
- updateRole(roleDto: Dto['UpdateRoleDtoMapper'], em?: EntityManager): Promise<Dto['RoleDtoMapper']>;
146
- updateBatchRoles(roleDtos: Dto['UpdateRoleDtoMapper'][], em?: EntityManager): Promise<Dto['RoleDtoMapper'][]>;
137
+ updateRole(roleDto: MapperDto['UpdateRoleMapper'], em?: EntityManager): Promise<MapperDto['RoleMapper']>;
138
+ updateBatchRoles(roleDtos: MapperDto['UpdateRoleMapper'][], em?: EntityManager): Promise<MapperDto['RoleMapper'][]>;
147
139
  deleteRole(idDto: IdDto, em?: EntityManager): Promise<void>;
148
140
  deleteBatchRoles(idsDto: IdsDto, em?: EntityManager): Promise<void>;
149
141
  }
150
142
 
151
- declare class BaseUserService<SchemaValidator extends AnySchemaValidator, OrganizationStatus, Metrics extends MetricsDefinition = MetricsDefinition, Dto extends {
152
- UserDtoMapper: UserDto;
153
- CreateUserDtoMapper: CreateUserDto;
154
- UpdateUserDtoMapper: UpdateUserDto;
155
- } = {
156
- UserDtoMapper: UserDto;
157
- CreateUserDtoMapper: CreateUserDto;
158
- UpdateUserDtoMapper: UpdateUserDto;
159
- }, Entities extends {
160
- UserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
161
- CreateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
162
- UpdateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
163
- } = {
164
- UserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
165
- CreateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
166
- UpdateUserDtoMapper: MapNestedDtoArraysToCollections<UserDto, 'roles'>;
167
- }> implements UserService {
168
- #private;
143
+ declare class BaseUserService<SchemaValidator extends AnySchemaValidator, OrganizationStatus, Entities extends UserEntities, Dto extends UserDtos = UserDtos> implements UserService {
169
144
  em: EntityManager;
170
145
  protected passwordEncryptionPublicKeyPath: string;
171
146
  protected roleServiceFactory: () => RoleService;
172
147
  protected organizationServiceFactory: () => OrganizationService<OrganizationStatus>;
173
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
148
+ protected openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
174
149
  protected schemaValidator: SchemaValidator;
175
150
  protected mappers: {
176
- UserDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['UserDtoMapper'], Entities['UserDtoMapper']>;
177
- CreateUserDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateUserDtoMapper'], Entities['CreateUserDtoMapper']>;
178
- UpdateUserDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateUserDtoMapper'], Entities['UpdateUserDtoMapper']>;
151
+ UserMapper: ResponseMapperConstructor<SchemaValidator, Dto['UserMapper'], Entities['UserMapper']>;
152
+ CreateUserMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateUserMapper'], Entities['CreateUserMapper'], (dto: Dto['CreateUserMapper'], em: EntityManager) => Promise<Entities['CreateUserMapper']>>;
153
+ UpdateUserMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateUserMapper'], Entities['UpdateUserMapper'], (dto: Dto['UpdateUserMapper'], em: EntityManager) => Promise<Entities['UpdateUserMapper']>>;
179
154
  };
180
155
  readonly options?: {
181
156
  telemetry?: TelemetryOptions;
182
157
  } | undefined;
158
+ protected _mappers: InternalMapper<InstanceTypeRecord<typeof this.mappers>>;
183
159
  private evaluatedTelemetryOptions;
184
- constructor(em: EntityManager, passwordEncryptionPublicKeyPath: string, roleServiceFactory: () => RoleService, organizationServiceFactory: () => OrganizationService<OrganizationStatus>, openTelemetryCollector: OpenTelemetryCollector<Metrics>, schemaValidator: SchemaValidator, mappers: {
185
- UserDtoMapper: ResponseDtoMapperConstructor<SchemaValidator, Dto['UserDtoMapper'], Entities['UserDtoMapper']>;
186
- CreateUserDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['CreateUserDtoMapper'], Entities['CreateUserDtoMapper']>;
187
- UpdateUserDtoMapper: RequestDtoMapperConstructor<SchemaValidator, Dto['UpdateUserDtoMapper'], Entities['UpdateUserDtoMapper']>;
160
+ constructor(em: EntityManager, passwordEncryptionPublicKeyPath: string, roleServiceFactory: () => RoleService, organizationServiceFactory: () => OrganizationService<OrganizationStatus>, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, schemaValidator: SchemaValidator, mappers: {
161
+ UserMapper: ResponseMapperConstructor<SchemaValidator, Dto['UserMapper'], Entities['UserMapper']>;
162
+ CreateUserMapper: RequestMapperConstructor<SchemaValidator, Dto['CreateUserMapper'], Entities['CreateUserMapper'], (dto: Dto['CreateUserMapper'], em: EntityManager) => Promise<Entities['CreateUserMapper']>>;
163
+ UpdateUserMapper: RequestMapperConstructor<SchemaValidator, Dto['UpdateUserMapper'], Entities['UpdateUserMapper'], (dto: Dto['UpdateUserMapper'], em: EntityManager) => Promise<Entities['UpdateUserMapper']>>;
188
164
  }, options?: {
189
165
  telemetry?: TelemetryOptions;
190
166
  } | undefined);
191
- createUser(userDto: Dto['CreateUserDtoMapper'], em?: EntityManager): Promise<Dto['UserDtoMapper']>;
192
- createBatchUsers(userDtos: Dto['CreateUserDtoMapper'][], em?: EntityManager): Promise<Dto['UserDtoMapper'][]>;
193
- getUser(idDto: IdDto, em?: EntityManager): Promise<Dto['UserDtoMapper']>;
194
- getBatchUsers(idsDto: IdsDto, em?: EntityManager): Promise<Dto['UserDtoMapper'][]>;
195
- updateUser(userDto: Dto['UpdateUserDtoMapper'], em?: EntityManager): Promise<Dto['UserDtoMapper']>;
196
- updateBatchUsers(userDtos: UpdateUserDto[], em?: EntityManager): Promise<Dto['UserDtoMapper'][]>;
167
+ createUser(userDto: Dto['CreateUserMapper'], em?: EntityManager): Promise<Dto['UserMapper']>;
168
+ createBatchUsers(userDtos: Dto['CreateUserMapper'][], em?: EntityManager): Promise<Dto['UserMapper'][]>;
169
+ getUser(idDto: IdDto, em?: EntityManager): Promise<Dto['UserMapper']>;
170
+ getBatchUsers(idsDto: IdsDto, em?: EntityManager): Promise<Dto['UserMapper'][]>;
171
+ updateUser(userDto: Dto['UpdateUserMapper'], em?: EntityManager): Promise<Dto['UserMapper']>;
172
+ updateBatchUsers(userDtos: UpdateUserDto[], em?: EntityManager): Promise<Dto['UserMapper'][]>;
197
173
  deleteUser(idDto: IdDto, em?: EntityManager): Promise<void>;
198
174
  deleteBatchUsers(idsDto: IdsDto, em?: EntityManager): Promise<void>;
199
175
  verifyHasRole(idDto: IdDto, roleId: string): Promise<void>;