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.
Files changed (91) hide show
  1. package/lib/compiler/apps/monolyth/stages/2_build_typescript_stage.js +1 -0
  2. package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +8 -0
  3. package/lib/compiler/compiler.js +1 -1
  4. package/lib/compiler/elements/bucket.element.d.ts +3 -2
  5. package/lib/compiler/elements/bucket.element.js +86 -128
  6. package/lib/compiler/elements/element.js +4 -2
  7. package/lib/compiler/elements/externals.element.js +3 -0
  8. package/lib/compiler/elements/machine.element.js +2 -2
  9. package/lib/compiler/elements/message.element.js +35 -57
  10. package/lib/compiler/elements/queue.element.js +1 -1
  11. package/lib/compiler/helpers/dump_helpers.d.ts +5 -3
  12. package/lib/compiler/helpers/dump_helpers.js +43 -26
  13. package/lib/compiler/stages/4_build_schemas_stage.js +12 -0
  14. package/lib/compiler/stages/5_inject_ts_stage.js +4 -1
  15. package/lib/compiler/stages/7_dump_stage.js +7 -1
  16. package/lib/compiler/treeshake.js +4 -2
  17. package/lib/compiler/typescript/bridge/extract.js +37 -107
  18. package/lib/compiler/typescript/bridge/inject.d.ts +1 -1
  19. package/lib/compiler/typescript/bridge/inject.js +73 -45
  20. package/lib/compiler/typescript/bridge/organize.js +9 -5
  21. package/lib/compiler/typescript/typescript_compiler.d.ts +4 -6
  22. package/lib/compiler/typescript/typescript_compiler.js +139 -75
  23. package/lib/elements/blocks/block.builder.d.ts +1 -10
  24. package/lib/elements/blocks/block.builder.js +0 -32
  25. package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +3 -21
  26. package/lib/elements/blocks/job/job.builder.d.ts +6 -20
  27. package/lib/elements/blocks/job/job.builder.js +0 -4
  28. package/lib/elements/blocks/machine/machine.builder.d.ts +5 -14
  29. package/lib/elements/blocks/machine/machine.builder.js +2 -2
  30. package/lib/elements/blocks/queue/queue.builder.d.ts +6 -15
  31. package/lib/elements/blocks/queue/queue.builder.js +2 -2
  32. package/lib/elements/edge/externals/externals.builder.d.ts +2 -0
  33. package/lib/elements/edge/externals/externals.builder.js +6 -1
  34. package/lib/elements/edge/externals/externals.schema.d.ts +2 -1
  35. package/lib/elements/edge/externals/externals.schema.js +3 -1
  36. package/lib/elements/entities/bucket/adapters/bucket_adapter.d.ts +1 -1
  37. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.d.ts +7 -0
  38. package/lib/elements/entities/bucket/adapters/memory.bucket_adapter.js +46 -36
  39. package/lib/elements/entities/bucket/adapters/memory.nql.js +1 -1
  40. package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -4
  41. package/lib/elements/entities/bucket/bucket.js +42 -43
  42. package/lib/elements/entities/bucket/bucket.schema.d.ts +2 -1
  43. package/lib/elements/entities/bucket/cache/bucket_cache.d.ts +1 -4
  44. package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +7 -5
  45. package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -1
  46. package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +1 -1
  47. package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +1 -1
  48. package/lib/elements/entities/bucket/model/bucket_model.convert.js +4 -4
  49. package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +41 -9
  50. package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +8 -6
  51. package/lib/elements/entities/bucket/model/bucket_model.schema.js +184 -21
  52. package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +89 -56
  53. package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +22 -30
  54. package/lib/elements/entities/bucket/query/nql.schema.d.ts +13 -10
  55. package/lib/elements/entities/bucket/query/nql_compiler.js +46 -21
  56. package/lib/elements/entities/bucket/view/bucket_view.builder.js +1 -1
  57. package/lib/elements/entities/bucket/view/bucket_view.d.ts +19 -0
  58. package/lib/elements/entities/bucket/view/bucket_view.js +230 -108
  59. package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +5 -10
  60. package/lib/elements/entities/bucket/view/bucket_view.schema.js +3 -5
  61. package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +16 -12
  62. package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +55 -40
  63. package/lib/elements/entities/message/message.builder.d.ts +1 -11
  64. package/lib/elements/entities/message/message.infer.d.ts +6 -30
  65. package/lib/elements/entities/message/message.schema.js +2 -2
  66. package/lib/elements/entities/message/template/message_template.builder.js +1 -1
  67. package/lib/elements/entities/message/template/message_template.schema.d.ts +10 -15
  68. package/lib/elements/entities/message/template/message_template.schema.js +29 -12
  69. package/lib/elements/entities/message/template/message_template_field.builder.d.ts +45 -209
  70. package/lib/elements/entities/message/template/message_template_field.builder.js +69 -85
  71. package/lib/elements/entities/message/template/message_template_parser.js +52 -64
  72. package/lib/engine/apps/inline.app.js +1 -0
  73. package/lib/engine/data/trash.js +7 -7
  74. package/lib/engine/data/tree.d.ts +3 -0
  75. package/lib/engine/data/tree.js +36 -0
  76. package/lib/engine/space.js +1 -1
  77. package/lib/engine/transaction/trx_engine.config.d.ts +3 -2
  78. package/lib/engine/transaction/trx_engine.d.ts +9 -1
  79. package/lib/engine/transaction/trx_engine.js +52 -9
  80. package/lib/engine/util/deep.js +4 -0
  81. package/lib/engine/util/parse.d.ts +22 -14
  82. package/lib/engine/util/parse.js +20 -5
  83. package/lib/engine/util/type.d.ts +3 -0
  84. package/package.json +1 -1
  85. package/tools/joaquin/bucket.d.ts +9 -0
  86. package/tools/joaquin/bucket.js +49 -0
  87. package/tools/joaquin/message.d.ts +2 -1
  88. package/tools/joaquin/message.js +9 -2
  89. package/tools/joaquin/mock.d.ts +1 -0
  90. package/tools/joaquin/mock.js +13 -5
  91. package/tsconfig.build.tsbuildinfo +1 -1
