nesoi 3.0.21 → 3.1.1
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/2_build_typescript_stage.js +1 -0
- 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 +3 -2
- package/lib/compiler/elements/bucket.element.js +86 -128
- package/lib/compiler/elements/element.js +4 -2
- package/lib/compiler/elements/externals.element.js +3 -0
- package/lib/compiler/elements/machine.element.js +2 -2
- package/lib/compiler/elements/message.element.js +35 -57
- package/lib/compiler/elements/queue.element.js +1 -1
- package/lib/compiler/helpers/dump_helpers.d.ts +5 -3
- package/lib/compiler/helpers/dump_helpers.js +43 -26
- 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/bucket_adapter.d.ts +1 -1
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +7 -0
- package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +46 -36
- 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 +42 -43
- package/lib/elements/entities/bucket/bucket.schema.d.ts +2 -1
- package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +1 -4
- 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 +41 -9
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -6
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +184 -21
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +89 -56
- 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.infer.d.ts +6 -30
- package/lib/elements/entities/message/message.schema.js +2 -2
- package/lib/elements/entities/message/template/message_template.builder.js +1 -1
- package/lib/elements/entities/message/template/message_template.schema.d.ts +10 -15
- package/lib/elements/entities/message/template/message_template.schema.js +29 -12
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +45 -209
- package/lib/elements/entities/message/template/message_template_field.builder.js +69 -85
- package/lib/elements/entities/message/template/message_template_parser.js +52 -64
- package/lib/engine/apps/inline.app.js +1 -0
- 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/space.js +1 -1
- package/lib/engine/transaction/trx_engine.config.d.ts +3 -2
- package/lib/engine/transaction/trx_engine.d.ts +9 -1
- package/lib/engine/transaction/trx_engine.js +52 -9
- package/lib/engine/util/deep.js +4 -0
- package/lib/engine/util/parse.d.ts +22 -14
- package/lib/engine/util/parse.js +20 -5
- 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
|
@@ -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";
|
|
@@ -20,238 +19,75 @@ export declare class MessageTemplateFieldFactory<Space extends $Space, Module ex
|
|
|
20
19
|
constructor(module: string);
|
|
21
20
|
/**
|
|
22
21
|
* Specifies an alias for the field.
|
|
23
|
-
* - If this field is a union (.or), this alias is used when
|
|
24
|
-
* referring to the union and it's first option.
|
|
25
|
-
* - You can specify a different alias for the first options
|
|
26
|
-
* by also using the .as() after the type
|
|
27
22
|
*/
|
|
28
23
|
as(alias: string): Omit<typeof this, "as">;
|
|
29
|
-
get any(): MessageTemplateFieldBuilder<Module, Message, {
|
|
30
|
-
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
'': string;
|
|
46
|
-
}, {
|
|
47
|
-
'': NesoiDate;
|
|
48
|
-
}, {}, [never, never], [never, never]>;
|
|
49
|
-
get datetime(): MessageTemplateFieldBuilder<Module, Message, {
|
|
50
|
-
'': string;
|
|
51
|
-
}, {
|
|
52
|
-
'': NesoiDatetime;
|
|
53
|
-
}, {}, [never, never], [never, never]>;
|
|
54
|
-
get duration(): MessageTemplateFieldBuilder<Module, Message, {
|
|
55
|
-
'': string;
|
|
56
|
-
}, {
|
|
57
|
-
'': NesoiDuration;
|
|
58
|
-
}, {}, [never, never], [never, never]>;
|
|
59
|
-
decimal(config?: $MessageTemplateFieldMeta['decimal']): MessageTemplateFieldBuilder<Module, Message, {
|
|
60
|
-
'': string;
|
|
61
|
-
}, {
|
|
62
|
-
'': NesoiDecimal;
|
|
63
|
-
}, {}, [never, never], [never, never]>;
|
|
64
|
-
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, {
|
|
65
|
-
'': (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;
|
|
66
|
-
}, {
|
|
67
|
-
'': (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;
|
|
68
|
-
}, {}, [never, never], [never, never]>;
|
|
69
|
-
file(config?: $MessageTemplateFieldMeta['file']): MessageTemplateFieldBuilder<Module, Message, {
|
|
70
|
-
'': NesoiFile;
|
|
71
|
-
}, {
|
|
72
|
-
'': NesoiFile;
|
|
73
|
-
}, {}, [never, never], [never, never]>;
|
|
74
|
-
get float(): MessageTemplateFieldBuilder<Module, Message, {
|
|
75
|
-
'': number;
|
|
76
|
-
}, {
|
|
77
|
-
'': number;
|
|
78
|
-
}, {}, [never, never], [never, never]>;
|
|
79
|
-
id<Name extends BucketName<Module>, View extends ViewName<Module['buckets'][Name]> | undefined>(bucket: Name, view?: View): MessageTemplateFieldBuilder<Module, Message, {
|
|
80
|
-
_id: (Module["buckets"][Name]["#data"] & NesoiObj)["id"];
|
|
81
|
-
}, {
|
|
82
|
-
'': undefined extends View ? Module["buckets"][Name]["#data"] : Module["buckets"][Name]["views"][NonNullable<View>]["#data"];
|
|
83
|
-
}, {}, [never, never], [never, never]>;
|
|
84
|
-
get int(): MessageTemplateFieldBuilder<Module, Message, {
|
|
85
|
-
'': number;
|
|
86
|
-
}, {
|
|
87
|
-
'': number;
|
|
88
|
-
}, {}, [never, never], [never, never]>;
|
|
89
|
-
get string(): MessageTemplateFieldBuilder<Module, Message, {
|
|
90
|
-
'': string;
|
|
91
|
-
}, {
|
|
92
|
-
'': string;
|
|
93
|
-
}, {}, [never, never], [never, never]>;
|
|
94
|
-
get string_or_number(): MessageTemplateFieldBuilder<Module, Message, {
|
|
95
|
-
'': string | number;
|
|
96
|
-
}, {
|
|
97
|
-
'': string | number;
|
|
98
|
-
}, {}, [never, never], [never, never]>;
|
|
99
|
-
obj<Builders extends MessageTemplateFieldBuilders>(children: Builders): MessageTemplateFieldBuilder<Module, Message, {
|
|
100
|
-
'': $MessageInputInfer<Builders>;
|
|
101
|
-
}, {
|
|
102
|
-
'': $MessageOutputInfer<Builders>;
|
|
103
|
-
}, Builders, [never, never], [never, never]>;
|
|
104
|
-
dict<Builder extends MessageTemplateFieldBuilder<Module, Message, any, any, any>>(item: Builder): MessageTemplateFieldBuilder<Module, Message, {
|
|
105
|
-
'': Record<string, Builder extends MessageTemplateFieldBuilder<any, any, infer X, any, any, [never, never], [never, never]> ? X[keyof X] : never>;
|
|
106
|
-
}, {
|
|
107
|
-
'': Record<string, Builder extends MessageTemplateFieldBuilder<any, any, any, infer X_1, any, [never, never], [never, never]> ? X_1[keyof X_1] : never>;
|
|
108
|
-
}, {
|
|
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"]>, {
|
|
109
40
|
__dict: Builder;
|
|
110
|
-
}, [
|
|
111
|
-
|
|
112
|
-
'':
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
opt: Opt[0];
|
|
123
|
-
nul: Nul[0];
|
|
124
|
-
} : 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]> ? {
|
|
125
|
-
path: `${K & string}${keyof I & string}`;
|
|
126
|
-
data: I[keyof I];
|
|
127
|
-
opt: Opt[0];
|
|
128
|
-
nul: Nul[0];
|
|
129
|
-
} : 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]> ? {
|
|
130
|
-
path: `${K & string}${keyof I & string}`;
|
|
131
|
-
data: I[keyof I];
|
|
132
|
-
opt: Opt[0];
|
|
133
|
-
nul: Nul[0];
|
|
134
|
-
} : 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]> ? {
|
|
135
|
-
path: `${K & string}${keyof I & string}`;
|
|
136
|
-
data: I[keyof I];
|
|
137
|
-
opt: Opt[0];
|
|
138
|
-
nul: Nul[0];
|
|
139
|
-
} : 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]> ? {
|
|
140
|
-
path: `${K & string}${keyof I & string}`;
|
|
141
|
-
data: I[keyof I];
|
|
142
|
-
opt: Opt[0];
|
|
143
|
-
nul: Nul[0];
|
|
144
|
-
} : 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]> ? {
|
|
145
|
-
path: `${K & string}${keyof I & string}`;
|
|
146
|
-
data: I[keyof I];
|
|
147
|
-
opt: Opt[0];
|
|
148
|
-
nul: Nul[0];
|
|
149
|
-
} : 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]> ? {
|
|
150
|
-
path: `${K & string}${keyof I & string}`;
|
|
151
|
-
data: I[keyof I];
|
|
152
|
-
opt: Opt[0];
|
|
153
|
-
nul: Nul[0];
|
|
154
|
-
} : 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]> ? {
|
|
155
|
-
path: `${K & string}${keyof I & string}`;
|
|
156
|
-
data: I[keyof I];
|
|
157
|
-
opt: Opt[0];
|
|
158
|
-
nul: Nul[0];
|
|
159
|
-
} : 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]> ? {
|
|
160
|
-
path: `${K & string}${keyof I & string}`;
|
|
161
|
-
data: I[keyof I];
|
|
162
|
-
opt: Opt[0];
|
|
163
|
-
nul: Nul[0];
|
|
164
|
-
} : never; }[K_2]["nul"] | undefined; };
|
|
165
|
-
}, {
|
|
166
|
-
'': Omit<Message["#parsed"], "$"> & {
|
|
167
|
-
$: any;
|
|
168
|
-
} & { [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]> ? {
|
|
169
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
170
|
-
data: O[keyof O];
|
|
171
|
-
opt: Opt_1[1];
|
|
172
|
-
nul: Nul_1[1];
|
|
173
|
-
} : 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]> ? {
|
|
174
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
175
|
-
data: O[keyof O];
|
|
176
|
-
opt: Opt_1[1];
|
|
177
|
-
nul: Nul_1[1];
|
|
178
|
-
} : 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]> ? {
|
|
179
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
180
|
-
data: O[keyof O];
|
|
181
|
-
opt: Opt_1[1];
|
|
182
|
-
nul: Nul_1[1];
|
|
183
|
-
} : 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]> ? {
|
|
184
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
185
|
-
data: O[keyof O];
|
|
186
|
-
opt: Opt_1[1];
|
|
187
|
-
nul: Nul_1[1];
|
|
188
|
-
} : 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]> ? {
|
|
189
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
190
|
-
data: O[keyof O];
|
|
191
|
-
opt: Opt_1[1];
|
|
192
|
-
nul: Nul_1[1];
|
|
193
|
-
} : 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]> ? {
|
|
194
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
195
|
-
data: O[keyof O];
|
|
196
|
-
opt: Opt_1[1];
|
|
197
|
-
nul: Nul_1[1];
|
|
198
|
-
} : 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]> ? {
|
|
199
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
200
|
-
data: O[keyof O];
|
|
201
|
-
opt: Opt_1[1];
|
|
202
|
-
nul: Nul_1[1];
|
|
203
|
-
} : 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]> ? {
|
|
204
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
205
|
-
data: O[keyof O];
|
|
206
|
-
opt: Opt_1[1];
|
|
207
|
-
nul: Nul_1[1];
|
|
208
|
-
} : 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]> ? {
|
|
209
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
210
|
-
data: O[keyof O];
|
|
211
|
-
opt: Opt_1[1];
|
|
212
|
-
nul: Nul_1[1];
|
|
213
|
-
} : 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]> ? {
|
|
214
|
-
path: `${K_3 & string}${keyof O & string}`;
|
|
215
|
-
data: O[keyof O];
|
|
216
|
-
opt: Opt_1[1];
|
|
217
|
-
nul: Nul_1[1];
|
|
218
|
-
} : never; }[K_5]["nul"] | undefined; };
|
|
219
|
-
}, {}, [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], "">;
|
|
220
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;
|
|
221
54
|
}
|
|
222
55
|
/**
|
|
223
56
|
* @category Builders
|
|
224
57
|
* @subcategory Entity
|
|
225
58
|
* */
|
|
226
|
-
export declare class MessageTemplateFieldBuilder<Module extends $Module, Message extends $Message,
|
|
227
|
-
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 = ''> {
|
|
228
60
|
private type;
|
|
229
61
|
private value;
|
|
230
62
|
private alias?;
|
|
231
63
|
private children?;
|
|
232
|
-
|
|
64
|
+
'#input': Input;
|
|
65
|
+
'#input_suffix': InputSuffix;
|
|
66
|
+
'#output': Output;
|
|
67
|
+
'#optional': Optional;
|
|
233
68
|
private _required;
|
|
234
69
|
private _defaultValue?;
|
|
235
70
|
private _nullable;
|
|
236
71
|
private _rules;
|
|
237
|
-
private _arrayRules;
|
|
238
|
-
private _or?;
|
|
239
|
-
private preAlias?;
|
|
240
72
|
constructor(type: $MessageTemplateFieldType, value: $MessageTemplateFieldMeta, alias?: string | undefined, children?: Children | undefined);
|
|
241
73
|
as(alias: string): this;
|
|
242
|
-
get optional(): MessageTemplateFieldBuilder<Module, Message,
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
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;
|
|
248
84
|
static build(builder: AnyMessageTemplateFieldBuilder, name: string, tree: ModuleTree, module: $Module, basePathRaw: string, basePathParsed: string): $MessageTemplateField;
|
|
249
|
-
static
|
|
85
|
+
static buildMany(fields: MessageTemplateFieldBuilders, tree: ModuleTree, module: $Module, basePathRaw?: string, basePathParsed?: string, name?: string, key?: string): $MessageTemplateFields;
|
|
250
86
|
}
|
|
251
87
|
export type MessageTemplateFieldBuilders = {
|
|
252
88
|
[x: string]: AnyMessageTemplateFieldBuilder;
|
|
253
89
|
};
|
|
254
|
-
export type AnyMessageTemplateFieldBuilder = MessageTemplateFieldBuilder<any, any, any, any, any>;
|
|
90
|
+
export type AnyMessageTemplateFieldBuilder = MessageTemplateFieldBuilder<any, any, any, any, any, any, any>;
|
|
255
91
|
export type MessageTemplateRuleDef<I, Msg> = (def: {
|
|
256
92
|
field: $MessageTemplateField;
|
|
257
93
|
path: string;
|
|
@@ -14,10 +14,6 @@ class MessageTemplateFieldFactory {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Specifies an alias for the field.
|
|
17
|
-
* - If this field is a union (.or), this alias is used when
|
|
18
|
-
* referring to the union and it's first option.
|
|
19
|
-
* - You can specify a different alias for the first options
|
|
20
|
-
* by also using the .as() after the type
|
|
21
17
|
*/
|
|
22
18
|
as(alias) {
|
|
23
19
|
const chain = new MessageTemplateFieldFactory(this.module);
|
|
@@ -82,10 +78,15 @@ class MessageTemplateFieldFactory {
|
|
|
82
78
|
return new MessageTemplateFieldBuilder('obj', {}, this.alias, children);
|
|
83
79
|
}
|
|
84
80
|
dict(item) {
|
|
85
|
-
item = item.optional;
|
|
86
81
|
return new MessageTemplateFieldBuilder('dict', {}, this.alias, { __dict: item });
|
|
87
82
|
}
|
|
88
|
-
|
|
83
|
+
list(item) {
|
|
84
|
+
return new MessageTemplateFieldBuilder('list', {}, this.alias, { '#': item });
|
|
85
|
+
}
|
|
86
|
+
union(...children) {
|
|
87
|
+
return new MessageTemplateFieldBuilder('union', {}, this.alias, Object.fromEntries(children.map((c, i) => [i, c])));
|
|
88
|
+
}
|
|
89
|
+
msg(msg, extra = {}) {
|
|
89
90
|
// Module and tag are updated on build
|
|
90
91
|
const ref = new dependency_1.$Dependency(this.module, 'message', msg);
|
|
91
92
|
return new MessageTemplateFieldBuilder('msg', { msg: ref }, this.alias, extra);
|
|
@@ -109,13 +110,10 @@ class MessageTemplateFieldBuilder {
|
|
|
109
110
|
this.value = value;
|
|
110
111
|
this.alias = alias;
|
|
111
112
|
this.children = children;
|
|
112
|
-
this._array = false;
|
|
113
113
|
this._required = true;
|
|
114
114
|
this._defaultValue = undefined;
|
|
115
|
-
this._nullable =
|
|
115
|
+
this._nullable = false;
|
|
116
116
|
this._rules = [];
|
|
117
|
-
this._arrayRules = [];
|
|
118
|
-
this.preAlias = alias;
|
|
119
117
|
}
|
|
120
118
|
as(alias) {
|
|
121
119
|
this.alias = alias;
|
|
@@ -123,105 +121,91 @@ class MessageTemplateFieldBuilder {
|
|
|
123
121
|
}
|
|
124
122
|
get optional() {
|
|
125
123
|
this._required = false;
|
|
126
|
-
if (this._or) {
|
|
127
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
128
|
-
this._or.optional;
|
|
129
|
-
}
|
|
130
124
|
return this;
|
|
131
125
|
}
|
|
132
126
|
default(value) {
|
|
133
127
|
this._required = false;
|
|
134
128
|
this._defaultValue = value;
|
|
135
|
-
if (this._or) {
|
|
136
|
-
this._or.default(value);
|
|
137
|
-
}
|
|
138
129
|
return this;
|
|
139
130
|
}
|
|
140
131
|
get nullable() {
|
|
141
132
|
this._nullable = true;
|
|
142
|
-
if (this._or) {
|
|
143
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
144
|
-
this._or.nullable;
|
|
145
|
-
}
|
|
146
133
|
return this;
|
|
147
134
|
}
|
|
148
135
|
rule(rule) {
|
|
149
|
-
|
|
150
|
-
this._arrayRules.push(rule);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
this._rules.push(rule);
|
|
154
|
-
}
|
|
155
|
-
return this;
|
|
156
|
-
}
|
|
157
|
-
get array() {
|
|
158
|
-
this._array = true;
|
|
159
|
-
if (this._or) {
|
|
160
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
161
|
-
this._or.array;
|
|
162
|
-
}
|
|
163
|
-
return this;
|
|
164
|
-
}
|
|
165
|
-
or(def) {
|
|
166
|
-
this._or = def;
|
|
167
|
-
this._or.preAlias = this.preAlias;
|
|
168
|
-
this._or._array = this._array;
|
|
169
|
-
this._or._defaultValue = this._defaultValue;
|
|
170
|
-
this._or._nullable = this._nullable;
|
|
171
|
-
this._or._required = this._required;
|
|
172
|
-
this._or._arrayRules = this._arrayRules;
|
|
136
|
+
this._rules.push(rule);
|
|
173
137
|
return this;
|
|
174
138
|
}
|
|
175
139
|
// Build
|
|
176
140
|
static build(builder, name, tree, module, basePathRaw, basePathParsed) {
|
|
177
|
-
const
|
|
178
|
-
? this.build(builder._or, name, tree, module, basePathRaw, basePathParsed)
|
|
179
|
-
: undefined;
|
|
141
|
+
const pathRaw = basePathRaw + (builder.type === 'id' ? `${name}_id` : name);
|
|
180
142
|
const pathParsed = basePathParsed + name;
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (builder.value.id) {
|
|
143
|
+
const childrenBasePathRaw = pathRaw + '.';
|
|
144
|
+
const childrenBasePathParsed = pathParsed + '.';
|
|
145
|
+
let type = builder.type;
|
|
146
|
+
let children;
|
|
147
|
+
if (builder.type === 'id') {
|
|
187
148
|
const bucket = tree.getSchema(builder.value.id.bucket);
|
|
188
149
|
builder.value.id.type = bucket.model.fields.id.type;
|
|
189
150
|
}
|
|
190
|
-
|
|
151
|
+
// A .msg() parameter is an obj which takes fields from
|
|
152
|
+
// another message
|
|
153
|
+
else if (builder.type === 'msg') {
|
|
154
|
+
const dep = builder.value.msg;
|
|
155
|
+
if (dep.type !== 'message') {
|
|
156
|
+
throw error_1.NesoiError.Builder.Message.UnknownModuleMessage(dep.tag);
|
|
157
|
+
}
|
|
158
|
+
const $msg = tree.getSchema(dep);
|
|
159
|
+
if (!$msg) {
|
|
160
|
+
throw error_1.NesoiError.Builder.Message.UnknownModuleMessage(dep.tag);
|
|
161
|
+
}
|
|
162
|
+
if (dep.module !== module.name) {
|
|
163
|
+
if (!(dep.refName in module.externals.messages)) {
|
|
164
|
+
throw error_1.NesoiError.Builder.Message.UnknownModuleMessage(dep.tag);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const injectFields = (target, fields) => {
|
|
168
|
+
for (const key in fields) {
|
|
169
|
+
target[key] = message_template_schema_1.$MessageTemplateField.clone(fields[key]);
|
|
170
|
+
target[key].pathRaw = childrenBasePathRaw + target[key].pathRaw;
|
|
171
|
+
target[key].pathParsed = childrenBasePathParsed + target[key].pathParsed;
|
|
172
|
+
if (fields[key].children) {
|
|
173
|
+
target[key].children = {};
|
|
174
|
+
injectFields(target[key].children, fields[key].children);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
type = 'obj';
|
|
179
|
+
children = {};
|
|
180
|
+
injectFields(children, $msg.template.fields);
|
|
181
|
+
}
|
|
182
|
+
else if (builder.type === 'list') {
|
|
183
|
+
children = MessageTemplateFieldBuilder.buildMany(builder.children, tree, module, childrenBasePathRaw, childrenBasePathParsed, '#', '#');
|
|
184
|
+
}
|
|
185
|
+
else if (builder.type === 'dict') {
|
|
186
|
+
children = MessageTemplateFieldBuilder.buildMany(builder.children, tree, module, childrenBasePathRaw, childrenBasePathParsed, '#', '#');
|
|
187
|
+
}
|
|
188
|
+
else if (builder.type === 'union') {
|
|
189
|
+
children = MessageTemplateFieldBuilder.buildMany(builder.children, tree, module, basePathRaw, basePathParsed, name, undefined);
|
|
190
|
+
}
|
|
191
|
+
// All other fields build their children directly
|
|
192
|
+
else if (builder.children) {
|
|
193
|
+
children = MessageTemplateFieldBuilder.buildMany(builder.children, tree, module, childrenBasePathRaw, childrenBasePathParsed);
|
|
194
|
+
}
|
|
195
|
+
return new message_template_schema_1.$MessageTemplateField(type, name, builder.alias || name, pathRaw, pathParsed, builder._required, builder._defaultValue, builder._nullable, builder._rules, builder.value, children);
|
|
191
196
|
}
|
|
192
|
-
static
|
|
197
|
+
static buildMany(fields, tree, module, basePathRaw = '', basePathParsed = '', name, key) {
|
|
193
198
|
const schema = {};
|
|
194
199
|
for (const c in fields) {
|
|
195
|
-
|
|
196
|
-
// Extended fields inherit from other messages
|
|
197
|
-
if (child.__ext) {
|
|
198
|
-
const ext = tree.getSchema(child.__ext);
|
|
199
|
-
schema[c].children = Object.assign({}, ext.template.fields, schema[c].children || {});
|
|
200
|
-
continue;
|
|
201
|
-
}
|
|
202
|
-
const param = c;
|
|
203
|
-
// A .msg() parameter is an obj which takes fields from
|
|
204
|
-
// another message
|
|
205
|
-
if (child.type === 'msg') {
|
|
206
|
-
const name = child.value.msg.name;
|
|
207
|
-
const $msg = module.messages[name];
|
|
208
|
-
if (!$msg) {
|
|
209
|
-
throw error_1.NesoiError.Builder.Message.UnknownModuleMessage(name);
|
|
210
|
-
}
|
|
211
|
-
const builder = new MessageTemplateFieldFactory(module.name).obj({});
|
|
212
|
-
builder.alias = child.alias;
|
|
213
|
-
builder._required = child._required;
|
|
214
|
-
builder._defaultValue = child._defaultValue;
|
|
215
|
-
builder._nullable = child._nullable;
|
|
216
|
-
builder._rules = child._rules.slice(0, -1);
|
|
217
|
-
builder.children = child.children;
|
|
218
|
-
schema[param] = MessageTemplateFieldBuilder.build(builder, c, tree, module, basePathRaw, basePathParsed);
|
|
219
|
-
schema[param].children = schema[param].children || {};
|
|
220
|
-
Object.assign(schema[param].children, $msg.template.fields);
|
|
200
|
+
if (c === '__ext')
|
|
221
201
|
continue;
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
202
|
+
const child = fields[c];
|
|
203
|
+
schema[key || c] = MessageTemplateFieldBuilder.build(child, name || c, tree, module, basePathRaw, basePathParsed);
|
|
204
|
+
}
|
|
205
|
+
// Extended field groups inherit from other messages
|
|
206
|
+
if ('__ext' in fields) {
|
|
207
|
+
const ext = tree.getSchema(fields.__ext);
|
|
208
|
+
Object.assign(schema, ext.template.fields);
|
|
225
209
|
}
|
|
226
210
|
return schema;
|
|
227
211
|
}
|