@rightcapital/phpdoc-parser 0.5.3 → 0.6.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 (52) hide show
  1. package/dist/index.d.ts +10 -1
  2. package/dist/index.js +22 -4
  3. package/dist/phpdoc-parser/ast/comment.d.ts +7 -0
  4. package/dist/phpdoc-parser/ast/comment.js +14 -0
  5. package/dist/phpdoc-parser/ast/const-expr/const-expr-node.d.ts +0 -2
  6. package/dist/phpdoc-parser/ast/const-expr/const-expr-node.js +0 -3
  7. package/dist/phpdoc-parser/ast/const-expr/const-expr-string-node.d.ts +5 -1
  8. package/dist/phpdoc-parser/ast/const-expr/const-expr-string-node.js +33 -2
  9. package/dist/phpdoc-parser/ast/php-doc/param-closure-this-tag-value-node.d.ts +10 -0
  10. package/dist/phpdoc-parser/ast/php-doc/param-closure-this-tag-value-node.js +19 -0
  11. package/dist/phpdoc-parser/ast/php-doc/param-immediately-invoked-callable-tag-value-node.d.ts +8 -0
  12. package/dist/phpdoc-parser/ast/php-doc/param-immediately-invoked-callable-tag-value-node.js +18 -0
  13. package/dist/phpdoc-parser/ast/php-doc/param-later-invoked-callable-tag-value-node.d.ts +8 -0
  14. package/dist/phpdoc-parser/ast/php-doc/param-later-invoked-callable-tag-value-node.js +18 -0
  15. package/dist/phpdoc-parser/ast/php-doc/php-doc-node.d.ts +2 -0
  16. package/dist/phpdoc-parser/ast/php-doc/php-doc-node.js +6 -0
  17. package/dist/phpdoc-parser/ast/php-doc/pure-unless-callable-is-impure-tag-value-node.d.ts +8 -0
  18. package/dist/phpdoc-parser/ast/php-doc/pure-unless-callable-is-impure-tag-value-node.js +18 -0
  19. package/dist/phpdoc-parser/ast/php-doc/require-extends-tag-value-node.d.ts +9 -0
  20. package/dist/phpdoc-parser/ast/php-doc/require-extends-tag-value-node.js +18 -0
  21. package/dist/phpdoc-parser/ast/php-doc/require-implements-tag-value-node.d.ts +9 -0
  22. package/dist/phpdoc-parser/ast/php-doc/require-implements-tag-value-node.js +18 -0
  23. package/dist/phpdoc-parser/ast/php-doc/sealed-tag-value-node.d.ts +9 -0
  24. package/dist/phpdoc-parser/ast/php-doc/sealed-tag-value-node.js +18 -0
  25. package/dist/phpdoc-parser/ast/php-doc/template-tag-value-node.d.ts +2 -1
  26. package/dist/phpdoc-parser/ast/php-doc/template-tag-value-node.js +4 -2
  27. package/dist/phpdoc-parser/ast/type/array-shape-item-node.d.ts +3 -2
  28. package/dist/phpdoc-parser/ast/type/array-shape-node.d.ts +8 -2
  29. package/dist/phpdoc-parser/ast/type/array-shape-node.js +13 -3
  30. package/dist/phpdoc-parser/ast/type/array-shape-unsealed-type-node.d.ts +8 -0
  31. package/dist/phpdoc-parser/ast/type/array-shape-unsealed-type-node.js +21 -0
  32. package/dist/phpdoc-parser/ast/type/callable-type-node.d.ts +3 -1
  33. package/dist/phpdoc-parser/ast/type/callable-type-node.js +4 -2
  34. package/dist/phpdoc-parser/ast/types.d.ts +2 -1
  35. package/dist/phpdoc-parser/ast/types.js +1 -0
  36. package/dist/phpdoc-parser/lexer/lexer.d.ts +2 -0
  37. package/dist/phpdoc-parser/lexer/lexer.js +3 -0
  38. package/dist/phpdoc-parser/parser/const-expr-parser.d.ts +2 -4
  39. package/dist/phpdoc-parser/parser/const-expr-parser.js +6 -20
  40. package/dist/phpdoc-parser/parser/php-doc-parser.d.ts +11 -9
  41. package/dist/phpdoc-parser/parser/php-doc-parser.js +112 -66
  42. package/dist/phpdoc-parser/parser/string-unescaper.js +2 -2
  43. package/dist/phpdoc-parser/parser/token-iterator.d.ts +4 -0
  44. package/dist/phpdoc-parser/parser/token-iterator.js +31 -3
  45. package/dist/phpdoc-parser/parser/type-parser.d.ts +8 -2
  46. package/dist/phpdoc-parser/parser/type-parser.js +205 -76
  47. package/dist/phpdoc-parser/parser-config.d.ts +10 -0
  48. package/dist/phpdoc-parser/parser-config.js +12 -0
  49. package/dist/phpdoc-parser/transpiler/php-doc-to-typescript-type-transpiler.js +9 -2
  50. package/package.json +8 -5
  51. package/dist/phpdoc-parser/ast/const-expr/quote-aware-const-expr-string-node.d.ts +0 -10
  52. package/dist/phpdoc-parser/ast/const-expr/quote-aware-const-expr-string-node.js +0 -47
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { AbstractNodeVisitor } from './phpdoc-parser/ast/abstract-node-visitor';
2
2
  export { BaseNode } from './phpdoc-parser/ast/base-node';
3
+ export { Comment } from './phpdoc-parser/ast/comment';
3
4
  export { ConstExprArrayItemNode } from './phpdoc-parser/ast/const-expr/const-expr-array-item-node';
4
5
  export { ConstExprArrayNode } from './phpdoc-parser/ast/const-expr/const-expr-array-node';
5
6
  export { ConstExprFalseNode } from './phpdoc-parser/ast/const-expr/const-expr-false-node';
