nesoi 3.0.21 → 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.
Files changed (80) hide show
  1. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +8 -0
  2. package/lib/compiler/compiler.js +1 -1
  3. package/lib/compiler/elements/bucket.element.d.ts +2 -1
  4. package/lib/compiler/elements/bucket.element.js +68 -122
  5. package/lib/compiler/elements/element.js +2 -1
  6. package/lib/compiler/elements/externals.element.js +3 -0
  7. package/lib/compiler/elements/message.element.js +34 -57
  8. package/lib/compiler/elements/queue.element.js +1 -1
  9. package/lib/compiler/helpers/dump_helpers.d.ts +2 -0
  10. package/lib/compiler/helpers/dump_helpers.js +12 -2
  11. package/lib/compiler/stages/4_build_schemas_stage.js +12 -0
  12. package/lib/compiler/stages/5_inject_ts_stage.js +4 -1
  13. package/lib/compiler/stages/7_dump_stage.js +7 -1
  14. package/lib/compiler/treeshake.js +4 -2
  15. package/lib/compiler/typescript/bridge/extract.js +37 -107
  16. package/lib/compiler/typescript/bridge/inject.d.ts +1 -1
  17. package/lib/compiler/typescript/bridge/inject.js +73 -45
  18. package/lib/compiler/typescript/bridge/organize.js +9 -5
  19. package/lib/compiler/typescript/typescript_compiler.d.ts +4 -6
  20. package/lib/compiler/typescript/typescript_compiler.js +139 -75
  21. package/lib/elements/blocks/block.builder.d.ts +1 -10
  22. package/lib/elements/blocks/block.builder.js +0 -32
  23. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +3 -21
  24. package/lib/elements/blocks/job/job.builder.d.ts +6 -20
  25. package/lib/elements/blocks/job/job.builder.js +0 -4
  26. package/lib/elements/blocks/machine/machine.builder.d.ts +5 -14
  27. package/lib/elements/blocks/machine/machine.builder.js +2 -2
  28. package/lib/elements/blocks/queue/queue.builder.d.ts +6 -15
  29. package/lib/elements/blocks/queue/queue.builder.js +2 -2
  30. package/lib/elements/edge/externals/externals.builder.d.ts +2 -0
  31. package/lib/elements/edge/externals/externals.builder.js +6 -1
  32. package/lib/elements/edge/externals/externals.schema.d.ts +2 -1
  33. package/lib/elements/edge/externals/externals.schema.js +3 -1
  34. package/lib/elements/entities/bucket/adapters/memory.nql.js +1 -1
  35. package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -4
  36. package/lib/elements/entities/bucket/bucket.js +7 -16
  37. package/lib/elements/entities/bucket/bucket.schema.d.ts +2 -1
  38. package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +7 -5
  39. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -1
  40. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +1 -1
  41. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +1 -1
  42. package/lib/elements/entities/bucket/model/bucket_model.convert.js +4 -4
  43. package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +45 -9
  44. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +5 -6
  45. package/lib/elements/entities/bucket/model/bucket_model.schema.js +64 -21
  46. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +88 -55
  47. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +22 -30
  48. package/lib/elements/entities/bucket/query/nql.schema.d.ts +13 -10
  49. package/lib/elements/entities/bucket/query/nql_compiler.js +46 -21
  50. package/lib/elements/entities/bucket/view/bucket_view.builder.js +1 -1
  51. package/lib/elements/entities/bucket/view/bucket_view.d.ts +19 -0
  52. package/lib/elements/entities/bucket/view/bucket_view.js +230 -108
  53. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +5 -10
  54. package/lib/elements/entities/bucket/view/bucket_view.schema.js +3 -5
  55. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +16 -12
  56. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +55 -40
  57. package/lib/elements/entities/message/message.builder.d.ts +1 -11
  58. package/lib/elements/entities/message/message.infer.d.ts +6 -30
  59. package/lib/elements/entities/message/message.schema.js +2 -2
  60. package/lib/elements/entities/message/template/message_template.builder.js +1 -1
  61. package/lib/elements/entities/message/template/message_template.schema.d.ts +10 -15
  62. package/lib/elements/entities/message/template/message_template.schema.js +29 -12
  63. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +45 -209
  64. package/lib/elements/entities/message/template/message_template_field.builder.js +69 -85
  65. package/lib/elements/entities/message/template/message_template_parser.js +50 -65
  66. package/lib/engine/apps/inline.app.js +1 -0
  67. package/lib/engine/data/trash.js +7 -7
  68. package/lib/engine/data/tree.d.ts +3 -0
  69. package/lib/engine/data/tree.js +36 -0
  70. package/lib/engine/util/parse.d.ts +22 -14
  71. package/lib/engine/util/parse.js +18 -3
  72. package/lib/engine/util/type.d.ts +3 -0
  73. package/package.json +1 -1
  74. package/tools/joaquin/bucket.d.ts +9 -0
  75. package/tools/joaquin/bucket.js +49 -0
  76. package/tools/joaquin/message.d.ts +2 -1
  77. package/tools/joaquin/message.js +9 -2
  78. package/tools/joaquin/mock.d.ts +1 -0
  79. package/tools/joaquin/mock.js +13 -5
  80. 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>, ReturnType<Def> extends infer T ? { [K in keyof T]: ReturnType<Def>[K] extends import("./template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
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
  }
@@ -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<Builder, Fields extends Record<string, {
6
- path: any;
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]['opt'] extends never ? never : Fields[K]['path']]?: Fields[K]['data'] | Fields[K]['nul'];
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<Builder, Fields extends Record<string, {
23
- path: any;
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]['opt'] extends never ? never : Fields[K]['path']]?: Fields[K]['data'] | Fields[K]['nul'];
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.array) {
37
+ else if (field.type === 'list') {
38
38
  str += '[]';
39
39
  }
40
40
  str += '\n';
@@ -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.buildChildren(builder._fields, tree, module);
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
  }
