@punks/backend-entity-manager 0.0.210 → 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.
- package/dist/cjs/index.js +190 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/abstractions/buckets.d.ts +2 -2
- package/dist/cjs/types/abstractions/index.d.ts +2 -1
- package/dist/cjs/types/abstractions/media.d.ts +77 -0
- package/dist/cjs/types/abstractions/settings.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/decorators/media.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +3 -0
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/errors/index.d.ts +3 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/index.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/module.d.ts +5 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/provider/media.d.ts +11 -0
- package/dist/cjs/types/platforms/nest/plugins/media/aws-s3/settings/index.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/plugins/media/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +6 -0
- package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/services/media/index.d.ts +21 -0
- package/dist/cjs/types/platforms/nest/services/providers.d.ts +2 -1
- package/dist/cjs/types/providers/services.d.ts +8 -1
- package/dist/cjs/types/symbols/ioc.d.ts +3 -0
- package/dist/esm/index.js +189 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/abstractions/buckets.d.ts +2 -2
- package/dist/esm/types/abstractions/index.d.ts +2 -1
- package/dist/esm/types/abstractions/media.d.ts +77 -0
- package/dist/esm/types/abstractions/settings.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/decorators/media.d.ts +4 -0
- package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +3 -0
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +1 -1
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/errors/index.d.ts +3 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/index.d.ts +4 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/module.d.ts +5 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/provider/media.d.ts +11 -0
- package/dist/esm/types/platforms/nest/plugins/media/aws-s3/settings/index.d.ts +12 -0
- package/dist/esm/types/platforms/nest/plugins/media/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +6 -0
- package/dist/esm/types/platforms/nest/services/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/services/media/index.d.ts +21 -0
- package/dist/esm/types/platforms/nest/services/providers.d.ts +2 -1
- package/dist/esm/types/providers/services.d.ts +8 -1
- package/dist/esm/types/symbols/ioc.d.ts +3 -0
- package/dist/index.d.ts +121 -3
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -30,6 +30,22 @@ exports.BucketItemType = void 0;
|
|
|
30
30
|
BucketItemType["Folder"] = "folder";
|
|
31
31
|
})(exports.BucketItemType || (exports.BucketItemType = {}));
|
|
32
32
|
|
|
33
|
+
const getOperationLabel = (operation) => {
|
|
34
|
+
switch (operation) {
|
|
35
|
+
case exports.EntityOperationType.Create:
|
|
36
|
+
return "create";
|
|
37
|
+
case exports.EntityOperationType.Read:
|
|
38
|
+
return "read";
|
|
39
|
+
case exports.EntityOperationType.Update:
|
|
40
|
+
return "update";
|
|
41
|
+
case exports.EntityOperationType.Delete:
|
|
42
|
+
return "delete";
|
|
43
|
+
case exports.EntityOperationType.Search:
|
|
44
|
+
return "search";
|
|
45
|
+
case exports.EntityOperationType.Find:
|
|
46
|
+
return "find";
|
|
47
|
+
}
|
|
48
|
+
};
|
|
33
49
|
class EntityManagerException extends Error {
|
|
34
50
|
constructor(message) {
|
|
35
51
|
super(message);
|
|
@@ -53,7 +69,7 @@ class EntityManagerUnauthorizedException extends EntityManagerException {
|
|
|
53
69
|
}
|
|
54
70
|
class EntityOperationUnauthorizedException extends EntityManagerUnauthorizedException {
|
|
55
71
|
constructor(operationType, entityName, entity) {
|
|
56
|
-
super(`The current user is not authorized to ${operationType} the entity of type ${entityName}.`);
|
|
72
|
+
super(`The current user is not authorized to ${getOperationLabel(operationType)} the entity of type ${entityName}.`);
|
|
57
73
|
this.entity = entity;
|
|
58
74
|
this.operation = operationType;
|
|
59
75
|
}
|
|
@@ -1195,6 +1211,9 @@ const GlobalServices = {
|
|
|
1195
1211
|
IBucketProvider: "IBucketProvider",
|
|
1196
1212
|
ISecretsProvider: "ISecretsProvider",
|
|
1197
1213
|
IFileProvider: "IFileProvider",
|
|
1214
|
+
IMediaProvider: "IMediaProvider",
|
|
1215
|
+
IMediaFolderRepository: "IMediaFolderRepository",
|
|
1216
|
+
IMediaReferenceRepository: "IMediaReferenceRepository",
|
|
1198
1217
|
},
|
|
1199
1218
|
Settings: {
|
|
1200
1219
|
EntityManagerSettings: "EntityManagerSettings",
|
|
@@ -1399,6 +1418,10 @@ class EntitiesServiceLocator {
|
|
|
1399
1418
|
const settings = this.resolveSettings();
|
|
1400
1419
|
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, settings.defaultFilesProvider);
|
|
1401
1420
|
}
|
|
1421
|
+
resolveDefaultMediaProvider() {
|
|
1422
|
+
const settings = this.resolveSettings();
|
|
1423
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IMediaProvider, settings.defaultMediaProvider);
|
|
1424
|
+
}
|
|
1402
1425
|
resolveCacheInstance(name) {
|
|
1403
1426
|
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.ICacheInstance, name);
|
|
1404
1427
|
}
|
|
@@ -1432,6 +1455,25 @@ class EntitiesServiceLocator {
|
|
|
1432
1455
|
this.provider.registerMultiple(GlobalServices.Authentication.IAuthenticationMiddleware, name, instance);
|
|
1433
1456
|
return this;
|
|
1434
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
|
+
}
|
|
1435
1477
|
resolveFileProvider(providerId) {
|
|
1436
1478
|
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, providerId);
|
|
1437
1479
|
}
|
|
@@ -3297,6 +3339,9 @@ const EntityManagerSymbols = {
|
|
|
3297
3339
|
EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
|
|
3298
3340
|
EmailLogger: Symbol.for("WP:EMAIL_LOGGER"),
|
|
3299
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"),
|
|
3300
3345
|
SecretsProvider: Symbol.for("WP:SECRETS_PROVIDER"),
|
|
3301
3346
|
FileProvider: Symbol.for("WP:FILE_PROVIDER"),
|
|
3302
3347
|
FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
|
|
@@ -3372,6 +3417,10 @@ const WpEntityManager = (entityName, props = {}) => common.applyDecorators(commo
|
|
|
3372
3417
|
...props,
|
|
3373
3418
|
}));
|
|
3374
3419
|
|
|
3420
|
+
const WpMediaProvider = (providerId) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.MediaProvider, {
|
|
3421
|
+
providerId,
|
|
3422
|
+
}));
|
|
3423
|
+
|
|
3375
3424
|
const WpEntityQueryBuilder = (entityName, props = {}) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EntityQueryBuilder, {
|
|
3376
3425
|
entityName,
|
|
3377
3426
|
...props,
|
|
@@ -21223,6 +21272,92 @@ exports.EntityManagerService = __decorate([
|
|
|
21223
21272
|
__metadata("design:paramtypes", [exports.EntityManagerRegistry])
|
|
21224
21273
|
], exports.EntityManagerService);
|
|
21225
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
|
+
|
|
21226
21361
|
exports.EmailService = class EmailService {
|
|
21227
21362
|
constructor(registry) {
|
|
21228
21363
|
this.registry = registry;
|
|
@@ -22157,8 +22292,9 @@ const Services$1 = [
|
|
|
22157
22292
|
exports.EmailService,
|
|
22158
22293
|
exports.EventsService,
|
|
22159
22294
|
exports.FilesService,
|
|
22160
|
-
exports.
|
|
22295
|
+
exports.MediaLibraryService,
|
|
22161
22296
|
exports.SecretsService,
|
|
22297
|
+
exports.TrackingService,
|
|
22162
22298
|
];
|
|
22163
22299
|
|
|
22164
22300
|
const IoC = [exports.EntityManagerRegistry];
|
|
@@ -22227,6 +22363,9 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
22227
22363
|
await this.registerEmailLogger();
|
|
22228
22364
|
await this.registerFilesReferenceRepositoryProviders();
|
|
22229
22365
|
await this.registerFileProviders();
|
|
22366
|
+
await this.registerMediaProviders();
|
|
22367
|
+
await this.registerMediaReferenceRepositoryProviders();
|
|
22368
|
+
await this.registerMediaFolderRepositoryProviders();
|
|
22230
22369
|
await this.registerGlobalAuthenticationMiddlewares();
|
|
22231
22370
|
await this.registerBucketProviders();
|
|
22232
22371
|
await this.registerSecretsProviders();
|
|
@@ -22334,6 +22473,44 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
22334
22473
|
this.logger.log(`File provider ${provider.discoveredClass.name} registered 🚜`);
|
|
22335
22474
|
}
|
|
22336
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
|
+
}
|
|
22337
22514
|
async registerGlobalAuthenticationMiddlewares() {
|
|
22338
22515
|
const providers = await this.discoverGlobalAuthenticationMiddlewares();
|
|
22339
22516
|
for (const provider of providers) {
|
|
@@ -22531,6 +22708,15 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
22531
22708
|
async discoverFilesReferenceRepositoryProviders() {
|
|
22532
22709
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileReferenceRepository);
|
|
22533
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
|
+
}
|
|
22534
22720
|
};
|
|
22535
22721
|
exports.EntityManagerInitializer = EntityManagerInitializer_1 = __decorate([
|
|
22536
22722
|
common.Injectable(),
|
|
@@ -28944,7 +29130,7 @@ exports.AuthenticationEmailTemplates = AuthenticationEmailTemplates;
|
|
|
28944
29130
|
exports.AuthenticationError = AuthenticationError;
|
|
28945
29131
|
exports.AuthenticationEvents = AuthenticationEvents;
|
|
28946
29132
|
exports.AuthenticationExtensionSymbols = AuthenticationExtensionSymbols;
|
|
28947
|
-
exports.
|
|
29133
|
+
exports.AwsS3BucketError = AwsS3BucketError;
|
|
28948
29134
|
exports.AwsSesEmailTemplate = AwsSesEmailTemplate;
|
|
28949
29135
|
exports.CurrentUser = CurrentUser;
|
|
28950
29136
|
exports.EntityManagerConfigurationError = EntityManagerConfigurationError;
|
|
@@ -29007,6 +29193,7 @@ exports.WpEventsTracker = WpEventsTracker;
|
|
|
29007
29193
|
exports.WpFileProvider = WpFileProvider;
|
|
29008
29194
|
exports.WpFileReferenceRepository = WpFileReferenceRepository;
|
|
29009
29195
|
exports.WpGlobalAuthenticationMiddleware = WpGlobalAuthenticationMiddleware;
|
|
29196
|
+
exports.WpMediaProvider = WpMediaProvider;
|
|
29010
29197
|
exports.WpPermissionsService = WpPermissionsService;
|
|
29011
29198
|
exports.WpPipeline = WpPipeline;
|
|
29012
29199
|
exports.WpRolesService = WpRolesService;
|