@@ -10,7 +11,6 @@ export { ConstExprNullNode } from './phpdoc-parser/ast/const-expr/const-expr-nul
10
11
  export { ConstExprStringNode } from './phpdoc-parser/ast/const-expr/const-expr-string-node';
11
12
  export { ConstExprTrueNode } from './phpdoc-parser/ast/const-expr/const-expr-true-node';
12
13
  export { ConstFetchNode } from './phpdoc-parser/ast/const-expr/const-fetch-node';
13
- export { QuoteAwareConstExprStringNode } from './phpdoc-parser/ast/const-expr/quote-aware-const-expr-string-node';
14
14
  export type { Node } from './phpdoc-parser/ast/node';
15
15
  export { NodeTraverser } from './phpdoc-parser/ast/node-traverser';
16
16
  export type { NodeVisitor } from './phpdoc-parser/ast/node-visitor';
@@ -27,6 +27,9 @@ export { InvalidTagValueNode } from './phpdoc-parser/ast/php-doc/invalid-tag-val
27
27
  export { MethodTagValueNode } from './phpdoc-parser/ast/php-doc/method-tag-value-node';
28
28
  export { MethodTagValueParameterNode } from './phpdoc-parser/ast/php-doc/method-tag-value-parameter-node';
29
29
  export { MixinTagValueNode } from './phpdoc-parser/ast/php-doc/mixin-tag-value-node';
30
+ export { ParamClosureThisTagValueNode } from './phpdoc-parser/ast/php-doc/param-closure-this-tag-value-node';
31
+ export { ParamImmediatelyInvokedCallableTagValueNode } from './phpdoc-parser/ast/php-doc/param-immediately-invoked-callable-tag-value-node';
32
+ export { ParamLaterInvokedCallableTagValueNode } from './phpdoc-parser/ast/php-doc/param-later-invoked-callable-tag-value-node';
30
33
  export { ParamOutTagValueNode } from './phpdoc-parser/ast/php-doc/param-out-tag-value-node';
31
34
  export { ParamTagValueNode } from './phpdoc-parser/ast/php-doc/param-tag-value-node';
32
35
  export { PhpDocChildNode } from './phpdoc-parser/ast/php-doc/php-doc-child-node';
@@ -35,7 +38,11 @@ export { PhpDocTagNode } from './phpdoc-parser/ast/php-doc/php-doc-tag-node';
35
38
  export { PhpDocTagValueNode } from './phpdoc-parser/ast/php-doc/php-doc-tag-value-node';
36
39
  export { PhpDocTextNode } from './phpdoc-parser/ast/php-doc/php-doc-text-node';
37
40
  export { PropertyTagValueNode } from './phpdoc-parser/ast/php-doc/property-tag-value-node';
41
+ export { PureUnlessCallableIsImpureTagValueNode } from './phpdoc-parser/ast/php-doc/pure-unless-callable-is-impure-tag-value-node';
42
+ export { RequireExtendsTagValueNode } from './phpdoc-parser/ast/php-doc/require-extends-tag-value-node';
43
+ export { RequireImplementsTagValueNode } from './phpdoc-parser/ast/php-doc/require-implements-tag-value-node';
38
44
  export { ReturnTagValueNode } from './phpdoc-parser/ast/php-doc/return-tag-value-node';
45
+ export { SealedTagValueNode } from './phpdoc-parser/ast/php-doc/sealed-tag-value-node';
39
46
  export { SelfOutTagValueNode } from './phpdoc-parser/ast/php-doc/self-out-tag-value-node';
40
47
  export { TemplateTagValueNode } from './phpdoc-parser/ast/php-doc/template-tag-value-node';
41
48
  export { ThrowsTagValueNode } from './phpdoc-parser/ast/php-doc/throws-tag-value-node';
@@ -46,6 +53,7 @@ export { UsesTagValueNode } from './phpdoc-parser/ast/php-doc/uses-tag-value-nod
46
53
  export { VarTagValueNode } from './phpdoc-parser/ast/php-doc/var-tag-value-node';
47
54
  export { ArrayShapeItemNode } from './phpdoc-parser/ast/type/array-shape-item-node';
48
55
  export { ArrayShapeNode } from './phpdoc-parser/ast/type/array-shape-node';
56
+ export { ArrayShapeUnsealedTypeNode } from './phpdoc-parser/ast/type/array-shape-unsealed-type-node';
49
57
  export { ArrayTypeNode } from './phpdoc-parser/ast/type/array-type-node';
50
58
  export { CallableTypeNode } from './phpdoc-parser/ast/type/callable-type-node';
51
59
  export { CallableTypeParameterNode } from './phpdoc-parser/ast/type/callable-type-parameter-node';
@@ -71,6 +79,7 @@ export { PhpDocParser } from './phpdoc-parser/parser/php-doc-parser';
71
79
  export { StringUnescaper } from './phpdoc-parser/parser/string-unescaper';
72
80
  export { TokenIterator } from './phpdoc-parser/parser/token-iterator';
73
81
  export { TypeParser } from './phpdoc-parser/parser/type-parser';
82
+ export { ParserConfig } from './phpdoc-parser/parser-config';
74
83
  export { Printer } from './phpdoc-parser/printer/printer';
75
84
  export * from './phpdoc-parser/transpiler/helpers';
76
85
  export * from './phpdoc-parser/transpiler/php-doc-to-typescript-type-transpiler';
