nesoi 3.0.20 → 3.1.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.
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +8 -0
- package/lib/compiler/compiler.js +1 -1
- package/lib/compiler/elements/bucket.element.d.ts +2 -1
- package/lib/compiler/elements/bucket.element.js +68 -122
- package/lib/compiler/elements/element.js +2 -1
- package/lib/compiler/elements/externals.element.js +3 -0
- package/lib/compiler/elements/message.element.js +34 -57
- package/lib/compiler/elements/queue.element.js +1 -1
- package/lib/compiler/helpers/dump_helpers.d.ts +2 -0
- package/lib/compiler/helpers/dump_helpers.js +12 -2
- package/lib/compiler/stages/4_build_schemas_stage.js +12 -0
- package/lib/compiler/stages/5_inject_ts_stage.js +4 -1
- package/lib/compiler/stages/7_dump_stage.js +7 -1
- package/lib/compiler/treeshake.js +4 -2
- package/lib/compiler/typescript/bridge/extract.js +37 -107
- package/lib/compiler/typescript/bridge/inject.d.ts +1 -1
- package/lib/compiler/typescript/bridge/inject.js +73 -45
- package/lib/compiler/typescript/bridge/organize.js +9 -5
- package/lib/compiler/typescript/typescript_compiler.d.ts +4 -6
- package/lib/compiler/typescript/typescript_compiler.js +139 -75
- package/lib/elements/blocks/block.builder.d.ts +1 -10
- package/lib/elements/blocks/block.builder.js +0 -32
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +3 -21
- package/lib/elements/blocks/job/job.builder.d.ts +6 -20
- package/lib/elements/blocks/job/job.builder.js +0 -4
- package/lib/elements/blocks/machine/machine.builder.d.ts +5 -14
- package/lib/elements/blocks/machine/machine.builder.js +2 -2
- package/lib/elements/blocks/queue/queue.builder.d.ts +6 -15
- package/lib/elements/blocks/queue/queue.builder.js +2 -2
- package/lib/elements/edge/externals/externals.builder.d.ts +2 -0
- package/lib/elements/edge/externals/externals.builder.js +6 -1
- package/lib/elements/edge/externals/externals.schema.d.ts +2 -1
- package/lib/elements/edge/externals/externals.schema.js +3 -1
- package/lib/elements/entities/bucket/adapters/memory.nql.js +1 -1
- package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -4
- package/lib/elements/entities/bucket/bucket.js +7 -16
- package/lib/elements/entities/bucket/bucket.schema.d.ts +2 -1
- package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +7 -5
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -1
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +1 -1
- package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +1 -1
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +4 -4
- package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +45 -9
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +5 -6
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +64 -21
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +88 -55
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +22 -30
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +13 -10
- package/lib/elements/entities/bucket/query/nql_compiler.js +46 -21
- package/lib/elements/entities/bucket/view/bucket_view.builder.js +1 -1
- package/lib/elements/entities/bucket/view/bucket_view.d.ts +19 -0
- package/lib/elements/entities/bucket/view/bucket_view.js +230 -108
- package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +5 -10
- package/lib/elements/entities/bucket/view/bucket_view.schema.js +3 -5
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +16 -12
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +55 -40
- package/lib/elements/entities/message/message.builder.d.ts +1 -11
- package/lib/elements/entities/message/message.builder.js +2 -2
- package/lib/elements/entities/message/message.infer.d.ts +6 -30
- package/lib/elements/entities/message/message.schema.js +2 -2
- package/lib/elements/entities/message/message_parser.d.ts +0 -1
- package/lib/elements/entities/message/message_parser.js +1 -68
- package/lib/elements/entities/message/template/message_template.builder.js +1 -1
- package/lib/elements/entities/message/template/message_template.schema.d.ts +11 -6
- package/lib/elements/entities/message/template/message_template.schema.js +29 -6
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +50 -203
- package/lib/elements/entities/message/template/message_template_field.builder.js +74 -74
- package/lib/elements/entities/message/template/message_template_parser.d.ts +2 -2
- package/lib/elements/entities/message/template/message_template_parser.js +137 -71
- package/lib/engine/apps/inline.app.js +1 -0
- package/lib/engine/data/error.d.ts +12 -11
- package/lib/engine/data/error.js +7 -7
- package/lib/engine/data/trash.js +7 -7
- package/lib/engine/data/tree.d.ts +3 -0
- package/lib/engine/data/tree.js +36 -0
- package/lib/engine/util/parse.d.ts +36 -28
- package/lib/engine/util/parse.js +53 -43
- package/lib/engine/util/type.d.ts +3 -0
- package/package.json +1 -1
- package/tools/joaquin/bucket.d.ts +9 -0
- package/tools/joaquin/bucket.js +49 -0
- package/tools/joaquin/message.d.ts +2 -1
- package/tools/joaquin/message.js +9 -2
- package/tools/joaquin/mock.d.ts +1 -0
- package/tools/joaquin/mock.js +13 -5
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -16,17 +16,7 @@ export declare class MessageBuilder<Space extends $Space, Module extends $Module
|
|
|
16
16
|
private _template;
|
|
17
17
|
constructor(module: string, name: string);
|
|
18
18
|
as(alias: string): this;
|
|
19
|
-
template<Def extends MessageTemplateDef<Space, Module, Message['name']>>($: Def): MessageBuilder<Space, Module, $MessageInfer<Message["name"], Def, ReturnType<Def>, import("./message.infer").$MessageInputInfer<ReturnType<Def
|
|
20
|
-
path: `${K & string}${keyof I & string}`;
|
|
21
|
-
data: I[keyof I];
|
|
22
|
-
opt: Opt[0];
|
|
23
|
-
nul: Nul[0];
|
|
24
|
-
} : never; } : never>, import("./message.infer").$MessageOutputInfer<ReturnType<Def>, ReturnType<Def> extends infer T_1 ? { [K_1 in keyof T_1]: ReturnType<Def>[K_1] extends import("./template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
25
|
-
path: `${K_1 & string}${keyof O & string}`;
|
|
26
|
-
data: O[keyof O];
|
|
27
|
-
opt: Opt_1[1];
|
|
28
|
-
nul: Nul_1[1];
|
|
29
|
-
} : never; } : never>>>;
|
|
19
|
+
template<Def extends MessageTemplateDef<Space, Module, Message['name']>>($: Def): MessageBuilder<Space, Module, $MessageInfer<Message["name"], Def, ReturnType<Def>, import("./message.infer").$MessageInputInfer<ReturnType<Def>>, import("./message.infer").$MessageOutputInfer<ReturnType<Def>>>>;
|
|
30
20
|
static build(node: MessageBuilderNode, tree: ModuleTree, module: $Module): $Message;
|
|
31
21
|
static buildInlines(node: ResolvedBuilderNode, tree: ModuleTree, module: $Module): Record<string, $Message>;
|
|
32
22
|
}
|
|
@@ -21,8 +21,8 @@ class MessageBuilder {
|
|
|
21
21
|
return this;
|
|
22
22
|
}
|
|
23
23
|
template($) {
|
|
24
|
-
const
|
|
25
|
-
const fields = $(
|
|
24
|
+
const factory = new message_template_field_builder_1.MessageTemplateFieldFactory(this.module);
|
|
25
|
+
const fields = $(factory);
|
|
26
26
|
this._template.fields(fields);
|
|
27
27
|
return this;
|
|
28
28
|
}
|
|
@@ -2,39 +2,15 @@ import { MessageTemplateFieldBuilder, MessageTemplateFieldBuilders } from './tem
|
|
|
2
2
|
import { MessageTemplateDef } from './template/message_template.builder';
|
|
3
3
|
import { $Module } from "../../../schema";
|
|
4
4
|
import { $Message } from './message.schema';
|
|
5
|
-
export type $MessageInputInfer<
|
|
6
|
-
|
|
7
|
-
data: any;
|
|
8
|
-
opt: any;
|
|
9
|
-
nul: any;
|
|
10
|
-
}> = {
|
|
11
|
-
[K in keyof Builder]: Builder[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt, infer Nul> ? {
|
|
12
|
-
path: `${K & string}${keyof I & string}`;
|
|
13
|
-
data: I[keyof I];
|
|
14
|
-
opt: Opt[0];
|
|
15
|
-
nul: Nul[0];
|
|
16
|
-
} : never;
|
|
17
|
-
}> = {
|
|
18
|
-
[K in keyof Fields as Fields[K]['opt'] extends never ? Fields[K]['path'] : never]: Fields[K]['data'] | Fields[K]['nul'];
|
|
5
|
+
export type $MessageInputInfer<Fields extends MessageTemplateFieldBuilders> = {
|
|
6
|
+
[K in keyof Fields as Fields[K]['#optional'][0] extends true ? never : `${K & string}${Fields[K]['#input_suffix']}`]: Fields[K]['#input'];
|
|
19
7
|
} & {
|
|
20
|
-
[K in keyof Fields as Fields[K]['
|
|
8
|
+
[K in keyof Fields as Fields[K]['#optional'][0] extends true ? `${K & string}${Fields[K]['#input_suffix']}` : never]?: Fields[K]['#input'];
|
|
21
9
|
};
|
|
22
|
-
export type $MessageOutputInfer<
|
|
23
|
-
|
|
24
|
-
data: any;
|
|
25
|
-
opt: any;
|
|
26
|
-
nul: any;
|
|
27
|
-
}> = {
|
|
28
|
-
[K in keyof Builder]: Builder[K] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt, infer Nul> ? {
|
|
29
|
-
path: `${K & string}${keyof O & string}`;
|
|
30
|
-
data: O[keyof O];
|
|
31
|
-
opt: Opt[1];
|
|
32
|
-
nul: Nul[1];
|
|
33
|
-
} : never;
|
|
34
|
-
}> = {
|
|
35
|
-
[K in keyof Fields as Fields[K]['opt'] extends never ? Fields[K]['path'] : never]: Fields[K]['data'] | Fields[K]['nul'];
|
|
10
|
+
export type $MessageOutputInfer<Fields extends MessageTemplateFieldBuilders> = {
|
|
11
|
+
[K in keyof Fields as Fields[K]['#optional'][1] extends true ? never : K]: Fields[K]['#output'];
|
|
36
12
|
} & {
|
|
37
|
-
[K in keyof Fields as Fields[K]['
|
|
13
|
+
[K in keyof Fields as Fields[K]['#optional'][1] extends true ? K : never]?: Fields[K]['#output'];
|
|
38
14
|
};
|
|
39
15
|
export interface $MessageInfer<Name extends string, Def extends MessageTemplateDef<any, any, any>, Builders extends MessageTemplateFieldBuilders = ReturnType<Def>, Raw = $MessageInputInfer<Builders>, Parsed = $MessageOutputInfer<Builders>> extends $Message {
|
|
40
16
|
name: Name;
|
|
@@ -25,7 +25,7 @@ class $Message {
|
|
|
25
25
|
if (field.type === 'id') {
|
|
26
26
|
str += `(${field.meta.id.bucket.refName})`;
|
|
27
27
|
}
|
|
28
|
-
if (field.type === 'enum') {
|
|
28
|
+
else if (field.type === 'enum') {
|
|
29
29
|
const options = field.meta.enum.options;
|
|
30
30
|
if (typeof options === 'object') {
|
|
31
31
|
str += `(${Object.keys(options)})`;
|
|
@@ -34,7 +34,7 @@ class $Message {
|
|
|
34
34
|
str += `(${options})`;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
if (field.
|
|
37
|
+
else if (field.type === 'list') {
|
|
38
38
|
str += '[]';
|
|
39
39
|
}
|
|
40
40
|
str += '\n';
|
|
@@ -11,6 +11,5 @@ export declare class MessageParser<$ extends $Message> {
|
|
|
11
11
|
constructor(schema: $);
|
|
12
12
|
static parseWithTrxModule(trx: AnyTrxNode, raw: RawMessageInput<any, any>, sigKey?: string): Promise<any>;
|
|
13
13
|
parse(trx: AnyTrxNode, raw: $['#raw'], sigKey?: string): Promise<Message<$>>;
|
|
14
|
-
private sanitize;
|
|
15
14
|
}
|
|
16
15
|
export type AnyMessageParser = MessageParser<$Message>;
|
|
@@ -28,78 +28,11 @@ class MessageParser {
|
|
|
28
28
|
}
|
|
29
29
|
return parser.parse(trx, raw, sigKey);
|
|
30
30
|
}
|
|
31
|
-
// TODO: OPTIMIZATION
|
|
32
|
-
// Parse everything that's static first, then move on to
|
|
33
|
-
// parsing ids etc.
|
|
34
31
|
async parse(trx, raw, sigKey) {
|
|
35
32
|
log_1.Log.debug('trx', trx.globalId, `${(0, log_1.scopeTag)('message', this.schema.name)} Parse${sigKey ? ' (signed)' : ''}`, raw);
|
|
36
|
-
const applyFieldRules = async (field, parent, value, path) => {
|
|
37
|
-
// Apply rules to the field
|
|
38
|
-
// If field is an array, the value passed to the rule is the array itself
|
|
39
|
-
for (const r in field.rules) {
|
|
40
|
-
const rule = field.rules[r];
|
|
41
|
-
const res = await rule({ field, value, path: path.join('.'), msg: parsed });
|
|
42
|
-
if (typeof res === 'object') {
|
|
43
|
-
parent[path.at(-1)] = res.set;
|
|
44
|
-
}
|
|
45
|
-
else if (res !== true) {
|
|
46
|
-
throw error_1.NesoiError.Message.RuleFailed({ rule, error: res });
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (!value)
|
|
50
|
-
return;
|
|
51
|
-
if (field.type === 'obj') {
|
|
52
|
-
if (field.array) {
|
|
53
|
-
for (let i = 0; i < value?.length; i++) {
|
|
54
|
-
await applyRules(field.children, value[i] || {}, [...path, i.toString()]);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
await applyRules(field.children, value || {}, path);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else if (field.type === 'dict') {
|
|
62
|
-
if (field.array) {
|
|
63
|
-
for (let i = 0; i < value?.length; i++) {
|
|
64
|
-
for (const k in value[i]) {
|
|
65
|
-
await applyFieldRules(field.children.__dict, value[i], value[i][k], [...path, i.toString(), k]);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
for (const k in value) {
|
|
71
|
-
await applyFieldRules(field.children.__dict, value, value[k], [...path, k]);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
const applyRules = async (fields, parent, path = []) => {
|
|
77
|
-
for (const f in fields) {
|
|
78
|
-
const field = fields[f];
|
|
79
|
-
const value = parent[field.name];
|
|
80
|
-
const _path = [...path, field.name];
|
|
81
|
-
await applyFieldRules(field, parent, value, _path);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
33
|
const fields = this.schema.template.fields;
|
|
85
|
-
const parsed =
|
|
86
|
-
for (const k in fields) {
|
|
87
|
-
const field = fields[k];
|
|
88
|
-
const key_raw = field.path_raw.split('.')[0];
|
|
89
|
-
const key_parsed = field.path_parsed.split('.')[0];
|
|
90
|
-
const value = raw[key_raw];
|
|
91
|
-
this.sanitize(value);
|
|
92
|
-
parsed[key_parsed] = await (0, message_template_parser_1.MessageTemplateFieldParser)(raw, trx, field, value);
|
|
93
|
-
}
|
|
94
|
-
await applyRules(this.schema.template.fields, parsed);
|
|
34
|
+
const parsed = await (0, message_template_parser_1.MessageTemplateFieldParser)(trx, fields, raw);
|
|
95
35
|
return message_1.Message.new(this.schema.name, parsed, sigKey);
|
|
96
36
|
}
|
|
97
|
-
sanitize(value) {
|
|
98
|
-
if (typeof value === 'function') {
|
|
99
|
-
throw error_1.NesoiError.Message.UnsanitaryValue({
|
|
100
|
-
details: 'Functions not allowed as message inputs.'
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
37
|
}
|
|
105
38
|
exports.MessageParser = MessageParser;
|
|
@@ -17,7 +17,7 @@ class MessageTemplateBuilder {
|
|
|
17
17
|
}
|
|
18
18
|
/// Build
|
|
19
19
|
static build(builder, tree, module) {
|
|
20
|
-
const fields = message_template_field_builder_1.MessageTemplateFieldBuilder.
|
|
20
|
+
const fields = message_template_field_builder_1.MessageTemplateFieldBuilder.buildMany(builder._fields, tree, module);
|
|
21
21
|
return new message_template_schema_1.$MessageTemplate(fields);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -6,6 +6,7 @@ export type $MessageTemplateRule = (def: {
|
|
|
6
6
|
path: string;
|
|
7
7
|
value: any;
|
|
8
8
|
msg: $Message['#raw'];
|
|
9
|
+
inject: Record<string, any>;
|
|
9
10
|
}) => {
|
|
10
11
|
set: any;
|
|
11
12
|
} | true | string | Promise<{
|
|
@@ -47,17 +48,15 @@ export declare class $MessageTemplateField {
|
|
|
47
48
|
/** A human name for the field */
|
|
48
49
|
alias: string;
|
|
49
50
|
/** The absolute path for reading the field value on the raw object */
|
|
50
|
-
|
|
51
|
+
pathRaw: string;
|
|
51
52
|
/** The absolute path for writing the field value on the parsed object */
|
|
52
|
-
|
|
53
|
-
array: boolean;
|
|
53
|
+
pathParsed: string;
|
|
54
54
|
required: boolean;
|
|
55
55
|
defaultValue: any;
|
|
56
56
|
nullable: boolean;
|
|
57
57
|
rules: $MessageTemplateRule[];
|
|
58
58
|
meta: $MessageTemplateFieldMeta;
|
|
59
59
|
children?: $MessageTemplateFields | undefined;
|
|
60
|
-
or?: $MessageTemplateField | undefined;
|
|
61
60
|
'#raw': unknown;
|
|
62
61
|
'#parsed': unknown;
|
|
63
62
|
$t: string;
|
|
@@ -72,9 +71,14 @@ export declare class $MessageTemplateField {
|
|
|
72
71
|
/** A human name for the field */
|
|
73
72
|
alias: string,
|
|
74
73
|
/** The absolute path for reading the field value on the raw object */
|
|
75
|
-
|
|
74
|
+
pathRaw: string,
|
|
76
75
|
/** The absolute path for writing the field value on the parsed object */
|
|
77
|
-
|
|
76
|
+
pathParsed: string, required: boolean, defaultValue: any, nullable: boolean, rules: $MessageTemplateRule[], meta: $MessageTemplateFieldMeta, children?: $MessageTemplateFields | undefined);
|
|
77
|
+
/**
|
|
78
|
+
* Warning: this does not clone the field's children or union.
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
static clone(schema: $MessageTemplateField): $MessageTemplateField;
|
|
78
82
|
}
|
|
79
83
|
export type $MessageTemplateFields = {
|
|
80
84
|
[x: string]: $MessageTemplateField;
|
|
@@ -88,4 +92,5 @@ export declare class $MessageTemplate {
|
|
|
88
92
|
$t: string;
|
|
89
93
|
constructor(fields?: $MessageTemplateFields);
|
|
90
94
|
static fieldsOfType(template: $MessageTemplate, type: $MessageTemplateFieldType): $MessageTemplateField[];
|
|
95
|
+
static forEachField(template: $MessageTemplate, predicate: (field: $MessageTemplateField, path: string) => void): void;
|
|
91
96
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.$MessageTemplate = exports.$MessageTemplateField = void 0;
|
|
4
|
+
const deep_1 = require("../../../../engine/util/deep");
|
|
4
5
|
/**
|
|
5
6
|
* @category Schemas
|
|
6
7
|
* @subcategory Entity
|
|
@@ -17,24 +18,29 @@ class $MessageTemplateField {
|
|
|
17
18
|
/** A human name for the field */
|
|
18
19
|
alias,
|
|
19
20
|
/** The absolute path for reading the field value on the raw object */
|
|
20
|
-
|
|
21
|
+
pathRaw,
|
|
21
22
|
/** The absolute path for writing the field value on the parsed object */
|
|
22
|
-
|
|
23
|
+
pathParsed, required, defaultValue, nullable, rules, meta, children) {
|
|
23
24
|
this.type = type;
|
|
24
25
|
this.name = name;
|
|
25
26
|
this.alias = alias;
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
this.array = array;
|
|
27
|
+
this.pathRaw = pathRaw;
|
|
28
|
+
this.pathParsed = pathParsed;
|
|
29
29
|
this.required = required;
|
|
30
30
|
this.defaultValue = defaultValue;
|
|
31
31
|
this.nullable = nullable;
|
|
32
32
|
this.rules = rules;
|
|
33
33
|
this.meta = meta;
|
|
34
34
|
this.children = children;
|
|
35
|
-
this.or = or;
|
|
36
35
|
this.$t = 'message.template.field';
|
|
37
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Warning: this does not clone the field's children or union.
|
|
39
|
+
* @returns
|
|
40
|
+
*/
|
|
41
|
+
static clone(schema) {
|
|
42
|
+
return new $MessageTemplateField(schema.type, schema.name, schema.alias, schema.pathRaw, schema.pathParsed, schema.required, schema.defaultValue, schema.nullable, [...schema.rules], deep_1.Deep.copy(schema.meta), undefined);
|
|
43
|
+
}
|
|
38
44
|
}
|
|
39
45
|
exports.$MessageTemplateField = $MessageTemplateField;
|
|
40
46
|
/**
|
|
@@ -63,5 +69,22 @@ class $MessageTemplate {
|
|
|
63
69
|
}
|
|
64
70
|
return fields;
|
|
65
71
|
}
|
|
72
|
+
static forEachField(template, predicate) {
|
|
73
|
+
let poll = Object.entries(template.fields).map(([path, field]) => ({ path, field }));
|
|
74
|
+
while (poll.length) {
|
|
75
|
+
const next = [];
|
|
76
|
+
for (const obj of poll) {
|
|
77
|
+
predicate(obj.field, obj.path);
|
|
78
|
+
if (obj.field.children) {
|
|
79
|
+
next.push(...Object.values(obj.field.children)
|
|
80
|
+
.map((field, i) => ({
|
|
81
|
+
field,
|
|
82
|
+
path: obj.path + '.' + (obj.field.type === 'union' ? i : field.name)
|
|
83
|
+
})));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
poll = next;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
66
89
|
}
|
|
67
90
|
exports.$MessageTemplate = $MessageTemplate;
|
|
@@ -4,7 +4,6 @@ import { $MessageInputInfer, $MessageOutputInfer, $MessageTemplateBuilderInfer }
|
|
|
4
4
|
import { NesoiDate } from "../../../../engine/data/date";
|
|
5
5
|
import { $Message } from '../message.schema';
|
|
6
6
|
import { ModuleTree } from "../../../../engine/tree";
|
|
7
|
-
import { NesoiObj } from "../../../../engine/data/obj";
|
|
8
7
|
import { MessageEnumpath } from '../../constants/constants.schema';
|
|
9
8
|
import { NesoiDecimal } from "../../../../engine/data/decimal";
|
|
10
9
|
import { NesoiDatetime } from "../../../../engine/data/datetime";
|
|
@@ -18,235 +17,83 @@ export declare class MessageTemplateFieldFactory<Space extends $Space, Module ex
|
|
|
18
17
|
private module;
|
|
19
18
|
private alias?;
|
|
20
19
|
constructor(module: string);
|
|
20
|
+
/**
|
|
21
|
+
* Specifies an alias for the field.
|
|
22
|
+
*/
|
|
21
23
|
as(alias: string): Omit<typeof this, "as">;
|
|
22
|
-
get any(): MessageTemplateFieldBuilder<Module, Message, {
|
|
23
|
-
|
|
24
|
-
},
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
'': string;
|
|
39
|
-
}, {
|
|
40
|
-
'': NesoiDate;
|
|
41
|
-
}, {}, [never, never], [never, never]>;
|
|
42
|
-
get datetime(): MessageTemplateFieldBuilder<Module, Message, {
|
|
43
|
-
'': string;
|
|
44
|
-
}, {
|
|
45
|
-
'': NesoiDatetime;
|
|
46
|
-
}, {}, [never, never], [never, never]>;
|
|
47
|
-
get duration(): MessageTemplateFieldBuilder<Module, Message, {
|
|
48
|
-
'': string;
|
|
49
|
-
}, {
|
|
50
|
-
'': NesoiDuration;
|
|
51
|
-
}, {}, [never, never], [never, never]>;
|
|
52
|
-
decimal(config?: $MessageTemplateFieldMeta['decimal']): MessageTemplateFieldBuilder<Module, Message, {
|
|
53
|
-
'': string;
|
|
54
|
-
}, {
|
|
55
|
-
'': NesoiDecimal;
|
|
56
|
-
}, {}, [never, never], [never, never]>;
|
|
57
|
-
enum<Enumpaths extends MessageEnumpath<Module, Module['messages'][MsgName], Space['modules']>, Options extends (keyof Enumpaths & string) | readonly string[] | Record<string, any>>(options: Options): MessageTemplateFieldBuilder<Module, Message, {
|
|
58
|
-
'': (Options extends string ? keyof Enumpaths[Options & keyof Enumpaths]["options" & keyof Enumpaths[Options & keyof Enumpaths]] : Options extends (infer X)[] | readonly (infer X)[] ? X : keyof Options) & string;
|
|
59
|
-
}, {
|
|
60
|
-
'': (Options extends string ? keyof Enumpaths[Options & keyof Enumpaths]["options" & keyof Enumpaths[Options & keyof Enumpaths]] : Options extends (infer X)[] | readonly (infer X)[] ? X : keyof Options) & string;
|
|
61
|
-
}, {}, [never, never], [never, never]>;
|
|
62
|
-
file(config?: $MessageTemplateFieldMeta['file']): MessageTemplateFieldBuilder<Module, Message, {
|
|
63
|
-
'': NesoiFile;
|
|
64
|
-
}, {
|
|
65
|
-
'': NesoiFile;
|
|
66
|
-
}, {}, [never, never], [never, never]>;
|
|
67
|
-
get float(): MessageTemplateFieldBuilder<Module, Message, {
|
|
68
|
-
'': number;
|
|
69
|
-
}, {
|
|
70
|
-
'': number;
|
|
71
|
-
}, {}, [never, never], [never, never]>;
|
|
72
|
-
id<Name extends BucketName<Module>, View extends ViewName<Module['buckets'][Name]> | undefined>(bucket: Name, view?: View): MessageTemplateFieldBuilder<Module, Message, {
|
|
73
|
-
_id: (Module["buckets"][Name]["#data"] & NesoiObj)["id"];
|
|
74
|
-
}, {
|
|
75
|
-
'': undefined extends View ? Module["buckets"][Name]["#data"] : Module["buckets"][Name]["views"][NonNullable<View>]["#data"];
|
|
76
|
-
}, {}, [never, never], [never, never]>;
|
|
77
|
-
get int(): MessageTemplateFieldBuilder<Module, Message, {
|
|
78
|
-
'': number;
|
|
79
|
-
}, {
|
|
80
|
-
'': number;
|
|
81
|
-
}, {}, [never, never], [never, never]>;
|
|
82
|
-
get string(): MessageTemplateFieldBuilder<Module, Message, {
|
|
83
|
-
'': string;
|
|
84
|
-
}, {
|
|
85
|
-
'': string;
|
|
86
|
-
}, {}, [never, never], [never, never]>;
|
|
87
|
-
get string_or_number(): MessageTemplateFieldBuilder<Module, Message, {
|
|
88
|
-
'': string | number;
|
|
89
|
-
}, {
|
|
90
|
-
'': string | number;
|
|
91
|
-
}, {}, [never, never], [never, never]>;
|
|
92
|
-
obj<Builders extends MessageTemplateFieldBuilders>(children: Builders): MessageTemplateFieldBuilder<Module, Message, {
|
|
93
|
-
'': $MessageInputInfer<Builders>;
|
|
94
|
-
}, {
|
|
95
|
-
'': $MessageOutputInfer<Builders>;
|
|
96
|
-
}, Builders, [never, never], [never, never]>;
|
|
97
|
-
dict<Builder extends MessageTemplateFieldBuilder<Module, Message, any, any, any>>(item: Builder): MessageTemplateFieldBuilder<Module, Message, {
|
|
98
|
-
'': Record<string, Builder extends MessageTemplateFieldBuilder<any, any, infer X, any, any, [never, never], [never, never]> ? X[keyof X] : never>;
|
|
99
|
-
}, {
|
|
100
|
-
'': Record<string, Builder extends MessageTemplateFieldBuilder<any, any, any, infer X_1, any, [never, never], [never, never]> ? X_1[keyof X_1] : never>;
|
|
101
|
-
}, {
|
|
24
|
+
get any(): MessageTemplateFieldBuilder<Module, Message, any, any, {}, [false, false], "">;
|
|
25
|
+
ts<T = any>(): MessageTemplateFieldBuilder<Module, Message, T, T, {}, [false, false], "">;
|
|
26
|
+
get boolean(): MessageTemplateFieldBuilder<Module, Message, boolean, boolean, {}, [false, false], "">;
|
|
27
|
+
get date(): MessageTemplateFieldBuilder<Module, Message, string, NesoiDate, {}, [false, false], "">;
|
|
28
|
+
get datetime(): MessageTemplateFieldBuilder<Module, Message, string, NesoiDatetime, {}, [false, false], "">;
|
|
29
|
+
get duration(): MessageTemplateFieldBuilder<Module, Message, string, NesoiDuration, {}, [false, false], "">;
|
|
30
|
+
decimal(config?: $MessageTemplateFieldMeta['decimal']): MessageTemplateFieldBuilder<Module, Message, string, NesoiDecimal, {}, [false, false], "">;
|
|
31
|
+
enum<Enumpaths extends MessageEnumpath<Module, Module['messages'][MsgName], Space['modules']>, Options extends (keyof Enumpaths & string) | readonly string[] | Record<string, any>>(options: Options): MessageTemplateFieldBuilder<Module, Message, (Options extends string ? keyof Enumpaths[Options & keyof Enumpaths]["options" & keyof Enumpaths[Options & keyof Enumpaths]] : Options extends (infer X)[] | readonly (infer X)[] ? X : keyof Options) & string, (Options extends string ? keyof Enumpaths[Options & keyof Enumpaths]["options" & keyof Enumpaths[Options & keyof Enumpaths]] : Options extends (infer X)[] | readonly (infer X)[] ? X : keyof Options) & string, {}, [false, false], "">;
|
|
32
|
+
file(config?: $MessageTemplateFieldMeta['file']): MessageTemplateFieldBuilder<Module, Message, NesoiFile, NesoiFile, {}, [false, false], "">;
|
|
33
|
+
get float(): MessageTemplateFieldBuilder<Module, Message, number, number, {}, [false, false], "">;
|
|
34
|
+
id<Name extends BucketName<Module>, View extends ViewName<Module['buckets'][Name]> | undefined>(bucket: Name, view?: View): MessageTemplateFieldBuilder<Module, Message, Module["buckets"][Name]["#data"]["id"], undefined extends View ? Module["buckets"][Name]["#data"] : Module["buckets"][Name]["views"][NonNullable<View>]["#data"], {}, [false, false], "_id">;
|
|
35
|
+
get int(): MessageTemplateFieldBuilder<Module, Message, number, number, {}, [false, false], "">;
|
|
36
|
+
get string(): MessageTemplateFieldBuilder<Module, Message, string, string, {}, [false, false], "">;
|
|
37
|
+
get string_or_number(): MessageTemplateFieldBuilder<Module, Message, string | number, string | number, {}, [false, false], "">;
|
|
38
|
+
obj<Builders extends MessageTemplateFieldBuilders>(children: Builders): MessageTemplateFieldBuilder<Module, Message, $MessageInputInfer<Builders>, $MessageOutputInfer<Builders>, Builders, [false, false], "">;
|
|
39
|
+
dict<Builder extends MessageTemplateFieldBuilder<Module, Message, any, any, any, any, any>>(item: Builder): MessageTemplateFieldBuilder<Module, Message, Record<string, Builder["#input"]>, Record<string, Builder["#output"]>, {
|
|
102
40
|
__dict: Builder;
|
|
103
|
-
}, [
|
|
104
|
-
|
|
105
|
-
'':
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
opt: Opt[0];
|
|
116
|
-
nul: Nul[0];
|
|
117
|
-
} : never; }[K_1]["opt"] extends never ? { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
118
|
-
path: `${K & string}${keyof I & string}`;
|
|
119
|
-
data: I[keyof I];
|
|
120
|
-
opt: Opt[0];
|
|
121
|
-
nul: Nul[0];
|
|
122
|
-
} : never; }[K_1]["path"] : never]: { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
123
|
-
path: `${K & string}${keyof I & string}`;
|
|
124
|
-
data: I[keyof I];
|
|
125
|
-
opt: Opt[0];
|
|
126
|
-
nul: Nul[0];
|
|
127
|
-
} : never; }[K_1]["data"] | { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
128
|
-
path: `${K & string}${keyof I & string}`;
|
|
129
|
-
data: I[keyof I];
|
|
130
|
-
opt: Opt[0];
|
|
131
|
-
nul: Nul[0];
|
|
132
|
-
} : never; }[K_1]["nul"]; } & { [K_2 in keyof { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
133
|
-
path: `${K & string}${keyof I & string}`;
|
|
134
|
-
data: I[keyof I];
|
|
135
|
-
opt: Opt[0];
|
|
136
|
-
nul: Nul[0];
|
|
137
|
-
} : never; } as { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
138
|
-
path: `${K & string}${keyof I & string}`;
|
|
139
|
-
data: I[keyof I];
|
|
140
|
-
opt: Opt[0];
|
|
141
|
-
nul: Nul[0];
|
|
142
|
-
} : never; }[K_2]["opt"] extends never ? never : { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
143
|
-
path: `${K & string}${keyof I & string}`;
|
|
144
|
-
data: I[keyof I];
|
|
145
|
-
opt: Opt[0];
|
|
146
|
-
nul: Nul[0];
|
|
147
|
-
} : never; }[K_2]["path"]]?: { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
148
|
-
path: `${K & string}${keyof I & string}`;
|
|
149
|
-
data: I[keyof I];
|
|
150
|
-
opt: Opt[0];
|
|
151
|
-
nul: Nul[0];
|
|
152
|
-
} : never; }[K_2]["data"] | { [K in keyof Builders]: Builders[K] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
|
|
153
|
-
path: `${K & string}${keyof I & string}`;
|
|
154
|
-
data: I[keyof I];
|
|
155
|
-
opt: Opt[0];
|
|
156
|
-
nul: Nul[0];
|
|
157
|
-
} : never; }[K_2]["nul"] | undefined; };
|
|
158
|
-
}, {
|
|
159
|
-
'': Omit<Message["#parsed"], "$"> & {
|
|
160
|
-
$: any;
|
|
161
|
-
} & { [K_4 in keyof { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
162
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
163
|
-
data: O[keyof O];
|
|
164
|
-
opt: Opt_1[1];
|
|
165
|
-
nul: Nul_1[1];
|
|
166
|
-
} : never; } as { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
167
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
168
|
-
data: O[keyof O];
|
|
169
|
-
opt: Opt_1[1];
|
|
170
|
-
nul: Nul_1[1];
|
|
171
|
-
} : never; }[K_4]["opt"] extends never ? { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
172
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
173
|
-
data: O[keyof O];
|
|
174
|
-
opt: Opt_1[1];
|
|
175
|
-
nul: Nul_1[1];
|
|
176
|
-
} : never; }[K_4]["path"] : never]: { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
177
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
178
|
-
data: O[keyof O];
|
|
179
|
-
opt: Opt_1[1];
|
|
180
|
-
nul: Nul_1[1];
|
|
181
|
-
} : never; }[K_4]["data"] | { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
182
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
183
|
-
data: O[keyof O];
|
|
184
|
-
opt: Opt_1[1];
|
|
185
|
-
nul: Nul_1[1];
|
|
186
|
-
} : never; }[K_4]["nul"]; } & { [K_5 in keyof { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
187
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
188
|
-
data: O[keyof O];
|
|
189
|
-
opt: Opt_1[1];
|
|
190
|
-
nul: Nul_1[1];
|
|
191
|
-
} : never; } as { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
192
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
193
|
-
data: O[keyof O];
|
|
194
|
-
opt: Opt_1[1];
|
|
195
|
-
nul: Nul_1[1];
|
|
196
|
-
} : never; }[K_5]["opt"] extends never ? never : { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
197
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
198
|
-
data: O[keyof O];
|
|
199
|
-
opt: Opt_1[1];
|
|
200
|
-
nul: Nul_1[1];
|
|
201
|
-
} : never; }[K_5]["path"]]?: { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
202
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
203
|
-
data: O[keyof O];
|
|
204
|
-
opt: Opt_1[1];
|
|
205
|
-
nul: Nul_1[1];
|
|
206
|
-
} : never; }[K_5]["data"] | { [K_3 in keyof Builders]: Builders[K_3] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
|
|
207
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
208
|
-
data: O[keyof O];
|
|
209
|
-
opt: Opt_1[1];
|
|
210
|
-
nul: Nul_1[1];
|
|
211
|
-
} : never; }[K_5]["nul"] | undefined; };
|
|
212
|
-
}, {}, [never, never], [never, never]>;
|
|
41
|
+
}, [false, false], "">;
|
|
42
|
+
list<Builder extends MessageTemplateFieldBuilder<Module, Message, any, any, any, any, any>>(item: Builder): MessageTemplateFieldBuilder<Module, Message, Builder["#input"][], Builder["#output"][], {
|
|
43
|
+
'#': Builder;
|
|
44
|
+
}, [false, false], "">;
|
|
45
|
+
union<Builders extends AnyMessageTemplateFieldBuilder[]>(...children: Builders): MessageTemplateFieldBuilder<Module, Message, Builders[number]["#input"], Builders[number]["#output"], {
|
|
46
|
+
[x: number]: Builders[number];
|
|
47
|
+
}, [false, false], "">;
|
|
48
|
+
msg<MessageName extends keyof Module['messages'], Message extends Module['messages'][MessageName], Builders extends MessageTemplateFieldBuilders>(msg: MessageName, extra?: Builders): MessageTemplateFieldBuilder<Module, Message, Omit<Message["#raw"], "$"> & {
|
|
49
|
+
$: any;
|
|
50
|
+
} & { [K in keyof Builders as Builders[K]["#optional"][0] extends true ? never : `${K & string}${Builders[K]["#input_suffix"]}`]: Builders[K]["#input"]; } & { [K_1 in keyof Builders as Builders[K_1]["#optional"][0] extends true ? `${K_1 & string}${Builders[K_1]["#input_suffix"]}` : never]?: Builders[K_1]["#input"] | undefined; }, Omit<Message["#parsed"], "$"> & {
|
|
51
|
+
$: any;
|
|
52
|
+
} & { [K_2 in keyof Builders as Builders[K_2]["#optional"][1] extends true ? never : K_2]: Builders[K_2]["#output"]; } & { [K_3 in keyof Builders as Builders[K_3]["#optional"][1] extends true ? K_3 : never]?: Builders[K_3]["#output"] | undefined; }, {}, [false, false], "">;
|
|
213
53
|
extend<MsgName extends keyof Module['messages'], Builders extends MessageTemplateFieldBuilders>(name: MsgName, fields: Builders): $MessageTemplateBuilderInfer<Module, Module["messages"][MsgName], Module["messages"][MsgName]["#raw"], Module["messages"][MsgName]["#parsed"]> & Builders;
|
|
214
54
|
}
|
|
215
55
|
/**
|
|
216
56
|
* @category Builders
|
|
217
57
|
* @subcategory Entity
|
|
218
58
|
* */
|
|
219
|
-
export declare class MessageTemplateFieldBuilder<Module extends $Module, Message extends $Message,
|
|
220
|
-
Nullable extends [null | never, null | never] = [never, never]> {
|
|
59
|
+
export declare class MessageTemplateFieldBuilder<Module extends $Module, Message extends $Message, Input, Output, Children extends MessageTemplateFieldBuilders, Optional = [false, false], InputSuffix extends string = ''> {
|
|
221
60
|
private type;
|
|
222
61
|
private value;
|
|
223
62
|
private alias?;
|
|
224
63
|
private children?;
|
|
225
|
-
|
|
64
|
+
'#input': Input;
|
|
65
|
+
'#input_suffix': InputSuffix;
|
|
66
|
+
'#output': Output;
|
|
67
|
+
'#optional': Optional;
|
|
226
68
|
private _required;
|
|
227
69
|
private _defaultValue?;
|
|
228
70
|
private _nullable;
|
|
229
71
|
private _rules;
|
|
230
|
-
private _or?;
|
|
231
72
|
constructor(type: $MessageTemplateFieldType, value: $MessageTemplateFieldMeta, alias?: string | undefined, children?: Children | undefined);
|
|
232
73
|
as(alias: string): this;
|
|
233
|
-
get optional(): MessageTemplateFieldBuilder<Module, Message,
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
74
|
+
get optional(): MessageTemplateFieldBuilder<Module, Message, Input | undefined, Output | undefined, Children, [
|
|
75
|
+
true,
|
|
76
|
+
true
|
|
77
|
+
], InputSuffix>;
|
|
78
|
+
default(value: Output): MessageTemplateFieldBuilder<Module, Message, Input | undefined, Output, Children, [
|
|
79
|
+
true,
|
|
80
|
+
(Optional & [boolean, boolean])[1]
|
|
81
|
+
], InputSuffix>;
|
|
82
|
+
get nullable(): MessageTemplateFieldBuilder<Module, Message, Input | null, Output | null, Children, Optional, InputSuffix>;
|
|
83
|
+
rule(rule: MessageTemplateRuleDef<Output, Message['#raw']>): this;
|
|
239
84
|
static build(builder: AnyMessageTemplateFieldBuilder, name: string, tree: ModuleTree, module: $Module, basePathRaw: string, basePathParsed: string): $MessageTemplateField;
|
|
240
|
-
static
|
|
85
|
+
static buildMany(fields: MessageTemplateFieldBuilders, tree: ModuleTree, module: $Module, basePathRaw?: string, basePathParsed?: string, name?: string, key?: string): $MessageTemplateFields;
|
|
241
86
|
}
|
|
242
87
|
export type MessageTemplateFieldBuilders = {
|
|
243
88
|
[x: string]: AnyMessageTemplateFieldBuilder;
|
|
244
89
|
};
|
|
245
|
-
export type AnyMessageTemplateFieldBuilder = MessageTemplateFieldBuilder<any, any, any, any, any>;
|
|
90
|
+
export type AnyMessageTemplateFieldBuilder = MessageTemplateFieldBuilder<any, any, any, any, any, any, any>;
|
|
246
91
|
export type MessageTemplateRuleDef<I, Msg> = (def: {
|
|
247
92
|
field: $MessageTemplateField;
|
|
93
|
+
path: string;
|
|
248
94
|
value: I;
|
|
249
95
|
msg: Msg;
|
|
96
|
+
inject: Record<string, any>;
|
|
250
97
|
}) => {
|
|
251
98
|
set: I;
|
|
252
99
|
} | true | string | Promise<{
|