@punks/backend-entity-manager 0.0.340 → 0.0.341

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.
@@ -1,3 +1,6 @@
1
+ export interface IEmailTemplateMiddleware {
2
+ processPayload(payload: unknown): Promise<unknown>;
3
+ }
1
4
  export interface IEmailTemplate<TTemplateData, TPayload, TAugmentedPayload = TPayload> {
2
5
  processPayload(payload: TPayload): Promise<TAugmentedPayload>;
3
6
  getTemplateData(payload: TAugmentedPayload): Promise<TTemplateData>;
@@ -9,3 +9,6 @@ export declare const WpEmailProvider: (providerId: string) => <TFunction extends
9
9
  export interface EmailLoggerProps {
10
10
  }
11
11
  export declare const WpEmailLogger: () => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
12
+ export interface EmailTemplateMiddlewareProps {
13
+ }
14
+ export declare const WpEmailTemplateMiddleware: () => <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol | undefined, descriptor?: TypedPropertyDescriptor<Y> | undefined) => void;
@@ -19,6 +19,7 @@ export declare const EntityManagerSymbols: {
19
19
  EmailProvider: symbol;
20
20
  EmailTemplate: symbol;
21
21
  EmailLogger: symbol;
22
+ EmailTemplateMiddleware: symbol;
22
23
  BucketProvider: symbol;
23
24
  MediaProvider: symbol;
24
25
  MediaReferenceRepository: symbol;
@@ -31,6 +31,7 @@ export declare class EntityManagerInitializer {
31
31
  private registerFilesReferenceRepositoryProviders;
32
32
  private registerEventTrackingProviders;
33
33
  private registerEmailLogger;
34
+ private registerEmailTemplateMiddleware;
34
35
  private registerVersioningProviders;
35
36
  private registerEmailProviders;
36
37
  private registerEmailTemplates;
@@ -55,6 +56,7 @@ export declare class EntityManagerInitializer {
55
56
  private discoverEmailProviders;
56
57
  private discoverEventTrackingProviders;
57
58
  private discoverEmailLogger;
59
+ private discoverEmailTemplateMiddleware;
58
60
  private discoverOperationLockService;
59
61
  private discoverBucketProviders;
60
62
  private discoverSecretsProviders;
@@ -6,6 +6,7 @@ export declare class EmailService {
6
6
  sendTemplatedEmail<TPayload>(input: TemplatedEmailInput<TPayload>): Promise<void>;
7
7
  sendHtmlEmail<TPayload>(input: HtmlEmailInput<TPayload>): Promise<void>;
8
8
  private getTemplate;
9
+ private get templateMiddleware();
9
10
  private get templates();
10
11
  private get provider();
11
12
  private get logger();
@@ -1,4 +1,4 @@
1
- import { IAuthenticationContext, IAuthenticationContextProvider, IAuthenticationMiddleware, IBucketProvider, ICacheInstance, IEmailLogger, IEmailProvider, IEmailTemplatesCollection, IEntityFacets, IEntitySerializer, IEntitySnapshotService, IEntityVersioningProvider, IEventLog, IEventsTracker, IFileProvider, IFilesReferenceRepository, IMediaFolderRepository, IMediaProvider, IMediaReferenceRepository, IOperationLockService, ISecretsProvider } from "../abstractions";
1
+ import { IAuthenticationContext, IAuthenticationContextProvider, IAuthenticationMiddleware, IBucketProvider, ICacheInstance, IEmailLogger, IEmailProvider, IEmailTemplateMiddleware, IEmailTemplatesCollection, IEntityFacets, IEntitySerializer, IEntitySnapshotService, IEntityVersioningProvider, IEventLog, IEventsTracker, IFileProvider, IFilesReferenceRepository, IMediaFolderRepository, IMediaProvider, IMediaReferenceRepository, IOperationLockService, ISecretsProvider } from "../abstractions";
2
2
  import { IEntitiesCountAction, IEntitiesDeleteAction, IEntitiesExportAction, IEntitiesImportAction, IEntitiesSampleDownloadAction, IEntitiesSearchAction, IEntityActions, IEntityCreateAction, IEntityDeleteAction, IEntityExistsAction, IEntityGetAction, IEntityUpdateAction, IEntityUpsertAction, IEntityVersionsSearchAction } from "../abstractions/actions";
3
3
  import { IEntityAdapter } from "../abstractions/adapters";
4
4
  import { IEntityAuthorizationMiddleware } from "../abstractions/authorization";
@@ -110,6 +110,8 @@ export declare class EntitiesServiceLocator {
110
110
  registerOperationLockService(instance: IOperationLockService): void;
111
111
  resolveEmailTemplatesCollection(): IEmailTemplatesCollection;
112
112
  registerEmailTemplatesCollection(instance: IEmailTemplatesCollection): void;
113
+ resolveEmailTemplateMiddleware(): IEmailTemplateMiddleware | undefined;
114
+ registerEmailTemplateMiddleware(instance: IEmailTemplateMiddleware): void;
113
115
  resolveEmailLogger(): IEmailLogger;
114
116
  registerEmailLogger(instance: IEmailLogger): void;
115
117
  resolvePipelinesController(): IPipelinesController;
@@ -92,6 +92,7 @@ export declare const GlobalServices: {
92
92
  ICacheInstance: string;
93
93
  IEmailProvider: string;
94
94
  IEmailLogger: string;
95
+ IEmailTemplateMiddleware: string;
95
96
  IEmailTemplatesCollection: string;
96
97
  IBucketProvider: string;
97
98
  ISecretsProvider: string;
package/dist/esm/index.js CHANGED
@@ -1328,6 +1328,7 @@ const GlobalServices = {
1328
1328
  ICacheInstance: "ICacheInstance",
1329
1329
  IEmailProvider: "IEmailProvider",
1330
1330
  IEmailLogger: "IEmailLogger",
1331
+ IEmailTemplateMiddleware: "IEmailTemplateMiddleware",
1331
1332
  IEmailTemplatesCollection: "IEmailTemplatesCollection",
1332
1333
  IBucketProvider: "IBucketProvider",
1333
1334
  ISecretsProvider: "ISecretsProvider",
@@ -1629,6 +1630,14 @@ class EntitiesServiceLocator {
1629
1630
  registerEmailTemplatesCollection(instance) {
1630
1631
  this.provider.register(GlobalServices.Plugins.IEmailTemplatesCollection, instance);
1631
1632
  }
1633
+ resolveEmailTemplateMiddleware() {
1634
+ return this.provider.resolve(GlobalServices.Plugins.IEmailTemplateMiddleware, {
1635
+ optional: true,
1636
+ });
1637
+ }
1638
+ registerEmailTemplateMiddleware(instance) {
1639
+ this.provider.register(GlobalServices.Plugins.IEmailTemplateMiddleware, instance);
1640
+ }
1632
1641
  resolveEmailLogger() {
1633
1642
  return this.provider.resolve(GlobalServices.Plugins.IEmailLogger);
1634
1643
  }
@@ -3967,6 +3976,7 @@ const EntityManagerSymbols = {
3967
3976
  EmailProvider: Symbol.for("WP:EMAIL_PROVIDER"),
3968
3977
  EmailTemplate: Symbol.for("WP:EMAIL_TEMPLATE"),
3969
3978
  EmailLogger: Symbol.for("WP:EMAIL_LOGGER"),
3979
+ EmailTemplateMiddleware: Symbol.for("WP:EMAIL_TEMPLATE_MIDDLEWARE"),
3970
3980
  BucketProvider: Symbol.for("WP:BUCKET_PROVIDER"),
3971
3981
  MediaProvider: Symbol.for("WP:MEDIA_PROVIDER"),
3972
3982
  MediaReferenceRepository: Symbol.for("WP:MEDIA_REFERENCE_REPOSITORY"),
@@ -22409,8 +22419,13 @@ let EmailService = class EmailService {
22409
22419
  }
22410
22420
  async sendTemplatedEmail(input) {
22411
22421
  const template = this.getTemplate(input.templateId);
22412
- await this.provider.sendTemplatedEmail(input, template);
22413
- await this.logger.logTemplatedEmail(input);
22422
+ const transformedPayload = this.templateMiddleware?.processPayload(input.payload) ?? input.payload;
22423
+ const sendInput = {
22424
+ ...input,
22425
+ payload: transformedPayload,
22426
+ };
22427
+ await this.provider.sendTemplatedEmail(sendInput, template);
22428
+ await this.logger.logTemplatedEmail(sendInput);
22414
22429
  }
22415
22430
  async sendHtmlEmail(input) {
22416
22431
  await this.provider.sendHtmlEmail(input);
@@ -22423,6 +22438,12 @@ let EmailService = class EmailService {
22423
22438
  }
22424
22439
  return template;
22425
22440
  }
22441
+ get templateMiddleware() {
22442
+ return this.registry
22443
+ .getContainer()
22444
+ .getEntitiesServicesLocator()
22445
+ .resolveEmailTemplateMiddleware();
22446
+ }
22426
22447
  get templates() {
22427
22448
  return this.registry
22428
22449
  .getContainer()
@@ -23489,6 +23510,7 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
23489
23510
  await this.registerEventTrackingProviders();
23490
23511
  await this.registerVersioningProviders();
23491
23512
  await this.registerEmailLogger();
23513
+ await this.registerEmailTemplateMiddleware();
23492
23514
  await this.registerFilesReferenceRepositoryProviders();
23493
23515
  await this.registerFileProviders();
23494
23516
  await this.registerMediaProviders();
@@ -23738,6 +23760,17 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
23738
23760
  .registerEmailLogger(loggers[0].discoveredClass.instance);
23739
23761
  this.logger.log(`Email logger ${loggers[0].discoveredClass.name} registered 🚜`);
23740
23762
  }
23763
+ async registerEmailTemplateMiddleware() {
23764
+ const loggers = await this.discoverEmailTemplateMiddleware();
23765
+ if (!loggers.length) {
23766
+ return;
23767
+ }
23768
+ this.registry
23769
+ .getContainer()
23770
+ .getEntitiesServicesLocator()
23771
+ .registerEmailTemplateMiddleware(loggers[0].discoveredClass.instance);
23772
+ this.logger.log(`Email template middleware ${loggers[0].discoveredClass.name} registered 🚜`);
23773
+ }
23741
23774
  async registerVersioningProviders() {
23742
23775
  const providers = await this.discoverVersioningProviders();
23743
23776
  if (!providers.length) {
@@ -23853,6 +23886,9 @@ let EntityManagerInitializer = EntityManagerInitializer_1 = class EntityManagerI
23853
23886
  async discoverEmailLogger() {
23854
23887
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailLogger);
23855
23888
  }
23889
+ async discoverEmailTemplateMiddleware() {
23890
+ return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.EmailTemplateMiddleware);
23891
+ }
23856
23892
  async discoverOperationLockService() {
23857
23893
  return await this.discover.providersWithMetaAtKey(EntityManagerSymbols.OperationLockService);
23858
23894
  }