package/dist/index.js CHANGED
@@ -14,12 +14,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ConditionalTypeNode = exports.ConditionalTypeForParameterNode = exports.CallableTypeParameterNode = exports.CallableTypeNode = exports.ArrayTypeNode = exports.ArrayShapeNode = exports.ArrayShapeItemNode = exports.VarTagValueNode = exports.UsesTagValueNode = exports.TypelessParamTagValueNode = exports.TypeAliasTagValueNode = exports.TypeAliasImportTagValueNode = exports.ThrowsTagValueNode = exports.TemplateTagValueNode = exports.SelfOutTagValueNode = exports.ReturnTagValueNode = exports.PropertyTagValueNode = exports.PhpDocTextNode = exports.PhpDocTagValueNode = exports.PhpDocTagNode = exports.PhpDocNode = exports.PhpDocChildNode = exports.ParamTagValueNode = exports.ParamOutTagValueNode = exports.MixinTagValueNode = exports.MethodTagValueParameterNode = exports.MethodTagValueNode = exports.InvalidTagValueNode = exports.ImplementsTagValueNode = exports.GenericTagValueNode = exports.ExtendsTagValueNode = exports.DeprecatedTagValueNode = exports.AssertTagValueNode = exports.AssertTagPropertyValueNode = exports.AssertTagMethodValueNode = exports.CloningVisitor = exports.NodeTraverser = exports.QuoteAwareConstExprStringNode = exports.ConstFetchNode = exports.ConstExprTrueNode = exports.ConstExprStringNode = exports.ConstExprNullNode = exports.ConstExprNode = exports.ConstExprIntegerNode = exports.ConstExprFloatNode = exports.ConstExprFalseNode = exports.ConstExprArrayNode = exports.ConstExprArrayItemNode = exports.BaseNode = exports.AbstractNodeVisitor = void 0;
18
- exports.Printer = exports.TypeParser = exports.TokenIterator = exports.StringUnescaper = exports.PhpDocParser = exports.ParserException = exports.ConstExprParser = exports.Lexer = exports.NodeTraverserState = exports.Attribute = exports.UnionTypeNode = exports.TypeNode = exports.ThisTypeNode = exports.OffsetAccessTypeNode = exports.ObjectShapeNode = exports.ObjectShapeItemNode = exports.NullableTypeNode = exports.InvalidTypeNode = exports.IntersectionTypeNode = exports.IdentifierTypeNode = exports.GenericTypeNode = exports.ConstTypeNode = void 0;
17
+ exports.VarTagValueNode = exports.UsesTagValueNode = exports.TypelessParamTagValueNode = exports.TypeAliasTagValueNode = exports.TypeAliasImportTagValueNode = exports.ThrowsTagValueNode = exports.TemplateTagValueNode = exports.SelfOutTagValueNode = exports.SealedTagValueNode = exports.ReturnTagValueNode = exports.RequireImplementsTagValueNode = exports.RequireExtendsTagValueNode = exports.PureUnlessCallableIsImpureTagValueNode = exports.PropertyTagValueNode = exports.PhpDocTextNode = exports.PhpDocTagValueNode = exports.PhpDocTagNode = exports.PhpDocNode = exports.PhpDocChildNode = exports.ParamTagValueNode = exports.ParamOutTagValueNode = exports.ParamLaterInvokedCallableTagValueNode = exports.ParamImmediatelyInvokedCallableTagValueNode = exports.ParamClosureThisTagValueNode = exports.MixinTagValueNode = exports.MethodTagValueParameterNode = exports.MethodTagValueNode = exports.InvalidTagValueNode = exports.ImplementsTagValueNode = exports.GenericTagValueNode = exports.ExtendsTagValueNode = exports.DeprecatedTagValueNode = exports.AssertTagValueNode = exports.AssertTagPropertyValueNode = exports.AssertTagMethodValueNode = exports.CloningVisitor = exports.NodeTraverser = exports.ConstFetchNode = exports.ConstExprTrueNode = exports.ConstExprStringNode = exports.ConstExprNullNode = exports.ConstExprNode = exports.ConstExprIntegerNode = exports.ConstExprFloatNode = exports.ConstExprFalseNode = exports.ConstExprArrayNode = exports.ConstExprArrayItemNode = exports.Comment = exports.BaseNode = exports.AbstractNodeVisitor = void 0;
18
+ exports.Printer = exports.ParserConfig = exports.TypeParser = exports.TokenIterator = exports.StringUnescaper = exports.PhpDocParser = exports.ParserException = exports.ConstExprParser = exports.Lexer = exports.NodeTraverserState = exports.Attribute = exports.UnionTypeNode = exports.TypeNode = exports.ThisTypeNode = exports.OffsetAccessTypeNode = exports.ObjectShapeNode = exports.ObjectShapeItemNode = exports.NullableTypeNode = exports.InvalidTypeNode = exports.IntersectionTypeNode = exports.IdentifierTypeNode = exports.GenericTypeNode = exports.ConstTypeNode = exports.ConditionalTypeNode = exports.ConditionalTypeForParameterNode = exports.CallableTypeParameterNode = exports.CallableTypeNode = exports.ArrayTypeNode = exports.ArrayShapeUnsealedTypeNode = exports.ArrayShapeNode = exports.ArrayShapeItemNode = void 0;
19
19
  var abstract_node_visitor_1 = require("./phpdoc-parser/ast/abstract-node-visitor");
20
20
  Object.defineProperty(exports, "AbstractNodeVisitor", { enumerable: true, get: function () { return abstract_node_visitor_1.AbstractNodeVisitor; } });
21
21
  var base_node_1 = require("./phpdoc-parser/ast/base-node");
22
22
  Object.defineProperty(exports, "BaseNode", { enumerable: true, get: function () { return base_node_1.BaseNode; } });
23
+ var comment_1 = require("./phpdoc-parser/ast/comment");
24
+ Object.defineProperty(exports, "Comment", { enumerable: true, get: function () { return comment_1.Comment; } });
23
25
  var const_expr_array_item_node_1 = require("./phpdoc-parser/ast/const-expr/const-expr-array-item-node");
24
26
  Object.defineProperty(exports, "ConstExprArrayItemNode", { enumerable: true, get: function () { return const_expr_array_item_node_1.ConstExprArrayItemNode; } });
25
27
  var const_expr_array_node_1 = require("./phpdoc-parser/ast/const-expr/const-expr-array-node");
