@solidxai/core 0.1.12-beta.0 → 0.1.12-beta.10

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 (208) hide show
  1. package/dist/commands/seed.command.d.ts.map +1 -1
  2. package/dist/commands/seed.command.js +10 -2
  3. package/dist/commands/seed.command.js.map +1 -1
  4. package/dist/constants/error-messages.d.ts +1 -0
  5. package/dist/constants/error-messages.d.ts.map +1 -1
  6. package/dist/constants/error-messages.js +1 -0
  7. package/dist/constants/error-messages.js.map +1 -1
  8. package/dist/constants/media-file-types.d.ts +5 -0
  9. package/dist/constants/media-file-types.d.ts.map +1 -0
  10. package/dist/constants/media-file-types.js +27 -0
  11. package/dist/constants/media-file-types.js.map +1 -0
  12. package/dist/controllers/media.controller.d.ts +14 -11
  13. package/dist/controllers/media.controller.d.ts.map +1 -1
  14. package/dist/controllers/media.controller.js +72 -33
  15. package/dist/controllers/media.controller.js.map +1 -1
  16. package/dist/dtos/create-chatter-message.dto.d.ts +1 -0
  17. package/dist/dtos/create-chatter-message.dto.d.ts.map +1 -1
  18. package/dist/dtos/create-chatter-message.dto.js +7 -1
  19. package/dist/dtos/create-chatter-message.dto.js.map +1 -1
  20. package/dist/dtos/create-media.dto.d.ts +1 -0
  21. package/dist/dtos/create-media.dto.d.ts.map +1 -1
  22. package/dist/dtos/create-media.dto.js +7 -1
  23. package/dist/dtos/create-media.dto.js.map +1 -1
  24. package/dist/dtos/create-role-metadata.dto.d.ts +2 -0
  25. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  26. package/dist/dtos/create-role-metadata.dto.js +3 -1
  27. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  28. package/dist/dtos/post-chatter-message.dto.d.ts +1 -0
  29. package/dist/dtos/post-chatter-message.dto.d.ts.map +1 -1
  30. package/dist/dtos/post-chatter-message.dto.js +6 -1
  31. package/dist/dtos/post-chatter-message.dto.js.map +1 -1
  32. package/dist/dtos/update-chatter-message.dto.d.ts +1 -0
  33. package/dist/dtos/update-chatter-message.dto.d.ts.map +1 -1
  34. package/dist/dtos/update-chatter-message.dto.js +8 -1
  35. package/dist/dtos/update-chatter-message.dto.js.map +1 -1
  36. package/dist/dtos/update-chatter-note-message.dto.d.ts +1 -0
  37. package/dist/dtos/update-chatter-note-message.dto.d.ts.map +1 -1
  38. package/dist/dtos/update-chatter-note-message.dto.js +7 -1
  39. package/dist/dtos/update-chatter-note-message.dto.js.map +1 -1
  40. package/dist/dtos/update-media.dto.d.ts +1 -0
  41. package/dist/dtos/update-media.dto.d.ts.map +1 -1
  42. package/dist/dtos/update-media.dto.js +7 -1
  43. package/dist/dtos/update-media.dto.js.map +1 -1
  44. package/dist/entities/chatter-message.entity.d.ts +1 -0
  45. package/dist/entities/chatter-message.entity.d.ts.map +1 -1
  46. package/dist/entities/chatter-message.entity.js +5 -1
  47. package/dist/entities/chatter-message.entity.js.map +1 -1
  48. package/dist/entities/media.entity.js.map +1 -1
  49. package/dist/enums/auth-type.enum.d.ts +2 -1
  50. package/dist/enums/auth-type.enum.d.ts.map +1 -1
  51. package/dist/enums/auth-type.enum.js +1 -0
  52. package/dist/enums/auth-type.enum.js.map +1 -1
  53. package/dist/guards/authentication.guard.d.ts +3 -1
  54. package/dist/guards/authentication.guard.d.ts.map +1 -1
  55. package/dist/guards/authentication.guard.js +5 -1
  56. package/dist/guards/authentication.guard.js.map +1 -1
  57. package/dist/guards/media-signed-url.guard.d.ts +9 -0
  58. package/dist/guards/media-signed-url.guard.d.ts.map +1 -0
  59. package/dist/guards/media-signed-url.guard.js +49 -0
  60. package/dist/guards/media-signed-url.guard.js.map +1 -0
  61. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  62. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +10 -13
  63. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  64. package/dist/helpers/solid-core-error-codes-provider.service.d.ts.map +1 -1
  65. package/dist/helpers/solid-core-error-codes-provider.service.js +9 -0
  66. package/dist/helpers/solid-core-error-codes-provider.service.js.map +1 -1
  67. package/dist/interfaces/chatter-mention-notification.interface.d.ts +27 -0
  68. package/dist/interfaces/chatter-mention-notification.interface.d.ts.map +1 -0
  69. package/dist/interfaces/chatter-mention-notification.interface.js +3 -0
  70. package/dist/interfaces/chatter-mention-notification.interface.js.map +1 -0
  71. package/dist/interfaces.d.ts +19 -1
  72. package/dist/interfaces.d.ts.map +1 -1
  73. package/dist/interfaces.js +2 -0
  74. package/dist/interfaces.js.map +1 -1
  75. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.d.ts +17 -0
  76. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.d.ts.map +1 -0
  77. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.js +106 -0
  78. package/dist/jobs/chatter-mention-notification-email-queue-handler.service.js.map +1 -0
  79. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.d.ts +12 -0
  80. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.d.ts.map +1 -0
  81. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.js +39 -0
  82. package/dist/jobs/database/chatter-mention-notification-email-publisher-database.service.js.map +1 -0
  83. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.d.ts +8 -0
  84. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.d.ts.map +1 -0
  85. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.js +10 -0
  86. package/dist/jobs/database/chatter-mention-notification-email-queue-options-database.js.map +1 -0
  87. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.d.ts +20 -0
  88. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.d.ts.map +1 -0
  89. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.js +48 -0
  90. package/dist/jobs/database/chatter-mention-notification-email-subscriber-database.service.js.map +1 -0
  91. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.d.ts +12 -0
  92. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.d.ts.map +1 -0
  93. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.js +39 -0
  94. package/dist/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.js.map +1 -0
  95. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.d.ts +8 -0
  96. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.d.ts.map +1 -0
  97. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.js +10 -0
  98. package/dist/jobs/rabbitmq/chatter-mention-notification-email-queue-options.js.map +1 -0
  99. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.d.ts +18 -0
  100. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.d.ts.map +1 -0
  101. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.js +45 -0
  102. package/dist/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.js.map +1 -0
  103. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.d.ts +12 -0
  104. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.d.ts.map +1 -0
  105. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.js +39 -0
  106. package/dist/jobs/redis/chatter-mention-notification-email-publisher-redis.service.js.map +1 -0
  107. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.d.ts +8 -0
  108. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.d.ts.map +1 -0
  109. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.js +10 -0
  110. package/dist/jobs/redis/chatter-mention-notification-email-queue-options-redis.js.map +1 -0
  111. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.d.ts +18 -0
  112. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.d.ts.map +1 -0
  113. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.js +45 -0
  114. package/dist/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.js.map +1 -0
  115. package/dist/repository/media.repository.d.ts.map +1 -1
  116. package/dist/repository/media.repository.js.map +1 -1
  117. package/dist/seeders/module-metadata-seeder.service.d.ts +7 -1
  118. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  119. package/dist/seeders/module-metadata-seeder.service.js +87 -3
  120. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  121. package/dist/seeders/permission-metadata-seeder.service.d.ts +1 -0
  122. package/dist/seeders/permission-metadata-seeder.service.d.ts.map +1 -1
  123. package/dist/seeders/permission-metadata-seeder.service.js +6 -1
  124. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -1
  125. package/dist/seeders/seed-data/solid-core-metadata.json +95 -13
  126. package/dist/services/authentication.service.d.ts +2 -2
  127. package/dist/services/authentication.service.d.ts.map +1 -1
  128. package/dist/services/authentication.service.js +52 -43
  129. package/dist/services/authentication.service.js.map +1 -1
  130. package/dist/services/chatter-message.service.d.ts +7 -1
  131. package/dist/services/chatter-message.service.d.ts.map +1 -1
  132. package/dist/services/chatter-message.service.js +85 -4
  133. package/dist/services/chatter-message.service.js.map +1 -1
  134. package/dist/services/media-download-url.service.d.ts +22 -0
  135. package/dist/services/media-download-url.service.d.ts.map +1 -0
  136. package/dist/services/media-download-url.service.js +70 -0
  137. package/dist/services/media-download-url.service.js.map +1 -0
  138. package/dist/services/media-storage.utils.d.ts +24 -0
  139. package/dist/services/media-storage.utils.d.ts.map +1 -0
  140. package/dist/services/media-storage.utils.js +73 -0
  141. package/dist/services/media-storage.utils.js.map +1 -0
  142. package/dist/services/media.service.d.ts +20 -4
  143. package/dist/services/media.service.d.ts.map +1 -1
  144. package/dist/services/media.service.js +155 -55
  145. package/dist/services/media.service.js.map +1 -1
  146. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +4 -4
  147. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  148. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +34 -63
  149. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  150. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +5 -5
  151. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  152. package/dist/services/mediaStorageProviders/file-storage-provider.js +34 -38
  153. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  154. package/dist/services/role-metadata.service.d.ts +1 -0
  155. package/dist/services/role-metadata.service.d.ts.map +1 -1
  156. package/dist/services/role-metadata.service.js +8 -5
  157. package/dist/services/role-metadata.service.js.map +1 -1
  158. package/dist/solid-core.module.d.ts.map +1 -1
  159. package/dist/solid-core.module.js +25 -1
  160. package/dist/solid-core.module.js.map +1 -1
  161. package/dist/subscribers/audit.subscriber.js +1 -1
  162. package/dist/subscribers/audit.subscriber.js.map +1 -1
  163. package/package.json +1 -1
  164. package/src/commands/seed.command.ts +12 -3
  165. package/src/constants/error-messages.ts +1 -0
  166. package/src/constants/media-file-types.ts +44 -0
  167. package/src/controllers/media.controller.ts +44 -24
  168. package/src/dtos/create-chatter-message.dto.ts +5 -0
  169. package/src/dtos/create-media.dto.ts +8 -3
  170. package/src/dtos/create-role-metadata.dto.ts +2 -0
  171. package/src/dtos/post-chatter-message.dto.ts +4 -0
  172. package/src/dtos/update-chatter-message.dto.ts +6 -0
  173. package/src/dtos/update-chatter-note-message.dto.ts +5 -0
  174. package/src/dtos/update-media.dto.ts +8 -3
  175. package/src/entities/chatter-message.entity.ts +3 -0
  176. package/src/entities/media.entity.ts +1 -1
  177. package/src/enums/auth-type.enum.ts +1 -0
  178. package/src/guards/authentication.guard.ts +3 -0
  179. package/src/guards/media-signed-url.guard.ts +41 -0
  180. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +12 -24
  181. package/src/helpers/solid-core-error-codes-provider.service.ts +9 -0
  182. package/src/interfaces/chatter-mention-notification.interface.ts +29 -0
  183. package/src/interfaces.ts +20 -0
  184. package/src/jobs/chatter-mention-notification-email-queue-handler.service.ts +114 -0
  185. package/src/jobs/database/chatter-mention-notification-email-publisher-database.service.ts +23 -0
  186. package/src/jobs/database/chatter-mention-notification-email-queue-options-database.ts +9 -0
  187. package/src/jobs/database/chatter-mention-notification-email-subscriber-database.service.ts +32 -0
  188. package/src/jobs/rabbitmq/chatter-mention-notification-email-publisher.service.ts +23 -0
  189. package/src/jobs/rabbitmq/chatter-mention-notification-email-queue-options.ts +9 -0
  190. package/src/jobs/rabbitmq/chatter-mention-notification-email-subscriber.service.ts +30 -0
  191. package/src/jobs/redis/chatter-mention-notification-email-publisher-redis.service.ts +23 -0
  192. package/src/jobs/redis/chatter-mention-notification-email-queue-options-redis.ts +9 -0
  193. package/src/jobs/redis/chatter-mention-notification-email-subscriber-redis.service.ts +30 -0
  194. package/src/repository/media.repository.ts +1 -0
  195. package/src/seeders/module-metadata-seeder.service.ts +109 -3
  196. package/src/seeders/permission-metadata-seeder.service.ts +6 -1
  197. package/src/seeders/seed-data/email-templates/chatter-mention-notification.handlebars.html +200 -0
  198. package/src/seeders/seed-data/solid-core-metadata.json +95 -13
  199. package/src/services/authentication.service.ts +66 -55
  200. package/src/services/chatter-message.service.ts +97 -2
  201. package/src/services/media-download-url.service.ts +74 -0
  202. package/src/services/media-storage.utils.ts +70 -0
  203. package/src/services/media.service.ts +187 -59
  204. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +49 -76
  205. package/src/services/mediaStorageProviders/file-storage-provider.ts +41 -48
  206. package/src/services/role-metadata.service.ts +17 -5
  207. package/src/solid-core.module.ts +35 -2
  208. package/src/subscribers/audit.subscriber.ts +1 -1
