@quenk/wml 2.10.3 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cli.js +12 -12
- package/lib/cli.js.map +1 -1
- package/lib/compile/codegen.js +296 -290
- package/lib/compile/codegen.js.map +1 -1
- package/lib/compile/codegen.ts +9 -4
- package/lib/compile/index.js +2 -2
- package/lib/compile/index.js.map +1 -1
- package/lib/compile/transform.d.ts +5 -5
- package/lib/compile/transform.js +29 -11
- package/lib/compile/transform.js.map +1 -1
- package/lib/compile/transform.ts +37 -12
- package/lib/dom.js +14 -14
- package/lib/dom.js.map +1 -1
- package/lib/main.js +45 -7
- package/lib/main.js.map +1 -1
- package/lib/main.ts +10 -9
- package/lib/parse/ast.d.ts +9 -6
- package/lib/parse/ast.js +8 -3
- package/lib/parse/ast.js.map +1 -1
- package/lib/parse/ast.ts +18 -5
- package/lib/parse/generated.js +2032 -1886
- package/lib/parse/index.js +1 -1
- package/lib/parse/index.js.map +1 -1
- package/lib/parse/test.js +5 -3
- package/lib/parse/test.js.map +1 -1
- package/lib/parse/test.ts +13 -7
- package/lib/parse/wml.y +81 -85
- package/package.json +5 -2
package/lib/parse/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var error_1 = require("@quenk/noni/lib/control/error");
|
|
|
10
10
|
*/
|
|
11
11
|
var parse = function (str, ast) {
|
|
12
12
|
if (ast === void 0) { ast = nodes; }
|
|
13
|
-
return error_1.attempt(function () {
|
|
13
|
+
return (0, error_1.attempt)(function () {
|
|
14
14
|
parser.parser.yy = { ast: ast };
|
|
15
15
|
return parser.parser.parse(str);
|
|
16
16
|
});
|
package/lib/parse/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;AAEvC,oCAAsC;AACtC,6BAA+B;AAE/B,uDAAgE;AAEhE;;GAEG;AACI,IAAM,KAAK,GAAG,UAAC,GAAW,EAAE,GAAgB;IAAhB,oBAAA,EAAA,WAAgB;IAC/C,OAAA,eAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;AAEvC,oCAAsC;AACtC,6BAA+B;AAE/B,uDAAgE;AAEhE;;GAEG;AACI,IAAM,KAAK,GAAG,UAAC,GAAW,EAAE,GAAgB;IAAhB,oBAAA,EAAA,WAAgB;IAC/C,OAAA,IAAA,eAAO,EAAC;QAEJ,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,KAAA,EAAE,CAAC;QAE3B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,CAAC,CAAC;AANF,CAME,CAAC;AAPM,QAAA,KAAK,SAOX"}
|
package/lib/parse/test.js
CHANGED
|
@@ -144,6 +144,9 @@ exports.tests = {
|
|
|
144
144
|
'should parse context variables': {
|
|
145
145
|
input: '<Input name={{@level.name}}/>'
|
|
146
146
|
},
|
|
147
|
+
'[view] should allow inline context import': {
|
|
148
|
+
input: '{% view MyView (Context from "./") %}} <div>{{@text}}</div>'
|
|
149
|
+
},
|
|
147
150
|
'should allow construct expression': {
|
|
148
151
|
input: '<TextView android:thing={value=1}>{{Person(@value)}}</TextView>'
|
|
149
152
|
},
|
|
@@ -221,8 +224,6 @@ exports.tests = {
|
|
|
221
224
|
'[context] should mark nested properties as optional if all are': "{% context Paper where object.\"type\"?: String %}",
|
|
222
225
|
'should parse type statements': "{% type Type = String | Number | Boolean | Type[] | Type -> Type %}",
|
|
223
226
|
'should parse tupe types': "{% type Tuple = [Number, String, Number] %}",
|
|
224
|
-
'should parse primitives used as type': '{% type Prims = 1|2|"three"|true|false|"1,2,three,true,false" %}',
|
|
225
|
-
'should parse this type': '{% type SortDir = 1 | -1 %}',
|
|
226
227
|
'should parse type assertion': '<Panel onClick={{ \e -> [*User]foo(e) }} />',
|
|
227
228
|
'should parse partial application in expression': '<Link ww:text={{truncate(50)(@text)}} />',
|
|
228
229
|
'should transform special primitives': "<div>\n {% for kind in [\n String,\n Boolean,\n Number,\n Object,\n Undefined,\n Null,\n Void,\n Never,\n Any] %}\n {{ kind | text }}\n {% endfor %}\n </div>",
|
|
@@ -234,6 +235,7 @@ exports.tests = {
|
|
|
234
235
|
'[comment] should parse wml comments': "{# This is a wml comment #}",
|
|
235
236
|
'[comment] should parse wml comments in statements': "{% view Name {# This is a comment! #} (Object) %} <div/> %}",
|
|
236
237
|
'[fun] should parse multi dimensional array parameters': "\n {% fun test (value:List[][]) %}<p/>{% endfun %}",
|
|
237
|
-
'should allow index access on context properties': "{% view Test (Object) %}\n <div>\n {% if @[\"type\"]?? %}\n <div/>\n {% endif %}\n </div>"
|
|
238
|
+
'should allow index access on context properties': "{% view Test (Object) %}\n <div>\n {% if @[\"type\"]?? %}\n <div/>\n {% endif %}\n </div>",
|
|
239
|
+
'should allow paths to use brackets': "\n {% view Test (Object) %} \n <div>\n {% if @values.controls[\"@type\"] %} value {% endif %}\n {% if @values.controls[\"@type\"].value %} value {% endif %}\n </div>"
|
|
238
240
|
};
|
|
239
241
|
//# sourceMappingURL=test.js.map
|
package/lib/parse/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"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"}
|
package/lib/parse/test.ts
CHANGED
|
@@ -222,6 +222,11 @@ export const tests: { [key: string]: any } = {
|
|
|
222
222
|
|
|
223
223
|
input: '<Input name={{@level.name}}/>'
|
|
224
224
|
|
|
225
|
+
},
|
|
226
|
+
'[view] should allow inline context import': {
|
|
227
|
+
|
|
228
|
+
input: '{% view MyView (Context from "./") %}} <div>{{@text}}</div>'
|
|
229
|
+
|
|
225
230
|
},
|
|
226
231
|
'should allow construct expression': {
|
|
227
232
|
|
|
@@ -556,12 +561,6 @@ export const tests: { [key: string]: any } = {
|
|
|
556
561
|
|
|
557
562
|
'should parse tupe types': `{% type Tuple = [Number, String, Number] %}`,
|
|
558
563
|
|
|
559
|
-
'should parse primitives used as type':
|
|
560
|
-
'{% type Prims = 1|2|"three"|true|false|"1,2,three,true,false" %}',
|
|
561
|
-
|
|
562
|
-
'should parse this type':
|
|
563
|
-
'{% type SortDir = 1 | -1 %}',
|
|
564
|
-
|
|
565
564
|
'should parse type assertion':
|
|
566
565
|
'<Panel onClick={{ \e -> [*User]foo(e) }} />',
|
|
567
566
|
|
|
@@ -622,6 +621,13 @@ export const tests: { [key: string]: any } = {
|
|
|
622
621
|
{% if @["type"]?? %}
|
|
623
622
|
<div/>
|
|
624
623
|
{% endif %}
|
|
625
|
-
</div
|
|
624
|
+
</div>`,
|
|
625
|
+
|
|
626
|
+
'should allow paths to use brackets': `
|
|
627
|
+
{% view Test (Object) %}
|
|
628
|
+
<div>
|
|
629
|
+
{% if @values.controls["@type"] %} value {% endif %}
|
|
630
|
+
{% if @values.controls["@type"].value %} value {% endif %}
|
|
631
|
+
</div>`
|
|
626
632
|
|
|
627
633
|
}
|
package/lib/parse/wml.y
CHANGED
|
@@ -336,22 +336,26 @@ member_path
|
|
|
336
336
|
|
|
337
337
|
view_statement
|
|
338
338
|
|
|
339
|
-
: '{%' VIEW unqualified_constructor '('
|
|
339
|
+
: '{%' VIEW unqualified_constructor '(' view_statement_context ')'
|
|
340
|
+
'%}' element
|
|
340
341
|
{ $$ = new yy.ast.ViewStatement($3, [], $5, [], $8, @$); }
|
|
341
342
|
|
|
342
|
-
| '{%' VIEW unqualified_constructor '('
|
|
343
|
+
| '{%' VIEW unqualified_constructor '(' view_statement_context ')' '%}'
|
|
343
344
|
view_directives element
|
|
344
345
|
{ $$ = new yy.ast.ViewStatement($3, [], $5, $8, $9, @$); }
|
|
345
346
|
|
|
346
|
-
| '{%' VIEW unqualified_constructor type_parameters
|
|
347
|
+
| '{%' VIEW unqualified_constructor type_parameters
|
|
348
|
+
'(' view_statement_context ')' '%}'
|
|
347
349
|
element
|
|
348
350
|
{ $$ = new yy.ast.ViewStatement($3, $4, $6, [], $9, @$); }
|
|
349
351
|
|
|
350
|
-
| '{%' VIEW unqualified_constructor type_parameters
|
|
352
|
+
| '{%' VIEW unqualified_constructor type_parameters
|
|
353
|
+
'(' view_statement_context ')' '%}'
|
|
351
354
|
view_directives element
|
|
352
355
|
{ $$ = new yy.ast.ViewStatement($3, $4, $6, $9, $10, @$); }
|
|
353
356
|
|
|
354
|
-
| '{%' VIEW unqualified_constructor WHERE context_members '%}'
|
|
357
|
+
| '{%' VIEW unqualified_constructor WHERE context_members '%}'
|
|
358
|
+
element
|
|
355
359
|
{ $$ = new yy.ast.ViewStatement($3, [], $5, [], $7, @$); }
|
|
356
360
|
|
|
357
361
|
| '{%' VIEW unqualified_constructor WHERE context_members '%}'
|
|
@@ -367,6 +371,16 @@ view_statement
|
|
|
367
371
|
{ $$ = new yy.ast.ViewStatement($3, $4, $6, $8, $9, @$); }
|
|
368
372
|
;
|
|
369
373
|
|
|
374
|
+
view_statement_context
|
|
375
|
+
: type
|
|
376
|
+
{ $$ = $1; }
|
|
377
|
+
|
|
378
|
+
| unqualified_constructor FROM string_literal
|
|
379
|
+
{$$ = new yy.ast.ImportStatement(new yy.ast.CompositeMember([$1],@$),
|
|
380
|
+
$3, @$);
|
|
381
|
+
}
|
|
382
|
+
;
|
|
383
|
+
|
|
370
384
|
view_directives
|
|
371
385
|
: let_statement
|
|
372
386
|
{ $$ = [$1]; }
|
|
@@ -439,15 +453,6 @@ non_function_type
|
|
|
439
453
|
: constructor_type
|
|
440
454
|
{ $$ = $1; }
|
|
441
455
|
|
|
442
|
-
| string_literal
|
|
443
|
-
{ $$ = $1; }
|
|
444
|
-
|
|
445
|
-
| number_literal
|
|
446
|
-
{ $$ = $1; }
|
|
447
|
-
|
|
448
|
-
| boolean_literal
|
|
449
|
-
{ $$ = $1; }
|
|
450
|
-
|
|
451
456
|
| record_type
|
|
452
457
|
{ $$ = $1; }
|
|
453
458
|
|
|
@@ -480,19 +485,10 @@ list_type
|
|
|
480
485
|
{ $$ = new yy.ast.ListType(
|
|
481
486
|
new yy.ast.ConstructorType($1, []), @$); }
|
|
482
487
|
|
|
483
|
-
|
|
488
|
+
| cons type_parameters '[' ']'
|
|
484
489
|
{ $$ = new yy.ast.ListType(
|
|
485
490
|
new yy.ast.ConstructorType($1, $2), @$); }
|
|
486
491
|
|
|
487
|
-
| string_literal '[' ']'
|
|
488
|
-
{ $$ = new yy.ast.ListType($1, @$); }
|
|
489
|
-
|
|
490
|
-
| number_literal '[' ']'
|
|
491
|
-
{ $$ = new yy.ast.ListType($1, @$); }
|
|
492
|
-
|
|
493
|
-
| boolean_literal '[' ']'
|
|
494
|
-
{ $$ = new yy.ast.ListType($1, @$); }
|
|
495
|
-
|
|
496
492
|
| record_type '[' ']'
|
|
497
493
|
{ $$ = new yy.ast.ListType($1, @$); }
|
|
498
494
|
|
|
@@ -508,7 +504,6 @@ list_type
|
|
|
508
504
|
;
|
|
509
505
|
|
|
510
506
|
tuple_type
|
|
511
|
-
|
|
512
507
|
: '[' ']'
|
|
513
508
|
{ $$ = new yy.ast.TupleType([], @$); }
|
|
514
509
|
|
|
@@ -747,19 +742,10 @@ characters
|
|
|
747
742
|
;
|
|
748
743
|
|
|
749
744
|
arguments
|
|
750
|
-
: '(' ')'
|
|
751
|
-
{$$ = []; }
|
|
752
|
-
|
|
753
|
-
| '(' argument_list ')'
|
|
754
|
-
{$$ = $2; }
|
|
755
|
-
|
|
756
|
-
;
|
|
757
|
-
|
|
758
|
-
argument_list
|
|
759
745
|
: expression
|
|
760
746
|
{$$ = [$1]; }
|
|
761
747
|
|
|
762
|
-
|
|
|
748
|
+
| arguments ',' expression
|
|
763
749
|
{$$ = $1.concat($3); }
|
|
764
750
|
;
|
|
765
751
|
|
|
@@ -817,21 +803,18 @@ unary_expression
|
|
|
817
803
|
|
|
818
804
|
| '(' expression ')' '??'
|
|
819
805
|
{$$ = new yy.ast.UnaryExpression($4, $2, @$); }
|
|
820
|
-
|
|
821
806
|
;
|
|
822
807
|
|
|
823
808
|
type_assertion
|
|
824
|
-
|
|
825
809
|
: '[' '*' type ']' expression
|
|
826
810
|
{$$ = new yy.ast.TypeAssertion($3, $5, @$); }
|
|
827
811
|
;
|
|
828
812
|
|
|
829
813
|
simple_expression
|
|
830
814
|
: (
|
|
831
|
-
|
|
832
|
-
|fun_application
|
|
833
|
-
|construct_expression
|
|
815
|
+
construct_expression
|
|
834
816
|
|call_expression
|
|
817
|
+
|view_construction
|
|
835
818
|
|member_expression
|
|
836
819
|
|literal
|
|
837
820
|
|context_property
|
|
@@ -842,31 +825,11 @@ simple_expression
|
|
|
842
825
|
;
|
|
843
826
|
|
|
844
827
|
view_construction
|
|
845
|
-
: '<'
|
|
846
|
-
{ $$ = new yy.ast.ViewConstruction($2,
|
|
847
|
-
;
|
|
848
|
-
|
|
849
|
-
fun_application
|
|
850
|
-
: '<' fun_target type_arguments arguments '>'
|
|
851
|
-
{ $$ = new yy.ast.FunApplication($2, $3, $4, @$); }
|
|
852
|
-
|
|
853
|
-
| '<' fun_target arguments '>'
|
|
854
|
-
{ $$ = new yy.ast.FunApplication($2, [], $3, @$); }
|
|
855
|
-
|
|
856
|
-
| '<' fun_target '>'
|
|
857
|
-
{ $$ = new yy.ast.FunApplication($2, [], [], @$); }
|
|
858
|
-
|
|
859
|
-
;
|
|
828
|
+
: '<' simple_expression '>'
|
|
829
|
+
{ $$ = new yy.ast.ViewConstruction($2, @$); }
|
|
860
830
|
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
{ $$ = $1; }
|
|
864
|
-
|
|
865
|
-
| context_property
|
|
866
|
-
{ $$ = $1; }
|
|
867
|
-
|
|
868
|
-
| '(' expression ')'
|
|
869
|
-
{ $$ = $2; }
|
|
831
|
+
| '<' '(' expression ')' '>'
|
|
832
|
+
{ $$ = new yy.ast.ViewConstruction($3, @$); }
|
|
870
833
|
;
|
|
871
834
|
|
|
872
835
|
type_arguments
|
|
@@ -883,37 +846,67 @@ type_arg_list
|
|
|
883
846
|
;
|
|
884
847
|
|
|
885
848
|
construct_expression
|
|
886
|
-
: cons arguments
|
|
887
|
-
{ $$ = new yy.ast.ConstructExpression($1, $
|
|
849
|
+
: cons '(' arguments ')'
|
|
850
|
+
{ $$ = new yy.ast.ConstructExpression($1, $3, @$); }
|
|
851
|
+
|
|
852
|
+
| cons '(' ')'
|
|
853
|
+
{ $$ = new yy.ast.ConstructExpression($1, [], @$); }
|
|
888
854
|
;
|
|
889
855
|
|
|
890
856
|
call_expression
|
|
891
|
-
: identifier type_arguments arguments
|
|
892
|
-
{$$ = new yy.ast.CallExpression($1, $2, $
|
|
857
|
+
: identifier type_arguments '(' arguments ')'
|
|
858
|
+
{$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
|
|
859
|
+
|
|
860
|
+
| identifier type_arguments '(' ')'
|
|
861
|
+
{$$ = new yy.ast.CallExpression($1, $2, [], @$); }
|
|
862
|
+
|
|
863
|
+
| identifier '(' arguments ')'
|
|
864
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
865
|
+
|
|
866
|
+
| identifier '(' ')'
|
|
867
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
868
|
+
|
|
869
|
+
| context_property type_arguments '(' arguments ')'
|
|
870
|
+
{$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
|
|
871
|
+
|
|
872
|
+
| context_property type_arguments '(' ')'
|
|
873
|
+
{$$ = new yy.ast.CallExpression($1, $2, [], @$); }
|
|
893
874
|
|
|
894
|
-
|
|
|
895
|
-
{$$ = new yy.ast.CallExpression($1, [], $
|
|
875
|
+
| context_property '(' arguments ')'
|
|
876
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
896
877
|
|
|
897
|
-
| context_property
|
|
898
|
-
{$$ = new yy.ast.CallExpression($1,
|
|
878
|
+
| context_property '(' ')'
|
|
879
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
899
880
|
|
|
900
|
-
|
|
|
901
|
-
{$$ = new yy.ast.CallExpression($1,
|
|
881
|
+
| member_expression type_arguments '(' arguments ')'
|
|
882
|
+
{$$ = new yy.ast.CallExpression($1, $2, $4, @$); }
|
|
902
883
|
|
|
903
|
-
| member_expression type_arguments
|
|
904
|
-
{$$ = new yy.ast.CallExpression($1, $2,
|
|
884
|
+
| member_expression type_arguments '(' ')'
|
|
885
|
+
{$$ = new yy.ast.CallExpression($1, $2, [], @$); }
|
|
905
886
|
|
|
906
|
-
| member_expression arguments
|
|
907
|
-
{$$ = new yy.ast.CallExpression($1, [], $
|
|
887
|
+
| member_expression '(' arguments ')'
|
|
888
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
908
889
|
|
|
909
|
-
| '('
|
|
910
|
-
{$$ = new yy.ast.CallExpression($
|
|
890
|
+
| member_expression '(' ')'
|
|
891
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
911
892
|
|
|
912
|
-
| '(' expression ')' arguments
|
|
913
|
-
{$$ = new yy.ast.CallExpression($2,
|
|
893
|
+
| '(' expression ')' type_arguments '(' arguments ')'
|
|
894
|
+
{$$ = new yy.ast.CallExpression($2, $4, $6, @$); }
|
|
914
895
|
|
|
915
|
-
|
|
|
916
|
-
{$$ = new yy.ast.CallExpression($
|
|
896
|
+
| '(' expression ')' type_arguments '(' ')'
|
|
897
|
+
{$$ = new yy.ast.CallExpression($2, $4, [], @$); }
|
|
898
|
+
|
|
899
|
+
| '(' expression ')' '(' arguments ')'
|
|
900
|
+
{$$ = new yy.ast.CallExpression($2, [], $5, @$); }
|
|
901
|
+
|
|
902
|
+
| '(' expression ')' '(' ')'
|
|
903
|
+
{$$ = new yy.ast.CallExpression($2, [], [], @$); }
|
|
904
|
+
|
|
905
|
+
| call_expression '(' arguments ')'
|
|
906
|
+
{$$ = new yy.ast.CallExpression($1, [], $3, @$); }
|
|
907
|
+
|
|
908
|
+
| call_expression '(' ')'
|
|
909
|
+
{$$ = new yy.ast.CallExpression($1, [], [], @$); }
|
|
917
910
|
;
|
|
918
911
|
|
|
919
912
|
member_expression
|
|
@@ -947,6 +940,9 @@ member_expression
|
|
|
947
940
|
|
|
948
941
|
| member_expression '.' unqualified_identifier
|
|
949
942
|
{$$ = new yy.ast.MemberExpression($1, $3, @$); }
|
|
943
|
+
|
|
944
|
+
| member_expression '[' string_literal ']'
|
|
945
|
+
{$$ = new yy.ast.MemberExpression($1, $3, @$); }
|
|
950
946
|
;
|
|
951
947
|
|
|
952
948
|
function_expression
|
|
@@ -990,7 +986,7 @@ list
|
|
|
990
986
|
: '[' ']'
|
|
991
987
|
{$$ = new yy.ast.List([], @$); }
|
|
992
988
|
|
|
993
|
-
| '['
|
|
989
|
+
| '[' arguments ']'
|
|
994
990
|
{$$ = new yy.ast.List($2, @$); }
|
|
995
991
|
;
|
|
996
992
|
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenk/wml",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"description": "(WML) is a DSL for describing user interfaces in web applications.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "./node_modules/.bin/mocha $(find -name *_test.ts)"
|
|
8
|
+
},
|
|
6
9
|
"types": "lib/index.d.ts",
|
|
7
10
|
"files": [
|
|
8
11
|
"lib"
|
|
@@ -19,7 +22,7 @@
|
|
|
19
22
|
"@types/node": "^15.12.2",
|
|
20
23
|
"jison-gho": "^0.6.1-216",
|
|
21
24
|
"mocha": "^9.0.0",
|
|
22
|
-
"ts-node": "^10.
|
|
25
|
+
"ts-node": "^10.5.0",
|
|
23
26
|
"typedoc": "^0.20.36",
|
|
24
27
|
"typescript": "^4.3.2"
|
|
25
28
|
},
|