@punks/backend-entity-manager 0.0.211 → 0.0.212

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 (48) hide show
  1. package/dist/cjs/index.js +173 -3
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/buckets.d.ts +2 -2
  4. package/dist/cjs/types/abstractions/index.d.ts +2 -1
  5. package/dist/cjs/types/abstractions/media.d.ts +77 -0
  6. package/dist/cjs/types/abstractions/settings.d.ts +1 -0
  7. package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
  8. package/dist/cjs/types/platforms/nest/decorators/media.d.ts +4 -0
  9. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +3 -0
  10. package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +1 -1
  11. package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/errors/index.d.ts +3 -0
  12. package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/index.d.ts +4 -0
  13. package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/module.d.ts +5 -0
  14. package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/provider/media.d.ts +11 -0
  15. package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/settings/index.d.ts +12 -0
  16. package/dist/cjs/types/platforms/nest/plugins/media/index.d.ts +1 -0
  17. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +6 -0
  18. package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -0
  19. package/dist/cjs/types/platforms/nest/services/media/index.d.ts +21 -0
  20. package/dist/cjs/types/platforms/nest/services/providers.d.ts +2 -1
  21. package/dist/cjs/types/providers/services.d.ts +8 -1
  22. package/dist/cjs/types/symbols/ioc.d.ts +3 -0
  23. package/dist/esm/index.js +172 -3
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/types/abstractions/buckets.d.ts +2 -2
  26. package/dist/esm/types/abstractions/index.d.ts +2 -1
  27. package/dist/esm/types/abstractions/media.d.ts +77 -0
  28. package/dist/esm/types/abstractions/settings.d.ts +1 -0
  29. package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
  30. package/dist/esm/types/platforms/nest/decorators/media.d.ts +4 -0
  31. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +3 -0
  32. package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +1 -1
  33. package/dist/esm/types/platforms/nest/plugins/media/aws-s3/errors/index.d.ts +3 -0
  34. package/dist/esm/types/platforms/nest/plugins/media/aws-s3/index.d.ts +4 -0
  35. package/dist/esm/types/platforms/nest/plugins/media/aws-s3/module.d.ts +5 -0
  36. package/dist/esm/types/platforms/nest/plugins/media/aws-s3/provider/media.d.ts +11 -0
  37. package/dist/esm/types/platforms/nest/plugins/media/aws-s3/settings/index.d.ts +12 -0
  38. package/dist/esm/types/platforms/nest/plugins/media/index.d.ts +1 -0
  39. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +6 -0
  40. package/dist/esm/types/platforms/nest/services/index.d.ts +1 -0
  41. package/dist/esm/types/platforms/nest/services/media/index.d.ts +21 -0
  42. package/dist/esm/types/platforms/nest/services/providers.d.ts +2 -1
  43. package/dist/esm/types/providers/services.d.ts +8 -1
  44. package/dist/esm/types/symbols/ioc.d.ts +3 -0
  45. package/dist/index.d.ts +121 -3
  46. package/package.json +1 -1
  47. package/dist/cjs/types/utils/labels.d.ts +0 -2
  48. package/dist/esm/types/utils/labels.d.ts +0 -2
package/dist/cjs/index.js CHANGED
@@ -46,7 +46,6 @@ const getOperationLabel = (operation) => {
46
46
  return "find";
47
47
  }
48
48
  };
