@punks/backend-entity-manager 0.0.120 → 0.0.122
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 +314 -26
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/abstractions/files.d.ts +64 -0
- package/dist/cjs/types/abstractions/index.d.ts +1 -0
- package/dist/cjs/types/abstractions/settings.d.ts +2 -0
- package/dist/cjs/types/ioc/index.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/entities/appFileReference.entity.d.ts +13 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories/appFileReference.repository.d.ts +11 -0
- package/dist/cjs/types/platforms/nest/__test__/server/database/core/repositories.d.ts +2 -1
- package/dist/cjs/types/platforms/nest/decorators/files.d.ts +7 -0
- package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/errors/index.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +2 -2
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/provider/bucket.d.ts +14 -0
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/provider/files.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/provider/index.d.ts +2 -14
- package/dist/cjs/types/platforms/nest/plugins/buckets/aws-s3/settings/index.d.ts +5 -0
- package/dist/cjs/types/platforms/nest/plugins/buckets/testing/mock.d.ts +10 -0
- package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +4 -0
- package/dist/cjs/types/platforms/nest/services/files/index.d.ts +12 -0
- package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/services/providers.d.ts +2 -1
- package/dist/cjs/types/providers/services.d.ts +12 -4
- package/dist/cjs/types/symbols/ioc.d.ts +7 -0
- package/dist/esm/index.js +315 -27
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/abstractions/files.d.ts +64 -0
- package/dist/esm/types/abstractions/index.d.ts +1 -0
- package/dist/esm/types/abstractions/settings.d.ts +2 -0
- package/dist/esm/types/ioc/index.d.ts +4 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/entities/appFileReference.entity.d.ts +13 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/index.d.ts +4 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories/appFileReference.repository.d.ts +11 -0
- package/dist/esm/types/platforms/nest/__test__/server/database/core/repositories.d.ts +2 -1
- package/dist/esm/types/platforms/nest/decorators/files.d.ts +7 -0
- package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +2 -0
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/errors/index.d.ts +1 -1
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/index.d.ts +2 -2
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/provider/bucket.d.ts +14 -0
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/provider/files.d.ts +12 -0
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/provider/index.d.ts +2 -14
- package/dist/esm/types/platforms/nest/plugins/buckets/aws-s3/settings/index.d.ts +5 -0
- package/dist/esm/types/platforms/nest/plugins/buckets/testing/mock.d.ts +10 -0
- package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +4 -0
- package/dist/esm/types/platforms/nest/services/files/index.d.ts +12 -0
- package/dist/esm/types/platforms/nest/services/index.d.ts +1 -0
- package/dist/esm/types/platforms/nest/services/providers.d.ts +2 -1
- package/dist/esm/types/providers/services.d.ts +12 -4
- package/dist/esm/types/symbols/ioc.d.ts +7 -0
- package/dist/index.d.ts +104 -4
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -627,7 +627,7 @@ class EntitiesDeleteCommand {
|
|
|
627
627
|
}
|
|
628
628
|
}
|
|
629
629
|
|
|
630
|
-
const createDayPath = (d) => `${d.getFullYear()}/${(d.getMonth() + 1).toString().padStart(2, "0")}/${d
|
|
630
|
+
const createDayPath$1 = (d) => `${d.getFullYear()}/${(d.getMonth() + 1).toString().padStart(2, "0")}/${d
|
|
631
631
|
.getDate()
|
|
632
632
|
.toString()
|
|
633
633
|
.padStart(2, "0")}`;
|
|
@@ -666,13 +666,13 @@ class EntitiesExportCommand {
|
|
|
666
666
|
});
|
|
667
667
|
}
|
|
668
668
|
buildAbsoluteBucketPath(relativePath) {
|
|
669
|
-
return `${this.settings.exportBucket.rootFolderPath ?? ""}/exports/${createDayPath(new Date())}/${relativePath}`;
|
|
669
|
+
return `${this.settings.exportBucket.rootFolderPath ?? ""}/exports/${createDayPath$1(new Date())}/${relativePath}`;
|
|
670
670
|
}
|
|
671
671
|
async getExportEntities(filters) {
|
|
672
672
|
return this.services.resolveSearchQuery().execute(filters ?? {});
|
|
673
673
|
}
|
|
674
674
|
get bucket() {
|
|
675
|
-
return this.services.getRootServices().
|
|
675
|
+
return this.services.getRootServices().resolveDefaultBucketProvider();
|
|
676
676
|
}
|
|
677
677
|
}
|
|
678
678
|
|
|
@@ -723,10 +723,10 @@ class EntitiesImportCommand {
|
|
|
723
723
|
});
|
|
724
724
|
}
|
|
725
725
|
buildAbsoluteBucketPath(relativePath) {
|
|
726
|
-
return `${this.settings.exportBucket.rootFolderPath ?? ""}/imports/${createDayPath(new Date())}/${relativePath}`;
|
|
726
|
+
return `${this.settings.exportBucket.rootFolderPath ?? ""}/imports/${createDayPath$1(new Date())}/${relativePath}`;
|
|
727
727
|
}
|
|
728
728
|
get bucket() {
|
|
729
|
-
return this.services.getRootServices().
|
|
729
|
+
return this.services.getRootServices().resolveDefaultBucketProvider();
|
|
730
730
|
}
|
|
731
731
|
}
|
|
732
732
|
|
|
@@ -763,10 +763,10 @@ class EntitiesSampleDownloadCommand {
|
|
|
763
763
|
});
|
|
764
764
|
}
|
|
765
765
|
buildAbsoluteBucketPath(relativePath) {
|
|
766
|
-
return `${this.settings.exportBucket.rootFolderPath ?? ""}/samples/${createDayPath(new Date())}/${relativePath}`;
|
|
766
|
+
return `${this.settings.exportBucket.rootFolderPath ?? ""}/samples/${createDayPath$1(new Date())}/${relativePath}`;
|
|
767
767
|
}
|
|
768
768
|
get bucket() {
|
|
769
|
-
return this.services.getRootServices().
|
|
769
|
+
return this.services.getRootServices().resolveDefaultBucketProvider();
|
|
770
770
|
}
|
|
771
771
|
}
|
|
772
772
|
|
|
@@ -993,6 +993,7 @@ class EntityActions {
|
|
|
993
993
|
class ServiceLocator {
|
|
994
994
|
constructor() {
|
|
995
995
|
this.services = {};
|
|
996
|
+
this.multipleServices = {};
|
|
996
997
|
}
|
|
997
998
|
all() {
|
|
998
999
|
return this.services;
|
|
@@ -1000,6 +1001,15 @@ class ServiceLocator {
|
|
|
1000
1001
|
register(name, service) {
|
|
1001
1002
|
this.services[name] = service;
|
|
1002
1003
|
}
|
|
1004
|
+
registerMultiple(serviceName, instanceName, service) {
|
|
1005
|
+
if (!this.services[serviceName]) {
|
|
1006
|
+
this.multipleServices[serviceName] = {};
|
|
1007
|
+
}
|
|
1008
|
+
if (this.multipleServices[serviceName][instanceName]) {
|
|
1009
|
+
throw new Error(`Service instance "${serviceName}" already registered in ServiceLocator`);
|
|
1010
|
+
}
|
|
1011
|
+
this.multipleServices[serviceName][instanceName] = service;
|
|
1012
|
+
}
|
|
1003
1013
|
registerEntityService(serviceName, entityName, service) {
|
|
1004
1014
|
this.register(this.buildServiceName(serviceName, entityName), service);
|
|
1005
1015
|
}
|
|
@@ -1013,6 +1023,24 @@ class ServiceLocator {
|
|
|
1013
1023
|
}
|
|
1014
1024
|
return service;
|
|
1015
1025
|
}
|
|
1026
|
+
resolveMultiple(serviceName, options) {
|
|
1027
|
+
const services = this.multipleServices[serviceName];
|
|
1028
|
+
if (!services && !options?.optional) {
|
|
1029
|
+
throw new Error(`Service type "${serviceName}" not found in ServiceLocator`);
|
|
1030
|
+
}
|
|
1031
|
+
return Object.entries(services).map(([, value]) => value);
|
|
1032
|
+
}
|
|
1033
|
+
resolveMultipleNamed(serviceName, instanceName, options) {
|
|
1034
|
+
const services = this.multipleServices[serviceName];
|
|
1035
|
+
if (!services && !options?.optional) {
|
|
1036
|
+
throw new Error(`Service type "${serviceName}" not found in ServiceLocator`);
|
|
1037
|
+
}
|
|
1038
|
+
const service = services[instanceName];
|
|
1039
|
+
if (!service && !options?.optional) {
|
|
1040
|
+
throw new Error(`Service instance "${serviceName}" not found in ServiceLocator`);
|
|
1041
|
+
}
|
|
1042
|
+
return service;
|
|
1043
|
+
}
|
|
1016
1044
|
resolveEntityService(serviceName, entityName, options) {
|
|
1017
1045
|
return this.resolve(this.buildServiceName(serviceName, entityName), options);
|
|
1018
1046
|
}
|
|
@@ -1096,6 +1124,9 @@ const EntityServices = {
|
|
|
1096
1124
|
},
|
|
1097
1125
|
};
|
|
1098
1126
|
const GlobalServices = {
|
|
1127
|
+
Files: {
|
|
1128
|
+
IFilesReferenceRepo: "IFilesReferenceRepo",
|
|
1129
|
+
},
|
|
1099
1130
|
Events: {
|
|
1100
1131
|
IEventEmitter: "IEventEmitter",
|
|
1101
1132
|
IEventsTracker: "IEventsTracker",
|
|
@@ -1110,6 +1141,10 @@ const GlobalServices = {
|
|
|
1110
1141
|
IEmailProvider: "IEmailProvider",
|
|
1111
1142
|
IEmailTemplatesCollection: "IEmailTemplatesCollection",
|
|
1112
1143
|
IBucketProvider: "IBucketProvider",
|
|
1144
|
+
IFileProvider: "IFileProvider",
|
|
1145
|
+
},
|
|
1146
|
+
Settings: {
|
|
1147
|
+
EntityManagerSettings: "EntityManagerSettings",
|
|
1113
1148
|
},
|
|
1114
1149
|
Versioning: {
|
|
1115
1150
|
IEntityVersioningProvider: "IEntityVersioningProvider",
|
|
@@ -1267,6 +1302,13 @@ class EntitiesServiceLocator {
|
|
|
1267
1302
|
getProvider() {
|
|
1268
1303
|
return this.provider;
|
|
1269
1304
|
}
|
|
1305
|
+
registerSettings(settings) {
|
|
1306
|
+
this.provider.register(GlobalServices.Settings.EntityManagerSettings, settings);
|
|
1307
|
+
return this;
|
|
1308
|
+
}
|
|
1309
|
+
resolveSettings() {
|
|
1310
|
+
return this.provider.resolve(GlobalServices.Settings.EntityManagerSettings);
|
|
1311
|
+
}
|
|
1270
1312
|
resolveEventEmitter() {
|
|
1271
1313
|
return this.provider.resolve(GlobalServices.Events.IEventEmitter, {
|
|
1272
1314
|
optional: true,
|
|
@@ -1287,11 +1329,33 @@ class EntitiesServiceLocator {
|
|
|
1287
1329
|
registerEntityVersioningProvider(instance) {
|
|
1288
1330
|
this.provider.register(GlobalServices.Versioning.IEntityVersioningProvider, instance);
|
|
1289
1331
|
}
|
|
1290
|
-
|
|
1291
|
-
|
|
1332
|
+
resolveDefaultBucketProvider() {
|
|
1333
|
+
const settings = this.resolveSettings();
|
|
1334
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IBucketProvider, settings.defaultBucketProvider);
|
|
1292
1335
|
}
|
|
1293
|
-
|
|
1294
|
-
this.
|
|
1336
|
+
resolveDefaultFilesProvider() {
|
|
1337
|
+
const settings = this.resolveSettings();
|
|
1338
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, settings.defaultFilesProvider);
|
|
1339
|
+
}
|
|
1340
|
+
resolveBucketProviders() {
|
|
1341
|
+
return this.provider.resolveMultiple(GlobalServices.Plugins.IFileProvider);
|
|
1342
|
+
}
|
|
1343
|
+
registerBucketProvider(name, instance) {
|
|
1344
|
+
this.provider.registerMultiple(GlobalServices.Plugins.IBucketProvider, name, instance);
|
|
1345
|
+
return this;
|
|
1346
|
+
}
|
|
1347
|
+
resolveFileProvider(providerId) {
|
|
1348
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, providerId);
|
|
1349
|
+
}
|
|
1350
|
+
registerFileProvider(name, instance) {
|
|
1351
|
+
this.provider.registerMultiple(GlobalServices.Plugins.IFileProvider, name, instance);
|
|
1352
|
+
return this;
|
|
1353
|
+
}
|
|
1354
|
+
resolveFilesReferenceRepositoryProviders() {
|
|
1355
|
+
return this.provider.resolve(GlobalServices.Files.IFilesReferenceRepo);
|
|
1356
|
+
}
|
|
1357
|
+
registerFilesReferenceRepositoryProviders(instance) {
|
|
1358
|
+
this.provider.register(GlobalServices.Files.IFilesReferenceRepo, instance);
|
|
1295
1359
|
}
|
|
1296
1360
|
resolveEventsTracker() {
|
|
1297
1361
|
return this.provider.resolve(GlobalServices.Events.IEventsTracker);
|
|
@@ -2177,6 +2241,8 @@ const EntityManagerSymbols = {
|
|
|
2177
2241
|
EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
|
|
2178
2242
|
EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
|
|
2179
2243
|
BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
|
|
2244
|
+
FileProvider: Symbol.for("WP:FILE_PROVIDER"),
|
|
2245
|
+
FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
|
|
2180
2246
|
PipelineTemplate: Symbol.for("WP:PIPELINE_TEMPLATE"),
|
|
2181
2247
|
};
|
|
2182
2248
|
|
|
@@ -20131,6 +20197,79 @@ exports.EmailService = __decorate([
|
|
|
20131
20197
|
__metadata("design:paramtypes", [exports.EntityManagerRegistry])
|
|
20132
20198
|
], exports.EmailService);
|
|
20133
20199
|
|
|
20200
|
+
exports.FilesService = class FilesService {
|
|
20201
|
+
constructor(registry) {
|
|
20202
|
+
this.registry = registry;
|
|
20203
|
+
}
|
|
20204
|
+
async uploadFile(file) {
|
|
20205
|
+
const uploadResult = await this.defaultFileProvider.uploadFile({
|
|
20206
|
+
content: file.content,
|
|
20207
|
+
contentType: file.contentType,
|
|
20208
|
+
fileName: file.fileName,
|
|
20209
|
+
});
|
|
20210
|
+
const record = await this.referencesRepo.createReference({
|
|
20211
|
+
providerId: uploadResult.reference,
|
|
20212
|
+
reference: uploadResult.reference,
|
|
20213
|
+
contentType: file.contentType,
|
|
20214
|
+
fileName: file.fileName,
|
|
20215
|
+
filePath: file.folderPath,
|
|
20216
|
+
fileSize: file.content.length,
|
|
20217
|
+
metadata: file.metadata,
|
|
20218
|
+
});
|
|
20219
|
+
return {
|
|
20220
|
+
fileId: record.fileId,
|
|
20221
|
+
providerId: record.providerId,
|
|
20222
|
+
reference: record.reference,
|
|
20223
|
+
};
|
|
20224
|
+
}
|
|
20225
|
+
async getFileContent(fileId) {
|
|
20226
|
+
const ref = await this.referencesRepo.getReference(fileId);
|
|
20227
|
+
const content = await this.getFileProvider(ref.providerId).downloadFile({
|
|
20228
|
+
reference: ref.reference,
|
|
20229
|
+
});
|
|
20230
|
+
return {
|
|
20231
|
+
content: content.content,
|
|
20232
|
+
contentType: ref.contentType,
|
|
20233
|
+
fileName: ref.fileName,
|
|
20234
|
+
folderPath: ref.filePath,
|
|
20235
|
+
metadata: ref.metadata,
|
|
20236
|
+
};
|
|
20237
|
+
}
|
|
20238
|
+
async getFileDownloadUrl(fileId) {
|
|
20239
|
+
const ref = await this.referencesRepo.getReference(fileId);
|
|
20240
|
+
const downloadUrl = await this.getFileProvider(ref.providerId).getFileProviderDownloadUrl({
|
|
20241
|
+
reference: ref.reference,
|
|
20242
|
+
});
|
|
20243
|
+
return {
|
|
20244
|
+
contentType: ref.contentType,
|
|
20245
|
+
fileName: ref.fileName,
|
|
20246
|
+
downloadUrl: downloadUrl.downloadUrl,
|
|
20247
|
+
};
|
|
20248
|
+
}
|
|
20249
|
+
getFileProvider(providerId) {
|
|
20250
|
+
return this.registry
|
|
20251
|
+
.getContainer()
|
|
20252
|
+
.getEntitiesServicesLocator()
|
|
20253
|
+
.resolveFileProvider(providerId);
|
|
20254
|
+
}
|
|
20255
|
+
get defaultFileProvider() {
|
|
20256
|
+
return this.registry
|
|
20257
|
+
.getContainer()
|
|
20258
|
+
.getEntitiesServicesLocator()
|
|
20259
|
+
.resolveDefaultFilesProvider();
|
|
20260
|
+
}
|
|
20261
|
+
get referencesRepo() {
|
|
20262
|
+
return this.registry
|
|
20263
|
+
.getContainer()
|
|
20264
|
+
.getEntitiesServicesLocator()
|
|
20265
|
+
.resolveFilesReferenceRepositoryProviders();
|
|
20266
|
+
}
|
|
20267
|
+
};
|
|
20268
|
+
exports.FilesService = __decorate([
|
|
20269
|
+
common.Injectable(),
|
|
20270
|
+
__metadata("design:paramtypes", [exports.EntityManagerRegistry])
|
|
20271
|
+
], exports.FilesService);
|
|
20272
|
+
|
|
20134
20273
|
exports.EventsService = class EventsService {
|
|
20135
20274
|
constructor(registry) {
|
|
20136
20275
|
this.registry = registry;
|
|
@@ -20861,6 +21000,7 @@ const Services$1 = [
|
|
|
20861
21000
|
exports.EntityManagerService,
|
|
20862
21001
|
exports.EmailService,
|
|
20863
21002
|
exports.EventsService,
|
|
21003
|
+
exports.FilesService,
|
|
20864
21004
|
exports.TrackingService,
|
|
20865
21005
|
];
|
|
20866
21006
|
|
|
@@ -21160,6 +21300,8 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
21160
21300
|
await this.registerEmailProviders();
|
|
21161
21301
|
await this.registerEventTrackingProviders();
|
|
21162
21302
|
await this.registerVersioningProviders();
|
|
21303
|
+
await this.registerFilesReferenceRepositoryProviders();
|
|
21304
|
+
await this.registerFileProviders();
|
|
21163
21305
|
await this.registerBucketProviders();
|
|
21164
21306
|
await this.executeInitializers(app);
|
|
21165
21307
|
await this.executeSeeders();
|
|
@@ -21188,6 +21330,10 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
21188
21330
|
this.logger.log(`Discovered entities: \n${sortedEntities
|
|
21189
21331
|
.map((x) => x.discoveredClass.name)
|
|
21190
21332
|
.join(" \n")}`);
|
|
21333
|
+
this.registry
|
|
21334
|
+
.getContainer()
|
|
21335
|
+
.getEntitiesServicesLocator()
|
|
21336
|
+
.registerSettings(staticProviders.settings);
|
|
21191
21337
|
for (const entity of sortedEntities) {
|
|
21192
21338
|
const entityName = entity.meta.name;
|
|
21193
21339
|
const repository = repositoriesDict[entityName];
|
|
@@ -21241,18 +21387,45 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
21241
21387
|
this.logger.log(`Entity seeder initializer ${initializer.discoveredClass.name} initialized 💪`);
|
|
21242
21388
|
}
|
|
21243
21389
|
}
|
|
21390
|
+
async registerFileProviders() {
|
|
21391
|
+
const providers = await this.discoverFileProviders();
|
|
21392
|
+
if (!providers.length) {
|
|
21393
|
+
this.logger.warn("No file providers found ⚠️");
|
|
21394
|
+
return;
|
|
21395
|
+
}
|
|
21396
|
+
for (const provider of providers) {
|
|
21397
|
+
this.registry
|
|
21398
|
+
.getContainer()
|
|
21399
|
+
.getEntitiesServicesLocator()
|
|
21400
|
+
.registerFileProvider(provider.meta.providerId, provider.discoveredClass.instance);
|
|
21401
|
+
this.logger.log(`File provider ${provider.discoveredClass.name} registered 🚜`);
|
|
21402
|
+
}
|
|
21403
|
+
}
|
|
21244
21404
|
async registerBucketProviders() {
|
|
21245
21405
|
const providers = await this.discoverBucketProviders();
|
|
21246
21406
|
if (!providers.length) {
|
|
21247
21407
|
this.logger.warn("No bucket providers found ⚠️");
|
|
21248
21408
|
return;
|
|
21249
21409
|
}
|
|
21250
|
-
|
|
21410
|
+
for (const provider of providers) {
|
|
21411
|
+
this.registry
|
|
21412
|
+
.getContainer()
|
|
21413
|
+
.getEntitiesServicesLocator()
|
|
21414
|
+
.registerBucketProvider(provider.meta.providerId, provider.discoveredClass.instance);
|
|
21415
|
+
this.logger.log(`Bucket provider ${provider.discoveredClass.name} registered 🚜`);
|
|
21416
|
+
}
|
|
21417
|
+
}
|
|
21418
|
+
async registerFilesReferenceRepositoryProviders() {
|
|
21419
|
+
const providers = await this.discoverFilesReferenceRepositoryProviders();
|
|
21420
|
+
if (!providers.length) {
|
|
21421
|
+
this.logger.warn("No files repository ⚠️");
|
|
21422
|
+
return;
|
|
21423
|
+
}
|
|
21251
21424
|
this.registry
|
|
21252
21425
|
.getContainer()
|
|
21253
21426
|
.getEntitiesServicesLocator()
|
|
21254
|
-
.
|
|
21255
|
-
this.logger.log(`
|
|
21427
|
+
.registerFilesReferenceRepositoryProviders(providers[0].discoveredClass.instance);
|
|
21428
|
+
this.logger.log(`Files Reference Repository ${providers[0].discoveredClass.name} registered 🚜`);
|
|
21256
21429
|
}
|
|
21257
21430
|
async registerEventTrackingProviders() {
|
|
21258
21431
|
const providers = await this.discoverEventTrackingProviders();
|
|
@@ -21358,6 +21531,12 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
|
|
|
21358
21531
|
async discoverBucketProviders() {
|
|
21359
21532
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.BucketProvider);
|
|
21360
21533
|
}
|
|
21534
|
+
async discoverFileProviders() {
|
|
21535
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileProvider);
|
|
21536
|
+
}
|
|
21537
|
+
async discoverFilesReferenceRepositoryProviders() {
|
|
21538
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileReferenceRepository);
|
|
21539
|
+
}
|
|
21361
21540
|
};
|
|
21362
21541
|
exports.EntityManagerInitializer = EntityManagerInitializer_1 = __decorate([
|
|
21363
21542
|
common.Injectable(),
|
|
@@ -22287,10 +22466,10 @@ class NestPipelineTemplate {
|
|
|
22287
22466
|
}
|
|
22288
22467
|
}
|
|
22289
22468
|
|
|
22290
|
-
class
|
|
22469
|
+
class AwsS3BucketError extends Error {
|
|
22291
22470
|
constructor(message) {
|
|
22292
22471
|
super(message);
|
|
22293
|
-
this.name = "
|
|
22472
|
+
this.name = "AwsS3BucketError";
|
|
22294
22473
|
}
|
|
22295
22474
|
}
|
|
22296
22475
|
|
|
@@ -22318,7 +22497,7 @@ exports.AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22318
22497
|
}));
|
|
22319
22498
|
}
|
|
22320
22499
|
catch (e) {
|
|
22321
|
-
throw new
|
|
22500
|
+
throw new AwsS3BucketError(`AWS BUCKET | listObjectsV2 | ${input.bucket} | ${input.path} | Error -> ${e.message}`);
|
|
22322
22501
|
}
|
|
22323
22502
|
}
|
|
22324
22503
|
async folderEnsure(input) {
|
|
@@ -22335,7 +22514,7 @@ exports.AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22335
22514
|
}));
|
|
22336
22515
|
}
|
|
22337
22516
|
catch (e) {
|
|
22338
|
-
throw new
|
|
22517
|
+
throw new AwsS3BucketError(`AwsS3Bucket | folderCreate | ${input.bucket} | ${input.path} | Error -> ${e.message}`);
|
|
22339
22518
|
}
|
|
22340
22519
|
}
|
|
22341
22520
|
async folderExists(input) {
|
|
@@ -22347,7 +22526,7 @@ exports.AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22347
22526
|
return (result.ContentLength ?? 0) > 0;
|
|
22348
22527
|
}
|
|
22349
22528
|
catch (e) {
|
|
22350
|
-
throw new
|
|
22529
|
+
throw new AwsS3BucketError(`AwsS3Bucket | folderExists | Error -> ${e.message}`);
|
|
22351
22530
|
}
|
|
22352
22531
|
}
|
|
22353
22532
|
async fileDownload(input) {
|
|
@@ -22359,7 +22538,7 @@ exports.AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22359
22538
|
return result.Body;
|
|
22360
22539
|
}
|
|
22361
22540
|
catch (e) {
|
|
22362
|
-
throw new
|
|
22541
|
+
throw new AwsS3BucketError(`AWS BUCKET | downloadFile | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22363
22542
|
}
|
|
22364
22543
|
}
|
|
22365
22544
|
async filePublicUrlCreate(input) {
|
|
@@ -22372,7 +22551,7 @@ exports.AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22372
22551
|
});
|
|
22373
22552
|
}
|
|
22374
22553
|
catch (e) {
|
|
22375
|
-
throw new
|
|
22554
|
+
throw new AwsS3BucketError(`AwsS3Bucket | filePublicUrlCreate | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22376
22555
|
}
|
|
22377
22556
|
}
|
|
22378
22557
|
async fileUpload(input) {
|
|
@@ -22385,7 +22564,7 @@ exports.AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22385
22564
|
}));
|
|
22386
22565
|
}
|
|
22387
22566
|
catch (e) {
|
|
22388
|
-
throw new
|
|
22567
|
+
throw new AwsS3BucketError(`AwsS3Bucket | fileUpload | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22389
22568
|
}
|
|
22390
22569
|
}
|
|
22391
22570
|
async fileDelete(input) {
|
|
@@ -22396,7 +22575,7 @@ exports.AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22396
22575
|
}));
|
|
22397
22576
|
}
|
|
22398
22577
|
catch (e) {
|
|
22399
|
-
throw new
|
|
22578
|
+
throw new AwsS3BucketError(`AwsS3Bucket | fileDelete | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22400
22579
|
}
|
|
22401
22580
|
}
|
|
22402
22581
|
};
|
|
@@ -22405,9 +22584,70 @@ exports.AwsS3BucketProvider = __decorate([
|
|
|
22405
22584
|
__metadata("design:paramtypes", [])
|
|
22406
22585
|
], exports.AwsS3BucketProvider);
|
|
22407
22586
|
|
|
22587
|
+
const WpFileProvider = (providerId) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.FileProvider, {
|
|
22588
|
+
providerId,
|
|
22589
|
+
}));
|
|
22590
|
+
|
|
22591
|
+
const createDayPath = (d) => `${d.getFullYear()}/${(d.getMonth() + 1).toString().padStart(2, "0")}/${d
|
|
22592
|
+
.getDate()
|
|
22593
|
+
.toString()
|
|
22594
|
+
.padStart(2, "0")}`;
|
|
22595
|
+
let AwsS3FileProvider = class AwsS3FileProvider {
|
|
22596
|
+
constructor(bucket) {
|
|
22597
|
+
this.bucket = bucket;
|
|
22598
|
+
}
|
|
22599
|
+
getProviderId() {
|
|
22600
|
+
return "awsS3";
|
|
22601
|
+
}
|
|
22602
|
+
async uploadFile(file) {
|
|
22603
|
+
const path = this.getBucketFileUploadPath(file.fileName, new Date());
|
|
22604
|
+
await this.bucket.fileUpload({
|
|
22605
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22606
|
+
filePath: path,
|
|
22607
|
+
content: file.content,
|
|
22608
|
+
contentType: file.contentType,
|
|
22609
|
+
});
|
|
22610
|
+
return {
|
|
22611
|
+
reference: path,
|
|
22612
|
+
};
|
|
22613
|
+
}
|
|
22614
|
+
async deleteFile(reference) {
|
|
22615
|
+
await this.bucket.fileDelete({
|
|
22616
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22617
|
+
filePath: reference.reference,
|
|
22618
|
+
});
|
|
22619
|
+
}
|
|
22620
|
+
async downloadFile(reference) {
|
|
22621
|
+
const content = await this.bucket.fileDownload({
|
|
22622
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22623
|
+
filePath: reference.reference,
|
|
22624
|
+
});
|
|
22625
|
+
return {
|
|
22626
|
+
content,
|
|
22627
|
+
};
|
|
22628
|
+
}
|
|
22629
|
+
async getFileProviderDownloadUrl(reference) {
|
|
22630
|
+
const url = await this.bucket.filePublicUrlCreate({
|
|
22631
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22632
|
+
expirationMinutes: awsBucketSettings.value.publicLinksExpirationMinutes,
|
|
22633
|
+
filePath: reference.reference,
|
|
22634
|
+
});
|
|
22635
|
+
return {
|
|
22636
|
+
downloadUrl: url,
|
|
22637
|
+
};
|
|
22638
|
+
}
|
|
22639
|
+
getBucketFileUploadPath(fileName, date) {
|
|
22640
|
+
return `${backendCore.ensureTailingSlash(awsBucketSettings.value.paths.filesUpload)}${createDayPath(date)}${backendCore.ensureStartSlash(backendCore.newUuid())}_${fileName}`;
|
|
22641
|
+
}
|
|
22642
|
+
};
|
|
22643
|
+
AwsS3FileProvider = __decorate([
|
|
22644
|
+
WpFileProvider("awsS3"),
|
|
22645
|
+
__metadata("design:paramtypes", [exports.AwsS3BucketProvider])
|
|
22646
|
+
], AwsS3FileProvider);
|
|
22647
|
+
|
|
22408
22648
|
var AwsBucketModule_1;
|
|
22409
22649
|
const ModuleData$2 = {
|
|
22410
|
-
providers: [exports.AwsS3BucketProvider],
|
|
22650
|
+
providers: [exports.AwsS3BucketProvider, AwsS3FileProvider],
|
|
22411
22651
|
};
|
|
22412
22652
|
exports.AwsBucketModule = AwsBucketModule_1 = class AwsBucketModule {
|
|
22413
22653
|
static forRoot(input) {
|
|
@@ -22424,6 +22664,54 @@ exports.AwsBucketModule = AwsBucketModule_1 = __decorate([
|
|
|
22424
22664
|
})
|
|
22425
22665
|
], exports.AwsBucketModule);
|
|
22426
22666
|
|
|
22667
|
+
let InMemoryFileProvider = class InMemoryFileProvider {
|
|
22668
|
+
constructor() {
|
|
22669
|
+
this.provider = new exports.InMemoryBucketProvider();
|
|
22670
|
+
}
|
|
22671
|
+
getProviderId() {
|
|
22672
|
+
return "inMemory";
|
|
22673
|
+
}
|
|
22674
|
+
async uploadFile(file) {
|
|
22675
|
+
const filePath = `${backendCore.newUuid()}/${file.fileName}`;
|
|
22676
|
+
await this.provider.fileUpload({
|
|
22677
|
+
bucket: "test",
|
|
22678
|
+
content: file.content,
|
|
22679
|
+
contentType: file.contentType,
|
|
22680
|
+
filePath,
|
|
22681
|
+
});
|
|
22682
|
+
return {
|
|
22683
|
+
reference: filePath,
|
|
22684
|
+
};
|
|
22685
|
+
}
|
|
22686
|
+
async deleteFile(reference) {
|
|
22687
|
+
await this.provider.fileDelete({
|
|
22688
|
+
bucket: "test",
|
|
22689
|
+
filePath: reference.reference,
|
|
22690
|
+
});
|
|
22691
|
+
}
|
|
22692
|
+
async downloadFile(reference) {
|
|
22693
|
+
const content = await this.provider.fileDownload({
|
|
22694
|
+
bucket: "test",
|
|
22695
|
+
filePath: reference.reference,
|
|
22696
|
+
});
|
|
22697
|
+
return {
|
|
22698
|
+
content,
|
|
22699
|
+
};
|
|
22700
|
+
}
|
|
22701
|
+
async getFileProviderDownloadUrl(reference) {
|
|
22702
|
+
return {
|
|
22703
|
+
downloadUrl: await this.provider.filePublicUrlCreate({
|
|
22704
|
+
bucket: "test",
|
|
22705
|
+
filePath: reference.reference,
|
|
22706
|
+
expirationMinutes: 60,
|
|
22707
|
+
}),
|
|
22708
|
+
};
|
|
22709
|
+
}
|
|
22710
|
+
};
|
|
22711
|
+
InMemoryFileProvider = __decorate([
|
|
22712
|
+
WpFileProvider("inMemory"),
|
|
22713
|
+
__metadata("design:paramtypes", [])
|
|
22714
|
+
], InMemoryFileProvider);
|
|
22427
22715
|
exports.InMemoryBucketProvider = class InMemoryBucketProvider {
|
|
22428
22716
|
constructor() {
|
|
22429
22717
|
this.inMemoryStorage = {};
|
|
@@ -22485,7 +22773,7 @@ exports.InMemoryBucketProvider = class InMemoryBucketProvider {
|
|
|
22485
22773
|
}
|
|
22486
22774
|
};
|
|
22487
22775
|
exports.InMemoryBucketProvider = __decorate([
|
|
22488
|
-
WpBucketProvider("
|
|
22776
|
+
WpBucketProvider("inMemory")
|
|
22489
22777
|
], exports.InMemoryBucketProvider);
|
|
22490
22778
|
|
|
22491
22779
|
const AwsSesModuleSymbols = {
|
|
@@ -27735,7 +28023,7 @@ exports.AuthenticationEmailTemplates = AuthenticationEmailTemplates;
|
|
|
27735
28023
|
exports.AuthenticationError = AuthenticationError;
|
|
27736
28024
|
exports.AuthenticationEvents = AuthenticationEvents;
|
|
27737
28025
|
exports.AuthenticationExtensionSymbols = AuthenticationExtensionSymbols;
|
|
27738
|
-
exports.AwsS2BucketError =
|
|
28026
|
+
exports.AwsS2BucketError = AwsS3BucketError;
|
|
27739
28027
|
exports.AwsSesEmailTemplate = AwsSesEmailTemplate;
|
|
27740
28028
|
exports.BooleanFacet = BooleanFacet;
|
|
27741
28029
|
exports.BooleanFacetItem = BooleanFacetItem;
|