@@ -51,9 +51,11 @@ var ModuleMetadataSeederService_1;
51
51
  Object.defineProperty(exports, "__esModule", { value: true });
52
52
  exports.ModuleMetadataSeederService = void 0;
53
53
  const common_1 = require("@nestjs/common");
54
+ const event_emitter_1 = require("@nestjs/event-emitter");
54
55
  const fs = __importStar(require("fs"));
55
56
  const os = __importStar(require("os"));
56
57
  const path = __importStar(require("path"));
58
+ const uuid_1 = require("uuid");
57
59
  const security_rule_repository_1 = require("../repository/security-rule.repository");
58
60
  const authentication_service_1 = require("../services/authentication.service");
59
61
  const email_template_service_1 = require("../services/email-template.service");
@@ -98,10 +100,12 @@ const field_metadata_entity_1 = require("../entities/field-metadata.entity");
98
100
  const model_metadata_entity_1 = require("../entities/model-metadata.entity");
99
101
  const permission_metadata_entity_1 = require("../entities/permission-metadata.entity");
100
102
  const view_metadata_entity_1 = require("../entities/view-metadata.entity");
103
+ const interfaces_1 = require("../interfaces");
101
104
  let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMetadataSeederService {
102
- constructor(moduleMetadataService, modelMetadataService, fieldMetadataService, mediaStorageProviderMetadataService, roleService, userService, authenticationService, apiKeyService, solidActionService, solidViewService, emailTemplateService, smsTemplateService, listOfValuesService, userApiKeyRepository, permissionRepo, solidRegistry, settingService, settingsRepo, securityRuleRepo, systemFieldsSeederService, scheduledJobRepository, savedFiltersRepo, dataSource, modelSequenceRepo, localeRepo) {
105
+ constructor(moduleMetadataService, modelMetadataService, eventEmitter, fieldMetadataService, mediaStorageProviderMetadataService, roleService, userService, authenticationService, apiKeyService, solidActionService, solidViewService, emailTemplateService, smsTemplateService, listOfValuesService, userApiKeyRepository, permissionRepo, solidRegistry, settingService, settingsRepo, securityRuleRepo, systemFieldsSeederService, scheduledJobRepository, savedFiltersRepo, dataSource, modelSequenceRepo, localeRepo) {
103
106
  this.moduleMetadataService = moduleMetadataService;
104
107
  this.modelMetadataService = modelMetadataService;
108
+ this.eventEmitter = eventEmitter;
105
109
  this.fieldMetadataService = fieldMetadataService;
106
110
  this.mediaStorageProviderMetadataService = mediaStorageProviderMetadataService;
107
111
  this.roleService = roleService;
@@ -125,6 +129,11 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
125
129
  this.dataSource = dataSource;
126
130
  this.modelSequenceRepo = modelSequenceRepo;
127
131
  this.localeRepo = localeRepo;
132
+ this.adminPermissionExclusionPrefixes = [
133
+ 'ImportTransactionController.',
134
+ 'ExportTemplateController.',
135
+ 'ExportTransactionController.',
136
+ ];
128
137
  this.logger = new common_1.Logger(ModuleMetadataSeederService_1.name);
129
138
  this.seedTimingTag = 'SEED_TIMING';
130
139
  this.permissionSeedBatchSize = 500;
@@ -140,7 +149,22 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
140
149
  let currentModule = 'global';
141
150
  let currentStep = 'bootstrap';
142
151
  let modulesToSeed = null;
152
+ const requestedModulesToSeed = Array.isArray(conf?.modulesToSeed) ? [...conf.modulesToSeed] : null;
143
153
  const shouldSeedGlobalMetadata = conf?.seedGlobalMetadata !== false;
154
+ const seedOptions = {
155
+ modulesToSeed: requestedModulesToSeed,
156
+ pruneMetadata: Boolean(conf?.pruneMetadata),
157
+ seedGlobalMetadata: shouldSeedGlobalMetadata,
158
+ };
159
+ const seedRunId = (0, uuid_1.v4)();
160
+ const startedAt = new Date();
161
+ const seededModuleNames = [];
162
+ this.emitModuleMetadataSeederEvent(interfaces_1.EventType.MODULE_METADATA_SEEDER_STARTED, {
163
+ seedRunId,
164
+ options: seedOptions,
165
+ startedAt: startedAt.toISOString(),
166
+ currentStep,
167
+ });
144
168
  try {
145
169
  this.enablePruning = Boolean(conf?.pruneMetadata);
146
170
  this.resetLookupCaches();
@@ -180,6 +204,7 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
180
204
  }
181
205
  console.log(`▶ Seeding Metadata for Module: ${moduleMetadata.name}`);
182
206
  this.logger.log(`Seeding Metadata for Module: ${moduleMetadata.name}`);
207
+ seededModuleNames.push(moduleMetadata.name);
183
208
  await this.timeOperation('module-total', async () => {
184
209
  currentStep = 'seedMediaStorageProviders';
185
210
  this.logger.log(`Seeding Media Storage Providers`);
@@ -252,8 +277,29 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
252
277
  await this.timeOperation('setup-default-roles-with-permissions', () => this.setupDefaultRolesWithPermissions(), { moduleName: 'global', component: 'default-roles' });
253
278
  }, { moduleName: 'global', component: 'seed-run' });
254
279
  console.log(`✔ Seeding completed.`);
280
+ await this.emitModuleMetadataSeederFinishedEvent(interfaces_1.EventType.MODULE_METADATA_SEEDER_FINISHED, {
281
+ seedRunId,
282
+ options: seedOptions,
283
+ startedAt: startedAt.toISOString(),
284
+ finishedAt: new Date().toISOString(),
285
+ durationMs: Date.now() - startedAt.getTime(),
286
+ success: true,
287
+ seededModuleNames,
288
+ currentStep,
289
+ });
255
290
  }
256
291
  catch (error) {
292
+ await this.emitModuleMetadataSeederFinishedEvent(interfaces_1.EventType.MODULE_METADATA_SEEDER_FINISHED, {
293
+ seedRunId,
294
+ options: seedOptions,
295
+ startedAt: startedAt.toISOString(),
296
+ finishedAt: new Date().toISOString(),
297
+ durationMs: Date.now() - startedAt.getTime(),
298
+ success: false,
299
+ seededModuleNames,
300
+ currentStep,
301
+ errorMessage: error?.message,
302
+ });
257
303
  this.logSeedFailureForCli(error, {
258
304
  moduleName: currentModule,
259
305
  step: currentStep,
@@ -263,6 +309,25 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
263
309
  throw error;
264
310
  }
265
311
  }
312
+ emitModuleMetadataSeederEvent(type, payload) {
313
+ try {
314
+ this.eventEmitter.emit(type, new interfaces_1.EventDetails(type, payload));
315
+ }
316
+ catch (error) {
317
+ this.logger.warn(`Failed to emit ${type}: ${error?.message ?? error}`);
318
+ }
319
+ }
320
+ async emitModuleMetadataSeederFinishedEvent(type, payload) {
321
+ try {
322
+ console.log(`▶ Running post-seed hooks for runId=${payload.seedRunId}`);
323
+ await this.eventEmitter.emitAsync(type, new interfaces_1.EventDetails(type, payload));
324
+ console.log(`✔ Post-seed hooks completed for runId=${payload.seedRunId}`);
325
+ }
326
+ catch (error) {
327
+ console.log(`✖ Post-seed hooks failed for runId=${payload.seedRunId}: ${error?.message ?? error}`);
328
+ this.logger.warn(`Failed to emit ${type}: ${error?.message ?? error}`);
329
+ }
330
+ }
266
331
  buildTimingPrefix(itemTag, options) {
267
332
  const parts = [`[${this.seedTimingTag}]`, `[ITEM:${itemTag}]`];
268
333
  if (options?.moduleName) {
@@ -428,13 +493,31 @@ let ModuleMetadataSeederService = ModuleMetadataSeederService_1 = class ModuleMe
428
493
  }
429
494
  async setupDefaultRolesWithPermissions() {
430
495
  this.logger.debug(`About to add all permissions to the Admin role`);
431
- await this.timeOperation('role-add-all-permissions', () => this.roleService.addAllPermissionsToRole(create_role_metadata_dto_1.ADMIN_ROLE_NAME), {
496
+ await this.timeOperation('role-add-all-permissions', () => this.roleService.addAllPermissionsToRoleExceptPrefixes(create_role_metadata_dto_1.ADMIN_ROLE_NAME, this.adminPermissionExclusionPrefixes), {
497
+ moduleName: 'global',
498
+ component: 'default-roles',
499
+ serviceCall: 'roleService.addAllPermissionsToRoleExceptPrefixes',
500
+ details: `role=${create_role_metadata_dto_1.ADMIN_ROLE_NAME}`,
501
+ });
502
+ await this.timeOperation('attach-capability-roles-to-admin-users', () => this.attachCapabilityRolesToAdminUsers(), {
432
503
  moduleName: 'global',
433
504
  component: 'default-roles',
434
- serviceCall: 'roleService.addAllPermissionsToRole',
505
+ serviceCall: 'attachCapabilityRolesToAdminUsers',
435
506
  details: `role=${create_role_metadata_dto_1.ADMIN_ROLE_NAME}`,
436
507
  });
437
508
  }
509
+ async attachCapabilityRolesToAdminUsers() {
510
+ const adminUsers = await this.userService.findUsersByRole(create_role_metadata_dto_1.ADMIN_ROLE_NAME, {});
511
+ if (!adminUsers?.length) {
512
+ return;
513
+ }
514
+ const capabilityRoles = [create_role_metadata_dto_1.ALLOWED_TO_IMPORT_ROLE_NAME, create_role_metadata_dto_1.ALLOWED_TO_EXPORT_ROLE_NAME];
515
+ for (const adminUser of adminUsers) {
516
+ for (const capabilityRole of capabilityRoles) {
517
+ await this.userService.addRoleToUser(adminUser.username, capabilityRole);
518
+ }
519
+ }
520
+ }
438
521
  async seedSecurityRules(overallMetadata) {
439
522
  const securityRules = this.getSeedArray(overallMetadata?.securityRules);
440
523
  const pruned = this.enablePruning ? await this.timeOperation('prune-security-rules', () => this.pruneSecurityRules(securityRules, overallMetadata?.moduleMetadata?.name), {
@@ -2191,6 +2274,7 @@ exports.ModuleMetadataSeederService = ModuleMetadataSeederService = ModuleMetada
2191
2274
  __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => model_metadata_service_1.ModelMetadataService))),
2192
2275
  __metadata("design:paramtypes", [module_metadata_service_1.ModuleMetadataService,
2193
2276
  model_metadata_service_1.ModelMetadataService,
2277
+ event_emitter_1.EventEmitter2,
2194
2278
  field_metadata_service_1.FieldMetadataService,
2195
2279
  media_storage_provider_metadata_service_1.MediaStorageProviderMetadataService,
2196
2280
  role_metadata_service_1.RoleMetadataService,