@tstdl/base 0.84.22 → 0.84.24
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/template/templates/hello-jsx.d.ts +1 -1
- package/examples/template/templates/hello-name.d.ts +1 -1
- package/package.json +3 -3
- package/signals/implementation/api.d.ts +2 -2
- package/signals/implementation/api.js +1 -1
- 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/string.template-resolver.d.ts +4 -3
- package/templates/resolvers/string.template-resolver.js +2 -2
- package/templates/template.model.d.ts +1 -1
- package/templates/template.renderer.d.ts +2 -2
- package/templates/template.renderer.js +1 -1
- package/text/localization.service.d.ts +14 -3
- package/text/localization.service.js +17 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const template: import("../../../templates/template.model.js").Template<import("../../../types.js").Record<string, boolean>, any,
|
|
1
|
+
export declare const template: import("../../../templates/template.model.js").Template<import("../../../types.js").Record<string, boolean>, any, import("../../../types.js").Record>;
|
|
2
2
|
export default template;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const template: import("../../../templates/template.model.js").Template<import("../../../types.js").Record<string, boolean>, any,
|
|
1
|
+
declare const template: import("../../../templates/template.model.js").Template<import("../../../types.js").Record<string, boolean>, any, import("../../../types.js").Record>;
|
|
2
2
|
export default template;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tstdl/base",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.24",
|
|
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",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"typescript": "5.0"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"@elastic/elasticsearch": "^8.
|
|
48
|
+
"@elastic/elasticsearch": "^8.8",
|
|
49
49
|
"@koa/router": "^12.0",
|
|
50
50
|
"@tstdl/angular": "^0.84",
|
|
51
51
|
"@zxcvbn-ts/core": "^3.0",
|
|
@@ -25,9 +25,9 @@ export interface Signal<T> {
|
|
|
25
25
|
[SIGNAL]?: unknown;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* Checks if the given `value`
|
|
28
|
+
* Checks if the given `value` is a reactive `Signal`.
|
|
29
29
|
*/
|
|
30
|
-
export declare function isSignal(value:
|
|
30
|
+
export declare function isSignal(value: unknown): value is Signal<unknown>;
|
|
31
31
|
/**
|
|
32
32
|
* Converts `fn` into a marked signal function (where `isSignal(fn)` will be `true`).
|
|
33
33
|
*
|
|
@@ -32,7 +32,7 @@ module.exports = __toCommonJS(api_exports);
|
|
|
32
32
|
*/
|
|
33
33
|
const SIGNAL = Symbol("SIGNAL");
|
|
34
34
|
function isSignal(value) {
|
|
35
|
-
return value[SIGNAL] !== void 0;
|
|
35
|
+
return typeof value == "function" && value[SIGNAL] !== void 0;
|
|
36
36
|
}
|
|
37
37
|
function createSignalFromFunction(node, fn, extraApi = {}) {
|
|
38
38
|
fn[SIGNAL] = node;
|
|
@@ -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,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 type StringTemplate = string | ((context: Record) => string | Promise<string>);
|
|
5
6
|
export declare class StringTemplateField<Renderer extends string = string, Options = any> extends TemplateField<'string', Renderer, Options> {
|
|
6
|
-
template:
|
|
7
|
+
template: StringTemplate;
|
|
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;
|
|
12
13
|
}
|
|
13
14
|
export declare function stringTemplateField<Renderer extends TemplateRenderer>(field: TypedOmit<StringTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions]>, 'resolver'>): StringTemplateField<Renderer[TemplateRendererString], Renderer[TemplateRendererOptions]>;
|
|
@@ -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() {
|
|
@@ -11,7 +11,7 @@ export type TemplateFields<Fields extends Record<string, boolean>, Resolver exte
|
|
|
11
11
|
} & {
|
|
12
12
|
[P in keyof PickBy<Fields, false>]?: TemplateField<Resolver, Renderer, Options>;
|
|
13
13
|
}>;
|
|
14
|
-
export declare abstract class Template<Fields extends Record<string, boolean> = Record<string, boolean>, TemplateOptions = any, Context extends
|
|
14
|
+
export declare abstract class Template<Fields extends Record<string, boolean> = Record<string, boolean>, TemplateOptions = any, Context extends Record = Record> {
|
|
15
15
|
readonly [templateContext]?: Context;
|
|
16
16
|
/** name of template */
|
|
17
17
|
name: string;
|
|
@@ -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
|
}
|
|
@@ -27,7 +27,16 @@ export type ProxyLocalizationKey<Parameters = void> = PropertyName & {
|
|
|
27
27
|
[parametersSymbol]?: Parameters;
|
|
28
28
|
};
|
|
29
29
|
export type LocalizationKey<Parameters = void> = string | ProxyLocalizationKey<Parameters>;
|
|
30
|
-
export type
|
|
30
|
+
export type EnumLocalizationKey<T extends Enumeration = Enumeration, Parameters = void> = Parameters extends void ? {
|
|
31
|
+
enum: T;
|
|
32
|
+
value?: EnumerationValue<T>;
|
|
33
|
+
parameters?: void;
|
|
34
|
+
} : {
|
|
35
|
+
enum: T;
|
|
36
|
+
value?: EnumerationValue<T>;
|
|
37
|
+
parameters: Parameters;
|
|
38
|
+
};
|
|
39
|
+
export type LocalizationData<Parameters = any, E extends Enumeration = any> = LocalizationKey | EnumLocalizationKey<E, Parameters> | LocalizationDataObject<Parameters> | {
|
|
31
40
|
key: LocalizationKey;
|
|
32
41
|
parameters?: void;
|
|
33
42
|
};
|
|
@@ -40,6 +49,8 @@ export type ProxyLocalizationKeys<T extends LocalizationTemplate> = {
|
|
|
40
49
|
};
|
|
41
50
|
export declare function getProxyLocalizationKey<Parameters = void>(key: string): ProxyLocalizationKey<Parameters>;
|
|
42
51
|
export declare function isProxyLocalizationKey(value: any): value is ProxyLocalizationKey;
|
|
52
|
+
export declare function isEnumLocalizationKey(key: any): key is EnumLocalizationKey;
|
|
53
|
+
export declare function isLocalizationDataObject(value: LocalizationData): value is LocalizationDataObject<any>;
|
|
43
54
|
/** helper function to ensure type safety */
|
|
44
55
|
export declare function localizationData<T>(data: LocalizationData<T>): LocalizationData<T>;
|
|
45
56
|
/**
|
|
@@ -65,9 +76,9 @@ export declare class LocalizationService {
|
|
|
65
76
|
getLanguage(languageCode: string): Language;
|
|
66
77
|
setLanguage(languageOrCode: Language | string): void;
|
|
67
78
|
setLocalization(localization: Localization): void;
|
|
68
|
-
tryGetItem<Parameters>(
|
|
79
|
+
tryGetItem<Parameters>(keyOrData: LocalizationKey<Parameters> | LocalizationData<Parameters>): LocalizeItem | undefined;
|
|
69
80
|
hasKey<Parameters>(key: LocalizationKey<Parameters> | LocalizationData<Parameters>): boolean;
|
|
70
|
-
localize<Parameters>(keyOrData: LocalizationKey<Parameters> | LocalizationData<Parameters>): string;
|
|
81
|
+
localize<Parameters = void>(keyOrData: LocalizationKey<Parameters> | LocalizationData<Parameters>): string;
|
|
71
82
|
localizeEnum<T extends Enumeration>(enumeration: T, value?: EnumerationValue<T>, parameters?: unknown): string;
|
|
72
83
|
localize$<Parameters>(data: LocalizationData<Parameters>): Observable<string>;
|
|
73
84
|
localizeEnum$<T extends Enumeration>(enumeration: T, value?: EnumerationValue<T>, parameters?: unknown): Observable<string>;
|
|
@@ -23,6 +23,8 @@ __export(localization_service_exports, {
|
|
|
23
23
|
enumerationLocalization: () => enumerationLocalization,
|
|
24
24
|
getLocalizationKeys: () => getLocalizationKeys,
|
|
25
25
|
getProxyLocalizationKey: () => getProxyLocalizationKey,
|
|
26
|
+
isEnumLocalizationKey: () => isEnumLocalizationKey,
|
|
27
|
+
isLocalizationDataObject: () => isLocalizationDataObject,
|
|
26
28
|
isLocalizeItem: () => isLocalizeItem,
|
|
27
29
|
isProxyLocalizationKey: () => isProxyLocalizationKey,
|
|
28
30
|
localizationData: () => localizationData
|
|
@@ -62,6 +64,12 @@ function getProxyLocalizationKey(key) {
|
|
|
62
64
|
function isProxyLocalizationKey(value) {
|
|
63
65
|
return (0, import_property_name.isPropertyName)(value);
|
|
64
66
|
}
|
|
67
|
+
function isEnumLocalizationKey(key) {
|
|
68
|
+
return (0, import_type_guards.isObject)(key) && (0, import_object.hasOwnProperty)(key, "enum");
|
|
69
|
+
}
|
|
70
|
+
function isLocalizationDataObject(value) {
|
|
71
|
+
return (0, import_type_guards.isObject)(value) && (0, import_object.hasOwnProperty)(value, "key");
|
|
72
|
+
}
|
|
65
73
|
function localizationData(data) {
|
|
66
74
|
return data;
|
|
67
75
|
}
|
|
@@ -131,11 +139,15 @@ let LocalizationService = class LocalizationService2 {
|
|
|
131
139
|
setLocalization(localization) {
|
|
132
140
|
this.setLanguage(localization.language);
|
|
133
141
|
}
|
|
134
|
-
tryGetItem(
|
|
142
|
+
tryGetItem(keyOrData) {
|
|
135
143
|
if ((0, import_type_guards.isUndefined)(this.activeLanguage)) {
|
|
136
144
|
return void 0;
|
|
137
145
|
}
|
|
138
|
-
|
|
146
|
+
if (isEnumLocalizationKey(keyOrData)) {
|
|
147
|
+
const enumEntry = this.localizations.get(this.activeLanguage.code)?.enums.get(keyOrData.enum);
|
|
148
|
+
return (0, import_type_guards.isDefined)(keyOrData.value) ? enumEntry?.values[keyOrData.value] : enumEntry?.name;
|
|
149
|
+
}
|
|
150
|
+
const actualKey = getStringKey(keyOrData);
|
|
139
151
|
return this.localizations.get(this.activeLanguage.code)?.keys.get(actualKey);
|
|
140
152
|
}
|
|
141
153
|
hasKey(key) {
|
|
@@ -144,6 +156,9 @@ let LocalizationService = class LocalizationService2 {
|
|
|
144
156
|
}
|
|
145
157
|
// eslint-disable-next-line max-statements
|
|
146
158
|
localize(keyOrData) {
|
|
159
|
+
if (isEnumLocalizationKey(keyOrData)) {
|
|
160
|
+
return this.localizeEnum(keyOrData.enum, keyOrData.value, keyOrData.parameters);
|
|
161
|
+
}
|
|
147
162
|
const key = getStringKey(keyOrData);
|
|
148
163
|
const parameters = (0, import_type_guards.isString)(keyOrData) || isProxyLocalizationKey(keyOrData) ? {} : keyOrData.parameters;
|
|
149
164
|
const templateOrFunction = (0, import_type_guards.isDefined)(this.activeLanguage) ? this.localizations.get(this.activeLanguage.code)?.keys.get(key) : void 0;
|