@punks/backend-entity-manager 0.0.140 → 0.0.142

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 (34) hide show
  1. package/dist/cjs/index.js +83 -46
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/commands.d.ts +9 -0
  4. package/dist/cjs/types/abstractions/email.d.ts +4 -0
  5. package/dist/cjs/types/abstractions/index.d.ts +1 -1
  6. package/dist/cjs/types/abstractions/manager.d.ts +2 -1
  7. package/dist/cjs/types/commands/version.d.ts +7 -0
  8. package/dist/cjs/types/concrete/index.d.ts +2 -1
  9. package/dist/cjs/types/platforms/nest/__test__/server/entities/foos/foo.snapshot.d.ts +2 -2
  10. package/dist/cjs/types/platforms/nest/decorators/email.d.ts +4 -0
  11. package/dist/cjs/types/platforms/nest/decorators/index.d.ts +1 -1
  12. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +1 -0
  13. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  14. package/dist/cjs/types/platforms/nest/services/email/index.d.ts +1 -0
  15. package/dist/cjs/types/providers/services.d.ts +7 -2
  16. package/dist/cjs/types/symbols/ioc.d.ts +2 -0
  17. package/dist/esm/index.js +82 -47
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/types/abstractions/commands.d.ts +9 -0
  20. package/dist/esm/types/abstractions/email.d.ts +4 -0
  21. package/dist/esm/types/abstractions/index.d.ts +1 -1
  22. package/dist/esm/types/abstractions/manager.d.ts +2 -1
  23. package/dist/esm/types/commands/version.d.ts +7 -0
  24. package/dist/esm/types/concrete/index.d.ts +2 -1
  25. package/dist/esm/types/platforms/nest/__test__/server/entities/foos/foo.snapshot.d.ts +2 -2
  26. package/dist/esm/types/platforms/nest/decorators/email.d.ts +4 -0
  27. package/dist/esm/types/platforms/nest/decorators/index.d.ts +1 -1
  28. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +1 -0
  29. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +2 -0
  30. package/dist/esm/types/platforms/nest/services/email/index.d.ts +1 -0
  31. package/dist/esm/types/providers/services.d.ts +7 -2
  32. package/dist/esm/types/symbols/ioc.d.ts +2 -0
  33. package/dist/index.d.ts +58 -28
  34. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -528,16 +528,10 @@ class EntityCreateCommand {
528
528
  if (!versioning) {
529
529
  return;
530
530
  }
531
- const contextService = this.services.resolveAuthenticationContextProvider();
532
- const context = await contextService?.getContext();
533
- const snapshotService = this.services.resolveSnapshotService();
534
- const snapshot = (await snapshotService?.getSnapshot(id)) ?? entity;
535
- await versioning.createVersion({
536
- operationType: exports.EntityVersionOperation.Create,
537
- entityId: id,
538
- entityType: this.services.getEntityName(),
539
- data: snapshot,
540
- modifiedByUserId: context?.userId,
531
+ await this.services.resolveVersionCommand().execute({
532
+ id,
533
+ entity,
534
+ operation: exports.EntityVersionOperation.Create,
541
535
  });
542
536
  }
543
537
  isVersioningEnabled() {
@@ -580,20 +574,9 @@ class EntityDeleteCommand {
580
574
  if (!this.isVersioningEnabled()) {
581
575
  return;
582
576
  }
583
- const versioning = this.services.resolveVersioningProvider();
584
- if (!versioning) {
585
- return;
586
- }
587
- const contextService = this.services.resolveAuthenticationContextProvider();
588
- const context = await contextService?.getContext();
589
- const snapshotService = this.services.resolveSnapshotService();
590
- const snapshot = await snapshotService?.getSnapshot(id);
591
- await versioning.createVersion({
592
- operationType: exports.EntityVersionOperation.Delete,
593
- entityId: id,
594
- entityType: this.services.getEntityName(),
595
- data: snapshot,
596
- modifiedByUserId: context?.userId,
577
+ await this.services.resolveVersionCommand().execute({
578
+ id,
579
+ operation: exports.EntityVersionOperation.Delete,
597
580
  });
598
581
  }
599
582
  isVersioningEnabled() {
@@ -826,20 +809,10 @@ class EntityUpdateCommand {
826
809
  if (!this.isVersioningEnabled()) {
827
810
  return;
828
811
  }
829
- const versioning = this.services.resolveVersioningProvider();
830
- if (!versioning) {
831
- return;
832
- }
833
- const contextService = this.services.resolveAuthenticationContextProvider();
834
- const context = await contextService?.getContext();
835
- const snapshotService = this.services.resolveSnapshotService();
836
- const snapshot = (await snapshotService?.getSnapshot(id)) ?? entity;
837
- await versioning.createVersion({
838
- operationType: exports.EntityVersionOperation.Update,
839
- entityId: id,
840
- entityType: this.services.getEntityName(),
841
- data: snapshot,
842
- modifiedByUserId: context?.userId,
812
+ await this.services.resolveVersionCommand().execute({
813
+ id,
814
+ entity,
815
+ operation: exports.EntityVersionOperation.Update,
843
816
  });
844
817
  }
845
818
  isVersioningEnabled() {
@@ -895,25 +868,38 @@ class EntityUpsertCommand {
895
868
  if (!this.isVersioningEnabled()) {
896
869
  return;
897
870
  }
898
- const versioning = this.services.resolveVersioningProvider();
899
- if (!versioning) {
900
- return;
871
+ await this.services.resolveVersionCommand().execute({
872
+ id,
873
+ entity,
874
+ operation: exports.EntityVersionOperation.Upsert,
875
+ });
876
+ }
877
+ isVersioningEnabled() {
878
+ return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
879
+ }
880
+ }
881
+
882
+ class EntityVersionCommand {
883
+ constructor(services) {
884
+ this.services = services;
885
+ }
886
+ async execute({ id, operation, entity, }) {
887
+ const versioningProvider = this.services.resolveVersioningProvider();
888
+ if (!versioningProvider) {
889
+ throw new Error("Versioning provider is not configured");
901
890
  }
902
891
  const contextService = this.services.resolveAuthenticationContextProvider();
903
892
  const context = await contextService?.getContext();
904
893
  const snapshotService = this.services.resolveSnapshotService();
905
894
  const snapshot = (await snapshotService?.getSnapshot(id)) ?? entity;
906
- await versioning.createVersion({
907
- operationType: exports.EntityVersionOperation.Upsert,
895
+ await versioningProvider.createVersion({
896
+ operationType: operation,
908
897
  entityId: id,
909
898
  entityType: this.services.getEntityName(),
910
899
  data: snapshot,
911
900
  modifiedByUserId: context?.userId,
912
901
  });
913
902
  }
914
- isVersioningEnabled() {
915
- return (this.services.resolveEntityConfiguration().versioning?.enabled ?? false);
916
- }
917
903
  }
918
904
 
919
905
  class EntityManager {
@@ -938,6 +924,9 @@ class EntityManager {
938
924
  get find() {
939
925
  return this.services.resolveFindQuery();
940
926
  }
927
+ get version() {
928
+ return this.services.resolveVersionCommand();
929
+ }
941
930
  get create() {
942
931
  return this.services.resolveCreateCommand();
943
932
  }
@@ -1100,6 +1089,7 @@ const EntityServices = {
1100
1089
  IEntityUpsertCommand: "IEntityUpsertCommand",
1101
1090
  IEntityMergeCommand: "IEntityMergeCommand",
1102
1091
  IEntityDeleteCommand: "IEntityDeleteCommand",
1092
+ IEntityVersionCommand: "IEntityVersionCommand",
1103
1093
  IEntitiesDeleteCommand: "IEntitiesDeleteCommand",
1104
1094
  IEntitiesExportCommand: "IEntitiesExportCommand",
1105
1095
  IEntitiesImportCommand: "IEntitiesImportCommand",
@@ -1160,6 +1150,7 @@ const GlobalServices = {
1160
1150
  },
1161
1151
  Plugins: {
1162
1152
  IEmailProvider: "IEmailProvider",
1153
+ IEmailLogger: "IEmailLogger",
1163
1154
  IEmailTemplatesCollection: "IEmailTemplatesCollection",
1164
1155
  IBucketProvider: "IBucketProvider",
1165
1156
  IFileProvider: "IFileProvider",
@@ -1267,6 +1258,9 @@ class EntityServiceLocator {
1267
1258
  resolveDeleteItemsCommand() {
1268
1259
  return this.services.resolveDeleteItemsCommand(this.entityName);
1269
1260
  }
1261
+ resolveVersionCommand() {
1262
+ return this.services.resolveVersionCommand(this.entityName);
1263
+ }
1270
1264
  resolveSampleDownloadCommand() {
1271
1265
  return this.services.resolveSampleDownloadCommand(this.entityName);
1272
1266
  }
@@ -1396,6 +1390,12 @@ class EntitiesServiceLocator {
1396
1390
  registerEmailTemplatesCollection(instance) {
1397
1391
  this.provider.register(GlobalServices.Plugins.IEmailTemplatesCollection, instance);
1398
1392
  }
1393
+ resolveEmailLogger() {
1394
+ return this.provider.resolve(GlobalServices.Plugins.IEmailLogger);
1395
+ }
1396
+ registerEmailLogger(instance) {
1397
+ this.provider.register(GlobalServices.Plugins.IEmailLogger, instance);
1398
+ }
1399
1399
  resolvePipelinesController() {
1400
1400
  return this.provider.resolve(GlobalServices.Pipelines.IPipelineController);
1401
1401
  }
@@ -1580,6 +1580,12 @@ class EntitiesServiceLocator {
1580
1580
  registerDeleteCommand(entityName, instance) {
1581
1581
  this.provider.registerEntityService(EntityServices.Commands.IEntityDeleteCommand, entityName, instance);
1582
1582
  }
1583
+ resolveVersionCommand(entityName) {
1584
+ return this.provider.resolveEntityService(EntityServices.Commands.IEntityVersionCommand, entityName);
1585
+ }
1586
+ registerVersionCommand(entityName, instance) {
1587
+ this.provider.registerEntityService(EntityServices.Commands.IEntityVersionCommand, entityName, instance);
1588
+ }
1583
1589
  resolveExportCommand(entityName) {
1584
1590
  return this.provider.resolveEntityService(EntityServices.Commands.IEntitiesExportCommand, entityName);
1585
1591
  }
@@ -2206,6 +2212,7 @@ class EntityManagerServiceCollection {
2206
2212
  return this;
2207
2213
  }
2208
2214
  mapImportExport(settings) {
2215
+ this.locator.registerVersionCommand(this.entityName, new EntityVersionCommand(this.resolver));
2209
2216
  this.locator.registerExportCommand(this.entityName, new EntitiesExportCommand(this.resolver, settings));
2210
2217
  this.locator.registerExportAction(this.entityName, new EntitiesExportAction(this.resolver));
2211
2218
  this.locator.registerImportCommand(this.entityName, new EntitiesImportCommand(this.resolver, settings));
@@ -2347,6 +2354,7 @@ const EntityManagerSymbols = {
2347
2354
  EntityVersioningProvider: Symbol.for("WP:ENTITY_VERSIONING_PROVIDER"),
2348
2355
  EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
2349
2356
  EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
2357
+ EmailLogger: Symbol.for("WP:EMAIL_LOGGER"),
2350
2358
  BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
2351
2359
  FileProvider: Symbol.for("WP:FILE_PROVIDER"),
2352
2360
  FileReferenceRepository: Symbol.for("WP:FILE_REFERENCE_REPO"),
@@ -2388,6 +2396,9 @@ const WpEmailTemplate = (templateId) => common.applyDecorators(common.Injectable
2388
2396
  const WpEmailProvider = (providerId) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EmailProvider, {
2389
2397
  providerId,
2390
2398
  }));
2399
+ const WpEmailLogger = (providerId) => common.applyDecorators(common.Injectable(), common.SetMetadata(EntityManagerSymbols.EmailLogger, {
2400
+ providerId,
2401
+ }));
2391
2402
 
2392
2403
  const WpEntity = (name, props = {}) => common.applyDecorators(common.SetMetadata(EntityManagerSymbols.Entity, {
2393
2404
  name,
@@ -20291,9 +20302,11 @@ exports.EmailService = class EmailService {
20291
20302
  async sendTemplatedEmail(input) {
20292
20303
  const template = this.getTemplate(input.templateId);
20293
20304
  await this.provider.sendTemplatedEmail(input, template);
20305
+ await this.logger.logTemplatedEmail(input);
20294
20306
  }
20295
20307
  async sendHtmlEmail(input) {
20296
20308
  await this.provider.sendHtmlEmail(input);
20309
+ await this.logger.logHtmlEmail(input);
20297
20310
  }
20298
20311
  getTemplate(templateId) {
20299
20312
  const template = this.templates.getTemplate(templateId);
@@ -20314,6 +20327,12 @@ exports.EmailService = class EmailService {
20314
20327
  .getEntitiesServicesLocator()
20315
20328
  .resolveEmailProvider();
20316
20329
  }
20330
+ get logger() {
20331
+ return this.registry
20332
+ .getContainer()
20333
+ .getEntitiesServicesLocator()
20334
+ .resolveEmailLogger();
20335
+ }
20317
20336
  };
20318
20337
  exports.EmailService = __decorate([
20319
20338
  common.Injectable(),
@@ -21432,6 +21451,7 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
21432
21451
  await this.registerEmailProviders();
21433
21452
  await this.registerEventTrackingProviders();
21434
21453
  await this.registerVersioningProviders();
21454
+ await this.registerEmailLogger();
21435
21455
  await this.registerFilesReferenceRepositoryProviders();
21436
21456
  await this.registerFileProviders();
21437
21457
  await this.registerBucketProviders();
@@ -21577,6 +21597,18 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
21577
21597
  .registerEventsTracker(providers[0].discoveredClass.instance);
21578
21598
  this.logger.log(`Events tracker ${providers[0].discoveredClass.name} registered 🚜`);
21579
21599
  }
21600
+ async registerEmailLogger() {
21601
+ const loggers = await this.discoverEmailLogger();
21602
+ if (!loggers.length) {
21603
+ this.logger.warn("No email loggers ⚠️");
21604
+ return;
21605
+ }
21606
+ this.registry
21607
+ .getContainer()
21608
+ .getEntitiesServicesLocator()
21609
+ .registerEmailLogger(loggers[0].discoveredClass.instance);
21610
+ this.logger.log(`Email logger ${loggers[0].discoveredClass.name} registered 🚜`);
21611
+ }
21580
21612
  async registerVersioningProviders() {
21581
21613
  const providers = await this.discoverVersioningProviders();
21582
21614
  if (!providers.length) {
@@ -21668,6 +21700,9 @@ exports.EntityManagerInitializer = EntityManagerInitializer_1 = class EntityMana
21668
21700
  async discoverEventTrackingProviders() {
21669
21701
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EventsTracker);
21670
21702
  }
21703
+ async discoverEmailLogger() {
21704
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailLogger);
21705
+ }
21671
21706
  async discoverBucketProviders() {
21672
21707
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.BucketProvider);
21673
21708
  }
@@ -28219,6 +28254,8 @@ exports.StringFacetItem = StringFacetItem;
28219
28254
  exports.WpAppInitializer = WpAppInitializer;
28220
28255
  exports.WpAwsSesEmailTemplate = WpAwsSesEmailTemplate;
28221
28256
  exports.WpBucketProvider = WpBucketProvider;
28257
+ exports.WpEmailLogger = WpEmailLogger;
28258
+ exports.WpEmailProvider = WpEmailProvider;
28222
28259
  exports.WpEmailTemplate = WpEmailTemplate;
28223
28260
  exports.WpEntity = WpEntity;
28224
28261
  exports.WpEntityActions = WpEntityActions;