@tstdl/base 0.84.23 → 0.84.25
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/examples/mail/templates/hello-name.d.ts +4 -1
- package/examples/mail/templates/hello-name.js +1 -1
- package/mail/models/mail-template.model.d.ts +9 -6
- package/package.json +2 -2
- package/templates/renderers/handlebars.template-renderer.d.ts +1 -1
- package/templates/renderers/jsx.template-renderer.d.ts +2 -1
- package/templates/renderers/mjml.template-renderer.d.ts +2 -1
- package/templates/renderers/mjml.template-renderer.js +1 -1
- package/templates/renderers/string.template-renderer.d.ts +4 -2
- package/templates/renderers/string.template-renderer.js +6 -2
- package/templates/resolvers/jsx.template-resolver.d.ts +5 -5
- package/templates/resolvers/string.template-resolver.d.ts +6 -5
- package/templates/resolvers/string.template-resolver.js +2 -2
- package/templates/template.model.d.ts +11 -9
- package/templates/template.model.js +1 -3
- package/templates/template.renderer.d.ts +2 -2
- package/templates/template.renderer.js +1 -1
- package/templates/tokens.d.ts +1 -1
|
@@ -31,6 +31,6 @@ function HelloMail({ name }) {
|
|
|
31
31
|
const template = (0, import_mail.mailTemplate)("hello-name", {
|
|
32
32
|
subject: (0, import_string_template_resolver.stringTemplateField)({ renderer: "handlebars", template: "Hello {{ name }} in subject!" }),
|
|
33
33
|
html: (0, import_jsx_template_resolver.jsxTemplateField)({ renderer: "mjml-jsx", template: HelloMail }),
|
|
34
|
-
text: (0, import_string_template_resolver.stringTemplateField)({ renderer: "
|
|
34
|
+
text: (0, import_string_template_resolver.stringTemplateField)({ renderer: "string", template: ({ name }) => `Hello ${name} in text!` })
|
|
35
35
|
});
|
|
36
36
|
var hello_name_default = template;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { Template, TemplateField } from '../../templates/template.model.js';
|
|
2
|
-
|
|
2
|
+
import type { Record } from '../../types.js';
|
|
3
|
+
export type MailTemplate<Context extends Record = any> = Template<{
|
|
3
4
|
subject: false;
|
|
4
5
|
html: false;
|
|
5
6
|
text: false;
|
|
6
7
|
}, undefined, Context>;
|
|
7
|
-
|
|
8
|
-
subject?: TemplateField
|
|
9
|
-
html?: TemplateField
|
|
10
|
-
text?: TemplateField
|
|
11
|
-
}
|
|
8
|
+
type MailTemplateFields<Context extends Record> = {
|
|
9
|
+
subject?: TemplateField<string, string, any, Context>;
|
|
10
|
+
html?: TemplateField<string, string, any, Context>;
|
|
11
|
+
text?: TemplateField<string, string, any, Context>;
|
|
12
|
+
};
|
|
13
|
+
export declare function mailTemplate<Context extends Record>(name: string, fields: MailTemplateFields<Context>): MailTemplate<Context>;
|
|
14
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tstdl/base",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.25",
|
|
4
4
|
"author": "Patrick Hein",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@types/nodemailer": "6.4",
|
|
36
36
|
"@typescript-eslint/eslint-plugin": "5.59",
|
|
37
37
|
"@typescript-eslint/parser": "5.59",
|
|
38
|
-
"concurrently": "8.
|
|
38
|
+
"concurrently": "8.1",
|
|
39
39
|
"esbuild": "0.17",
|
|
40
40
|
"eslint": "8.41",
|
|
41
41
|
"eslint-import-resolver-typescript": "3.5",
|
|
@@ -37,7 +37,7 @@ export declare class HandlebarsTemplateRenderer extends TemplateRenderer<'handle
|
|
|
37
37
|
private readonly compileHandlebarsTemplate;
|
|
38
38
|
constructor(templateResolverProvider: TemplateResolverProvider);
|
|
39
39
|
canHandleType(type: string): boolean;
|
|
40
|
-
_render(renderObject: HandlebarsTemplateRenderObject, context
|
|
40
|
+
_render(renderObject: HandlebarsTemplateRenderObject, context: Record): Promise<string>;
|
|
41
41
|
private _compileHandlebarsTemplate;
|
|
42
42
|
private normalizePartial;
|
|
43
43
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Record } from '../../types.js';
|
|
1
2
|
import type { JsxTemplate } from '../resolvers/jsx.template-resolver.js';
|
|
2
3
|
import type { TemplateRenderObject, TemplateRenderResult } from '../template.renderer.js';
|
|
3
4
|
import { TemplateRenderer } from '../template.renderer.js';
|
|
@@ -5,5 +6,5 @@ export type JsxTemplateRenderObject = TemplateRenderObject<'jsx', undefined, Jsx
|
|
|
5
6
|
export declare class JsxTemplateRenderer extends TemplateRenderer<'jsx', undefined> {
|
|
6
7
|
constructor();
|
|
7
8
|
canHandleType(type: string): boolean;
|
|
8
|
-
_render({ template: TemplateComponent }: JsxTemplateRenderObject, context
|
|
9
|
+
_render({ template: TemplateComponent }: JsxTemplateRenderObject, context: Record): TemplateRenderResult;
|
|
9
10
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Record } from '../../types.js';
|
|
1
2
|
import type { MJMLParsingOptions } from 'mjml-core';
|
|
2
3
|
import { TemplateRendererProvider } from '../template-renderer.provider.js';
|
|
3
4
|
import type { TemplateRenderObject, TemplateRenderResult } from '../template.renderer.js';
|
|
@@ -11,5 +12,5 @@ export declare class MjmlTemplateRenderer extends TemplateRenderer<MjmlRendererS
|
|
|
11
12
|
private readonly rendererProvider;
|
|
12
13
|
constructor(rendererProvider: TemplateRendererProvider);
|
|
13
14
|
canHandleType(type: string): boolean;
|
|
14
|
-
_render({ renderer, template, options }: MjmlTemplateRenderObject, context
|
|
15
|
+
_render({ renderer, template, options }: MjmlTemplateRenderObject, context: Record): Promise<TemplateRenderResult>;
|
|
15
16
|
}
|
|
@@ -79,7 +79,7 @@ let MjmlTemplateRenderer = class MjmlTemplateRenderer2 extends import_template_r
|
|
|
79
79
|
renderer: "mjml",
|
|
80
80
|
template: result
|
|
81
81
|
};
|
|
82
|
-
return this._render(preprocessedTemplate);
|
|
82
|
+
return this._render(preprocessedTemplate, context);
|
|
83
83
|
}
|
|
84
84
|
return (0, import_mjml.default)(template).html;
|
|
85
85
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { Record } from '../../types.js';
|
|
2
|
+
import type { StringTemplate } from '../resolvers/string.template-resolver.js';
|
|
1
3
|
import type { TemplateRenderObject, TemplateRenderResult } from '../template.renderer.js';
|
|
2
4
|
import { TemplateRenderer } from '../template.renderer.js';
|
|
3
|
-
export type StringTemplateRenderObject = TemplateRenderObject<'string', undefined,
|
|
5
|
+
export type StringTemplateRenderObject = TemplateRenderObject<'string', undefined, StringTemplate>;
|
|
4
6
|
export declare class StringTemplateRenderer extends TemplateRenderer<'string', undefined> {
|
|
5
7
|
constructor();
|
|
6
8
|
canHandleType(type: string): boolean;
|
|
7
|
-
_render({ template }: StringTemplateRenderObject,
|
|
9
|
+
_render({ template }: StringTemplateRenderObject, context: Record): Promise<TemplateRenderResult>;
|
|
8
10
|
}
|
|
@@ -22,6 +22,7 @@ __export(string_template_renderer_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(string_template_renderer_exports);
|
|
24
24
|
var import_container = require("../../container/index.js");
|
|
25
|
+
var import_type_guards = require("../../utils/type-guards.js");
|
|
25
26
|
var import_template_renderer = require("../template.renderer.js");
|
|
26
27
|
var __decorate = function(decorators, target, key, desc) {
|
|
27
28
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -44,8 +45,11 @@ let StringTemplateRenderer = class StringTemplateRenderer2 extends import_templa
|
|
|
44
45
|
canHandleType(type) {
|
|
45
46
|
return type == "string";
|
|
46
47
|
}
|
|
47
|
-
_render({ template },
|
|
48
|
-
|
|
48
|
+
async _render({ template }, context) {
|
|
49
|
+
if ((0, import_type_guards.isString)(template)) {
|
|
50
|
+
return template;
|
|
51
|
+
}
|
|
52
|
+
return template(context);
|
|
49
53
|
}
|
|
50
54
|
};
|
|
51
55
|
StringTemplateRenderer = __decorate([
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import type { TypedOmit } from '../../types.js';
|
|
1
|
+
import type { Record, TypedOmit } from '../../types.js';
|
|
2
2
|
import type { ComponentClass, FunctionComponent } from 'preact';
|
|
3
3
|
import { TemplateField } from '../template.model.js';
|
|
4
4
|
import type { TemplateRenderer, TemplateRendererOptions, TemplateRendererString } from '../template.renderer.js';
|
|
5
5
|
import { TemplateResolver } from '../template.resolver.js';
|
|
6
|
-
export type JsxTemplate = FunctionComponent<
|
|
7
|
-
export declare class JsxTemplateField<Renderer extends string = string, Options = any> extends TemplateField<'string', Renderer, Options> {
|
|
8
|
-
template: JsxTemplate
|
|
6
|
+
export type JsxTemplate<Context extends Record = any> = FunctionComponent<Context> | ComponentClass<Context, any>;
|
|
7
|
+
export declare class JsxTemplateField<Renderer extends string = string, Options = any, Context extends Record = any> extends TemplateField<'string', Renderer, Options, Context> {
|
|
8
|
+
template: JsxTemplate<Context>;
|
|
9
9
|
}
|
|
10
10
|
export declare class JsxTemplateResolver extends TemplateResolver<JsxTemplateField, JsxTemplate> {
|
|
11
11
|
constructor();
|
|
12
12
|
canHandle(resolver: string): boolean;
|
|
13
13
|
resolve(field: JsxTemplateField): JsxTemplate;
|
|
14
14
|
}
|
|
15
|
-
export declare function jsxTemplateField<Renderer extends TemplateRenderer>(field: TypedOmit<JsxTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions]>, 'resolver'>): JsxTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions]>;
|
|
15
|
+
export declare function jsxTemplateField<Renderer extends TemplateRenderer, Context extends Record = any>(field: TypedOmit<JsxTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions], Context>, 'resolver'>): JsxTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions], Context>;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import type { TypedOmit } from '../../types.js';
|
|
1
|
+
import type { Record, TypedOmit } from '../../types.js';
|
|
2
2
|
import { TemplateField } from '../template.model.js';
|
|
3
3
|
import type { TemplateRenderer, TemplateRendererOptions, TemplateRendererString } from '../template.renderer.js';
|
|
4
4
|
import { TemplateResolver } from '../template.resolver.js';
|
|
5
|
-
export
|
|
6
|
-
|
|
5
|
+
export type StringTemplate<Context extends Record = any> = string | ((context: Context) => string | Promise<string>);
|
|
6
|
+
export declare class StringTemplateField<Renderer extends string = string, Options = any, Context extends Record = any> extends TemplateField<'string', Renderer, Options, Context> {
|
|
7
|
+
template: StringTemplate<Context>;
|
|
7
8
|
}
|
|
8
9
|
export declare class StringTemplateResolver extends TemplateResolver<StringTemplateField> {
|
|
9
10
|
constructor();
|
|
10
11
|
canHandle(resolver: string): boolean;
|
|
11
|
-
resolve(field: StringTemplateField):
|
|
12
|
+
resolve(field: StringTemplateField): StringTemplate<Record>;
|
|
12
13
|
}
|
|
13
|
-
export declare function stringTemplateField<Renderer extends TemplateRenderer>(field: TypedOmit<StringTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions]>, 'resolver'>): StringTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions]>;
|
|
14
|
+
export declare function stringTemplateField<Renderer extends TemplateRenderer, Context extends Record = any>(field: TypedOmit<StringTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions], Context>, 'resolver'>): StringTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions], Context>;
|
|
@@ -45,8 +45,8 @@ class StringTemplateField extends import_template_model.TemplateField {
|
|
|
45
45
|
template;
|
|
46
46
|
}
|
|
47
47
|
__decorate([
|
|
48
|
-
(0, import_schema.
|
|
49
|
-
__metadata("design:type",
|
|
48
|
+
(0, import_schema.Union)(String, Function),
|
|
49
|
+
__metadata("design:type", Object)
|
|
50
50
|
], StringTemplateField.prototype, "template", void 0);
|
|
51
51
|
let StringTemplateResolver = class StringTemplateResolver2 extends import_template_resolver.TemplateResolver {
|
|
52
52
|
constructor() {
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import type { PickBy, Record, SimplifyObject } from '../types.js';
|
|
2
|
-
export type TemplateContext<T extends Template> = T[typeof templateContext];
|
|
3
|
-
|
|
4
|
-
export declare class TemplateField<Resolver extends string = string, Renderer extends string = string, Options = any> {
|
|
2
|
+
export type TemplateContext<T extends Template> = Parameters<NonNullable<T[typeof templateContext]>>[0];
|
|
3
|
+
declare const templateContext: unique symbol;
|
|
4
|
+
export declare class TemplateField<Resolver extends string = string, Renderer extends string = string, Options = any, Context extends Record = any> {
|
|
5
|
+
readonly [templateContext]?: (context: Context) => void;
|
|
5
6
|
resolver: Resolver;
|
|
6
7
|
renderer: Renderer;
|
|
7
8
|
options?: Options;
|
|
8
9
|
}
|
|
9
|
-
export type TemplateFields<Fields extends Record<string, boolean>, Resolver extends string = string, Renderer extends string = string, Options = any> = SimplifyObject<{
|
|
10
|
-
[P in keyof PickBy<Fields, true>]: TemplateField<Resolver, Renderer, Options>;
|
|
10
|
+
export type TemplateFields<Fields extends Record<string, boolean>, Resolver extends string = string, Renderer extends string = string, Options = any, Context extends Record = any> = SimplifyObject<{
|
|
11
|
+
[P in keyof PickBy<Fields, true>]: TemplateField<Resolver, Renderer, Options, Context>;
|
|
11
12
|
} & {
|
|
12
|
-
[P in keyof PickBy<Fields, false>]?: TemplateField<Resolver, Renderer, Options>;
|
|
13
|
+
[P in keyof PickBy<Fields, false>]?: TemplateField<Resolver, Renderer, Options, Context>;
|
|
13
14
|
}>;
|
|
14
|
-
export declare abstract class Template<Fields extends Record<string, boolean> = Record<string, boolean>, TemplateOptions = any, Context extends
|
|
15
|
-
readonly [templateContext]?: Context;
|
|
15
|
+
export declare abstract class Template<Fields extends Record<string, boolean> = Record<string, boolean>, TemplateOptions = any, Context extends Record = any> {
|
|
16
|
+
readonly [templateContext]?: (context: Context) => void;
|
|
16
17
|
/** name of template */
|
|
17
18
|
name: string;
|
|
18
|
-
fields: TemplateFields<Fields>;
|
|
19
|
+
fields: TemplateFields<Fields, string, string, any, Context>;
|
|
19
20
|
options?: TemplateOptions;
|
|
20
21
|
}
|
|
21
22
|
export declare function simpleTemplate(name: string, template: TemplateField): Template;
|
|
23
|
+
export {};
|
|
@@ -20,8 +20,7 @@ var template_model_exports = {};
|
|
|
20
20
|
__export(template_model_exports, {
|
|
21
21
|
Template: () => Template,
|
|
22
22
|
TemplateField: () => TemplateField,
|
|
23
|
-
simpleTemplate: () => simpleTemplate
|
|
24
|
-
templateContext: () => templateContext
|
|
23
|
+
simpleTemplate: () => simpleTemplate
|
|
25
24
|
});
|
|
26
25
|
module.exports = __toCommonJS(template_model_exports);
|
|
27
26
|
var import_schema = require("../schema/index.js");
|
|
@@ -39,7 +38,6 @@ var __metadata = function(k, v) {
|
|
|
39
38
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
40
39
|
return Reflect.metadata(k, v);
|
|
41
40
|
};
|
|
42
|
-
const templateContext = Symbol("templateData");
|
|
43
41
|
let TemplateField = class TemplateField2 {
|
|
44
42
|
resolver;
|
|
45
43
|
renderer;
|
|
@@ -14,7 +14,7 @@ export declare const templateRendererOptions: unique symbol;
|
|
|
14
14
|
export declare abstract class TemplateRenderer<Renderer extends string = string, Options = any> {
|
|
15
15
|
readonly [templateRendererString]: Renderer;
|
|
16
16
|
readonly [templateRendererOptions]: Options;
|
|
17
|
-
render(template: TemplateRenderObject<Renderer, Options>, context?:
|
|
17
|
+
render(template: TemplateRenderObject<Renderer, Options>, context?: Record): Promise<TemplateRenderResult>;
|
|
18
18
|
abstract canHandleType(type: string): boolean;
|
|
19
|
-
protected abstract _render(renderObject: TemplateRenderObject<Renderer, Options>, context
|
|
19
|
+
protected abstract _render(renderObject: TemplateRenderObject<Renderer, Options>, context: Record): TemplateRenderResult | Promise<TemplateRenderResult>;
|
|
20
20
|
}
|
|
@@ -30,6 +30,6 @@ const templateRendererOptions = Symbol("templateRendererOptions");
|
|
|
30
30
|
class TemplateRenderer {
|
|
31
31
|
async render(template, context) {
|
|
32
32
|
const parsedContext = (0, import_type_guards.isDefined)(template.contextSchema) ? import_schema.Schema.parse(template.contextSchema, context) : context;
|
|
33
|
-
return this._render(template, parsedContext);
|
|
33
|
+
return this._render(template, parsedContext ?? {});
|
|
34
34
|
}
|
|
35
35
|
}
|
package/templates/tokens.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { TemplateRenderer } from './template.renderer.js';
|
|
2
2
|
import type { TemplateResolver } from './template.resolver.js';
|
|
3
3
|
export declare const TEMPLATE_RENDERERS: import("../container/index.js").InjectionToken<TemplateRenderer<string, any>[], any>;
|
|
4
|
-
export declare const TEMPLATE_RESOLVERS: import("../container/index.js").InjectionToken<TemplateResolver<import("./template.model.js").TemplateField<string, string, any>, unknown>[], any>;
|
|
4
|
+
export declare const TEMPLATE_RESOLVERS: import("../container/index.js").InjectionToken<TemplateResolver<import("./template.model.js").TemplateField<string, string, any, any>, unknown>[], any>;
|