@@ -40,8 +42,6 @@ var const_expr_true_node_1 = require("./phpdoc-parser/ast/const-expr/const-expr-
40
42
  Object.defineProperty(exports, "ConstExprTrueNode", { enumerable: true, get: function () { return const_expr_true_node_1.ConstExprTrueNode; } });
41
43
  var const_fetch_node_1 = require("./phpdoc-parser/ast/const-expr/const-fetch-node");
42
44
  Object.defineProperty(exports, "ConstFetchNode", { enumerable: true, get: function () { return const_fetch_node_1.ConstFetchNode; } });
43
- var quote_aware_const_expr_string_node_1 = require("./phpdoc-parser/ast/const-expr/quote-aware-const-expr-string-node");
44
- Object.defineProperty(exports, "QuoteAwareConstExprStringNode", { enumerable: true, get: function () { return quote_aware_const_expr_string_node_1.QuoteAwareConstExprStringNode; } });
45
45
  var node_traverser_1 = require("./phpdoc-parser/ast/node-traverser");
46
46
  Object.defineProperty(exports, "NodeTraverser", { enumerable: true, get: function () { return node_traverser_1.NodeTraverser; } });
47
47
  var cloning_visitor_1 = require("./phpdoc-parser/ast/node-visitor/cloning-visitor");
@@ -69,6 +69,12 @@ var method_tag_value_parameter_node_1 = require("./phpdoc-parser/ast/php-doc/met
69
69
  Object.defineProperty(exports, "MethodTagValueParameterNode", { enumerable: true, get: function () { return method_tag_value_parameter_node_1.MethodTagValueParameterNode; } });
70
70
  var mixin_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/mixin-tag-value-node");
71
71
  Object.defineProperty(exports, "MixinTagValueNode", { enumerable: true, get: function () { return mixin_tag_value_node_1.MixinTagValueNode; } });
72
+ var param_closure_this_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/param-closure-this-tag-value-node");
73
+ Object.defineProperty(exports, "ParamClosureThisTagValueNode", { enumerable: true, get: function () { return param_closure_this_tag_value_node_1.ParamClosureThisTagValueNode; } });
74
+ var param_immediately_invoked_callable_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/param-immediately-invoked-callable-tag-value-node");
75
+ Object.defineProperty(exports, "ParamImmediatelyInvokedCallableTagValueNode", { enumerable: true, get: function () { return param_immediately_invoked_callable_tag_value_node_1.ParamImmediatelyInvokedCallableTagValueNode; } });
76
+ var param_later_invoked_callable_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/param-later-invoked-callable-tag-value-node");
77
+ Object.defineProperty(exports, "ParamLaterInvokedCallableTagValueNode", { enumerable: true, get: function () { return param_later_invoked_callable_tag_value_node_1.ParamLaterInvokedCallableTagValueNode; } });
72
78
  var param_out_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/param-out-tag-value-node");
73
79
  Object.defineProperty(exports, "ParamOutTagValueNode", { enumerable: true, get: function () { return param_out_tag_value_node_1.ParamOutTagValueNode; } });
74
80
  var param_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/param-tag-value-node");
@@ -85,8 +91,16 @@ var php_doc_text_node_1 = require("./phpdoc-parser/ast/php-doc/php-doc-text-node
85
91
  Object.defineProperty(exports, "PhpDocTextNode", { enumerable: true, get: function () { return php_doc_text_node_1.PhpDocTextNode; } });
86
92
  var property_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/property-tag-value-node");
87
93
  Object.defineProperty(exports, "PropertyTagValueNode", { enumerable: true, get: function () { return property_tag_value_node_1.PropertyTagValueNode; } });
94
+ var pure_unless_callable_is_impure_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/pure-unless-callable-is-impure-tag-value-node");
95
+ Object.defineProperty(exports, "PureUnlessCallableIsImpureTagValueNode", { enumerable: true, get: function () { return pure_unless_callable_is_impure_tag_value_node_1.PureUnlessCallableIsImpureTagValueNode; } });
96
+ var require_extends_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/require-extends-tag-value-node");
97
+ Object.defineProperty(exports, "RequireExtendsTagValueNode", { enumerable: true, get: function () { return require_extends_tag_value_node_1.RequireExtendsTagValueNode; } });
98
+ var require_implements_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/require-implements-tag-value-node");
99
+ Object.defineProperty(exports, "RequireImplementsTagValueNode", { enumerable: true, get: function () { return require_implements_tag_value_node_1.RequireImplementsTagValueNode; } });
88
100
  var return_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/return-tag-value-node");
89
101
  Object.defineProperty(exports, "ReturnTagValueNode", { enumerable: true, get: function () { return return_tag_value_node_1.ReturnTagValueNode; } });
102
+ var sealed_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/sealed-tag-value-node");
103
+ Object.defineProperty(exports, "SealedTagValueNode", { enumerable: true, get: function () { return sealed_tag_value_node_1.SealedTagValueNode; } });
90
104
  var self_out_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/self-out-tag-value-node");
91
105
  Object.defineProperty(exports, "SelfOutTagValueNode", { enumerable: true, get: function () { return self_out_tag_value_node_1.SelfOutTagValueNode; } });
92
106
  var template_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/template-tag-value-node");
@@ -107,6 +121,8 @@ var array_shape_item_node_1 = require("./phpdoc-parser/ast/type/array-shape-item
107
121
  Object.defineProperty(exports, "ArrayShapeItemNode", { enumerable: true, get: function () { return array_shape_item_node_1.ArrayShapeItemNode; } });
108
122
  var array_shape_node_1 = require("./phpdoc-parser/ast/type/array-shape-node");
109
123
  Object.defineProperty(exports, "ArrayShapeNode", { enumerable: true, get: function () { return array_shape_node_1.ArrayShapeNode; } });
124
+ var array_shape_unsealed_type_node_1 = require("./phpdoc-parser/ast/type/array-shape-unsealed-type-node");
125
+ Object.defineProperty(exports, "ArrayShapeUnsealedTypeNode", { enumerable: true, get: function () { return array_shape_unsealed_type_node_1.ArrayShapeUnsealedTypeNode; } });
110
126
  var array_type_node_1 = require("./phpdoc-parser/ast/type/array-type-node");
111
127
  Object.defineProperty(exports, "ArrayTypeNode", { enumerable: true, get: function () { return array_type_node_1.ArrayTypeNode; } });
112
128
  var callable_type_node_1 = require("./phpdoc-parser/ast/type/callable-type-node");
@@ -158,6 +174,8 @@ var token_iterator_1 = require("./phpdoc-parser/parser/token-iterator");
158
174
  Object.defineProperty(exports, "TokenIterator", { enumerable: true, get: function () { return token_iterator_1.TokenIterator; } });
159
175
  var type_parser_1 = require("./phpdoc-parser/parser/type-parser");
160
176
  Object.defineProperty(exports, "TypeParser", { enumerable: true, get: function () { return type_parser_1.TypeParser; } });
177
+ var parser_config_1 = require("./phpdoc-parser/parser-config");
178
+ Object.defineProperty(exports, "ParserConfig", { enumerable: true, get: function () { return parser_config_1.ParserConfig; } });
161
179
  var printer_1 = require("./phpdoc-parser/printer/printer");
162
180
  Object.defineProperty(exports, "Printer", { enumerable: true, get: function () { return printer_1.Printer; } });
163
181
  __exportStar(require("./phpdoc-parser/transpiler/helpers"), exports);
@@ -0,0 +1,7 @@
1
+ export declare class Comment {
2
+ text: string;
3
+ startLine: number;
4
+ startIndex: number;
5
+ constructor(text: string, startLine?: number, startIndex?: number);
6
+ getReformattedText(): string;
7
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Comment = void 0;
4
+ class Comment {
5
+ constructor(text, startLine = -1, startIndex = -1) {
6
+ this.text = text;
7
+ this.startLine = startLine;
8
+ this.startIndex = startIndex;
9
+ }
10
+ getReformattedText() {
11
+ return this.text.trim();
12
+ }
13
+ }
14
+ exports.Comment = Comment;
@@ -8,14 +8,12 @@ import type { ConstExprNullNode } from './const-expr-null-node';
8
8
  import type { ConstExprStringNode } from './const-expr-string-node';
9
9
  import type { ConstExprTrueNode } from './const-expr-true-node';
10
10
  import type { ConstFetchNode } from './const-fetch-node';
11
- import type { QuoteAwareConstExprStringNode } from './quote-aware-const-expr-string-node';
12
11
  export declare class ConstExprNode extends BaseNode {
13
12
  getNodeType(): string;
14
13
  isConstExprFloatNode(): this is ConstExprFloatNode;
15
14
  isConstFetchNode(): this is ConstFetchNode;
16
15
  isConstExprArrayItemNode(): this is ConstExprArrayItemNode;
17
16
  isConstExprFalseNode(): this is ConstExprFalseNode;
18
- isQuoteAwareConstExprStringNode(): this is QuoteAwareConstExprStringNode;
19
17
  isConstExprNullNode(): this is ConstExprNullNode;
20
18
  isConstExprIntegerNode(): this is ConstExprIntegerNode;
21
19
  isConstExprNode(): this is ConstExprNode;
@@ -18,9 +18,6 @@ class ConstExprNode extends base_node_1.BaseNode {
18
18
  isConstExprFalseNode() {
19
19
  return this.getNodeType() === 'ConstExprFalseNode';
20
20
  }
21
- isQuoteAwareConstExprStringNode() {
22
- return this.getNodeType() === 'QuoteAwareConstExprStringNode';
23
- }
24
21
  isConstExprNullNode() {
25
22
  return this.getNodeType() === 'ConstExprNullNode';
26
23
  }
@@ -1,7 +1,11 @@
1
1
  import { ConstExprNode } from './const-expr-node';
2
2
  export declare class ConstExprStringNode extends ConstExprNode {
3
3
  value: string;
4
- constructor(value: string);
4
+ quoteType: number;
5
+ static readonly SINGLE_QUOTED = 1;
6
+ static readonly DOUBLE_QUOTED = 2;
7
+ constructor(value: string, quoteType: number);
5
8
  toString(): string;
9
+ private escapeDoubleQuotedString;
6
10
  getNodeType(): string;
7
11
  }
@@ -3,15 +3,46 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConstExprStringNode = void 0;
4
4
  const const_expr_node_1 = require("./const-expr-node");
5
5
  class ConstExprStringNode extends const_expr_node_1.ConstExprNode {
6
- constructor(value) {
6
+ constructor(value, quoteType) {
7
7
  super();
8
8
  this.value = value;
9
+ this.quoteType = quoteType;
9
10
  }
10
11
  toString() {
11
- return this.value;
12
+ if (this.quoteType === ConstExprStringNode.SINGLE_QUOTED) {
13
+ return `'${this.value.replace(/[\\']/g, '\\$&')}'`;
14
+ }
15
+ return `"${this.escapeDoubleQuotedString()}"`;
16
+ }
17
+ escapeDoubleQuotedString() {
18
+ let escaped = this.value.replace(/["\n\r\t\x0B\f\v\\$]/g, '\\$&');
19
+ const regexes = [
20
+ /[\x00-\x08\x0E-\x1F]/g,
21
+ /[\xC0-\xC1]/g,
22
+ /[\xF5-\xFF]/g,
23
+ /\xE0[\x80-\x9F]/g,
24
+ /\xF0[\x80-\x8F]/g,
25
+ /[\xC2-\xDF](?![\x80-\xBF])/g,
26
+ /[\xE0-\xEF](?![\x80-\xBF]{2})/g,
27
+ /[\xF0-\xF4](?![\x80-\xBF]{3})/g,
28
+ /(?<=[\x00-\x7F\xF5-\xFF])[\x80-\xBF]/g,
29
+ /(?<![\xC2-\xDF]|[\xE0-\xEF]|[\xE0-\xEF][\x80-\xBF]|[\xF0-\xF4]|[\xF0-\xF4][\x80-\xBF]|[\xF0-\xF4][\x80-\xBF]{2})[\x80-\xBF]/g,
30
+ /(?<=[\xE0-\xEF])[\x80-\xBF](?![\x80-\xBF])/g,
31
+ /(?<=[\xF0-\xF4])[\x80-\xBF](?![\x80-\xBF]{2})/g,
32
+ /(?<=[\xF0-\xF4][\x80-\xBF])[\x80-\xBF](?![\x80-\xBF])/g,
33
+ ];
34
+ for (const regex of regexes) {
35
+ escaped = escaped.replace(regex, (match) => {
36
+ const hex = match.charCodeAt(0).toString(16);
37
+ return `\\x${'0'.repeat(2 - hex.length) + hex}`;
38
+ });
39
+ }
40
+ return escaped;
12
41
  }
13
42
  getNodeType() {
14
43
  return 'ConstExprStringNode';
15
44
  }
16
45
  }
17
46
  exports.ConstExprStringNode = ConstExprStringNode;
47
+ ConstExprStringNode.SINGLE_QUOTED = 1;
48
+ ConstExprStringNode.DOUBLE_QUOTED = 2;
@@ -0,0 +1,10 @@
1
+ import type { TypeNode } from '../type/type-node';
2
+ import { PhpDocTagValueNode } from './php-doc-tag-value-node';
3
+ export declare class ParamClosureThisTagValueNode extends PhpDocTagValueNode {
4
+ type: TypeNode;
5
+ parameterName: string;
6
+ description: string;
7
+ constructor(type: TypeNode, parameterName: string, description: string);
8
+ toString(): string;
9
+ getNodeType(): string;
10
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamClosureThisTagValueNode = void 0;
4
+ const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
+ class ParamClosureThisTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
+ constructor(type, parameterName, description) {
7
+ super();
8
+ this.type = type;
9
+ this.parameterName = parameterName;
10
+ this.description = description;
11
+ }
12
+ toString() {
13
+ return `${this.type.toString()} ${this.parameterName} ${this.description}`.trim();
14
+ }
15
+ getNodeType() {
16
+ return 'ParamClosureThisTagValueNode';
17
+ }
18
+ }
19
+ exports.ParamClosureThisTagValueNode = ParamClosureThisTagValueNode;
@@ -0,0 +1,8 @@
1
+ import { PhpDocTagValueNode } from './php-doc-tag-value-node';
2
+ export declare class ParamImmediatelyInvokedCallableTagValueNode extends PhpDocTagValueNode {
3
+ parameterName: string;
4
+ description: string;
5
+ constructor(parameterName: string, description: string);
6
+ toString(): string;
7
+ getNodeType(): string;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamImmediatelyInvokedCallableTagValueNode = void 0;
4
+ const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
+ class ParamImmediatelyInvokedCallableTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
+ constructor(parameterName, description) {
7
+ super();
8
+ this.parameterName = parameterName;
9
+ this.description = description;
10
+ }
11
+ toString() {
12
+ return `${this.parameterName} ${this.description}`.trim();
13
+ }
14
+ getNodeType() {
15
+ return 'ParamImmediatelyInvokedCallableTagValueNode';
16
+ }
17
+ }
18
+ exports.ParamImmediatelyInvokedCallableTagValueNode = ParamImmediatelyInvokedCallableTagValueNode;
@@ -0,0 +1,8 @@
1
+ import { PhpDocTagValueNode } from './php-doc-tag-value-node';
2
+ export declare class ParamLaterInvokedCallableTagValueNode extends PhpDocTagValueNode {
3
+ parameterName: string;
4
+ description: string;
5
+ constructor(parameterName: string, description: string);
6
+ toString(): string;
7
+ getNodeType(): string;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParamLaterInvokedCallableTagValueNode = void 0;
4
+ const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
+ class ParamLaterInvokedCallableTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
+ constructor(parameterName, description) {
7
+ super();
8
+ this.parameterName = parameterName;
9
+ this.description = description;
10
+ }
11
+ toString() {
12
+ return `${this.parameterName} ${this.description}`.trim();
13
+ }
14
+ getNodeType() {
15
+ return 'ParamLaterInvokedCallableTagValueNode';
16
+ }
17
+ }
18
+ exports.ParamLaterInvokedCallableTagValueNode = ParamLaterInvokedCallableTagValueNode;
@@ -8,6 +8,7 @@ import type { PhpDocChildNode } from './php-doc-child-node';
8
8
  import { PhpDocTagNode } from './php-doc-tag-node';
9
9
  import { PropertyTagValueNode } from './property-tag-value-node';
10
10
  import { ReturnTagValueNode } from './return-tag-value-node';
11
+ import { SealedTagValueNode } from './sealed-tag-value-node';
11
12
  import { TemplateTagValueNode } from './template-tag-value-node';
12
13
  import { ThrowsTagValueNode } from './throws-tag-value-node';
13
14
  import { TypelessParamTagValueNode } from './typeless-param-tag-value-node';
@@ -29,6 +30,7 @@ export declare class PhpDocNode extends BaseNode {
29
30
  getReturnTagValues(tagName?: string): ReturnTagValueNode[];
30
31
  getThrowsTagValues(tagName?: string): ThrowsTagValueNode[];
31
32
  getMixinTagValues(tagName?: string): MixinTagValueNode[];
33
+ getSealedTagValues(tagName?: string): SealedTagValueNode[];
32
34
  getDeprecatedTagValues(): DeprecatedTagValueNode[];
33
35
  getNodeType(): string;
34
36
  }
@@ -10,6 +10,7 @@ const param_tag_value_node_1 = require("./param-tag-value-node");
10
10
  const php_doc_tag_node_1 = require("./php-doc-tag-node");
11
11
  const property_tag_value_node_1 = require("./property-tag-value-node");
12
12
  const return_tag_value_node_1 = require("./return-tag-value-node");
13
+ const sealed_tag_value_node_1 = require("./sealed-tag-value-node");
13
14
  const template_tag_value_node_1 = require("./template-tag-value-node");
14
15
  const throws_tag_value_node_1 = require("./throws-tag-value-node");
15
16
  const typeless_param_tag_value_node_1 = require("./typeless-param-tag-value-node");
@@ -93,6 +94,11 @@ class PhpDocNode extends base_node_1.BaseNode {
93
94
  .map((tag) => tag.value)
94
95
  .filter((value) => value instanceof mixin_tag_value_node_1.MixinTagValueNode);
95
96
  }
97
+ getSealedTagValues(tagName = '@phpstan-sealed') {
98
+ return this.getTagsByName(tagName)
99
+ .map((tag) => tag.value)
100
+ .filter((value) => value instanceof sealed_tag_value_node_1.SealedTagValueNode);
101
+ }
96
102
  getDeprecatedTagValues() {
97
103
  return this.getTagsByName('@deprecated')
98
104
  .map((tag) => tag.value)
@@ -0,0 +1,8 @@
1
+ import { PhpDocTagValueNode } from './php-doc-tag-value-node';
2
+ export declare class PureUnlessCallableIsImpureTagValueNode extends PhpDocTagValueNode {
3
+ parameterName: string;
4
+ description: string;
5
+ constructor(parameterName: string, description: string);
6
+ toString(): string;
7
+ getNodeType(): string;
8
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PureUnlessCallableIsImpureTagValueNode = void 0;
4
+ const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
+ class PureUnlessCallableIsImpureTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
+ constructor(parameterName, description) {
7
+ super();
8
+ this.parameterName = parameterName;
9
+ this.description = description;
10
+ }
11
+ toString() {
12
+ return `${this.parameterName} ${this.description}`.trim();
13
+ }
14
+ getNodeType() {
15
+ return 'PureUnlessCallableIsImpureTagValueNode';
16
+ }
17
+ }
18
+ exports.PureUnlessCallableIsImpureTagValueNode = PureUnlessCallableIsImpureTagValueNode;
@@ -0,0 +1,9 @@
1
+ import type { TypeNode } from '../type/type-node';
2
+ import { PhpDocTagValueNode } from './php-doc-tag-value-node';
3
+ export declare class RequireExtendsTagValueNode extends PhpDocTagValueNode {
4
+ type: TypeNode;
5
+ description: string;
6
+ constructor(type: TypeNode, description: string);
7
+ toString(): string;
8
+ getNodeType(): string;
9
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequireExtendsTagValueNode = void 0;
4
+ const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
+ class RequireExtendsTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
+ constructor(type, description) {
7
+ super();
8
+ this.type = type;
9
+ this.description = description;
10
+ }
11
+ toString() {
12
+ return `${this.type.toString()} ${this.description}`.trim();
13
+ }
14
+ getNodeType() {
15
+ return 'RequireExtendsTagValueNode';
16
+ }
17
+ }
18
+ exports.RequireExtendsTagValueNode = RequireExtendsTagValueNode;
@@ -0,0 +1,9 @@
1
+ import type { TypeNode } from '../type/type-node';
2
+ import { PhpDocTagValueNode } from './php-doc-tag-value-node';
3
+ export declare class RequireImplementsTagValueNode extends PhpDocTagValueNode {
4
+ type: TypeNode;
5
+ description: string;
6
+ constructor(type: TypeNode, description: string);
7
+ toString(): string;
8
+ getNodeType(): string;
9
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequireImplementsTagValueNode = void 0;
4
+ const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
+ class RequireImplementsTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
+ constructor(type, description) {
7
+ super();
8
+ this.type = type;
9
+ this.description = description;
10
+ }
11
+ toString() {
12
+ return `${this.type.toString()} ${this.description}`.trim();
13
+ }
14
+ getNodeType() {
15
+ return 'RequireImplementsTagValueNode';
16
+ }
17
+ }
18
+ exports.RequireImplementsTagValueNode = RequireImplementsTagValueNode;
@@ -0,0 +1,9 @@
1
+ import type { TypeNode } from '../type/type-node';
2
+ import { PhpDocTagValueNode } from './php-doc-tag-value-node';
3
+ export declare class SealedTagValueNode extends PhpDocTagValueNode {
4
+ type: TypeNode;
5
+ description: string;
6
+ constructor(type: TypeNode, description: string);
7
+ toString(): string;
8
+ getNodeType(): string;
9
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SealedTagValueNode = void 0;
4
+ const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
+ class SealedTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
+ constructor(type, description) {
7
+ super();
8
+ this.type = type;
9
+ this.description = description;
10
+ }
11
+ toString() {
12
+ return `${this.type.toString()} ${this.description}`.trim();
13
+ }
14
+ getNodeType() {
15
+ return 'SealedTagValueNode';
16
+ }
17
+ }
18
+ exports.SealedTagValueNode = SealedTagValueNode;
@@ -5,7 +5,8 @@ export declare class TemplateTagValueNode extends PhpDocTagValueNode {
5
5
  bound: TypeNode | null;
6
6
  description: string;
7
7
  defaultTypeNode: TypeNode | null;
8
- constructor(name: string, bound: TypeNode | null, description: string, defaultTypeNode?: TypeNode | null);
8
+ lowerBound: TypeNode | null;
9
+ constructor(name: string, bound: TypeNode | null, description: string, defaultTypeNode?: TypeNode | null, lowerBound?: TypeNode | null);
9
10
  toString(): string;
10
11
  getNodeType(): string;
11
12
  }
@@ -3,19 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemplateTagValueNode = void 0;
4
4
  const php_doc_tag_value_node_1 = require("./php-doc-tag-value-node");
5
5
  class TemplateTagValueNode extends php_doc_tag_value_node_1.PhpDocTagValueNode {
6
- constructor(name, bound, description, defaultTypeNode = null) {
6
+ constructor(name, bound, description, defaultTypeNode = null, lowerBound = null) {
7
7
  super();
8
8
  this.name = name;
9
9
  this.bound = bound;
10
10
  this.description = description;
11
11
  this.defaultTypeNode = defaultTypeNode;
12
+ this.lowerBound = lowerBound;
12
13
  }
13
14
  toString() {
14
15
  const bound = this.bound !== null ? ` of ${this.bound.toString()}` : '';
16
+ const lowerBoundStr = this.lowerBound !== null ? ` super ${this.lowerBound.toString()}` : '';
15
17
  const defaultString = this.defaultTypeNode !== null
16
18
  ? ` = ${this.defaultTypeNode.toString()}`
17
19
  : '';
18
- return `${this.name}${bound}${defaultString} ${this.description}`.trim();
20
+ return `${this.name}${bound}${lowerBoundStr}${defaultString} ${this.description}`.trim();
19
21
  }
20
22
  getNodeType() {
21
23
  return 'TemplateTagValueNode';
@@ -1,12 +1,13 @@
1
1
  import type { ConstExprIntegerNode } from '../const-expr/const-expr-integer-node';
2
2
  import type { ConstExprStringNode } from '../const-expr/const-expr-string-node';
3
+ import type { ConstFetchNode } from '../const-expr/const-fetch-node';
3
4
  import type { IdentifierTypeNode } from './identifier-type-node';
4
5
  import { TypeNode } from './type-node';
5
6
  export declare class ArrayShapeItemNode extends TypeNode {
6
- keyName: ConstExprIntegerNode | ConstExprStringNode | IdentifierTypeNode | null;
7
+ keyName: ConstExprIntegerNode | ConstExprStringNode | ConstFetchNode | IdentifierTypeNode | null;
7
8
  optional: boolean;
8
9
  valueType: TypeNode;
9
- constructor(keyName: ConstExprIntegerNode | ConstExprStringNode | IdentifierTypeNode | null, optional: boolean, valueType: TypeNode);
10
+ constructor(keyName: ConstExprIntegerNode | ConstExprStringNode | ConstFetchNode | IdentifierTypeNode | null, optional: boolean, valueType: TypeNode);
10
11
  toString(): string;
11
12
  getNodeType(): string;
12
13
  }
@@ -1,14 +1,20 @@
1
1
  import type { ArrayShapeItemNode } from './array-shape-item-node';
2
+ import type { ArrayShapeUnsealedTypeNode } from './array-shape-unsealed-type-node';
2
3
  import { TypeNode } from './type-node';
3
4
  export declare enum ArrayShapeNodeKind {
4
5
  ARRAY = "array",
5
- LIST = "list"
6
+ LIST = "list",
7
+ NON_EMPTY_ARRAY = "non-empty-array",
8
+ NON_EMPTY_LIST = "non-empty-list"
6
9
  }
7
10
  export declare class ArrayShapeNode extends TypeNode {
8
11
  items: (ArrayShapeItemNode | string)[];
9
12
  sealed: boolean;
10
13
  kind: ArrayShapeNodeKind;
11
- constructor(items: (ArrayShapeItemNode | string)[], sealed?: boolean, kind?: ArrayShapeNodeKind);
14
+ unsealedType: ArrayShapeUnsealedTypeNode | null;
15
+ constructor(items: (ArrayShapeItemNode | string)[], sealed?: boolean, kind?: ArrayShapeNodeKind, unsealedType?: ArrayShapeUnsealedTypeNode | null);
16
+ static createSealed(items: (ArrayShapeItemNode | string)[], kind?: ArrayShapeNodeKind): ArrayShapeNode;
17
+ static createUnsealed(items: (ArrayShapeItemNode | string)[], unsealedType: ArrayShapeUnsealedTypeNode | null, kind?: ArrayShapeNodeKind): ArrayShapeNode;
12
18
  toString(): string;
13
19
  getNodeType(): string;
14
20
  }
@@ -6,21 +6,31 @@ var ArrayShapeNodeKind;
6
6
  (function (ArrayShapeNodeKind) {
7
7
  ArrayShapeNodeKind["ARRAY"] = "array";
8
8
  ArrayShapeNodeKind["LIST"] = "list";
9
+ ArrayShapeNodeKind["NON_EMPTY_ARRAY"] = "non-empty-array";
10
+ ArrayShapeNodeKind["NON_EMPTY_LIST"] = "non-empty-list";
9
11
  })(ArrayShapeNodeKind || (exports.ArrayShapeNodeKind = ArrayShapeNodeKind = {}));
10
12
  class ArrayShapeNode extends type_node_1.TypeNode {
11
- constructor(items, sealed = true, kind = ArrayShapeNodeKind.ARRAY) {
13
+ constructor(items, sealed = true, kind = ArrayShapeNodeKind.ARRAY, unsealedType = null) {
12
14
  super();
13
15
  this.items = items;
14
16
  this.sealed = sealed;
15
17
  this.kind = kind;
18
+ this.unsealedType = unsealedType;
16
19
  this.items = items;
17
20
  this.sealed = sealed;
18
21
  this.kind = kind;
22
+ this.unsealedType = unsealedType;
23
+ }
24
+ static createSealed(items, kind = ArrayShapeNodeKind.ARRAY) {
25
+ return new ArrayShapeNode(items, true, kind, null);
26
+ }
27
+ static createUnsealed(items, unsealedType, kind = ArrayShapeNodeKind.ARRAY) {
28
+ return new ArrayShapeNode(items, false, kind, unsealedType);
19
29
  }
20
30
  toString() {
21
- const { items } = this;
31
+ const items = [...this.items];
22
32
  if (!this.sealed) {
23
- items.push('...');
33
+ items.push(`...${this.unsealedType !== null ? this.unsealedType.toString() : ''}`);
24
34
  }
25
35
  return `${this.kind}{${items.join(', ')}}`;
26
36
  }
@@ -0,0 +1,8 @@
1
+ import { TypeNode } from './type-node';
2
+ export declare class ArrayShapeUnsealedTypeNode extends TypeNode {
3
+ valueType: TypeNode;
4
+ keyType: TypeNode | null;
5
+ constructor(valueType: TypeNode, keyType: TypeNode | null);
6
+ toString(): string;
7
+ getNodeType(): string;
8
+ }