49
-
50
49
  class EntityManagerException extends Error {
51
50
  constructor(message) {
52
51
  super(message);
@@ -1212,6 +1211,9 @@ const GlobalServices = {
1212
1211
  IBucketProvider: "IBucketProvider",
1213
1212
  ISecretsProvider: "ISecretsProvider",
1214
1213
  IFileProvider: "IFileProvider",
1214
+ IMediaProvider: "IMediaProvider",
1215
+ IMediaFolderRepository: "IMediaFolderRepository",
1216
+ IMediaReferenceRepository: "IMediaReferenceRepository",
1215
1217
  },
1216
1218
  Settings: {
1217
1219
  EntityManagerSettings: "EntityManagerSettings",
@@ -1416,6 +1418,10 @@ class EntitiesServiceLocator {
1416
1418
  const settings = this.resolveSettings();
1417
1419
  return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, settings.defaultFilesProvider);
1418
1420
  }
1421
+ resolveDefaultMediaProvider() {
1422
+ const settings = this.resolveSettings();
1423
+ return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IMediaProvider, settings.defaultMediaProvider);
1424
+ }
1419
1425
  resolveCacheInstance(name) {
1420
1426
  return this.provider.resolveMultipleNamed(GlobalServices.Plugins.ICacheInstance, name);
1421
1427
  }
@@ -1449,6 +1455,25 @@ class EntitiesServiceLocator {
1449
1455
  this.provider.registerMultiple(GlobalServices.Authentication.IAuthenticationMiddleware, name, instance);
1450
1456
  return this;
1451
1457
  }
1458
+ resolveMediaReferenceRepository() {
1459
+ return this.provider.resolve(GlobalServices.Plugins.IMediaReferenceRepository);
1460
+ }
1461
+ registerMediaReferenceRepository(instance) {
1462
+ this.provider.register(GlobalServices.Plugins.IMediaReferenceRepository, instance);
1463
+ }
1464
+ resolveMediaFolderRepository() {
1465
+ return this.provider.resolve(GlobalServices.Plugins.IMediaFolderRepository);
1466
+ }
1467
+ registerMediaFolderRepository(instance) {
1468
+ this.provider.register(GlobalServices.Plugins.IMediaFolderRepository, instance);
1469
+ }
1470
+ resolveMediaProvider(providerId) {
1471
+ return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IMediaProvider, providerId);
1472
+ }
1473
+ registerMediaProvider(name, instance) {
1474
+ this.provider.registerMultiple(GlobalServices.Plugins.IMediaProvider, name, instance);
1475
+ return this;
1476
+ }
1452
1477
  resolveFileProvider(providerId) {
1453
1478
  return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, providerId);
1454
1479
  }
@@ -3314,6 +3339,9 @@ const EntityManagerSymbols = {
3314
3339
  EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
3315
3340
  EmailLogger: Symbol.for("WP:EMAIL_LOGGER"),
3316
3341
  BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
3342
+ MediaProvider: Symbol.for("WP:MEDIA_PROVIDER"),
3343
+ MediaReferenceRepository: Symbol.for("WP:MEDIA_REFERENCE_REPOSITORY"),
3344
+ MediaFolderRepository: Symbol.for("WP:MEDIA_FOLDER_REPOSITORY"),
3317
3345
  SecretsProvider: Symbol.for("WP:SECRETS_PROVIDER"),
3318
3346
  FileProvider: Symbol.for("WP:FILE_PROVIDER"),
3319
3347
  FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
@@ -3389,6 +3417,10 @@ const WpEntityManager = (entityName, props = {}) => common.applyDecorators(commo
3389
3417
  ...props,
3390
3418
  }));
3391
3419
 
