Skip to content

Commit c48cff3

Browse files
authored
th-281: Fixed view types (#282)
* th-281: * Fixed types * th-281: * Fixed comments * th-281: * Fixed comments
1 parent 459a2e1 commit c48cff3

File tree

13 files changed

+70
-34
lines changed

13 files changed

+70
-34
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
interface IView {
2-
render(parameters: unknown): string;
1+
interface IView<T extends Record<string, unknown>> {
2+
render(parameters: T): string;
33
}
44

55
export { type IView };

backend/src/libs/packages/view/view.package.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ class View {
99

1010
protected compiledTemplate: HandlebarsTemplateDelegate;
1111

12-
protected constructor(path: string) {
13-
this.templatePath = path;
12+
protected constructor(templatePath: string) {
13+
this.templatePath = templatePath;
1414
this.compiledTemplate = this.compileTemplate();
1515
}
1616

backend/src/packages/mail/libs/maps/template-name-to-view.map.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import { type IView } from '~/libs/packages/packages.js';
2-
31
import { TemplateName } from '../enums/enums.js';
4-
import { type TemplateNameValues } from '../types/types.js';
2+
import { type TemplateNameToView } from '../types/types.js';
53
import { plainView } from '../views/views.js';
64

7-
const templateNameToView: Record<TemplateNameValues, IView> = {
5+
const templateNameToView: TemplateNameToView = {
86
[TemplateName.PLAIN]: plainView,
97
};
108

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { type templateNameToView } from '../maps/maps.js';
2+
import { type TemplateNameValues } from './template-name-values.type.js';
3+
4+
type RenderParameter<T extends TemplateNameValues = TemplateNameValues> =
5+
Parameters<(typeof templateNameToView)[T]['render']>[0];
6+
7+
export { type RenderParameter };
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { type Options } from 'nodemailer/lib/mailer';
2+
3+
import { type RequireProperty } from '~/libs/types/types.js';
4+
5+
type SendPageMailHeader = RequireProperty<
6+
Pick<Options, 'to' | 'subject' | 'cc' | 'bcc'>,
7+
'to' | 'subject'
8+
>;
9+
10+
export { type SendPageMailHeader };

backend/src/packages/mail/libs/types/mail-header.type.ts renamed to backend/src/packages/mail/libs/types/send-text-mail-header.type.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import { type Options } from 'nodemailer/lib/mailer';
22

33
import { type RequireProperty } from '~/libs/types/types.js';
44

5-
type MailHeader = RequireProperty<
5+
type SendTextMailHeader = RequireProperty<
66
Pick<Options, 'to' | 'subject' | 'cc' | 'bcc' | 'text'>,
7-
'to' | 'subject'
7+
'to' | 'subject' | 'text'
88
>;
99

10-
export { type MailHeader };
10+
export { type SendTextMailHeader };
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { type IView } from '~/libs/packages/view/libs/interfaces/interfaces.js';
2+
3+
import { type TemplateName } from '../enums/enums.js';
4+
import { type PlainViewRenderParameter } from '../views/plain/libs/types/types.js';
5+
6+
type TemplateNameToView = {
7+
[TemplateName.PLAIN]: IView<PlainViewRenderParameter>;
8+
};
9+
10+
export { type TemplateNameToView };
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
export { type MailHeader } from './mail-header.type.js';
1+
export { type RenderParameter } from './render-parameter.type.js';
2+
export { type SendPageMailHeader } from './send-page-mail-header.type.js';
3+
export { type SendTextMailHeader } from './send-text-mail-header.type.js';
4+
export { type TemplateNameToView } from './template-name-to-view.type.js';
25
export { type TemplateNameValues } from './template-name-values.type.js';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
type PlainViewRenderParameter = { body: string };
2+
3+
export { type PlainViewRenderParameter };
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { type PlainViewRenderParameter } from './plain-view-render-parameter.type.js';

0 commit comments

Comments
 (0)