@@ -47,23 +47,16 @@ export declare class $MessageTemplateField {
47
47
  name: string;
48
48
  /** A human name for the field */
49
49
  alias: string;
50
- /** A human name for the field union, assigned before the type.
51
- * This is only relevant when using .obj.or, to allow for different
52
- * aliases for the union and the root object */
53
- preAlias: string;
54
50
  /** The absolute path for reading the field value on the raw object */
55
- path_raw: string;
51
+ pathRaw: string;
56
52
  /** The absolute path for writing the field value on the parsed object */
57
- path_parsed: string;
58
- array: boolean;
53
+ pathParsed: string;
59
54
  required: boolean;
60
55
  defaultValue: any;
61
56
  nullable: boolean;
62
57
  rules: $MessageTemplateRule[];
63
- arrayRules: $MessageTemplateRule[];
64
58
  meta: $MessageTemplateFieldMeta;
65
59
  children?: $MessageTemplateFields | undefined;
66
- or?: $MessageTemplateField | undefined;
67
60
  '#raw': unknown;
68
61
  '#parsed': unknown;
69
62
  $t: string;
@@ -77,14 +70,15 @@ export declare class $MessageTemplateField {
77
70
  name: string,
78
71
  /** A human name for the field */
79
72
  alias: string,
80
- /** A human name for the field union, assigned before the type.
81
- * This is only relevant when using .obj.or, to allow for different
82
- * aliases for the union and the root object */
83
- preAlias: string,
84
73
  /** The absolute path for reading the field value on the raw object */
85
- path_raw: string,
74
+ pathRaw: string,
86
75
  /** The absolute path for writing the field value on the parsed object */
87
- path_parsed: string, array: boolean, required: boolean, defaultValue: any, nullable: boolean, rules: $MessageTemplateRule[], arrayRules: $MessageTemplateRule[], meta: $MessageTemplateFieldMeta, children?: $MessageTemplateFields | undefined, or?: $MessageTemplateField | undefined);
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;
88
82
  }