@@ -57,21 +57,25 @@ class TSBridgeOrganize {
57
57
  }
58
58
  static message(organized, tag, path, node) {
59
59
  var _a, _b;
60
- const rule = path.match(/template▹0▹return▹([\w|\\.]+)▹rule▹0/);
60
+ const rule = path.match(/template▹0▹return▹(.+)▹rule▹0/);
61
61
  if (rule) {
62
62
  const [_, prop] = rule;
63
+ let path = prop.replace(/▹obj▹0▹/g, '.');
64
+ path = path.replace(/▹union▹/g, '.');
65
+ path = path.replace(/▹list▹0/g, '.#');
66
+ path = path.replace(/▹dict▹0/g, '.#');
63
67
  (_a = organized.messages)[tag] ?? (_a[tag] = { rules: {} });
64
- (_b = organized.messages[tag].rules)[prop] ?? (_b[prop] = []);
65
- organized.messages[tag].rules[prop].push(node);
68
+ (_b = organized.messages[tag].rules)[path] ?? (_b[path] = []);
69
+ organized.messages[tag].rules[path].push(node);
66
70
  return;
67
71
  }
68
72
  }
69
73
  static inlineMessage(organized, parentTag, path, node) {
70
- const message = path.match(/messages0▹return▹([\w|\\.]*)▹(.*)/);
74
+ const message = path.match(/message▹(@|\w+)▹1▹return▹(.*)/);
71
75
  if (message) {
72
76
  const [_, inlineName, path] = message;
73
77
  const parent = dependency_1.$Tag.parseOrFail(parentTag);
74
- const msgName = inlineName.length ? `${parent.name}.${inlineName}` : parent.name;
78
+ const msgName = inlineName === '@' ? parent.name : `${parent.name}.${inlineName}`;
75
79
  const msgTag = `${parent.module}::message:${msgName}`;
76
80
  const templatePath = `template▹0▹return▹${path}`;
77
81
  this.message(organized, msgTag, templatePath, node);
@@ -25,9 +25,7 @@ export declare class TypeScriptCompiler {
25
25
  /**
26
26
  * Extract all import nodes
27
27
  */
28
- extractImports(filepath: string, $?: {
29
- ignore?: string[];
30
- }): string[];
28
+ extractImports(filepath: string): string[];
31
29
  query(filepath: string, $: {
32
30
  query: string;
33
31
  expectedKinds: ts.SyntaxKind[];
@@ -43,11 +41,11 @@ export declare class TypeScriptCompiler {
43
41
  getNesoiSymbol(name: string, path: string): ts.Symbol;
44
42
  getPropPath(node: ts.PropertyAssignment): string;
45
43
  findAllNesoiBuilders(node: ts.Node): Partial<Record<BuilderType, Record<string, ts.Node>>>;
46
- findAll(node: ts.Node, predicate: (node: ts.Node) => ts.Node | undefined): ts.Node[];
44
+ findAll(node: ts.Node, predicate: (node: ts.Node) => ts.Node[] | undefined): ts.Node[];
47
45
  private findParent;
48
46
  private findInCallChain;
49
- private findCallsUntilRoot;
50
- private findCallsUntilLast;
47
+ private seekChainUntilLeaf;
48
+ private seekChainUntilRoot;
51
49
  private static logDiagnostics;
52
50
  static allFiles(dirPaths: string[]): string[];
53
51
  /**
@@ -86,7 +86,7 @@ class TypeScriptCompiler {
86
86
  /**
87
87
  * Extract all import nodes
88
88
  */
89
- extractImports(filepath, $) {
89
+ extractImports(filepath) {
90
90
  log_1.Log.trace('compiler', 'ts', `Extracting imports for file ${(0, string_1.colored)(filepath, 'blue')}`);
91
91
  const source = this.getSource(filepath);
92
92
  const imports = this.findAll(source, node => {
@@ -94,15 +94,45 @@ class TypeScriptCompiler {
94
94
  return;
95
95
  }
96
96
  const spec = parser_1.Parser.parseNode(node.moduleSpecifier).value;
97
- // Not a relative import, use as it is
98
- if (!spec.startsWith('./') && !spec.startsWith('../')) {
99
- return node;
97
+ // Absolute import, use as it is
98
+ let from;
99
+ if (spec.startsWith(path.sep)) {
100
+ from = spec;
100
101
  }
101
- const from = path.resolve(filepath, '..', spec);
102
- if ($?.ignore?.includes(from)) {
103
- return;
102
+ // Relative import
103
+ else if (spec.startsWith('.' + path.sep) || spec.startsWith('..' + path.sep)) {
104
+ from = path.resolve(filepath, '..', spec);
105
+ }
106
+ // Typing import (future)
107
+ else if (spec.startsWith('.nesoi' + path.sep)) {
108
+ from = space_1.Space.path(this.space, spec);
109
+ }
110
+ // Non-relative import
111
+ else {
112
+ from = space_1.Space.path(this.space, spec);
113
+ // Check if it exists rooted on the space path (usually libs)
114
+ // If not, use the original (it comes from a path alias or node_modules)
115
+ if (!fs.existsSync(from + '.ts'))
116
+ from = spec;
117
+ }
118
+ const declarations = [];
119
+ // import Something from '...'
120
+ if (node.importClause?.name) {
121
+ declarations.push(ts.factory.createImportDeclaration(node.modifiers, ts.factory.createImportClause(node.importClause.isTypeOnly, node.importClause.name, undefined), ts.factory.createStringLiteral(from, true)));
122
+ }
123
+ // import { Something } from '...'
124
+ if (node.importClause?.namedBindings) {
125
+ // import * as Something from '...'
126
+ if ((node.importClause?.namedBindings).name) {
127
+ declarations.push(ts.factory.createImportDeclaration(node.modifiers, ts.factory.createImportClause(node.importClause.isTypeOnly, undefined, node.importClause?.namedBindings), ts.factory.createStringLiteral(from, true)));
128
+ }
129
+ else {
130
+ for (const el of node.importClause.namedBindings.elements) {
131
+ declarations.push(ts.factory.createImportDeclaration(node.modifiers, ts.factory.createImportClause(node.importClause.isTypeOnly, undefined, ts.factory.createNamedImports([el])), ts.factory.createStringLiteral(from, true)));
132
+ }
133
+ }
104
134
  }
105
- return ts.factory.createImportDeclaration(node.modifiers, node.importClause, ts.factory.createStringLiteral(from, true));
135
+ return declarations;
106
136
  });
107
137
  const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
108
138
  const importStrs = imports.map(node => printer.printNode(ts.EmitHint.Unspecified, node, source));
@@ -162,11 +192,25 @@ class TypeScriptCompiler {
162
192
  if (!loopStart && loop.query !== undefined) {
163
193
  loop.query += '.' + p;
164
194
  }
195
+ // Optional
196
+ let optional = false;
197
+ if (p.endsWith('?')) {
198
+ optional = true;
199
+ p = p.slice(0, -1);
200
+ }
165
201
  // Filter step
166
- results = results.map(result => {
202
+ const new_results = results.map(result => {
167
203
  const ptr = result.node;
168
- // TS API object
204
+ // Function Call
169
205
  if (ts.isCallExpression(ptr)) {
206
+ // '#': any argument
207
+ if (p === '#') {
208
+ return ptr.arguments.map((arg, i) => ({
209
+ path: result.path + '▹' + i.toString(),
210
+ node: arg
211
+ }));
212
+ }
213
+ // Integer: argument by position
170
214
  const argIdx = parseInt(p);
171
215
  if (!isNaN(argIdx)) {
172
216
  if (argIdx >= ptr.arguments.length) {
@@ -177,29 +221,37 @@ class TypeScriptCompiler {
177
221
  node: ptr.arguments[argIdx]
178
222
  };
179
223
  }
180
- return this.findInCallChain(ptr, node => {
181
- const name = this.getCallName(node);
182
- return p === '*' || name === p;
183
- }).map(node => {
184
- const suffix = (ts.isCallExpression(node) && ts.isStringLiteral(node.arguments[0]))
185
- ? '▹' + node.arguments[0].text
186
- : '';
224
+ const ps = p.includes('|') ? p.split('|') : [p];
225
+ // '~': Any call in the chain
226
+ // string: chain property by name
227
+ return this.findInCallChain(ptr, $ => {
228
+ return ps.includes('~') || ps.includes($.path.at(-1) || '~');
229
+ }).map($ => {
230
+ const firstArg = $.firstArg === '' ? '@' : $.firstArg;
187
231
  return {
188
- path: result.path + '▹' + p + suffix,
189
- node,
232
+ path: result.path + '▹' + $.path.at(-1) + (firstArg ? ('▹' + firstArg) : ''),
233
+ node: $.isCall ? $.node.parent : $.node,
190
234
  };
191
235
  });
192
236
  }
193
- if (ts.isPropertyAccessExpression(ptr)) {
194
- return this.findInCallChain(ptr, parent => {
195
- const name = this.getCallName(parent);
196
- return name === p;
197
- }).map(node => ({
198
- path: result.path + '▹' + p,
199
- node,
200
- }));
237
+ // Property Access
238
+ else if (ts.isPropertyAccessExpression(ptr)) {
239
+ const ps = p.includes('|') ? p.split('|') : [p];
240
+ // '~': Any call in the chain
241
+ // string: chain property by name
242
+ return this.findInCallChain(ptr, $ => {
243
+ return ps.includes('~') || ps.includes($.path.at(-1) || '~');
244
+ }).map($ => {
245
+ const firstArg = $.firstArg === '' ? '@' : $.firstArg;
246
+ return {
247
+ path: result.path + '▹' + $.path.at(-1) + (firstArg ? ('▹' + firstArg) : ''),
248
+ node: $.isCall ? $.node.parent : $.node,
249
+ };
250
+ });
201
251
  }
202
- if (ts.isFunctionExpression(ptr) || ts.isArrowFunction(ptr)) {
252
+ // Function
253
+ else if (ts.isFunctionExpression(ptr) || ts.isArrowFunction(ptr)) {
254
+ // 'return': Return node of function
203
255
  if (p === 'return') {
204
256
  const node = this.getReturnNode(ptr);
205
257
  if (!node) {
@@ -210,9 +262,13 @@ class TypeScriptCompiler {
210
262
  node
211
263
  };
212
264
  }
213
- throw new Error('You can only query functions with .return');
265
+ return [];
214
266
  }
215
- if (ts.isObjectLiteralExpression(ptr)) {
267
+ // Object
268
+ else if (ts.isObjectLiteralExpression(ptr)) {
269
+ // '*': Any key
270
+ // '**': Any key, recursively
271
+ // string: A specific key
216
272
  const parseObj = (node, path, nested = false) => {
217
273
  return node.properties.map(prop => {
218
274
  if (!ts.isPropertyAssignment(prop)) {
@@ -248,6 +304,12 @@ class TypeScriptCompiler {
248
304
  }
249
305
  return [];
250
306
  }).flat(1);
307
+ if (optional) {
308
+ results = [...results, ...new_results];
309
+ }
310
+ else {
311
+ results = new_results;
312
+ }
251
313
  // Loop behavior
252
314
  if (loopEnd) {
253
315
  let loopResults = results;
@@ -376,7 +438,7 @@ class TypeScriptCompiler {
376
438
  }
377
439
  findAllNesoiBuilders(node) {
378
440
  const Nesoi = this.getNesoiSymbol('Space', 'lib/engine/space.d.ts');
379
- const allBuilders = this.findAll(node, node => this.isCall(node, Nesoi) ? node : undefined);
441
+ const allBuilders = this.findAll(node, node => this.isCall(node, Nesoi) ? [node] : undefined);
380
442
  const builders = {};
381
443
  allBuilders.forEach(b => {
382
444
  if (!ts.isCallExpression(b)) {
@@ -419,7 +481,7 @@ class TypeScriptCompiler {
419
481
  const visit = (node) => {
420
482
  const result = predicate(node);
421
483
  if (result) {
422
- found.push(result);
484
+ found.push(...result);
423
485
  }
424
486
  return node.forEachChild((child) => visit(child));
425
487
  };
@@ -437,71 +499,73 @@ class TypeScriptCompiler {
437
499
  }
438
500
  findInCallChain(node, predicate) {
439
501
  const results = [];
440
- const from = this.findCallsUntilRoot(node);
441
- const to = this.findCallsUntilLast(node);
502
+ const from = this.seekChainUntilLeaf(node);
503
+ const to = this.seekChainUntilRoot(node);
442
504
  from.reverse();
443
505
  const calls = [
444
506
  ...from,
445
- ...(ts.isCallExpression(node) ? [node] : []),
507
+ ...(ts.isPropertyAccessExpression(node) ? [node] : []),
446
508
  ...to
447
509
  ];
448
- for (const call of calls) {
449
- if (predicate(call)) {
450
- results.push(call);
510
+ const path = [];
511
+ for (const node of calls) {
512
+ path.push(node.name.text);
513
+ const isCall = ts.isCallExpression(node.parent) && node.parent.expression === node;
514
+ // [Nesoi Syntax]
515
+ // If the first argument of a call expression is a string,
516
+ // we assume it's relevant to the path
517
+ // So we add it after the call expresion name
518
+ let firstArg = undefined;
519
+ if (isCall
520
+ && node.parent.arguments.length
521
+ && ts.isStringLiteral(node.parent.arguments[0])) {
522
+ firstArg = node.parent.arguments[0].text;
523
+ }
524
+ if (predicate({ node, path, isCall, firstArg })) {
525
+ results.push({ node, path: [...path], isCall, firstArg });
451
526
  }
452
527
  }
453
528
  return results;
454
529
  }
455
- findCallsUntilRoot(from) {
456
- const calls = [];
457
- let node = from;
458
- while (node) {
459
- if (!ts.isCallExpression(node) && !ts.isPropertyAccessExpression(node)) {
460
- return calls;
461
- }
462
- if (!node.expression || !ts.isPropertyAccessExpression(node.expression)) {
463
- return calls;
464
- }
465
- if (!node.expression.expression) {
466
- return calls;
530
+ seekChainUntilLeaf(from) {
531
+ const chain = [];
532
+ let child = from.expression;
533
+ while (child) {
534
+ if (!ts.isCallExpression(child) && !ts.isPropertyAccessExpression(child)) {
535
+ break;
467
536
  }
468
- if (ts.isCallExpression(node.expression.expression)) {
469
- calls.push(node.expression.expression);
470
- node = node.expression.expression;
537
+ if (ts.isCallExpression(child)) {
538
+ child = child.expression;
471
539
  }
472
- else if (ts.isPropertyAccessExpression(node.expression.expression)) {
473
- calls.push(node.expression);
474
- node = node.expression;
540
+ else if (ts.isPropertyAccessExpression(child)) {
541
+ chain.push(child);
542
+ child = child.expression;
475
543
  }
476
544
  else {
477
- return calls;
545
+ break;
478
546
  }
479
547
  }
480
- return calls;
548
+ return chain;
481
549
  }
482
- findCallsUntilLast(from) {
483
- const calls = [];
484
- let node = from;
485
- while (node) {
486
- if (!node.parent || !ts.isPropertyAccessExpression(node.parent)) {
487
- return calls;
488
- }
489
- if (!node.parent.parent) {
490
- return calls;
550
+ seekChainUntilRoot(from) {
551
+ const chain = [];
552
+ let parent = from.parent;
553
+ while (parent) {
554
+ if (!ts.isCallExpression(parent) && !ts.isPropertyAccessExpression(parent)) {
555
+ break;
491
556
  }
492
- if (ts.isPropertyAccessExpression(node.parent.parent)) {
493
- calls.push(node.parent);
494
- node = node.parent;
557
+ if (ts.isCallExpression(parent)) {
558
+ parent = parent.parent;
495
559
  }
496
- else if (ts.isCallExpression(node.parent.parent)) {
497
- calls.push(node.parent.parent);
498
- node = node.parent.parent;
560
+ else if (ts.isPropertyAccessExpression(parent)) {
561
+ chain.push(parent);
562
+ parent = parent.parent;
499
563
  }
500
564
  else {
501
- return calls;
565
+ break;
502
566
  }
503
567
  }
504
- return calls;
568
+ return chain;
505
569
  }
506
570
  static logDiagnostics(diagnostics) {
507
571
  if (!diagnostics.length) {
@@ -1,6 +1,6 @@
1
1
  import { $Module, $Space } from "../../schema";
2
2
  import { $BlockOutput, $BlockType } from './block.schema';
3
- import { MessageTemplateDef, MultiMessageTemplateDef } from "../entities/message/template/message_template.builder";
3
+ import { MessageTemplateDef } from "../entities/message/template/message_template.builder";
4
4
  import { $Dependency, BuilderNode } from "../../engine/dependency";
5
5
  /**
6
6
  * @category Builders
@@ -25,15 +25,6 @@ export declare abstract class BlockBuilder<Space extends $Space, Module extends
25
25
  * @returns The Builder, for call-chaining
26
26
  */
27
27
  protected message<Name extends string, Def extends MessageTemplateDef<Space, Module, Name>>(name: Name, def: Def): unknown;
28
- /**
29
- * @deprecated
30
- * Inline messages. These messages are exposed to the module,
31
- * with a name prefixed by the block name.
32
- * @param def A method which takes a field factory as input and outputs a template builder
33
- * @returns The Builder, for call-chaining
34
- */
35
- /** @deprecated Use `.message` instead. Will be removed on 3.1 */
36
- protected messages<Def extends MultiMessageTemplateDef<Space, Module>>(def: Def): unknown;
37
28
  authn(...providers: string[]): unknown;
38
29
  protected _input(...names: string[]): unknown;
39
30
  protected outputRaw(): unknown;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BlockBuilder = void 0;
4
- const message_template_field_builder_1 = require("../entities/message/template/message_template_field.builder");
5
4
  const message_builder_1 = require("../entities/message/message.builder");
6
5
  const dependency_1 = require("../../engine/dependency");
7
6
  const name_helpers_1 = require("../../compiler/helpers/name_helpers");
@@ -33,7 +32,6 @@ class BlockBuilder {
33
32
  */
34
33
  message(name, def) {
35
34
  const msgName = `${this.name}${name.length ? ('.' + name) : ''}`;
36
- this._inputMsgs.push(new dependency_1.$Dependency(this.module, 'message', msgName));
37
35
  const builder = new message_builder_1.MessageBuilder(this.module, msgName)
38
36
  .template(def);
39
37
  this._inlineNodes.push(new dependency_1.BuilderNode({
@@ -45,36 +43,6 @@ class BlockBuilder {
45
43
  filepath: [], // This is added later by Treeshake.blockInlineNodes()
46
44
  dependencies: [] // This is added later by Treeshake.*()
47
45
  }));
48
- const dep = new dependency_1.$Dependency(this.module, 'message', msgName);
49
- this._inputMsgs.push(dep);
50
- return this;
51
- }
52
- /**
53
- * @deprecated
54
- * Inline messages. These messages are exposed to the module,
55
- * with a name prefixed by the block name.
56
- * @param def A method which takes a field factory as input and outputs a template builder
57
- * @returns The Builder, for call-chaining
58
- */
59
- /** @deprecated Use `.message` instead. Will be removed on 3.1 */
60
- messages(def) {
61
- const factory = new message_template_field_builder_1.MessageTemplateFieldFactory(this.module);
62
- const schema = def(factory);
63
- for (const key in schema) {
64
- const name = `${this.name}${key.length ? ('.' + key) : ''}`;
65
- this._inputMsgs.push(new dependency_1.$Dependency(this.module, 'message', name));
66
- const builder = new message_builder_1.MessageBuilder(this.module, name)
67
- .template(() => schema[key]);
68
- this._inlineNodes.push(new dependency_1.BuilderNode({
69
- module: this.module,
70
- type: 'message',
71
- name,
72
- builder,
73
- isInline: true,
74
- filepath: [], // This is added later by Treeshake.blockInlineNodes()
75
- dependencies: [] // This is added later by Treeshake.*()
76
- }));
77
- }
78
46
  return this;
79
47
  }
80
48
  // Authentication
@@ -48,29 +48,11 @@ export declare class ResourceJobBuilder<Space extends $Space, Module extends $Mo
48
48
  */
49
49
  input<Def extends MessageTemplateDef<Space, Module, Name>>(def: Def): ResourceJobBuilder<Space, Module, Name, Prepared, Authn, Bucket, RequiredInput, $MessageInfer<Name, any, ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
50
50
  '': RequiredInput[K];
51
- }, any, [never, never], [never, never]>; }, import("../../../entities/message/message.infer").$MessageInputInfer<ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
51
+ }, any, [false, false], "">; }, import("../../../entities/message/message.infer").$MessageInputInfer<ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
52
52
  '': RequiredInput[K];
53
- }, any, [never, never], [never, never]>; }, ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
53
+ }, any, [false, false], "">; }>, import("../../../entities/message/message.infer").$MessageOutputInfer<ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
54
54
  '': RequiredInput[K];
55
- }, any, [never, never], [never, never]>; } extends infer T ? { [K_1 in keyof T]: (ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
56
- '': RequiredInput[K];
57
- }, any, [never, never], [never, never]>; })[K_1] extends MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
58
- path: `${K_1 & string}${keyof I & string}`;
59
- data: I[keyof I];
60
- opt: Opt[0];
61
- nul: Nul[0];
62
- } : never; } : never>, import("../../../entities/message/message.infer").$MessageOutputInfer<ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
63
- '': RequiredInput[K];
64
- }, any, [never, never], [never, never]>; }, ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
65
- '': RequiredInput[K];
66
- }, any, [never, never], [never, never]>; } extends infer T_1 ? { [K_2 in keyof T_1]: (ReturnType<Def> & { [K in keyof RequiredInput]: MessageTemplateFieldBuilder<any, any, any, {
67
- '': RequiredInput[K];
68
- }, any, [never, never], [never, never]>; })[K_2] extends MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
69
- path: `${K_2 & string}${keyof O & string}`;
70
- data: O[keyof O];
71
- opt: Opt_1[1];
72
- nul: Nul_1[1];
73
- } : never; } : never>>, MsgExtras, Ctx, CtxAfter>;
55
+ }, any, [false, false], "">; }>>, MsgExtras, Ctx, CtxAfter>;
74
56
  /**
75
57
  * A function that will build new fields on the input message to be
76
58
  * consumed by the job.
@@ -1,7 +1,7 @@
1
1
  import { $Module, $Space, ScopedMessage, ScopedMessageName } from "../../../schema";
2
2
  import { $Job, $JobAssert, $JobMethod } from './job.schema';
3
3
  import { BlockBuilder } from '../block.builder';
4
- import { MessageTemplateDef, MultiMessageTemplateDef } from "../../entities/message/template/message_template.builder";
4
+ import { MessageTemplateDef } from "../../entities/message/template/message_template.builder";
5
5
  import { Overlay } from "../../../engine/util/type";
6
6
  import { $MessageInfer } from "../../entities/message/message.infer";
7
7
  import { TrxNode } from "../../../engine/transaction/trx_node";
@@ -18,7 +18,9 @@ export type JobExtrasAndAsserts = ({
18
18
  * @category Builders
19
19
  * @subcategory Block
20
20
  */
21
- export declare class JobBuilder<Space extends $Space, Module extends $Module, Job extends $Job = $Job, Ctx = {}> extends BlockBuilder<Space, Module, 'job'> {
21
+ export declare class JobBuilder<Space extends $Space, Module extends $Module, Job extends $Job = $Job & {
22
+ '#input': never;
23
+ }, Ctx = {}> extends BlockBuilder<Space, Module, 'job'> {
22
24
  $b: "job";
23
25
  $j: "Job";
24
26
  private _extrasAndAsserts;
@@ -35,25 +37,9 @@ export declare class JobBuilder<Space extends $Space, Module extends $Module, Jo
35
37
  }>;
36
38
  message<Name extends string, Def extends MessageTemplateDef<Space, Module, Name>, FullName extends string = `${Job['name']}${Name extends '' ? '' : '.'}${Name & string}`, Msg extends $Message = $MessageInfer<FullName, ($: any) => ReturnType<Def>>>(name: Name, def: Def): JobBuilder<Space, Overlay<Module, {
37
39
  messages: Overlay<Module["messages"], { [K in FullName]: Msg; }>;
38
- }>, Overlay<Job, {
39
- "#input": Msg;
40
- }>, Ctx>;
41
- /** @deprecated Use `.message` instead. Will be removed on 3.1 */
42
- messages<Def extends MultiMessageTemplateDef<Space, Module>>(def: Def): JobBuilder<Space, Overlay<Module, {
43
- messages: Overlay<Module["messages"], { [K in keyof ReturnType<Def> as `${Job["name"]}${K extends "" ? "" : "."}${K & string}`]: $MessageInfer<`${Job["name"]}${K extends "" ? "" : "."}${K & string}`, ($: any) => ReturnType<Def>[K], ReturnType<Def>[K], import("../../entities/message/message.infer").$MessageInputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T ? { [K_1 in keyof T]: ReturnType<Def>[K][K_1] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
44
- path: `${K_1 & string}${keyof I & string}`;
45
- data: I[keyof I];
46
- opt: Opt[0];
47
- nul: Nul[0];
48
- } : never; } : never>, import("../../entities/message/message.infer").$MessageOutputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T_1 ? { [K_2 in keyof T_1]: ReturnType<Def>[K][K_2] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
49
- path: `${K_2 & string}${keyof O & string}`;
50
- data: O[keyof O];
51
- opt: Opt_1[1];
52
- nul: Nul_1[1];
53
- } : never; } : never>>; }>;
54
40
  }>, Job, Ctx>;
55
- input<MsgName extends ScopedMessageName<Module, Job['name']>, Msg extends NoInfer<ScopedMessage<Module, Job['name'], MsgName>>>(...def: MsgName[]): JobBuilder<Space, Module, Overlay<Job, {
56
- "#input": Msg;
41
+ input<MsgName extends ScopedMessageName<Module, Job['name']>, Msg extends NoInfer<ScopedMessage<Module, Job['name'], MsgName>>, PreInput extends $Message = Job['#input']['#raw']['$'] extends string ? Job['#input'] : never>(...def: MsgName[]): JobBuilder<Space, Module, Overlay<Job, {
42
+ "#input": PreInput | Msg;
57
43
  }>, Ctx>;
58
44
  get output(): {
59
45
  raw: <T>() => JobBuilder<Space, Module, Overlay<Job, {
@@ -34,10 +34,6 @@ class JobBuilder extends block_builder_1.BlockBuilder {
34
34
  message(name, def) {
35
35
  return super.message(name, def);
36
36
  }
37
- /** @deprecated Use `.message` instead. Will be removed on 3.1 */
38
- messages(def) {
39
- return super.messages(def);
40
- }
41
37
  input(...def) {
42
38
  return super._input(...def);
43
39
  }
@@ -1,12 +1,13 @@
1
1
  import { $Module, $Space } from "../../../schema";
2
2
  import { $Machine, $MachineLogFn } from './machine.schema';
3
- import { MultiMessageTemplateDef } from "../../entities/message/template/message_template.builder";
3
+ import { MessageTemplateDef } from "../../entities/message/template/message_template.builder";
4
4
  import { $MessageInfer } from "../../entities/message/message.infer";
5
5
  import { MachineStateDef } from './machine_state.builder';
6
6
  import { BlockBuilder } from '../block.builder';
7
7
  import { Overlay } from "../../../engine/util/type";
8
8
  import { ModuleTree } from "../../../engine/tree";
9
9
  import { ResolvedBuilderNode } from "../../../engine/dependency";
10
+ import { $Message } from "../..";
10
11
  /**
11
12
  * @category Builders
12
13
  * @subcategory Block
@@ -22,18 +23,8 @@ export declare class MachineBuilder<Space extends $Space, Module extends $Module
22
23
  authn<U extends keyof Space['authnUsers']>(...providers: U[]): MachineBuilder<Space, Module, Name, Overlay<$, {
23
24
  "#authn": { [K in U]: Space["authnUsers"][K]; };
24
25
  }>>;
25
- messages<Def extends MultiMessageTemplateDef<Space, Module>>(def: Def): MachineBuilder<Space, Overlay<Module, {
26
- messages: Overlay<Module["messages"], { [K in keyof ReturnType<Def> as `${Name}${K extends "" ? "" : "."}${K & string}`]: $MessageInfer<`${Name}${K extends "" ? "" : "."}${K & string}`, ($: any) => ReturnType<Def>[K], ReturnType<Def>[K], import("../../entities/message/message.infer").$MessageInputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T ? { [K_1 in keyof T]: ReturnType<Def>[K][K_1] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, infer I, any, any, infer Opt extends [undefined, undefined], infer Nul extends [null, null]> ? {
27
- path: `${K_1 & string}${keyof I & string}`;
28
- data: I[keyof I];
29
- opt: Opt[0];
30
- nul: Nul[0];
31
- } : never; } : never>, import("../../entities/message/message.infer").$MessageOutputInfer<ReturnType<Def>[K], ReturnType<Def>[K] extends infer T_1 ? { [K_2 in keyof T_1]: ReturnType<Def>[K][K_2] extends import("../../entities/message/template/message_template_field.builder").MessageTemplateFieldBuilder<any, any, any, infer O, any, infer Opt_1 extends [undefined, undefined], infer Nul_1 extends [null, null]> ? {
32
- path: `${K_2 & string}${keyof O & string}`;
33
- data: O[keyof O];
34
- opt: Opt_1[1];
35
- nul: Nul_1[1];
36
- } : never; } : never>>; }>;
26
+ message<Name extends string, Def extends MessageTemplateDef<Space, Module, Name>, FullName extends string = `${$['name']}${Name extends '' ? '' : '.'}${Name & string}`, Msg extends $Message = $MessageInfer<FullName, ($: any) => ReturnType<Def>>>(name: Name, def: Def): MachineBuilder<Space, Overlay<Module, {
27
+ messages: Overlay<Module["messages"], { [K in FullName]: Msg; }>;
37
28
  }>, Name, $>;
38
29
  bucket<M extends keyof Module['buckets']>(names: M | M[]): MachineBuilder<Space, Module, Name, $ & {
39
30
  "#data": Module["buckets"][M]["#data"];
@@ -49,7 +40,7 @@ export declare class MachineBuilder<Space extends $Space, Module extends $Module
49
40
  static build(node: MachineBuilderNode, tree: ModuleTree, module: $Module): {
50
41
  schema: $Machine;
51
42
  inlineMessages: {
52
- [x: string]: import("../..").$Message;
43
+ [x: string]: $Message;
53
44
  };
54
45
  inlineJobs: Record<string, import("../..").$Job>;
55
46
  };
@@ -23,8 +23,8 @@ class MachineBuilder extends block_builder_1.BlockBuilder {
23
23
  authn(...providers) {
24
24
  return super.authn(...providers);
25
25
  }
26
- messages(def) {
27
- return super.messages(def);
26
+ message(name, def) {
27
+ return super.message(name, def);
28
28
  }
29
29
  /* [Data] */
30
30
  bucket(names) {