@shurizma/discord-message-contract 0.3.0 → 0.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../src/grammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAsNtD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAe1H"}
1
+ {"version":3,"file":"grammar.d.ts","sourceRoot":"","sources":["../src/grammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAkLtD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAe1H"}
package/dist/grammar.js CHANGED
@@ -1,4 +1,4 @@
1
- const TAG_PATTERN = /\{\{(?:#if:(?:(empty|isset):([\w.]+)|eq:([\w.]+):([^}]*)|([\w.]+))|(else)|(\/if)|#foreach:([\w.]+)(?::([^}]*))?|(\/foreach)|([\w.]+))\}\}/g;
1
+ const TAG_PATTERN = /\{\{(?:#if:(?:(?<ifMode>empty|isset):(?<ifPath>[\w.]+)|(?<cmpOp>eq|ne):(?<cmpPath>[\w.]+):(?<cmpValue>[^}]*)|(?<plainPath>[\w.]+))|(?<elseTag>else)|(?<endifTag>\/if)|#foreach:(?<foreachName>[\w.]+)(?::(?<foreachSep>[^}]*))?|(?<endforeachTag>\/foreach)|(?<scalarPath>@?[\w.]+))\}\}/g;
2
2
  function tokenize(template) {
3
3
  const tokens = [];
4
4
  let lastIndex = 0;
@@ -8,30 +8,30 @@ function tokenize(template) {
8
8
  if (match.index > lastIndex) {
9
9
  tokens.push({ kind: 'text', value: template.slice(lastIndex, match.index) });
10
10
  }
11
- const [, ifModeRaw, ifPath, eqPath, eqValue, ifPathPlain, elseTag, endifTag, foreachName, foreachSeparator, endforeachTag, scalarPath] = match;
12
- if (ifModeRaw !== undefined) {
13
- tokens.push({ kind: 'if', mode: ifModeRaw, path: ifPath });
11
+ const g = match.groups;
12
+ if (g.ifMode !== undefined) {
13
+ tokens.push({ kind: 'if', mode: g.ifMode, path: g.ifPath });
14
14
  }
15
- else if (eqPath !== undefined) {
16
- tokens.push({ kind: 'if', mode: 'eq', path: eqPath, value: eqValue });
15
+ else if (g.cmpOp !== undefined) {
16
+ tokens.push({ kind: 'if', mode: g.cmpOp, path: g.cmpPath, value: g.cmpValue });
17
17
  }
18
- else if (ifPathPlain !== undefined) {
19
- tokens.push({ kind: 'if', mode: 'plain', path: ifPathPlain });
18
+ else if (g.plainPath !== undefined) {
19
+ tokens.push({ kind: 'if', mode: 'plain', path: g.plainPath });
20
20
  }
21
- else if (elseTag !== undefined) {
21
+ else if (g.elseTag !== undefined) {
22
22
  tokens.push({ kind: 'else' });
23
23
  }
24
- else if (endifTag !== undefined) {
24
+ else if (g.endifTag !== undefined) {
25
25
  tokens.push({ kind: 'endif' });
26
26
  }
27
- else if (foreachName !== undefined) {
28
- tokens.push({ kind: 'foreach', name: foreachName, separator: foreachSeparator });
27
+ else if (g.foreachName !== undefined) {
28
+ tokens.push({ kind: 'foreach', name: g.foreachName, separator: g.foreachSep });
29
29
  }
30
- else if (endforeachTag !== undefined) {
30
+ else if (g.endforeachTag !== undefined) {
31
31
  tokens.push({ kind: 'endforeach' });
32
32
  }
33
- else if (scalarPath !== undefined) {
34
- tokens.push({ kind: 'scalar', path: scalarPath });
33
+ else if (g.scalarPath !== undefined) {
34
+ tokens.push({ kind: 'scalar', path: g.scalarPath });
35
35
  }
36
36
  lastIndex = TAG_PATTERN.lastIndex;
37
37
  }
@@ -40,40 +40,7 @@ function tokenize(template) {
40
40
  }
41
41
  return tokens;
42
42
  }
43
- function tokenToLiteral(token) {
44
- switch (token.kind) {
45
- case 'text':
46
- return token.value;
47
- case 'scalar':
48
- return `{{${token.path}}}`;
49
- case 'if':
50
- return token.mode === 'eq'
51
- ? `{{#if:eq:${token.path}:${token.value}}}`
52
- : `{{#if:${token.mode === 'plain' ? '' : `${token.mode}:`}${token.path}}}`;
53
- case 'else':
54
- return '{{else}}';
55
- case 'endif':
56
- return '{{/if}}';
57
- case 'foreach':
58
- return `{{#foreach:${token.name}${token.separator !== undefined ? `:${token.separator}` : ''}}}`;
59
- case 'endforeach':
60
- return '{{/foreach}}';
61
- }
62
- }
63
- function consumeNestedForeachAsLiteral(tokens, pos, openToken) {
64
- let buffer = tokenToLiteral(openToken);
65
- let depth = 1;
66
- while (pos.i < tokens.length && depth > 0) {
67
- const token = tokens[pos.i++];
68
- buffer += tokenToLiteral(token);
69
- if (token.kind === 'foreach')
70
- depth++;
71
- if (token.kind === 'endforeach')
72
- depth--;
73
- }
74
- return buffer;
75
- }
76
- function parseNodes(tokens, pos, insideForeach) {
43
+ function parseNodes(tokens, pos) {
77
44
  const nodes = [];
78
45
  while (pos.i < tokens.length) {
79
46
  const token = tokens[pos.i];
@@ -87,22 +54,18 @@ function parseNodes(tokens, pos, insideForeach) {
87
54
  nodes.push({ type: 'scalar', path: token.path });
88
55
  }
89
56
  else if (token.kind === 'if') {
90
- const thenNodes = parseNodes(tokens, pos, insideForeach);
57
+ const thenNodes = parseNodes(tokens, pos);
91
58
  let elseNodes = [];
92
59
  if (tokens[pos.i]?.kind === 'else') {
93
60
  pos.i++;
94
- elseNodes = parseNodes(tokens, pos, insideForeach);
61
+ elseNodes = parseNodes(tokens, pos);
95
62
  }
96
63
  if (tokens[pos.i]?.kind === 'endif')
97
64
  pos.i++;
98
65
  nodes.push({ type: 'if', mode: token.mode, path: token.path, value: token.value, thenNodes, elseNodes });
99
66
  }
100
67
  else if (token.kind === 'foreach') {
101
- if (insideForeach) {
102
- nodes.push({ type: 'text', value: consumeNestedForeachAsLiteral(tokens, pos, token) });
103
- continue;
104
- }
105
- const body = parseNodes(tokens, pos, true);
68
+ const body = parseNodes(tokens, pos);
106
69
  if (tokens[pos.i]?.kind === 'endforeach')
107
70
  pos.i++;
108
71
  nodes.push({ type: 'foreach', name: token.name, separator: token.separator, body });
@@ -111,7 +74,7 @@ function parseNodes(tokens, pos, insideForeach) {
111
74
  return nodes;
112
75
  }
113
76
  function parseTemplate(template) {
114
- return parseNodes(tokenize(template), { i: 0 }, false);
77
+ return parseNodes(tokenize(template), { i: 0 });
115
78
  }
116
79
  class Scope {
117
80
  bindings;
@@ -171,7 +134,9 @@ function renderNodes(nodes, scope, itemAliasByListName) {
171
134
  ? isSet(value)
172
135
  : node.mode === 'eq'
173
136
  ? String(value) === node.value
174
- : isTruthy(value);
137
+ : node.mode === 'ne'
138
+ ? String(value) !== node.value
139
+ : isTruthy(value);
175
140
  out += renderNodes(condition ? node.thenNodes : node.elseNodes, scope, itemAliasByListName);
176
141
  }
177
142
  else if (node.type === 'foreach') {
@@ -181,8 +146,8 @@ function renderNodes(nodes, scope, itemAliasByListName) {
181
146
  if (!itemAlias) {
182
147
  throw new Error(`Template references {{#foreach:${node.name}}} but no list placeholder "${node.name}" with an itemAlias is registered`);
183
148
  }
184
- const rendered = list.map((item) => {
185
- const childScope = new Scope({ [itemAlias]: item }, scope);
149
+ const rendered = list.map((item, index) => {
150
+ const childScope = new Scope({ [itemAlias]: item, '@index': index + 1, '@index0': index }, scope);
186
151
  return renderNodes(node.body, childScope, itemAliasByListName);
187
152
  });
188
153
  out += rendered.join(node.separator ?? '');
@@ -1 +1 @@
1
- {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../src/grammar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grammar.js","sourceRoot":"","sources":["../src/grammar.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -30,6 +30,7 @@ export interface TemplateDefinition {
30
30
  conditionalButtons: ConditionalButtonRule[];
31
31
  placeholders: TemplatePlaceholder[];
32
32
  preview?: TemplatePreviewSpec;
33
+ defaultPayload?: DiscordMessagePayload;
33
34
  }
34
35
  export interface ContractError {
35
36
  error: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;IAC5C,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,mBAAmB,EAAE,OAAO,CAAC;KAChC,CAAC;CACL;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IAClC,UAAU,EAAE,OAAO,EAAE,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;IAC5C,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,cAAc,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE;QACN,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,mBAAmB,EAAE,OAAO,CAAC;KAChC,CAAC;CACL;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IAClC,UAAU,EAAE,OAAO,EAAE,CAAC;CACzB"}
@@ -505,8 +505,167 @@
505
505
  "expected": "Admin, !Mod, Member"
506
506
  },
507
507
  {
508
- "name": "foreach-nested-becomes-literal",
509
- "template": "{{#foreach:roles}}{{#foreach:roles}}{{role.name}}{{/foreach}}{{/foreach}}",
508
+ "name": "foreach-nested-top-level-lists",
509
+ "template": "{{#foreach:roles:; }}{{role.name}}[{{#foreach:tags:,}}{{tag.t}}{{/foreach}}]{{/foreach}}",
510
+ "placeholders": [
511
+ {
512
+ "name": "roles",
513
+ "description": "roles",
514
+ "kind": "list",
515
+ "itemAlias": "role"
516
+ },
517
+ {
518
+ "name": "tags",
519
+ "description": "tags",
520
+ "kind": "list",
521
+ "itemAlias": "tag"
522
+ }
523
+ ],
524
+ "data": {
525
+ "roles": [
526
+ {
527
+ "name": "Admin",
528
+ "id": "1",
529
+ "memberCount": 2
530
+ },
531
+ {
532
+ "name": "Mod",
533
+ "id": "2",
534
+ "memberCount": 5
535
+ },
536
+ {
537
+ "name": "Member",
538
+ "id": "3",
539
+ "memberCount": 40
540
+ }
541
+ ],
542
+ "tags": [
543
+ {
544
+ "t": "x"
545
+ },
546
+ {
547
+ "t": "y"
548
+ }
549
+ ]
550
+ },
551
+ "expected": "Admin[x,y]; Mod[x,y]; Member[x,y]"
552
+ },
553
+ {
554
+ "name": "foreach-nested-loop-relative",
555
+ "template": "{{#foreach:teams:; }}{{team.name}}: {{#foreach:team.members:, }}{{member.n}}{{/foreach}}{{/foreach}}",
556
+ "placeholders": [
557
+ {
558
+ "name": "teams",
559
+ "description": "teams",
560
+ "kind": "list",
561
+ "itemAlias": "team"
562
+ },
563
+ {
564
+ "name": "team.members",
565
+ "description": "team.members",
566
+ "kind": "list",
567
+ "itemAlias": "member"
568
+ }
569
+ ],
570
+ "data": {
571
+ "teams": [
572
+ {
573
+ "name": "Red",
574
+ "members": [
575
+ {
576
+ "n": "a"
577
+ },
578
+ {
579
+ "n": "b"
580
+ }
581
+ ]
582
+ },
583
+ {
584
+ "name": "Blue",
585
+ "members": [
586
+ {
587
+ "n": "c"
588
+ }
589
+ ]
590
+ }
591
+ ]
592
+ },
593
+ "expected": "Red: a, b; Blue: c"
594
+ },
595
+ {
596
+ "name": "foreach-nested-outer-alias-visible-inside",
597
+ "template": "{{#foreach:teams:; }}{{#foreach:team.members:, }}{{team.name}}/{{member.n}}{{/foreach}}{{/foreach}}",
598
+ "placeholders": [
599
+ {
600
+ "name": "teams",
601
+ "description": "teams",
602
+ "kind": "list",
603
+ "itemAlias": "team"
604
+ },
605
+ {
606
+ "name": "team.members",
607
+ "description": "team.members",
608
+ "kind": "list",
609
+ "itemAlias": "member"
610
+ }
611
+ ],
612
+ "data": {
613
+ "teams": [
614
+ {
615
+ "name": "Red",
616
+ "members": [
617
+ {
618
+ "n": "a"
619
+ }
620
+ ]
621
+ },
622
+ {
623
+ "name": "Blue",
624
+ "members": [
625
+ {
626
+ "n": "c"
627
+ }
628
+ ]
629
+ }
630
+ ]
631
+ },
632
+ "expected": "Red/a; Blue/c"
633
+ },
634
+ {
635
+ "name": "foreach-index-one-based",
636
+ "template": "{{#foreach:roles:, }}{{@index}}. {{role.name}}{{/foreach}}",
637
+ "placeholders": [
638
+ {
639
+ "name": "roles",
640
+ "description": "roles",
641
+ "kind": "list",
642
+ "itemAlias": "role"
643
+ }
644
+ ],
645
+ "data": {
646
+ "roles": [
647
+ {
648
+ "name": "Admin",
649
+ "id": "1",
650
+ "memberCount": 2
651
+ },
652
+ {
653
+ "name": "Mod",
654
+ "id": "2",
655
+ "memberCount": 5
656
+ },
657
+ {
658
+ "name": "Member",
659
+ "id": "3",
660
+ "memberCount": 40
661
+ }
662
+ ]
663
+ },
664
+ "expected": "1. Admin, 2. Mod, 3. Member"
665
+ },
666
+ {
667
+ "name": "foreach-index-zero-based",
668
+ "template": "{{#foreach:roles:,}}{{@index0}}{{/foreach}}",
510
669
  "placeholders": [
511
670
  {
512
671
  "name": "roles",
@@ -534,7 +693,124 @@
534
693
  }
535
694
  ]
536
695
  },
537
- "expected": "{{#foreach:roles}}{{role.name}}{{/foreach}}{{#foreach:roles}}{{role.name}}{{/foreach}}{{#foreach:roles}}{{role.name}}{{/foreach}}"
696
+ "expected": "0,1,2"
697
+ },
698
+ {
699
+ "name": "foreach-index-shadowed-by-inner-loop",
700
+ "template": "{{#foreach:teams:|}}{{@index}}({{#foreach:team.members:,}}{{@index}}{{/foreach}}){{/foreach}}",
701
+ "placeholders": [
702
+ {
703
+ "name": "teams",
704
+ "description": "teams",
705
+ "kind": "list",
706
+ "itemAlias": "team"
707
+ },
708
+ {
709
+ "name": "team.members",
710
+ "description": "team.members",
711
+ "kind": "list",
712
+ "itemAlias": "member"
713
+ }
714
+ ],
715
+ "data": {
716
+ "teams": [
717
+ {
718
+ "members": [
719
+ {},
720
+ {}
721
+ ]
722
+ },
723
+ {
724
+ "members": [
725
+ {}
726
+ ]
727
+ }
728
+ ]
729
+ },
730
+ "expected": "1(1,2)|2(1)"
731
+ },
732
+ {
733
+ "name": "if-ne-true",
734
+ "template": "{{#if:ne:v:done}}moving{{/if}}",
735
+ "placeholders": [
736
+ {
737
+ "name": "v",
738
+ "description": "v",
739
+ "kind": "scalar"
740
+ }
741
+ ],
742
+ "data": {
743
+ "v": "pending"
744
+ },
745
+ "expected": "moving"
746
+ },
747
+ {
748
+ "name": "if-ne-false-with-else",
749
+ "template": "{{#if:ne:v:done}}moving{{else}}finished{{/if}}",
750
+ "placeholders": [
751
+ {
752
+ "name": "v",
753
+ "description": "v",
754
+ "kind": "scalar"
755
+ }
756
+ ],
757
+ "data": {
758
+ "v": "done"
759
+ },
760
+ "expected": "finished"
761
+ },
762
+ {
763
+ "name": "if-ne-against-number",
764
+ "template": "{{#if:ne:v:0}}nonzero{{else}}zero{{/if}}",
765
+ "placeholders": [
766
+ {
767
+ "name": "v",
768
+ "description": "v",
769
+ "kind": "scalar"
770
+ }
771
+ ],
772
+ "data": {
773
+ "v": 0
774
+ },
775
+ "expected": "zero"
776
+ },
777
+ {
778
+ "name": "nested-list-length-via-path",
779
+ "template": "{{#foreach:teams:; }}{{team.name}}={{team.members.length}}{{/foreach}}",
780
+ "placeholders": [
781
+ {
782
+ "name": "teams",
783
+ "description": "teams",
784
+ "kind": "list",
785
+ "itemAlias": "team"
786
+ },
787
+ {
788
+ "name": "team.members",
789
+ "description": "team.members",
790
+ "kind": "list",
791
+ "itemAlias": "member"
792
+ }
793
+ ],
794
+ "data": {
795
+ "teams": [
796
+ {
797
+ "name": "Red",
798
+ "members": [
799
+ {
800
+ "n": "a"
801
+ },
802
+ {
803
+ "n": "b"
804
+ }
805
+ ]
806
+ },
807
+ {
808
+ "name": "Blue",
809
+ "members": []
810
+ }
811
+ ]
812
+ },
813
+ "expected": "Red=2; Blue=0"
538
814
  },
539
815
  {
540
816
  "name": "foreach-without-item-alias-throws",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shurizma/discord-message-contract",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Shared template grammar and types for the shuri.gg Discord message builder bot contract",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,8 +27,8 @@
27
27
  "build": "tsc -p tsconfig.json",
28
28
  "test": "vitest run",
29
29
  "test:watch": "vitest",
30
- "capture": "tsx scripts/capture-fixtures.ts",
31
- "prepublishOnly": "pnpm run build && pnpm run test"
30
+ "prepublishOnly": "pnpm run build && pnpm run test",
31
+ "fixtures": "tsx scripts/regenerate-fixtures.ts"
32
32
  },
33
33
  "devDependencies": {
34
34
  "tsx": "^4.20.3",