@webiny/api-mailer 6.0.0-rc.7 → 6.1.0-beta.0

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,16 +1,16 @@
1
1
  import { BaseError } from "@webiny/feature/api";
2
2
  import type { ZodError } from "zod";
3
3
  export declare class MailValidationError extends BaseError<{
4
- errors: ZodError["errors"];
4
+ errors: ZodError["issues"];
5
5
  }> {
6
6
  readonly code: "Mailer/SendMail/Validation";
7
- constructor(errors: ZodError["errors"]);
7
+ constructor(errors: ZodError["issues"]);
8
8
  }
9
9
  export declare class SettingsValidationError extends BaseError<{
10
- errors: ZodError["errors"];
10
+ errors: ZodError["issues"];
11
11
  }> {
12
12
  readonly code: "Mailer/Settings/Validation";
13
- constructor(errors: ZodError["errors"]);
13
+ constructor(errors: ZodError["issues"]);
14
14
  }
15
15
  export declare class SettingsNotAuthorized extends BaseError {
16
16
  readonly code: "Mailer/Settings/NotAuthorized";
@@ -1 +1 @@
1
- {"version":3,"names":["BaseError","MailValidationError","code","constructor","errors","message","data","SettingsValidationError","SettingsNotAuthorized","SettingsPersistenceError","error"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { ZodError } from \"zod\";\n\nexport class MailValidationError extends BaseError<{ errors: ZodError[\"errors\"] }> {\n override readonly code = \"Mailer/SendMail/Validation\" as const;\n\n constructor(errors: ZodError[\"errors\"]) {\n super({\n message: \"Email params are invalid.\",\n data: {\n errors\n }\n });\n }\n}\n\nexport class SettingsValidationError extends BaseError<{ errors: ZodError[\"errors\"] }> {\n override readonly code = \"Mailer/Settings/Validation\" as const;\n\n constructor(errors: ZodError[\"errors\"]) {\n super({\n message: \"Settings validation failed.\",\n data: {\n errors\n }\n });\n }\n}\n\nexport class SettingsNotAuthorized extends BaseError {\n override readonly code = \"Mailer/Settings/NotAuthorized\" as const;\n\n constructor() {\n super({ message: \"Not allowed to update the mailer settings.\" });\n }\n}\n\nexport class SettingsPersistenceError extends BaseError<{ error: Error }> {\n override readonly code = \"Mailer/Settings/Persistence\" as const;\n\n constructor(error: Error) {\n super({\n message: \"Failed to persist settings.\",\n data: {\n error\n }\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAqB;AAG/C,OAAO,MAAMC,mBAAmB,SAASD,SAAS,CAAiC;EAC7DE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAACC,MAA0B,EAAE;IACpC,KAAK,CAAC;MACFC,OAAO,EAAE,2BAA2B;MACpCC,IAAI,EAAE;QACFF;MACJ;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMG,uBAAuB,SAASP,SAAS,CAAiC;EACjEE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAACC,MAA0B,EAAE;IACpC,KAAK,CAAC;MACFC,OAAO,EAAE,6BAA6B;MACtCC,IAAI,EAAE;QACFF;MACJ;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMI,qBAAqB,SAASR,SAAS,CAAC;EAC/BE,IAAI,GAAG,+BAA+B;EAExDC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MAAEE,OAAO,EAAE;IAA6C,CAAC,CAAC;EACpE;AACJ;AAEA,OAAO,MAAMI,wBAAwB,SAAST,SAAS,CAAmB;EACpDE,IAAI,GAAG,6BAA6B;EAEtDC,WAAWA,CAACO,KAAY,EAAE;IACtB,KAAK,CAAC;MACFL,OAAO,EAAE,6BAA6B;MACtCC,IAAI,EAAE;QACFI;MACJ;IACJ,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["BaseError","MailValidationError","code","constructor","errors","message","data","SettingsValidationError","SettingsNotAuthorized","SettingsPersistenceError","error"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { ZodError } from \"zod\";\n\nexport class MailValidationError extends BaseError<{ errors: ZodError[\"issues\"] }> {\n override readonly code = \"Mailer/SendMail/Validation\" as const;\n\n constructor(errors: ZodError[\"issues\"]) {\n super({\n message: \"Email params are invalid.\",\n data: {\n errors\n }\n });\n }\n}\n\nexport class SettingsValidationError extends BaseError<{ errors: ZodError[\"issues\"] }> {\n override readonly code = \"Mailer/Settings/Validation\" as const;\n\n constructor(errors: ZodError[\"issues\"]) {\n super({\n message: \"Settings validation failed.\",\n data: {\n errors\n }\n });\n }\n}\n\nexport class SettingsNotAuthorized extends BaseError {\n override readonly code = \"Mailer/Settings/NotAuthorized\" as const;\n\n constructor() {\n super({ message: \"Not allowed to update the mailer settings.\" });\n }\n}\n\nexport class SettingsPersistenceError extends BaseError<{ error: Error }> {\n override readonly code = \"Mailer/Settings/Persistence\" as const;\n\n constructor(error: Error) {\n super({\n message: \"Failed to persist settings.\",\n data: {\n error\n }\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAqB;AAG/C,OAAO,MAAMC,mBAAmB,SAASD,SAAS,CAAiC;EAC7DE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAACC,MAA0B,EAAE;IACpC,KAAK,CAAC;MACFC,OAAO,EAAE,2BAA2B;MACpCC,IAAI,EAAE;QACFF;MACJ;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMG,uBAAuB,SAASP,SAAS,CAAiC;EACjEE,IAAI,GAAG,4BAA4B;EAErDC,WAAWA,CAACC,MAA0B,EAAE;IACpC,KAAK,CAAC;MACFC,OAAO,EAAE,6BAA6B;MACtCC,IAAI,EAAE;QACFF;MACJ;IACJ,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMI,qBAAqB,SAASR,SAAS,CAAC;EAC/BE,IAAI,GAAG,+BAA+B;EAExDC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MAAEE,OAAO,EAAE;IAA6C,CAAC,CAAC;EACpE;AACJ;AAEA,OAAO,MAAMI,wBAAwB,SAAST,SAAS,CAAmB;EACpDE,IAAI,GAAG,6BAA6B;EAEtDC,WAAWA,CAACO,KAAY,EAAE;IACtB,KAAK,CAAC;MACFL,OAAO,EAAE,6BAA6B;MACtCC,IAAI,EAAE;QACFI;MACJ;IACJ,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
@@ -20,7 +20,7 @@ class SaveSettingsUseCaseImpl {
20
20
  // Validate input
21
21
  const validationResult = saveValidation.safeParse(input);
22
22
  if (!validationResult.success) {
23
- return Result.fail(new SettingsValidationError(validationResult.error.errors));
23
+ return Result.fail(new SettingsValidationError(validationResult.error.issues));
24
24
  }
25
25
 
26
26
  // Publish before save event
@@ -1 +1 @@
1
- {"version":3,"names":["Result","EventPublisher","SaveSettingsUseCase","SaveSettingsRepository","MailerSettingsBeforeSaveEvent","MailerSettingsAfterSaveEvent","saveValidation","SettingsValidationError","SettingsPersistenceError","SettingsNotAuthorized","IdentityContext","SaveSettingsUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","input","permission","getPermission","fail","validationResult","safeParse","success","error","errors","beforeSaveEvent","publish","result","isFail","afterSaveEvent","settings","value","SaveSettingsUseCaseImplementation","createImplementation","implementation","dependencies"],"sources":["SaveSettingsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n SaveSettingsUseCase,\n SaveSettingsRepository,\n type SaveSettingsInput\n} from \"./abstractions.js\";\nimport { MailerSettingsBeforeSaveEvent, MailerSettingsAfterSaveEvent } from \"./events.js\";\nimport { saveValidation } from \"./validation.js\";\nimport {\n SettingsValidationError,\n SettingsPersistenceError,\n SettingsNotAuthorized\n} from \"~/domain/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\n\nclass SaveSettingsUseCaseImpl implements SaveSettingsUseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: SaveSettingsRepository.Interface\n ) {}\n\n async execute(input: SaveSettingsInput): SaveSettingsUseCase.Return {\n const permission = await this.identityContext.getPermission(\"mailer.settings\");\n\n if (!permission) {\n return Result.fail(new SettingsNotAuthorized());\n }\n\n // Validate input\n const validationResult = saveValidation.safeParse(input);\n if (!validationResult.success) {\n return Result.fail(new SettingsValidationError(validationResult.error.errors));\n }\n\n // Publish before save event\n const beforeSaveEvent = new MailerSettingsBeforeSaveEvent({ input });\n await this.eventPublisher.publish(beforeSaveEvent);\n\n // Save settings\n const result = await this.repository.execute(input);\n\n if (result.isFail()) {\n return Result.fail(new SettingsPersistenceError(result.error));\n }\n\n // Publish after save event\n const afterSaveEvent = new MailerSettingsAfterSaveEvent({ settings: result.value });\n await this.eventPublisher.publish(afterSaveEvent);\n\n return result;\n }\n}\n\nexport const SaveSettingsUseCaseImplementation = SaveSettingsUseCase.createImplementation({\n implementation: SaveSettingsUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, SaveSettingsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,mBAAmB,EACnBC,sBAAsB;AAG1B,SAASC,6BAA6B,EAAEC,4BAA4B;AACpE,SAASC,cAAc;AACvB,SACIC,uBAAuB,EACvBC,wBAAwB,EACxBC,qBAAqB;AAEzB,SAASC,eAAe,QAAQ,6DAA6D;AAE7F,MAAMC,uBAAuB,CAA0C;EACnEC,WAAWA,CACCC,eAA0C,EAC1CC,cAAmD,EACnDC,UAA4C,EACtD;IAAA,KAHUF,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,KAAwB,EAA8B;IAChE,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACL,eAAe,CAACM,aAAa,CAAC,iBAAiB,CAAC;IAE9E,IAAI,CAACD,UAAU,EAAE;MACb,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAIX,qBAAqB,CAAC,CAAC,CAAC;IACnD;;IAEA;IACA,MAAMY,gBAAgB,GAAGf,cAAc,CAACgB,SAAS,CAACL,KAAK,CAAC;IACxD,IAAI,CAACI,gBAAgB,CAACE,OAAO,EAAE;MAC3B,OAAOvB,MAAM,CAACoB,IAAI,CAAC,IAAIb,uBAAuB,CAACc,gBAAgB,CAACG,KAAK,CAACC,MAAM,CAAC,CAAC;IAClF;;IAEA;IACA,MAAMC,eAAe,GAAG,IAAItB,6BAA6B,CAAC;MAAEa;IAAM,CAAC,CAAC;IACpE,MAAM,IAAI,CAACH,cAAc,CAACa,OAAO,CAACD,eAAe,CAAC;;IAElD;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACC,KAAK,CAAC;IAEnD,IAAIW,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAO7B,MAAM,CAACoB,IAAI,CAAC,IAAIZ,wBAAwB,CAACoB,MAAM,CAACJ,KAAK,CAAC,CAAC;IAClE;;IAEA;IACA,MAAMM,cAAc,GAAG,IAAIzB,4BAA4B,CAAC;MAAE0B,QAAQ,EAAEH,MAAM,CAACI;IAAM,CAAC,CAAC;IACnF,MAAM,IAAI,CAAClB,cAAc,CAACa,OAAO,CAACG,cAAc,CAAC;IAEjD,OAAOF,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMK,iCAAiC,GAAG/B,mBAAmB,CAACgC,oBAAoB,CAAC;EACtFC,cAAc,EAAExB,uBAAuB;EACvCyB,YAAY,EAAE,CAAC1B,eAAe,EAAET,cAAc,EAAEE,sBAAsB;AAC1E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","EventPublisher","SaveSettingsUseCase","SaveSettingsRepository","MailerSettingsBeforeSaveEvent","MailerSettingsAfterSaveEvent","saveValidation","SettingsValidationError","SettingsPersistenceError","SettingsNotAuthorized","IdentityContext","SaveSettingsUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","input","permission","getPermission","fail","validationResult","safeParse","success","error","issues","beforeSaveEvent","publish","result","isFail","afterSaveEvent","settings","value","SaveSettingsUseCaseImplementation","createImplementation","implementation","dependencies"],"sources":["SaveSettingsUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport {\n SaveSettingsUseCase,\n SaveSettingsRepository,\n type SaveSettingsInput\n} from \"./abstractions.js\";\nimport { MailerSettingsBeforeSaveEvent, MailerSettingsAfterSaveEvent } from \"./events.js\";\nimport { saveValidation } from \"./validation.js\";\nimport {\n SettingsValidationError,\n SettingsPersistenceError,\n SettingsNotAuthorized\n} from \"~/domain/errors.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\n\nclass SaveSettingsUseCaseImpl implements SaveSettingsUseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private repository: SaveSettingsRepository.Interface\n ) {}\n\n async execute(input: SaveSettingsInput): SaveSettingsUseCase.Return {\n const permission = await this.identityContext.getPermission(\"mailer.settings\");\n\n if (!permission) {\n return Result.fail(new SettingsNotAuthorized());\n }\n\n // Validate input\n const validationResult = saveValidation.safeParse(input);\n if (!validationResult.success) {\n return Result.fail(new SettingsValidationError(validationResult.error.issues));\n }\n\n // Publish before save event\n const beforeSaveEvent = new MailerSettingsBeforeSaveEvent({ input });\n await this.eventPublisher.publish(beforeSaveEvent);\n\n // Save settings\n const result = await this.repository.execute(input);\n\n if (result.isFail()) {\n return Result.fail(new SettingsPersistenceError(result.error));\n }\n\n // Publish after save event\n const afterSaveEvent = new MailerSettingsAfterSaveEvent({ settings: result.value });\n await this.eventPublisher.publish(afterSaveEvent);\n\n return result;\n }\n}\n\nexport const SaveSettingsUseCaseImplementation = SaveSettingsUseCase.createImplementation({\n implementation: SaveSettingsUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, SaveSettingsRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,cAAc,QAEX,0CAA0C;AACjD,SACIC,mBAAmB,EACnBC,sBAAsB;AAG1B,SAASC,6BAA6B,EAAEC,4BAA4B;AACpE,SAASC,cAAc;AACvB,SACIC,uBAAuB,EACvBC,wBAAwB,EACxBC,qBAAqB;AAEzB,SAASC,eAAe,QAAQ,6DAA6D;AAE7F,MAAMC,uBAAuB,CAA0C;EACnEC,WAAWA,CACCC,eAA0C,EAC1CC,cAAmD,EACnDC,UAA4C,EACtD;IAAA,KAHUF,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,UAA4C,GAA5CA,UAA4C;EACrD;EAEH,MAAMC,OAAOA,CAACC,KAAwB,EAA8B;IAChE,MAAMC,UAAU,GAAG,MAAM,IAAI,CAACL,eAAe,CAACM,aAAa,CAAC,iBAAiB,CAAC;IAE9E,IAAI,CAACD,UAAU,EAAE;MACb,OAAOlB,MAAM,CAACoB,IAAI,CAAC,IAAIX,qBAAqB,CAAC,CAAC,CAAC;IACnD;;IAEA;IACA,MAAMY,gBAAgB,GAAGf,cAAc,CAACgB,SAAS,CAACL,KAAK,CAAC;IACxD,IAAI,CAACI,gBAAgB,CAACE,OAAO,EAAE;MAC3B,OAAOvB,MAAM,CAACoB,IAAI,CAAC,IAAIb,uBAAuB,CAACc,gBAAgB,CAACG,KAAK,CAACC,MAAM,CAAC,CAAC;IAClF;;IAEA;IACA,MAAMC,eAAe,GAAG,IAAItB,6BAA6B,CAAC;MAAEa;IAAM,CAAC,CAAC;IACpE,MAAM,IAAI,CAACH,cAAc,CAACa,OAAO,CAACD,eAAe,CAAC;;IAElD;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACC,KAAK,CAAC;IAEnD,IAAIW,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAO7B,MAAM,CAACoB,IAAI,CAAC,IAAIZ,wBAAwB,CAACoB,MAAM,CAACJ,KAAK,CAAC,CAAC;IAClE;;IAEA;IACA,MAAMM,cAAc,GAAG,IAAIzB,4BAA4B,CAAC;MAAE0B,QAAQ,EAAEH,MAAM,CAACI;IAAM,CAAC,CAAC;IACnF,MAAM,IAAI,CAAClB,cAAc,CAACa,OAAO,CAACG,cAAc,CAAC;IAEjD,OAAOF,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMK,iCAAiC,GAAG/B,mBAAmB,CAACgC,oBAAoB,CAAC;EACtFC,cAAc,EAAExB,uBAAuB;EACvCyB,YAAY,EAAE,CAAC1B,eAAe,EAAET,cAAc,EAAEE,sBAAsB;AAC1E,CAAC,CAAC","ignoreList":[]}
@@ -1,23 +1,9 @@
1
1
  import zod from "zod";
2
2
  export declare const saveValidation: zod.ZodObject<{
3
- password: zod.ZodEffects<zod.ZodOptional<zod.ZodOptional<zod.ZodNullable<zod.ZodString>>>, string | null, string | null | undefined>;
3
+ password: zod.ZodPipe<zod.ZodOptional<zod.ZodOptional<zod.ZodNullable<zod.ZodString>>>, zod.ZodTransform<string | null, string | null | undefined>>;
4
4
  from: zod.ZodString;
5
5
  port: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodNumber>>>;
6
- replyTo: zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>, string | null | undefined, unknown>;
6
+ replyTo: zod.ZodPipe<zod.ZodTransform<unknown, unknown>, zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>>;
7
7
  host: zod.ZodString;
8
8
  user: zod.ZodString;
9
- }, "strip", zod.ZodTypeAny, {
10
- host: string;
11
- user: string;
12
- password: string | null;
13
- from: string;
14
- port?: number | null | undefined;
15
- replyTo?: string | null | undefined;
16
- }, {
17
- host: string;
18
- user: string;
19
- from: string;
20
- port?: number | null | undefined;
21
- password?: string | null | undefined;
22
- replyTo?: unknown;
23
- }>;
9
+ }, zod.core.$strip>;
@@ -27,7 +27,7 @@ class SendMailUseCaseImpl {
27
27
  async execute(data) {
28
28
  const validation = schema.safeParse(data);
29
29
  if (!validation.success) {
30
- return Result.fail(new MailValidationError(validation.error.errors));
30
+ return Result.fail(new MailValidationError(validation.error.issues));
31
31
  }
32
32
 
33
33
  // Publish before send event
@@ -1 +1 @@
1
- {"version":3,"names":["zod","EventPublisher","SendMailUseCase","MailBeforeSendEvent","MailAfterSendEvent","MailSendErrorEvent","MailerService","MailValidationError","Result","requiredString","string","requiredEmail","email","schema","object","to","array","optional","from","subject","max","min","cc","bcc","replyTo","text","html","refine","data","SendMailUseCaseImpl","constructor","mailerService","eventPublisher","execute","validation","safeParse","success","fail","error","errors","publish","result","sendMail","isFail","response","value","SendMailUseCaseImplementation","createImplementation","implementation","dependencies"],"sources":["SendMailUseCase.ts"],"sourcesContent":["import zod from \"zod\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport { SendMailUseCase } from \"./abstractions.js\";\nimport { MailBeforeSendEvent, MailAfterSendEvent, MailSendErrorEvent } from \"./events.js\";\nimport { MailerService } from \"~/domain/MailerService/abstractions.js\";\nimport type { TransportSendData } from \"~/types.js\";\nimport { MailValidationError } from \"~/domain/errors.js\";\nimport { Result } from \"@webiny/feature/api\";\n\nconst requiredString = zod.string();\nconst requiredEmail = requiredString.email();\n\nconst schema = zod\n .object({\n to: zod.array(requiredEmail).optional(),\n from: zod.string().email().optional(),\n subject: requiredString.max(1024).min(2),\n cc: zod.array(requiredEmail).optional(),\n bcc: zod.array(requiredEmail).optional(),\n replyTo: zod.string().email().optional(),\n text: zod.string().optional(),\n html: zod.string().optional()\n })\n .refine(data => {\n return !!data.text || !!data.html;\n }, \"Either text or html is required.\");\n\nclass SendMailUseCaseImpl implements SendMailUseCase.Interface {\n constructor(\n private mailerService: MailerService.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface\n ) {}\n\n async execute(data: TransportSendData) {\n const validation = schema.safeParse(data);\n if (!validation.success) {\n return Result.fail(new MailValidationError(validation.error.errors));\n }\n\n // Publish before send event\n await this.eventPublisher.publish(new MailBeforeSendEvent({ data }));\n\n // Send mail\n const result = await this.mailerService.sendMail(data);\n\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new MailSendErrorEvent({\n data,\n error: result.error\n })\n );\n\n return result;\n }\n\n // Publish after send event\n await this.eventPublisher.publish(\n new MailAfterSendEvent({\n data,\n response: result.value\n })\n );\n\n return result;\n }\n}\n\nexport const SendMailUseCaseImplementation = SendMailUseCase.createImplementation({\n implementation: SendMailUseCaseImpl,\n dependencies: [MailerService, EventPublisher]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["zod","EventPublisher","SendMailUseCase","MailBeforeSendEvent","MailAfterSendEvent","MailSendErrorEvent","MailerService","MailValidationError","Result","requiredString","string","requiredEmail","email","schema","object","to","array","optional","from","subject","max","min","cc","bcc","replyTo","text","html","refine","data","SendMailUseCaseImpl","constructor","mailerService","eventPublisher","execute","validation","safeParse","success","fail","error","issues","publish","result","sendMail","isFail","response","value","SendMailUseCaseImplementation","createImplementation","implementation","dependencies"],"sources":["SendMailUseCase.ts"],"sourcesContent":["import zod from \"zod\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/EventPublisher\";\nimport { SendMailUseCase } from \"./abstractions.js\";\nimport { MailBeforeSendEvent, MailAfterSendEvent, MailSendErrorEvent } from \"./events.js\";\nimport { MailerService } from \"~/domain/MailerService/abstractions.js\";\nimport type { TransportSendData } from \"~/types.js\";\nimport { MailValidationError } from \"~/domain/errors.js\";\nimport { Result } from \"@webiny/feature/api\";\n\nconst requiredString = zod.string();\nconst requiredEmail = requiredString.email();\n\nconst schema = zod\n .object({\n to: zod.array(requiredEmail).optional(),\n from: zod.string().email().optional(),\n subject: requiredString.max(1024).min(2),\n cc: zod.array(requiredEmail).optional(),\n bcc: zod.array(requiredEmail).optional(),\n replyTo: zod.string().email().optional(),\n text: zod.string().optional(),\n html: zod.string().optional()\n })\n .refine(data => {\n return !!data.text || !!data.html;\n }, \"Either text or html is required.\");\n\nclass SendMailUseCaseImpl implements SendMailUseCase.Interface {\n constructor(\n private mailerService: MailerService.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface\n ) {}\n\n async execute(data: TransportSendData) {\n const validation = schema.safeParse(data);\n if (!validation.success) {\n return Result.fail(new MailValidationError(validation.error.issues));\n }\n\n // Publish before send event\n await this.eventPublisher.publish(new MailBeforeSendEvent({ data }));\n\n // Send mail\n const result = await this.mailerService.sendMail(data);\n\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new MailSendErrorEvent({\n data,\n error: result.error\n })\n );\n\n return result;\n }\n\n // Publish after send event\n await this.eventPublisher.publish(\n new MailAfterSendEvent({\n data,\n response: result.value\n })\n );\n\n return result;\n }\n}\n\nexport const SendMailUseCaseImplementation = SendMailUseCase.createImplementation({\n implementation: SendMailUseCaseImpl,\n dependencies: [MailerService, EventPublisher]\n});\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-mailer",
3
- "version": "6.0.0-rc.7",
3
+ "version": "6.1.0-beta.0",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -15,36 +15,36 @@
15
15
  "description": "The API to send e-mails.",
16
16
  "license": "MIT",
17
17
  "dependencies": {
18
- "@webiny/api": "6.0.0-rc.7",
19
- "@webiny/api-headless-cms": "6.0.0-rc.7",
20
- "@webiny/error": "6.0.0-rc.7",
21
- "@webiny/feature": "6.0.0-rc.7",
22
- "@webiny/handler-graphql": "6.0.0-rc.7",
23
- "@webiny/plugins": "6.0.0-rc.7",
24
- "nodemailer": "7.0.13",
25
- "zod": "3.25.76"
18
+ "@webiny/api": "6.1.0-beta.0",
19
+ "@webiny/api-headless-cms": "6.1.0-beta.0",
20
+ "@webiny/error": "6.1.0-beta.0",
21
+ "@webiny/feature": "6.1.0-beta.0",
22
+ "@webiny/handler-graphql": "6.1.0-beta.0",
23
+ "@webiny/plugins": "6.1.0-beta.0",
24
+ "nodemailer": "8.0.4",
25
+ "zod": "4.3.6"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/crypto-js": "4.2.2",
29
29
  "@types/nodemailer": "7.0.11",
30
- "@webiny/api-core": "6.0.0-rc.7",
31
- "@webiny/build-tools": "6.0.0-rc.7",
32
- "@webiny/db-dynamodb": "6.0.0-rc.7",
33
- "@webiny/handler": "6.0.0-rc.7",
34
- "@webiny/handler-aws": "6.0.0-rc.7",
35
- "@webiny/handler-db": "6.0.0-rc.7",
36
- "@webiny/project-utils": "6.0.0-rc.7",
37
- "graphql": "16.13.1",
30
+ "@webiny/api-core": "6.1.0-beta.0",
31
+ "@webiny/build-tools": "6.1.0-beta.0",
32
+ "@webiny/db-dynamodb": "6.1.0-beta.0",
33
+ "@webiny/handler": "6.1.0-beta.0",
34
+ "@webiny/handler-aws": "6.1.0-beta.0",
35
+ "@webiny/handler-db": "6.1.0-beta.0",
36
+ "@webiny/project-utils": "6.1.0-beta.0",
37
+ "graphql": "16.13.2",
38
38
  "jest-dynalite": "3.6.1",
39
39
  "rimraf": "6.1.3",
40
40
  "typescript": "5.9.3",
41
- "vitest": "4.0.18"
41
+ "vitest": "4.1.2"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public",
45
45
  "directory": "dist"
46
46
  },
47
- "gitHead": "9c6892640a45679ff521e25cd6587dff57393a2e",
47
+ "gitHead": "a3bd3695c66c79238e380d7360d9731b5fcf9c87",
48
48
  "adio": {
49
49
  "ignore": {
50
50
  "src": [