3420
+ const WpMediaProvider = (providerId) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.MediaProvider, {
3421
+ providerId,
3422
+ }));
3423
+
3392
3424
  const WpEntityQueryBuilder = (entityName, props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EntityQueryBuilder, {
3393
3425
  entityName,
3394
3426
  ...props,
@@ -21240,6 +21272,92 @@ exports.EntityManagerService = __decorate([
21240
21272
  __metadata("design:paramtypes", [exports.EntityManagerRegistry])
21241
21273
  ], exports.EntityManagerService);
21242
21274
 
21275
+ exports.MediaLibraryService = class MediaLibraryService {
21276
+ constructor(registry) {
21277
+ this.registry = registry;
21278
+ }
21279
+ async mediaUpload(input) {
21280
+ const reference = await this.defaultMediaProvider.mediaUpload(input);
21281
+ await this.mediaReferenceRepository.createReference(reference, input.folderId);
21282
+ return reference;
21283
+ }
21284
+ async mediaDelete(input) {
21285
+ await this.getMediaProvider(this.parseReferenceProviderId(input)).mediaDelete(input);
21286
+ await this.mediaReferenceRepository.deleteReference(input);
21287
+ }
21288
+ async mediaDownload(input) {
21289
+ return await this.getMediaProvider(this.parseReferenceProviderId(input)).mediaDownload(input);
21290
+ }
21291
+ async folderCreate(input) {
21292
+ return await this.mediaFolderRepository.folderCreate({
21293
+ name: input.folderName,
21294
+ parentId: input.parentId,
21295
+ });
21296
+ }
21297
+ async folderMove(input) {
21298
+ await this.mediaFolderRepository.folderMove(input.id, input.folderId);
21299
+ }
21300
+ async folderRename(input) {
21301
+ await this.mediaFolderRepository.folderRename(input.id, input.folderName ?? "");
21302
+ }
21303
+ async folderDelete(input) {
21304
+ const folderFiles = await this.mediaReferenceRepository.getFolderReferences(input.id);
21305
+ if (folderFiles.length > 0) {
21306
+ throw new Error("Cannot delete folder with files inside");
21307
+ }
21308
+ const subfolders = await this.mediaFolderRepository.foldersList(input.id);
21309
+ if (subfolders.length > 0) {
21310
+ throw new Error("Cannot delete folder with subfolders inside");
21311
+ }
21312
+ await this.mediaFolderRepository.folderDelete(input.id);
21313
+ }
21314
+ async foldersList(parent) {
21315
+ const subfolders = await this.mediaFolderRepository.foldersList(parent?.id);
21316
+ return subfolders.map((f) => ({
21317
+ id: f.id,
21318
+ name: f.name,
21319
+ }));
21320
+ }
21321
+ async getFolderMedia(input) {
21322
+ const folderFiles = await this.mediaReferenceRepository.getFolderReferences(input.id);
21323
+ return folderFiles.map((f) => ({
21324
+ ref: f.ref,
21325
+ fileName: this.getMediaProvider(this.parseReferenceProviderId(f)).getFileName(f),
21326
+ }));
21327
+ }
21328
+ parseReferenceProviderId(ref) {
21329
+ return ref.ref.split(":")[0];
21330
+ }
21331
+ getMediaProvider(providerId) {
21332
+ return this.registry
21333
+ .getContainer()
21334
+ .getEntitiesServicesLocator()
21335
+ .resolveMediaProvider(providerId);
21336
+ }
21337
+ get defaultMediaProvider() {
21338
+ return this.registry
21339
+ .getContainer()
21340
+ .getEntitiesServicesLocator()
21341
+ .resolveDefaultMediaProvider();
21342
+ }
21343
+ get mediaFolderRepository() {
21344
+ return this.registry
21345
+ .getContainer()
21346
+ .getEntitiesServicesLocator()
21347
+ .resolveMediaFolderRepository();
21348
+ }
21349
+ get mediaReferenceRepository() {
21350
+ return this.registry
21351
+ .getContainer()
21352
+ .getEntitiesServicesLocator()
21353
+ .resolveMediaReferenceRepository();
21354
+ }
21355
+ };
21356
+ exports.MediaLibraryService = __decorate([
21357
+ common.Injectable(),
21358
+ __metadata("design:paramtypes", [exports.EntityManagerRegistry])
21359
+ ], exports.MediaLibraryService);
21360
+
21243
21361
  exports.EmailService = class EmailService {
21244
21362
  constructor(registry) {
21245
21363
  this.registry = registry;
@@ -22174,8 +22292,9 @@ const Services$1 = [
22174
22292
  exports.EmailService,
22175
22293
  exports.EventsService,
22176
22294
  exports.FilesService,
22177
- exports.TrackingService,
22295
+ exports.MediaLibraryService,
22178
22296
  exports.SecretsService,
22297
+ exports.TrackingService,
22179
22298
  ];
22180
22299
 
22181
22300
  const IoC = [exports.EntityManagerRegistry];
@@ -22244,6 +22363,9 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
22244
22363
  await this.registerEmailLogger();
22245
22364
  await this.registerFilesReferenceRepositoryProviders();
22246
22365
  await this.registerFileProviders();
22366
+ await this.registerMediaProviders();
22367
+ await this.registerMediaReferenceRepositoryProviders();
22368
+ await this.registerMediaFolderRepositoryProviders();
22247
22369
  await this.registerGlobalAuthenticationMiddlewares();
22248
22370
  await this.registerBucketProviders();
22249
22371
  await this.registerSecretsProviders();
@@ -22351,6 +22473,44 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
22351
22473
  this.logger.log(`File provider ${provider.discoveredClass.name} registered 🚜`);
22352
22474
  }
22353
22475
  }
22476
+ async registerMediaProviders() {
22477
+ const providers = await this.discoverMediaProviders();
22478
+ if (!providers.length) {
22479
+ this.logger.warn("No media providers found ⚠️");
22480
+ return;
22481
+ }
22482
+ for (const provider of providers) {
22483
+ this.registry
22484
+ .getContainer()
22485
+ .getEntitiesServicesLocator()
22486
+ .registerMediaProvider(provider.meta.providerId, provider.discoveredClass.instance);
22487
+ this.logger.log(`Media provider ${provider.discoveredClass.name} registered 🚜`);
22488
+ }
22489
+ }
22490
+ async registerMediaReferenceRepositoryProviders() {
22491
+ const providers = await this.discoverMediaReferenceRepositories();
22492
+ if (!providers.length) {
22493
+ this.logger.warn("No media reference repository ⚠️");
22494
+ return;
22495
+ }
22496
+ this.registry
22497
+ .getContainer()
22498
+ .getEntitiesServicesLocator()
22499
+ .registerMediaReferenceRepository(providers[0].discoveredClass.instance);
22500
+ this.logger.log(`Media Reference Repository ${providers[0].discoveredClass.name} registered 🚜`);
22501
+ }
22502
+ async registerMediaFolderRepositoryProviders() {
22503
+ const providers = await this.discoverMediaFolderRepositories();
22504
+ if (!providers.length) {
22505
+ this.logger.warn("No media folder repository ⚠️");
22506
+ return;
22507
+ }
22508
+ this.registry
22509
+ .getContainer()
22510
+ .getEntitiesServicesLocator()
22511
+ .registerMediaFolderRepository(providers[0].discoveredClass.instance);
22512
+ this.logger.log(`Media Folder Repository ${providers[0].discoveredClass.name} registered 🚜`);
22513
+ }
22354
22514
  async registerGlobalAuthenticationMiddlewares() {
22355
22515
  const providers = await this.discoverGlobalAuthenticationMiddlewares();
22356
22516
  for (const provider of providers) {
@@ -22548,6 +22708,15 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
22548
22708
  async discoverFilesReferenceRepositoryProviders() {
22549
22709
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileReferenceRepository);
22550
22710
  }
22711
+ async discoverMediaProviders() {
22712
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.MediaProvider);
22713
+ }
22714
+ async discoverMediaReferenceRepositories() {
22715
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.MediaReferenceRepository);
22716
+ }
22717
+ async discoverMediaFolderRepositories() {
22718
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.MediaFolderRepository);
22719
+ }
22551
22720
  };