89
83
  export type $MessageTemplateFields = {
90
84
  [x: string]: $MessageTemplateField;
@@ -98,4 +92,5 @@ export declare class $MessageTemplate {
98
92
  $t: string;
99
93
  constructor(fields?: $MessageTemplateFields);
100
94
  static fieldsOfType(template: $MessageTemplate, type: $MessageTemplateFieldType): $MessageTemplateField[];
95
+ static forEachField(template: $MessageTemplate, predicate: (field: $MessageTemplateField, path: string) => void): void;
101
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
@@ -16,31 +17,30 @@ class $MessageTemplateField {
16
17
  name,
17
18
  /** A human name for the field */
18
19
  alias,
19
- /** A human name for the field union, assigned before the type.
20
- * This is only relevant when using .obj.or, to allow for different
21
- * aliases for the union and the root object */
22
- preAlias,
23
20
  /** The absolute path for reading the field value on the raw object */
24
- path_raw,
21
+ pathRaw,
25
22
  /** The absolute path for writing the field value on the parsed object */
26
- path_parsed, array, required, defaultValue, nullable, rules, arrayRules, meta, children, or) {
23
+ pathParsed, required, defaultValue, nullable, rules, meta, children) {
27
24
  this.type = type;
28
25
  this.name = name;
29
26
  this.alias = alias;
30
- this.preAlias = preAlias;
31
- this.path_raw = path_raw;
32
- this.path_parsed = path_parsed;
33
- this.array = array;
27
+ this.pathRaw = pathRaw;
28
+ this.pathParsed = pathParsed;
34
29
  this.required = required;
35
30
  this.defaultValue = defaultValue;
36
31
  this.nullable = nullable;
37
32
  this.rules = rules;
38
- this.arrayRules = arrayRules;
39
33
  this.meta = meta;
40
34
  this.children = children;
41
- this.or = or;
42
35
  this.$t = 'message.template.field';
43
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
+ }
44
44
  }
45
45
  exports.$MessageTemplateField = $MessageTemplateField;
46
46
  /**
@@ -69,5 +69,22 @@ class $MessageTemplate {
69
69
  }
70
70
  return fields;
71
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
+ }
72
89
  }
73
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";
@@ -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
- '': any;
31
- }, {
32
- '': any;
33
- }, {}, [never, never], [never, never]>;
34
- ts<T = any>(): MessageTemplateFieldBuilder<Module, Message, {
35
- '': T;
36
- }, {
37
- '': T;
38
- }, {}, [never, never], [never, never]>;
39
- get boolean(): MessageTemplateFieldBuilder<Module, Message, {
40
- '': boolean;
41
- }, {
42
- '': boolean;
43
- }, {}, [never, never], [never, never]>;
44
- get date(): MessageTemplateFieldBuilder<Module, Message, {
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
- }, [never, never], [never, never]>;
111
- msg<MessageName extends keyof Module['messages'], Message extends Module['messages'][MessageName], Builders extends MessageTemplateFieldBuilders>(msg: MessageName, extra: Builders): MessageTemplateFieldBuilder<Module, Message, {
112
- '': Omit<Message["#raw"], "$"> & {
113
- $: any;
114
- } & { [K_1 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]> ? {
115
- path: `${K & string}${keyof I & string}`;
116
- data: I[keyof I];
117
- opt: Opt[0];
118
- nul: Nul[0];
119
- } : 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]> ? {
120
- path: `${K & string}${keyof I & string}`;
121
- data: I[keyof I];
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, DefinedInput, DefinedOutput, Children extends MessageTemplateFieldBuilders, Optional extends [undefined | never, undefined | never] = [never, never], // Used to infer the message type
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
- private _array;
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, DefinedInput, DefinedOutput, Children, [undefined, undefined], Nullable>;
243
- default(value: DefinedInput[keyof DefinedInput] | Nullable[0]): MessageTemplateFieldBuilder<Module, Message, DefinedInput, DefinedOutput, Children, [undefined, never], Nullable>;
244
- get nullable(): MessageTemplateFieldBuilder<Module, Message, DefinedInput, DefinedOutput, Children, Optional, [null, null]>;
245
- rule(rule: MessageTemplateRuleDef<DefinedOutput[keyof DefinedOutput], Message['#raw']>): this;
246
- get array(): MessageTemplateFieldBuilder<Module, Message, { [K in keyof DefinedInput]: DefinedInput[K][]; }, { [K in keyof DefinedOutput]: DefinedOutput[K][]; }, Children, Optional, Nullable>;
247
- or<Def extends AnyMessageTemplateFieldBuilder>(def: Def): MessageTemplateFieldBuilder<Module, Message, { [K in keyof DefinedInput]: DefinedInput[K] | (Def extends MessageTemplateFieldBuilder<any, any, infer X, any, any, [never, never], [never, never]> ? X : never)[keyof (Def extends MessageTemplateFieldBuilder<any, any, infer X, any, any, [never, never], [never, never]> ? X : never)]; }, { [K in keyof DefinedOutput]: DefinedOutput[K] | (Def extends MessageTemplateFieldBuilder<any, any, any, infer X, any, [never, never], [never, never]> ? X : never)[keyof (Def extends MessageTemplateFieldBuilder<any, any, any, infer X, any, [never, never], [never, never]> ? X : never)]; }, Children, Optional, Nullable>;
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 buildChildren(fields: MessageTemplateFieldBuilders, tree: ModuleTree, module: $Module, basePathRaw?: string, basePathParsed?: string): $MessageTemplateFields;
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;