@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/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Log, csvParse, excelParse, excelBuild, csvBuild, isNullOrUndefined, sort, byField, toDict, newUuid as newUuid$1, ensureTailingSlash, removeUndefinedProps } from '@punks/backend-core';
|
|
1
|
+
import { Log, csvParse, excelParse, excelBuild, csvBuild, isNullOrUndefined, sort, byField, toDict, newUuid as newUuid$1, ensureTailingSlash, ensureStartSlash, removeUndefinedProps } from '@punks/backend-core';
|
|
2
2
|
import { applyDecorators, Injectable, SetMetadata, createParamDecorator, Global, Module, Scope, Logger, StreamableFile, HttpException, HttpStatus } from '@nestjs/common';
|
|
3
3
|
import { ApiProperty } from '@nestjs/swagger';
|
|
4
4
|
import { Reflector } from '@nestjs/core';
|
|
@@ -619,7 +619,7 @@ class EntitiesDeleteCommand {
|
|
|
619
619
|
}
|
|
620
620
|
}
|
|
621
621
|
|
|
622
|
-
const createDayPath = (d) => `${d.getFullYear()}/${(d.getMonth() + 1).toString().padStart(2, "0")}/${d
|
|
622
|
+
const createDayPath$1 = (d) => `${d.getFullYear()}/${(d.getMonth() + 1).toString().padStart(2, "0")}/${d
|
|
623
623
|
.getDate()
|
|
624
624
|
.toString()
|
|
625
625
|
.padStart(2, "0")}`;
|
|
@@ -658,13 +658,13 @@ class EntitiesExportCommand {
|
|
|
658
658
|
});
|
|
659
659
|
}
|
|
660
660
|
buildAbsoluteBucketPath(relativePath) {
|
|
661
|
-
return `${this.settings.exportBucket.rootFolderPath ?? ""}/exports/${createDayPath(new Date())}/${relativePath}`;
|
|
661
|
+
return `${this.settings.exportBucket.rootFolderPath ?? ""}/exports/${createDayPath$1(new Date())}/${relativePath}`;
|
|
662
662
|
}
|
|
663
663
|
async getExportEntities(filters) {
|
|
664
664
|
return this.services.resolveSearchQuery().execute(filters ?? {});
|
|
665
665
|
}
|
|
666
666
|
get bucket() {
|
|
667
|
-
return this.services.getRootServices().
|
|
667
|
+
return this.services.getRootServices().resolveDefaultBucketProvider();
|
|
668
668
|
}
|
|
669
669
|
}
|
|
670
670
|
|
|
@@ -715,10 +715,10 @@ class EntitiesImportCommand {
|
|
|
715
715
|
});
|
|
716
716
|
}
|
|
717
717
|
buildAbsoluteBucketPath(relativePath) {
|
|
718
|
-
return `${this.settings.exportBucket.rootFolderPath ?? ""}/imports/${createDayPath(new Date())}/${relativePath}`;
|
|
718
|
+
return `${this.settings.exportBucket.rootFolderPath ?? ""}/imports/${createDayPath$1(new Date())}/${relativePath}`;
|
|
719
719
|
}
|
|
720
720
|
get bucket() {
|
|
721
|
-
return this.services.getRootServices().
|
|
721
|
+
return this.services.getRootServices().resolveDefaultBucketProvider();
|
|
722
722
|
}
|
|
723
723
|
}
|
|
724
724
|
|
|
@@ -755,10 +755,10 @@ class EntitiesSampleDownloadCommand {
|
|
|
755
755
|
});
|
|
756
756
|
}
|
|
757
757
|
buildAbsoluteBucketPath(relativePath) {
|
|
758
|
-
return `${this.settings.exportBucket.rootFolderPath ?? ""}/samples/${createDayPath(new Date())}/${relativePath}`;
|
|
758
|
+
return `${this.settings.exportBucket.rootFolderPath ?? ""}/samples/${createDayPath$1(new Date())}/${relativePath}`;
|
|
759
759
|
}
|
|
760
760
|
get bucket() {
|
|
761
|
-
return this.services.getRootServices().
|
|
761
|
+
return this.services.getRootServices().resolveDefaultBucketProvider();
|
|
762
762
|
}
|
|
763
763
|
}
|
|
764
764
|
|
|
@@ -985,6 +985,7 @@ class EntityActions {
|
|
|
985
985
|
class ServiceLocator {
|
|
986
986
|
constructor() {
|
|
987
987
|
this.services = {};
|
|
988
|
+
this.multipleServices = {};
|
|
988
989
|
}
|
|
989
990
|
all() {
|
|
990
991
|
return this.services;
|
|
@@ -992,6 +993,15 @@ class ServiceLocator {
|
|
|
992
993
|
register(name, service) {
|
|
993
994
|
this.services[name] = service;
|
|
994
995
|
}
|
|
996
|
+
registerMultiple(serviceName, instanceName, service) {
|
|
997
|
+
if (!this.services[serviceName]) {
|
|
998
|
+
this.multipleServices[serviceName] = {};
|
|
999
|
+
}
|
|
1000
|
+
if (this.multipleServices[serviceName][instanceName]) {
|
|
1001
|
+
throw new Error(`Service instance "${serviceName}" already registered in ServiceLocator`);
|
|
1002
|
+
}
|
|
1003
|
+
this.multipleServices[serviceName][instanceName] = service;
|
|
1004
|
+
}
|
|
995
1005
|
registerEntityService(serviceName, entityName, service) {
|
|
996
1006
|
this.register(this.buildServiceName(serviceName, entityName), service);
|
|
997
1007
|
}
|
|
@@ -1005,6 +1015,24 @@ class ServiceLocator {
|
|
|
1005
1015
|
}
|
|
1006
1016
|
return service;
|
|
1007
1017
|
}
|
|
1018
|
+
resolveMultiple(serviceName, options) {
|
|
1019
|
+
const services = this.multipleServices[serviceName];
|
|
1020
|
+
if (!services && !options?.optional) {
|
|
1021
|
+
throw new Error(`Service type "${serviceName}" not found in ServiceLocator`);
|
|
1022
|
+
}
|
|
1023
|
+
return Object.entries(services).map(([, value]) => value);
|
|
1024
|
+
}
|
|
1025
|
+
resolveMultipleNamed(serviceName, instanceName, options) {
|
|
1026
|
+
const services = this.multipleServices[serviceName];
|
|
1027
|
+
if (!services && !options?.optional) {
|
|
1028
|
+
throw new Error(`Service type "${serviceName}" not found in ServiceLocator`);
|
|
1029
|
+
}
|
|
1030
|
+
const service = services[instanceName];
|
|
1031
|
+
if (!service && !options?.optional) {
|
|
1032
|
+
throw new Error(`Service instance "${serviceName}" not found in ServiceLocator`);
|
|
1033
|
+
}
|
|
1034
|
+
return service;
|
|
1035
|
+
}
|
|
1008
1036
|
resolveEntityService(serviceName, entityName, options) {
|
|
1009
1037
|
return this.resolve(this.buildServiceName(serviceName, entityName), options);
|
|
1010
1038
|
}
|
|
@@ -1088,6 +1116,9 @@ const EntityServices = {
|
|
|
1088
1116
|
},
|
|
1089
1117
|
};
|
|
1090
1118
|
const GlobalServices = {
|
|
1119
|
+
Files: {
|
|
1120
|
+
IFilesReferenceRepo: "IFilesReferenceRepo",
|
|
1121
|
+
},
|
|
1091
1122
|
Events: {
|
|
1092
1123
|
IEventEmitter: "IEventEmitter",
|
|
1093
1124
|
IEventsTracker: "IEventsTracker",
|
|
@@ -1102,6 +1133,10 @@ const GlobalServices = {
|
|
|
1102
1133
|
IEmailProvider: "IEmailProvider",
|
|
1103
1134
|
IEmailTemplatesCollection: "IEmailTemplatesCollection",
|
|
1104
1135
|
IBucketProvider: "IBucketProvider",
|
|
1136
|
+
IFileProvider: "IFileProvider",
|
|
1137
|
+
},
|
|
1138
|
+
Settings: {
|
|
1139
|
+
EntityManagerSettings: "EntityManagerSettings",
|
|
1105
1140
|
},
|
|
1106
1141
|
Versioning: {
|
|
1107
1142
|
IEntityVersioningProvider: "IEntityVersioningProvider",
|
|
@@ -1259,6 +1294,13 @@ class EntitiesServiceLocator {
|
|
|
1259
1294
|
getProvider() {
|
|
1260
1295
|
return this.provider;
|
|
1261
1296
|
}
|
|
1297
|
+
registerSettings(settings) {
|
|
1298
|
+
this.provider.register(GlobalServices.Settings.EntityManagerSettings, settings);
|
|
1299
|
+
return this;
|
|
1300
|
+
}
|
|
1301
|
+
resolveSettings() {
|
|
1302
|
+
return this.provider.resolve(GlobalServices.Settings.EntityManagerSettings);
|
|
1303
|
+
}
|
|
1262
1304
|
resolveEventEmitter() {
|
|
1263
1305
|
return this.provider.resolve(GlobalServices.Events.IEventEmitter, {
|
|
1264
1306
|
optional: true,
|
|
@@ -1279,11 +1321,33 @@ class EntitiesServiceLocator {
|
|
|
1279
1321
|
registerEntityVersioningProvider(instance) {
|
|
1280
1322
|
this.provider.register(GlobalServices.Versioning.IEntityVersioningProvider, instance);
|
|
1281
1323
|
}
|
|
1282
|
-
|
|
1283
|
-
|
|
1324
|
+
resolveDefaultBucketProvider() {
|
|
1325
|
+
const settings = this.resolveSettings();
|
|
1326
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IBucketProvider, settings.defaultBucketProvider);
|
|
1284
1327
|
}
|
|
1285
|
-
|
|
1286
|
-
this.
|
|
1328
|
+
resolveDefaultFilesProvider() {
|
|
1329
|
+
const settings = this.resolveSettings();
|
|
1330
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, settings.defaultFilesProvider);
|
|
1331
|
+
}
|
|
1332
|
+
resolveBucketProviders() {
|
|
1333
|
+
return this.provider.resolveMultiple(GlobalServices.Plugins.IFileProvider);
|
|
1334
|
+
}
|
|
1335
|
+
registerBucketProvider(name, instance) {
|
|
1336
|
+
this.provider.registerMultiple(GlobalServices.Plugins.IBucketProvider, name, instance);
|
|
1337
|
+
return this;
|
|
1338
|
+
}
|
|
1339
|
+
resolveFileProvider(providerId) {
|
|
1340
|
+
return this.provider.resolveMultipleNamed(GlobalServices.Plugins.IFileProvider, providerId);
|
|
1341
|
+
}
|
|
1342
|
+
registerFileProvider(name, instance) {
|
|
1343
|
+
this.provider.registerMultiple(GlobalServices.Plugins.IFileProvider, name, instance);
|
|
1344
|
+
return this;
|
|
1345
|
+
}
|
|
1346
|
+
resolveFilesReferenceRepositoryProviders() {
|
|
1347
|
+
return this.provider.resolve(GlobalServices.Files.IFilesReferenceRepo);
|
|
1348
|
+
}
|
|
1349
|
+
registerFilesReferenceRepositoryProviders(instance) {
|
|
1350
|
+
this.provider.register(GlobalServices.Files.IFilesReferenceRepo, instance);
|
|
1287
1351
|
}
|
|
1288
1352
|
resolveEventsTracker() {
|
|
1289
1353
|
return this.provider.resolve(GlobalServices.Events.IEventsTracker);
|
|
@@ -2169,6 +2233,8 @@ const EntityManagerSymbols = {
|
|
|
2169
2233
|
EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
|
|
2170
2234
|
EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
|
|
2171
2235
|
BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
|
|
2236
|
+
FileProvider: Symbol.for("WP:FILE_PROVIDER"),
|
|
2237
|
+
FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
|
|
2172
2238
|
PipelineTemplate: Symbol.for("WP:PIPELINE_TEMPLATE"),
|
|
2173
2239
|
};
|
|
2174
2240
|
|
|
@@ -20123,6 +20189,79 @@ EmailService = __decorate([
|
|
|
20123
20189
|
__metadata("design:paramtypes", [EntityManagerRegistry])
|
|
20124
20190
|
], EmailService);
|
|
20125
20191
|
|
|
20192
|
+
let FilesService = class FilesService {
|
|
20193
|
+
constructor(registry) {
|
|
20194
|
+
this.registry = registry;
|
|
20195
|
+
}
|
|
20196
|
+
async uploadFile(file) {
|
|
20197
|
+
const uploadResult = await this.defaultFileProvider.uploadFile({
|
|
20198
|
+
content: file.content,
|
|
20199
|
+
contentType: file.contentType,
|
|
20200
|
+
fileName: file.fileName,
|
|
20201
|
+
});
|
|
20202
|
+
const record = await this.referencesRepo.createReference({
|
|
20203
|
+
providerId: uploadResult.reference,
|
|
20204
|
+
reference: uploadResult.reference,
|
|
20205
|
+
contentType: file.contentType,
|
|
20206
|
+
fileName: file.fileName,
|
|
20207
|
+
filePath: file.folderPath,
|
|
20208
|
+
fileSize: file.content.length,
|
|
20209
|
+
metadata: file.metadata,
|
|
20210
|
+
});
|
|
20211
|
+
return {
|
|
20212
|
+
fileId: record.fileId,
|
|
20213
|
+
providerId: record.providerId,
|
|
20214
|
+
reference: record.reference,
|
|
20215
|
+
};
|
|
20216
|
+
}
|
|
20217
|
+
async getFileContent(fileId) {
|
|
20218
|
+
const ref = await this.referencesRepo.getReference(fileId);
|
|
20219
|
+
const content = await this.getFileProvider(ref.providerId).downloadFile({
|
|
20220
|
+
reference: ref.reference,
|
|
20221
|
+
});
|
|
20222
|
+
return {
|
|
20223
|
+
content: content.content,
|
|
20224
|
+
contentType: ref.contentType,
|
|
20225
|
+
fileName: ref.fileName,
|
|
20226
|
+
folderPath: ref.filePath,
|
|
20227
|
+
metadata: ref.metadata,
|
|
20228
|
+
};
|
|
20229
|
+
}
|
|
20230
|
+
async getFileDownloadUrl(fileId) {
|
|
20231
|
+
const ref = await this.referencesRepo.getReference(fileId);
|
|
20232
|
+
const downloadUrl = await this.getFileProvider(ref.providerId).getFileProviderDownloadUrl({
|
|
20233
|
+
reference: ref.reference,
|
|
20234
|
+
});
|
|
20235
|
+
return {
|
|
20236
|
+
contentType: ref.contentType,
|
|
20237
|
+
fileName: ref.fileName,
|
|
20238
|
+
downloadUrl: downloadUrl.downloadUrl,
|
|
20239
|
+
};
|
|
20240
|
+
}
|
|
20241
|
+
getFileProvider(providerId) {
|
|
20242
|
+
return this.registry
|
|
20243
|
+
.getContainer()
|
|
20244
|
+
.getEntitiesServicesLocator()
|
|
20245
|
+
.resolveFileProvider(providerId);
|
|
20246
|
+
}
|
|
20247
|
+
get defaultFileProvider() {
|
|
20248
|
+
return this.registry
|
|
20249
|
+
.getContainer()
|
|
20250
|
+
.getEntitiesServicesLocator()
|
|
20251
|
+
.resolveDefaultFilesProvider();
|
|
20252
|
+
}
|
|
20253
|
+
get referencesRepo() {
|
|
20254
|
+
return this.registry
|
|
20255
|
+
.getContainer()
|
|
20256
|
+
.getEntitiesServicesLocator()
|
|
20257
|
+
.resolveFilesReferenceRepositoryProviders();
|
|
20258
|
+
}
|
|
20259
|
+
};
|
|
20260
|
+
FilesService = __decorate([
|
|
20261
|
+
Injectable(),
|
|
20262
|
+
__metadata("design:paramtypes", [EntityManagerRegistry])
|
|
20263
|
+
], FilesService);
|
|
20264
|
+
|
|
20126
20265
|
let EventsService = class EventsService {
|
|
20127
20266
|
constructor(registry) {
|
|
20128
20267
|
this.registry = registry;
|
|
@@ -20853,6 +20992,7 @@ const Services$1 = [
|
|
|
20853
20992
|
EntityManagerService,
|
|
20854
20993
|
EmailService,
|
|
20855
20994
|
EventsService,
|
|
20995
|
+
FilesService,
|
|
20856
20996
|
TrackingService,
|
|
20857
20997
|
];
|
|
20858
20998
|
|
|
@@ -21152,6 +21292,8 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
21152
21292
|
await this.registerEmailProviders();
|
|
21153
21293
|
await this.registerEventTrackingProviders();
|
|
21154
21294
|
await this.registerVersioningProviders();
|
|
21295
|
+
await this.registerFilesReferenceRepositoryProviders();
|
|
21296
|
+
await this.registerFileProviders();
|
|
21155
21297
|
await this.registerBucketProviders();
|
|
21156
21298
|
await this.executeInitializers(app);
|
|
21157
21299
|
await this.executeSeeders();
|
|
@@ -21180,6 +21322,10 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
21180
21322
|
this.logger.log(`Discovered entities: \n${sortedEntities
|
|
21181
21323
|
.map((x) => x.discoveredClass.name)
|
|
21182
21324
|
.join(" \n")}`);
|
|
21325
|
+
this.registry
|
|
21326
|
+
.getContainer()
|
|
21327
|
+
.getEntitiesServicesLocator()
|
|
21328
|
+
.registerSettings(staticProviders.settings);
|
|
21183
21329
|
for (const entity of sortedEntities) {
|
|
21184
21330
|
const entityName = entity.meta.name;
|
|
21185
21331
|
const repository = repositoriesDict[entityName];
|
|
@@ -21233,18 +21379,45 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
21233
21379
|
this.logger.log(`Entity seeder initializer ${initializer.discoveredClass.name} initialized 💪`);
|
|
21234
21380
|
}
|
|
21235
21381
|
}
|
|
21382
|
+
async registerFileProviders() {
|
|
21383
|
+
const providers = await this.discoverFileProviders();
|
|
21384
|
+
if (!providers.length) {
|
|
21385
|
+
this.logger.warn("No file providers found ⚠️");
|
|
21386
|
+
return;
|
|
21387
|
+
}
|
|
21388
|
+
for (const provider of providers) {
|
|
21389
|
+
this.registry
|
|
21390
|
+
.getContainer()
|
|
21391
|
+
.getEntitiesServicesLocator()
|
|
21392
|
+
.registerFileProvider(provider.meta.providerId, provider.discoveredClass.instance);
|
|
21393
|
+
this.logger.log(`File provider ${provider.discoveredClass.name} registered 🚜`);
|
|
21394
|
+
}
|
|
21395
|
+
}
|
|
21236
21396
|
async registerBucketProviders() {
|
|
21237
21397
|
const providers = await this.discoverBucketProviders();
|
|
21238
21398
|
if (!providers.length) {
|
|
21239
21399
|
this.logger.warn("No bucket providers found ⚠️");
|
|
21240
21400
|
return;
|
|
21241
21401
|
}
|
|
21242
|
-
|
|
21402
|
+
for (const provider of providers) {
|
|
21403
|
+
this.registry
|
|
21404
|
+
.getContainer()
|
|
21405
|
+
.getEntitiesServicesLocator()
|
|
21406
|
+
.registerBucketProvider(provider.meta.providerId, provider.discoveredClass.instance);
|
|
21407
|
+
this.logger.log(`Bucket provider ${provider.discoveredClass.name} registered 🚜`);
|
|
21408
|
+
}
|
|
21409
|
+
}
|
|
21410
|
+
async registerFilesReferenceRepositoryProviders() {
|
|
21411
|
+
const providers = await this.discoverFilesReferenceRepositoryProviders();
|
|
21412
|
+
if (!providers.length) {
|
|
21413
|
+
this.logger.warn("No files repository ⚠️");
|
|
21414
|
+
return;
|
|
21415
|
+
}
|
|
21243
21416
|
this.registry
|
|
21244
21417
|
.getContainer()
|
|
21245
21418
|
.getEntitiesServicesLocator()
|
|
21246
|
-
.
|
|
21247
|
-
this.logger.log(`
|
|
21419
|
+
.registerFilesReferenceRepositoryProviders(providers[0].discoveredClass.instance);
|
|
21420
|
+
this.logger.log(`Files Reference Repository ${providers[0].discoveredClass.name} registered 🚜`);
|
|
21248
21421
|
}
|
|
21249
21422
|
async registerEventTrackingProviders() {
|
|
21250
21423
|
const providers = await this.discoverEventTrackingProviders();
|
|
@@ -21350,6 +21523,12 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
|
|
|
21350
21523
|
async discoverBucketProviders() {
|
|
21351
21524
|
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.BucketProvider);
|
|
21352
21525
|
}
|
|
21526
|
+
async discoverFileProviders() {
|
|
21527
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileProvider);
|
|
21528
|
+
}
|
|
21529
|
+
async discoverFilesReferenceRepositoryProviders() {
|
|
21530
|
+
return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.FileReferenceRepository);
|
|
21531
|
+
}
|
|
21353
21532
|
};
|
|
21354
21533
|
EntityManagerInitializer = EntityManagerInitializer_1 = __decorate([
|
|
21355
21534
|
Injectable(),
|
|
@@ -22279,10 +22458,10 @@ class NestPipelineTemplate {
|
|
|
22279
22458
|
}
|
|
22280
22459
|
}
|
|
22281
22460
|
|
|
22282
|
-
class
|
|
22461
|
+
class AwsS3BucketError extends Error {
|
|
22283
22462
|
constructor(message) {
|
|
22284
22463
|
super(message);
|
|
22285
|
-
this.name = "
|
|
22464
|
+
this.name = "AwsS3BucketError";
|
|
22286
22465
|
}
|
|
22287
22466
|
}
|
|
22288
22467
|
|
|
@@ -22310,7 +22489,7 @@ let AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22310
22489
|
}));
|
|
22311
22490
|
}
|
|
22312
22491
|
catch (e) {
|
|
22313
|
-
throw new
|
|
22492
|
+
throw new AwsS3BucketError(`AWS BUCKET | listObjectsV2 | ${input.bucket} | ${input.path} | Error -> ${e.message}`);
|
|
22314
22493
|
}
|
|
22315
22494
|
}
|
|
22316
22495
|
async folderEnsure(input) {
|
|
@@ -22327,7 +22506,7 @@ let AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22327
22506
|
}));
|
|
22328
22507
|
}
|
|
22329
22508
|
catch (e) {
|
|
22330
|
-
throw new
|
|
22509
|
+
throw new AwsS3BucketError(`AwsS3Bucket | folderCreate | ${input.bucket} | ${input.path} | Error -> ${e.message}`);
|
|
22331
22510
|
}
|
|
22332
22511
|
}
|
|
22333
22512
|
async folderExists(input) {
|
|
@@ -22339,7 +22518,7 @@ let AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22339
22518
|
return (result.ContentLength ?? 0) > 0;
|
|
22340
22519
|
}
|
|
22341
22520
|
catch (e) {
|
|
22342
|
-
throw new
|
|
22521
|
+
throw new AwsS3BucketError(`AwsS3Bucket | folderExists | Error -> ${e.message}`);
|
|
22343
22522
|
}
|
|
22344
22523
|
}
|
|
22345
22524
|
async fileDownload(input) {
|
|
@@ -22351,7 +22530,7 @@ let AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22351
22530
|
return result.Body;
|
|
22352
22531
|
}
|
|
22353
22532
|
catch (e) {
|
|
22354
|
-
throw new
|
|
22533
|
+
throw new AwsS3BucketError(`AWS BUCKET | downloadFile | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22355
22534
|
}
|
|
22356
22535
|
}
|
|
22357
22536
|
async filePublicUrlCreate(input) {
|
|
@@ -22364,7 +22543,7 @@ let AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22364
22543
|
});
|
|
22365
22544
|
}
|
|
22366
22545
|
catch (e) {
|
|
22367
|
-
throw new
|
|
22546
|
+
throw new AwsS3BucketError(`AwsS3Bucket | filePublicUrlCreate | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22368
22547
|
}
|
|
22369
22548
|
}
|
|
22370
22549
|
async fileUpload(input) {
|
|
@@ -22377,7 +22556,7 @@ let AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22377
22556
|
}));
|
|
22378
22557
|
}
|
|
22379
22558
|
catch (e) {
|
|
22380
|
-
throw new
|
|
22559
|
+
throw new AwsS3BucketError(`AwsS3Bucket | fileUpload | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22381
22560
|
}
|
|
22382
22561
|
}
|
|
22383
22562
|
async fileDelete(input) {
|
|
@@ -22388,7 +22567,7 @@ let AwsS3BucketProvider = class AwsS3BucketProvider {
|
|
|
22388
22567
|
}));
|
|
22389
22568
|
}
|
|
22390
22569
|
catch (e) {
|
|
22391
|
-
throw new
|
|
22570
|
+
throw new AwsS3BucketError(`AwsS3Bucket | fileDelete | ${input.bucket} | ${input.filePath} | Error -> ${e.message}`);
|
|
22392
22571
|
}
|
|
22393
22572
|
}
|
|
22394
22573
|
};
|
|
@@ -22397,9 +22576,70 @@ AwsS3BucketProvider = __decorate([
|
|
|
22397
22576
|
__metadata("design:paramtypes", [])
|
|
22398
22577
|
], AwsS3BucketProvider);
|
|
22399
22578
|
|
|
22579
|
+
const WpFileProvider = (providerId) => applyDecorators(Injectable(), SetMetadata(EntityManagerSymbols.FileProvider, {
|
|
22580
|
+
providerId,
|
|
22581
|
+
}));
|
|
22582
|
+
|
|
22583
|
+
const createDayPath = (d) => `${d.getFullYear()}/${(d.getMonth() + 1).toString().padStart(2, "0")}/${d
|
|
22584
|
+
.getDate()
|
|
22585
|
+
.toString()
|
|
22586
|
+
.padStart(2, "0")}`;
|
|
22587
|
+
let AwsS3FileProvider = class AwsS3FileProvider {
|
|
22588
|
+
constructor(bucket) {
|
|
22589
|
+
this.bucket = bucket;
|
|
22590
|
+
}
|
|
22591
|
+
getProviderId() {
|
|
22592
|
+
return "awsS3";
|
|
22593
|
+
}
|
|
22594
|
+
async uploadFile(file) {
|
|
22595
|
+
const path = this.getBucketFileUploadPath(file.fileName, new Date());
|
|
22596
|
+
await this.bucket.fileUpload({
|
|
22597
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22598
|
+
filePath: path,
|
|
22599
|
+
content: file.content,
|
|
22600
|
+
contentType: file.contentType,
|
|
22601
|
+
});
|
|
22602
|
+
return {
|
|
22603
|
+
reference: path,
|
|
22604
|
+
};
|
|
22605
|
+
}
|
|
22606
|
+
async deleteFile(reference) {
|
|
22607
|
+
await this.bucket.fileDelete({
|
|
22608
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22609
|
+
filePath: reference.reference,
|
|
22610
|
+
});
|
|
22611
|
+
}
|
|
22612
|
+
async downloadFile(reference) {
|
|
22613
|
+
const content = await this.bucket.fileDownload({
|
|
22614
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22615
|
+
filePath: reference.reference,
|
|
22616
|
+
});
|
|
22617
|
+
return {
|
|
22618
|
+
content,
|
|
22619
|
+
};
|
|
22620
|
+
}
|
|
22621
|
+
async getFileProviderDownloadUrl(reference) {
|
|
22622
|
+
const url = await this.bucket.filePublicUrlCreate({
|
|
22623
|
+
bucket: awsBucketSettings.value.defaultBucket,
|
|
22624
|
+
expirationMinutes: awsBucketSettings.value.publicLinksExpirationMinutes,
|
|
22625
|
+
filePath: reference.reference,
|
|
22626
|
+
});
|
|
22627
|
+
return {
|
|
22628
|
+
downloadUrl: url,
|
|
22629
|
+
};
|
|
22630
|
+
}
|
|
22631
|
+
getBucketFileUploadPath(fileName, date) {
|
|
22632
|
+
return `${ensureTailingSlash(awsBucketSettings.value.paths.filesUpload)}${createDayPath(date)}${ensureStartSlash(newUuid$1())}_${fileName}`;
|
|
22633
|
+
}
|
|
22634
|
+
};
|
|
22635
|
+
AwsS3FileProvider = __decorate([
|
|
22636
|
+
WpFileProvider("awsS3"),
|
|
22637
|
+
__metadata("design:paramtypes", [AwsS3BucketProvider])
|
|
22638
|
+
], AwsS3FileProvider);
|
|
22639
|
+
|
|
22400
22640
|
var AwsBucketModule_1;
|
|
22401
22641
|
const ModuleData$2 = {
|
|
22402
|
-
providers: [AwsS3BucketProvider],
|
|
22642
|
+
providers: [AwsS3BucketProvider, AwsS3FileProvider],
|
|
22403
22643
|
};
|
|
22404
22644
|
let AwsBucketModule = AwsBucketModule_1 = class AwsBucketModule {
|
|
22405
22645
|
static forRoot(input) {
|
|
@@ -22416,6 +22656,54 @@ AwsBucketModule = AwsBucketModule_1 = __decorate([
|
|
|
22416
22656
|
})
|
|
22417
22657
|
], AwsBucketModule);
|
|
22418
22658
|
|
|
22659
|
+
let InMemoryFileProvider = class InMemoryFileProvider {
|
|
22660
|
+
constructor() {
|
|
22661
|
+
this.provider = new InMemoryBucketProvider();
|
|
22662
|
+
}
|
|
22663
|
+
getProviderId() {
|
|
22664
|
+
return "inMemory";
|
|
22665
|
+
}
|
|
22666
|
+
async uploadFile(file) {
|
|
22667
|
+
const filePath = `${newUuid$1()}/${file.fileName}`;
|
|
22668
|
+
await this.provider.fileUpload({
|
|
22669
|
+
bucket: "test",
|
|
22670
|
+
content: file.content,
|
|
22671
|
+
contentType: file.contentType,
|
|
22672
|
+
filePath,
|
|
22673
|
+
});
|
|
22674
|
+
return {
|
|
22675
|
+
reference: filePath,
|
|
22676
|
+
};
|
|
22677
|
+
}
|
|
22678
|
+
async deleteFile(reference) {
|
|
22679
|
+
await this.provider.fileDelete({
|
|
22680
|
+
bucket: "test",
|
|
22681
|
+
filePath: reference.reference,
|
|
22682
|
+
});
|
|
22683
|
+
}
|
|
22684
|
+
async downloadFile(reference) {
|
|
22685
|
+
const content = await this.provider.fileDownload({
|
|
22686
|
+
bucket: "test",
|
|
22687
|
+
filePath: reference.reference,
|
|
22688
|
+
});
|
|
22689
|
+
return {
|
|
22690
|
+
content,
|
|
22691
|
+
};
|
|
22692
|
+
}
|
|
22693
|
+
async getFileProviderDownloadUrl(reference) {
|
|
22694
|
+
return {
|
|
22695
|
+
downloadUrl: await this.provider.filePublicUrlCreate({
|
|
22696
|
+
bucket: "test",
|
|
22697
|
+
filePath: reference.reference,
|
|
22698
|
+
expirationMinutes: 60,
|
|
22699
|
+
}),
|
|
22700
|
+
};
|
|
22701
|
+
}
|
|
22702
|
+
};
|
|
22703
|
+
InMemoryFileProvider = __decorate([
|
|
22704
|
+
WpFileProvider("inMemory"),
|
|
22705
|
+
__metadata("design:paramtypes", [])
|
|
22706
|
+
], InMemoryFileProvider);
|
|
22419
22707
|
let InMemoryBucketProvider = class InMemoryBucketProvider {
|
|
22420
22708
|
constructor() {
|
|
22421
22709
|
this.inMemoryStorage = {};
|
|
@@ -22477,7 +22765,7 @@ let InMemoryBucketProvider = class InMemoryBucketProvider {
|
|
|
22477
22765
|
}
|
|
22478
22766
|
};
|
|
22479
22767
|
InMemoryBucketProvider = __decorate([
|
|
22480
|
-
WpBucketProvider("
|
|
22768
|
+
WpBucketProvider("inMemory")
|
|
22481
22769
|
], InMemoryBucketProvider);
|
|
22482
22770
|
|
|
22483
22771
|
const AwsSesModuleSymbols = {
|
|
@@ -27719,5 +28007,5 @@ InMemoryEmailProvider = __decorate([
|
|
|
27719
28007
|
WpEmailProvider("in-memory")
|
|
27720
28008
|
], InMemoryEmailProvider);
|
|
27721
28009
|
|
|
27722
|
-
export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS2BucketError, AwsS3BucketProvider, AwsSesEmailTemplate, BooleanFacet, BooleanFacetItem, BucketItemType, CurrentUser, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntityVersionOperation, EventsService, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InvalidCredentialsError, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, NumericFacet, NumericFacetItem, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PipelineController, PipelineErrorType, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, StringFacet, StringFacetItem, TrackingService, UserCreationError, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntityVersioningProvider, WpEventsTracker, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildRolesGuard, createContainer, createExpressFileResponse, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
|
|
28010
|
+
export { AUTHENTICATION_EVENTS_NAMESPACE, AppExceptionsFilterBase, AppHashingService, AppInMemorySettings, AppSessionMiddleware, AppSessionService, AuthGuard, Authenticated, AuthenticationEmailTemplates, AuthenticationError, AuthenticationEvents, AuthenticationExtensionSymbols, AuthenticationModule, AuthenticationService, AwsBucketModule, AwsEmailModule, AwsS3BucketError as AwsS2BucketError, AwsS3BucketProvider, AwsSesEmailTemplate, BooleanFacet, BooleanFacetItem, BucketItemType, CurrentUser, EmailService, EntityManagerConfigurationError, EntityManagerException, EntityManagerInitializer, EntityManagerModule, EntityManagerRegistry, EntityManagerService, EntityManagerSymbols, EntityManagerUnauthorizedException, EntityNotFoundException, EntityOperationType, EntityOperationUnauthorizedException, EntitySeeder, EntitySerializationFormat, EntitySerializer, EntityVersionOperation, EventsService, FilesService, IEntityVersionsCursor, InMemoryBucketProvider, InMemoryEmailProvider, InvalidCredentialsError, MemberOf, MissingEntityIdError, ModulesContainerProvider, MultiTenancyModule, MultipleEntitiesFoundException, NestEntityActions, NestEntityAuthorizationMiddleware, NestEntityManager, NestEntitySerializer, NestPipelineTemplate, NestTypeOrmEntitySeeder, NestTypeOrmQueryBuilder, NestTypeOrmRepository, NumericFacet, NumericFacetItem, OperationTokenMismatchError, PLATFORM_EVENT_NAMESPACE, PipelineController, PipelineErrorType, PipelineStatus, PipelineStepErrorType, PipelinesBuilder, PipelinesRunner, PlatformEvents, Public, QueryBuilderBase, ReplicationMode, Roles, SendgridEmailModule, SendgridEmailTemplate, SortDirection, StringFacet, StringFacetItem, TrackingService, UserCreationError, UserRegistrationError, WpAppInitializer, WpAwsSesEmailTemplate, WpBucketProvider, WpEmailTemplate, WpEntity, WpEntityActions, WpEntityAdapter, WpEntityAuthMiddleware, WpEntityConnector, WpEntityConverter, WpEntityManager, WpEntityQueryBuilder, WpEntityRepository, WpEntitySeeder, WpEntitySerializer, WpEntityVersioningProvider, WpEventsTracker, WpPipeline, WpRolesService, WpSendgridEmailTemplate, WpUserRolesService, WpUserService, buildRolesGuard, createContainer, createExpressFileResponse, getLocalizedText, newUuid, renderHandlebarsTemplate, toEntitiesImportInput };
|
|
27723
28011
|
//# sourceMappingURL=index.js.map
|