22552
22721
  exports.EntityManagerInitializer = EntityManagerInitializer_1 = __decorate([
22553
22722
  common.Injectable(),
@@ -28961,7 +29130,7 @@ exports.AuthenticationEmailTemplates = AuthenticationEmailTemplates;
28961
29130
  exports.AuthenticationError = AuthenticationError;
28962
29131
  exports.AuthenticationEvents = AuthenticationEvents;
28963
29132
  exports.AuthenticationExtensionSymbols = AuthenticationExtensionSymbols;
28964
- exports.AwsS2BucketError = AwsS3BucketError;
29133
+ exports.AwsS3BucketError = AwsS3BucketError;
28965
29134
  exports.AwsSesEmailTemplate = AwsSesEmailTemplate;
28966
29135
  exports.CurrentUser = CurrentUser;
28967
29136
  exports.EntityManagerConfigurationError = EntityManagerConfigurationError;
@@ -29024,6 +29193,7 @@ exports.WpEventsTracker = WpEventsTracker;
29024
29193
  exports.WpFileProvider = WpFileProvider;
29025
29194
  exports.WpFileReferenceRepository = WpFileReferenceRepository;
29026
29195
  exports.WpGlobalAuthenticationMiddleware = WpGlobalAuthenticationMiddleware;
29196
+ exports.WpMediaProvider = WpMediaProvider;
29027
29197
  exports.WpPermissionsService = WpPermissionsService;
29028
29198
  exports.WpPipeline = WpPipeline;
29029
29199
  exports.WpRolesService = WpRolesService;