@rightcapital/phpdoc-parser 0.3.52 → 0.3.53--.378.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -71,3 +71,6 @@ export { PhpDocTagNode } from './phpdoc-parser/ast/php-doc/php-doc-tag-node';
71
71
  export { PhpDocTagValueNode } from './phpdoc-parser/ast/php-doc/php-doc-tag-value-node';
72
72
  export { ReturnTagValueNode } from './phpdoc-parser/ast/php-doc/return-tag-value-node';
73
73
  export { Printer } from './phpdoc-parser/printer/printer';
74
+ export { PhpDocTypeNodeToTypescriptTypeNodeTranspiler } from './phpdoc-parser/transpiler/php-doc-to-typescript-type-transpiler';
75
+ export * from './phpdoc-parser/ast/php-doc/helpers';
76
+ export * from './phpdoc-parser/transpiler/helpers';
package/dist/index.js CHANGED
@@ -1,7 +1,21 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
17
  exports.DeprecatedTagValueNode = exports.MethodTagValueNode = exports.InvalidTagValueNode = exports.UsesTagValueNode = exports.AssertTagValueNode = exports.PhpDocNode = exports.ParamOutTagValueNode = exports.ConstFetchNode = exports.ConstExprTrueNode = exports.ConstExprStringNode = exports.ConstExprArrayNode = exports.ConstExprNode = exports.ConstExprIntegerNode = exports.ConstExprNullNode = exports.QuoteAwareConstExprStringNode = exports.ConstExprFalseNode = exports.ConstExprArrayItemNode = exports.ConstExprFloatNode = exports.AbstractNodeVisitor = exports.NullableTypeNode = exports.ObjectShapeNode = exports.ConstTypeNode = exports.InvalidTypeNode = exports.ArrayShapeNode = exports.ArrayTypeNode = exports.CallableTypeNode = exports.GenericTypeNode = exports.TypeNode = exports.UnionTypeNode = exports.ObjectShapeItemNode = exports.IntersectionTypeNode = exports.ThisTypeNode = exports.ConditionalTypeForParameterNode = exports.ConditionalTypeNode = exports.ArrayShapeItemNode = exports.OffsetAccessTypeNode = exports.CallableTypeParameterNode = exports.IdentifierTypeNode = exports.Attribute = exports.NodeTraverserState = exports.CloningVisitor = exports.NodeTraverser = exports.BaseNode = exports.TypeParser = exports.PhpDocParser = exports.TokenIterator = exports.ParserException = exports.StringUnescaper = exports.ConstExprParser = exports.Lexer = void 0;
4
- exports.Printer = exports.ReturnTagValueNode = exports.PhpDocTagValueNode = exports.PhpDocTagNode = exports.MixinTagValueNode = exports.PhpDocChildNode = exports.TypeAliasImportTagValueNode = exports.PropertyTagValueNode = exports.SelfOutTagValueNode = exports.ThrowsTagValueNode = exports.ImplementsTagValueNode = exports.TemplateTagValueNode = exports.AssertTagMethodValueNode = exports.MethodTagValueParameterNode = exports.PhpDocTextNode = exports.VarTagValueNode = exports.TypelessParamTagValueNode = exports.AssertTagPropertyValueNode = exports.TypeAliasTagValueNode = exports.GenericTagValueNode = exports.ParamTagValueNode = exports.ExtendsTagValueNode = void 0;
18
+ exports.PhpDocTypeNodeToTypescriptTypeNodeTranspiler = exports.Printer = exports.ReturnTagValueNode = exports.PhpDocTagValueNode = exports.PhpDocTagNode = exports.MixinTagValueNode = exports.PhpDocChildNode = exports.TypeAliasImportTagValueNode = exports.PropertyTagValueNode = exports.SelfOutTagValueNode = exports.ThrowsTagValueNode = exports.ImplementsTagValueNode = exports.TemplateTagValueNode = exports.AssertTagMethodValueNode = exports.MethodTagValueParameterNode = exports.PhpDocTextNode = exports.VarTagValueNode = exports.TypelessParamTagValueNode = exports.AssertTagPropertyValueNode = exports.TypeAliasTagValueNode = exports.GenericTagValueNode = exports.ParamTagValueNode = exports.ExtendsTagValueNode = void 0;
5
19
  var lexer_1 = require("./phpdoc-parser/lexer/lexer");
6
20
  Object.defineProperty(exports, "Lexer", { enumerable: true, get: function () { return lexer_1.Lexer; } });
7
21
  var const_expr_parser_1 = require("./phpdoc-parser/parser/const-expr-parser");
@@ -145,3 +159,7 @@ var return_tag_value_node_1 = require("./phpdoc-parser/ast/php-doc/return-tag-va
145
159
  Object.defineProperty(exports, "ReturnTagValueNode", { enumerable: true, get: function () { return return_tag_value_node_1.ReturnTagValueNode; } });
146
160
  var printer_1 = require("./phpdoc-parser/printer/printer");
147
161
  Object.defineProperty(exports, "Printer", { enumerable: true, get: function () { return printer_1.Printer; } });
162
+ var php_doc_to_typescript_type_transpiler_1 = require("./phpdoc-parser/transpiler/php-doc-to-typescript-type-transpiler");
163
+ Object.defineProperty(exports, "PhpDocTypeNodeToTypescriptTypeNodeTranspiler", { enumerable: true, get: function () { return php_doc_to_typescript_type_transpiler_1.PhpDocTypeNodeToTypescriptTypeNodeTranspiler; } });
164
+ __exportStar(require("./phpdoc-parser/ast/php-doc/helpers"), exports);
165
+ __exportStar(require("./phpdoc-parser/transpiler/helpers"), exports);
@@ -0,0 +1,48 @@
1
+ import type { AssertTagMethodValueNode } from './assert-tag-method-value-node';
2
+ import type { AssertTagPropertyValueNode } from './assert-tag-property-value-node';
3
+ import type { AssertTagValueNode } from './assert-tag-value-node';
4
+ import type { DeprecatedTagValueNode } from './deprecated-tag-value-node';
5
+ import type { ExtendsTagValueNode } from './extends-tag-value-node';
6
+ import type { GenericTagValueNode } from './generic-tag-value-node';
7
+ import type { ImplementsTagValueNode } from './implements-tag-value-node';
8
+ import type { InvalidTagValueNode } from './invalid-tag-value-node';
9
+ import type { MethodTagValueNode } from './method-tag-value-node';
10
+ import type { MethodTagValueParameterNode } from './method-tag-value-parameter-node';
11
+ import type { MixinTagValueNode } from './mixin-tag-value-node';
12
+ import type { ParamOutTagValueNode } from './param-out-tag-value-node';
13
+ import type { ParamTagValueNode } from './param-tag-value-node';
14
+ import type { PhpDocTagValueNode } from './php-doc-tag-value-node';
15
+ import type { PropertyTagValueNode } from './property-tag-value-node';
16
+ import type { ReturnTagValueNode } from './return-tag-value-node';
17
+ import type { SelfOutTagValueNode } from './self-out-tag-value-node';
18
+ import type { TemplateTagValueNode } from './template-tag-value-node';
19
+ import type { ThrowsTagValueNode } from './throws-tag-value-node';
20
+ import type { TypeAliasImportTagValueNode } from './type-alias-import-tag-value-node';
21
+ import type { TypeAliasTagValueNode } from './type-alias-tag-value-node';
22
+ import type { TypelessParamTagValueNode } from './typeless-param-tag-value-node';
23
+ import type { UsesTagValueNode } from './uses-tag-value-node';
24
+ import type { VarTagValueNode } from './var-tag-value-node';
25
+ export declare const isParamOutTagValueNode: (node: PhpDocTagValueNode) => node is ParamOutTagValueNode;
26
+ export declare const isAssertTagValueNode: (node: PhpDocTagValueNode) => node is AssertTagValueNode;
27
+ export declare const isUsesTagValueNode: (node: PhpDocTagValueNode) => node is UsesTagValueNode;
28
+ export declare const isInvalidTagValueNode: (node: PhpDocTagValueNode) => node is InvalidTagValueNode;
29
+ export declare const isMethodTagValueNode: (node: PhpDocTagValueNode) => node is MethodTagValueNode;
30
+ export declare const isDeprecatedTagValueNode: (node: PhpDocTagValueNode) => node is DeprecatedTagValueNode;
31
+ export declare const isExtendsTagValueNode: (node: PhpDocTagValueNode) => node is ExtendsTagValueNode;
32
+ export declare const isParamTagValueNode: (node: PhpDocTagValueNode) => node is ParamTagValueNode;
33
+ export declare const isGenericTagValueNode: (node: PhpDocTagValueNode) => node is GenericTagValueNode;
34
+ export declare const isTypeAliasTagValueNode: (node: PhpDocTagValueNode) => node is TypeAliasTagValueNode;
35
+ export declare const isAssertTagPropertyValueNode: (node: PhpDocTagValueNode) => node is AssertTagPropertyValueNode;
36
+ export declare const isTypelessParamTagValueNode: (node: PhpDocTagValueNode) => node is TypelessParamTagValueNode;
37
+ export declare const isVarTagValueNode: (node: PhpDocTagValueNode) => node is VarTagValueNode;
38
+ export declare const isMethodTagValueParameterNode: (node: PhpDocTagValueNode) => node is MethodTagValueParameterNode;
39
+ export declare const isAssertTagMethodValueNode: (node: PhpDocTagValueNode) => node is AssertTagMethodValueNode;
40
+ export declare const isTemplateTagValueNode: (node: PhpDocTagValueNode) => node is TemplateTagValueNode;
41
+ export declare const isImplementsTagValueNode: (node: PhpDocTagValueNode) => node is ImplementsTagValueNode;
42
+ export declare const isThrowsTagValueNode: (node: PhpDocTagValueNode) => node is ThrowsTagValueNode;
43
+ export declare const isSelfOutTagValueNode: (node: PhpDocTagValueNode) => node is SelfOutTagValueNode;
44
+ export declare const isPropertyTagValueNode: (node: PhpDocTagValueNode) => node is PropertyTagValueNode;
45
+ export declare const isTypeAliasImportTagValueNode: (node: PhpDocTagValueNode) => node is TypeAliasImportTagValueNode;
46
+ export declare const isMixinTagValueNode: (node: PhpDocTagValueNode) => node is MixinTagValueNode;
47
+ export declare const isPhpDocTagValueNode: (node: PhpDocTagValueNode) => node is PhpDocTagValueNode;
48
+ export declare const isReturnTagValueNode: (node: PhpDocTagValueNode) => node is ReturnTagValueNode;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isReturnTagValueNode = exports.isPhpDocTagValueNode = exports.isMixinTagValueNode = exports.isTypeAliasImportTagValueNode = exports.isPropertyTagValueNode = exports.isSelfOutTagValueNode = exports.isThrowsTagValueNode = exports.isImplementsTagValueNode = exports.isTemplateTagValueNode = exports.isAssertTagMethodValueNode = exports.isMethodTagValueParameterNode = exports.isVarTagValueNode = exports.isTypelessParamTagValueNode = exports.isAssertTagPropertyValueNode = exports.isTypeAliasTagValueNode = exports.isGenericTagValueNode = exports.isParamTagValueNode = exports.isExtendsTagValueNode = exports.isDeprecatedTagValueNode = exports.isMethodTagValueNode = exports.isInvalidTagValueNode = exports.isUsesTagValueNode = exports.isAssertTagValueNode = exports.isParamOutTagValueNode = void 0;
4
+ const isParamOutTagValueNode = (node) => {
5
+ return node.getNodeType() === 'ParamOutTagValueNode';
6
+ };
7
+ exports.isParamOutTagValueNode = isParamOutTagValueNode;
8
+ const isAssertTagValueNode = (node) => {
9
+ return node.getNodeType() === 'AssertTagValueNode';
10
+ };
11
+ exports.isAssertTagValueNode = isAssertTagValueNode;
12
+ const isUsesTagValueNode = (node) => {
13
+ return node.getNodeType() === 'UsesTagValueNode';
14
+ };
15
+ exports.isUsesTagValueNode = isUsesTagValueNode;
16
+ const isInvalidTagValueNode = (node) => {
17
+ return node.getNodeType() === 'InvalidTagValueNode';
18
+ };
19
+ exports.isInvalidTagValueNode = isInvalidTagValueNode;
20
+ const isMethodTagValueNode = (node) => {
21
+ return node.getNodeType() === 'MethodTagValueNode';
22
+ };
23
+ exports.isMethodTagValueNode = isMethodTagValueNode;
24
+ const isDeprecatedTagValueNode = (node) => {
25
+ return node.getNodeType() === 'DeprecatedTagValueNode';
26
+ };
27
+ exports.isDeprecatedTagValueNode = isDeprecatedTagValueNode;
28
+ const isExtendsTagValueNode = (node) => {
29
+ return node.getNodeType() === 'ExtendsTagValueNode';
30
+ };
31
+ exports.isExtendsTagValueNode = isExtendsTagValueNode;
32
+ const isParamTagValueNode = (node) => {
33
+ return node.getNodeType() === 'ParamTagValueNode';
34
+ };
35
+ exports.isParamTagValueNode = isParamTagValueNode;
36
+ const isGenericTagValueNode = (node) => {
37
+ return node.getNodeType() === 'GenericTagValueNode';
38
+ };
39
+ exports.isGenericTagValueNode = isGenericTagValueNode;
40
+ const isTypeAliasTagValueNode = (node) => {
41
+ return node.getNodeType() === 'TypeAliasTagValueNode';
42
+ };
43
+ exports.isTypeAliasTagValueNode = isTypeAliasTagValueNode;
44
+ const isAssertTagPropertyValueNode = (node) => {
45
+ return node.getNodeType() === 'AssertTagPropertyValueNode';
46
+ };
47
+ exports.isAssertTagPropertyValueNode = isAssertTagPropertyValueNode;
48
+ const isTypelessParamTagValueNode = (node) => {
49
+ return node.getNodeType() === 'TypelessParamTagValueNode';
50
+ };
51
+ exports.isTypelessParamTagValueNode = isTypelessParamTagValueNode;
52
+ const isVarTagValueNode = (node) => {
53
+ return node.getNodeType() === 'VarTagValueNode';
54
+ };
55
+ exports.isVarTagValueNode = isVarTagValueNode;
56
+ const isMethodTagValueParameterNode = (node) => {
57
+ return node.getNodeType() === 'MethodTagValueParameterNode';
58
+ };
59
+ exports.isMethodTagValueParameterNode = isMethodTagValueParameterNode;
60
+ const isAssertTagMethodValueNode = (node) => {
61
+ return node.getNodeType() === 'AssertagMethodValueNode';
62
+ };
63
+ exports.isAssertTagMethodValueNode = isAssertTagMethodValueNode;
64
+ const isTemplateTagValueNode = (node) => {
65
+ return node.getNodeType() === 'TemplateTagValueNode';
66
+ };
67
+ exports.isTemplateTagValueNode = isTemplateTagValueNode;
68
+ const isImplementsTagValueNode = (node) => {
69
+ return node.getNodeType() === 'ImplementsTagValueNode';
70
+ };
71
+ exports.isImplementsTagValueNode = isImplementsTagValueNode;
72
+ const isThrowsTagValueNode = (node) => {
73
+ return node.getNodeType() === 'ThrowsTagValueNode';
74
+ };
75
+ exports.isThrowsTagValueNode = isThrowsTagValueNode;
76
+ const isSelfOutTagValueNode = (node) => {
77
+ return node.getNodeType() === 'SelfOutTagValueNode';
78
+ };
79
+ exports.isSelfOutTagValueNode = isSelfOutTagValueNode;
80
+ const isPropertyTagValueNode = (node) => {
81
+ return node.getNodeType() === 'PropertyTagValueNode';
82
+ };
83
+ exports.isPropertyTagValueNode = isPropertyTagValueNode;
84
+ const isTypeAliasImportTagValueNode = (node) => {
85
+ return node.getNodeType() === 'TypeAliasImportTagValueNode';
86
+ };
87
+ exports.isTypeAliasImportTagValueNode = isTypeAliasImportTagValueNode;
88
+ const isMixinTagValueNode = (node) => {
89
+ return node.getNodeType() === 'MixinTagValueNode';
90
+ };
91
+ exports.isMixinTagValueNode = isMixinTagValueNode;
92
+ const isPhpDocTagValueNode = (node) => {
93
+ return node.getNodeType() === 'PhpDocTagValueNode';
94
+ };
95
+ exports.isPhpDocTagValueNode = isPhpDocTagValueNode;
96
+ const isReturnTagValueNode = (node) => {
97
+ return node.getNodeType() === 'ReturnTagValueNode';
98
+ };
99
+ exports.isReturnTagValueNode = isReturnTagValueNode;
@@ -5,6 +5,7 @@ import { MixinTagValueNode } from './mixin-tag-value-node';
5
5
  import { ParamTagValueNode } from './param-tag-value-node';
6
6
  import type { PhpDocChildNode } from './php-doc-child-node';
7
7
  import { PhpDocTagNode } from './php-doc-tag-node';
8
+ import { PropertyTagValueNode } from './property-tag-value-node';
8
9
  import { ReturnTagValueNode } from './return-tag-value-node';
9
10
  import { TemplateTagValueNode } from './template-tag-value-node';
10
11
  import { ThrowsTagValueNode } from './throws-tag-value-node';
@@ -17,6 +18,7 @@ export declare class PhpDocNode extends BaseNode {
17
18
  constructor(children: PhpDocChildNode[]);
18
19
  getTags(): PhpDocTagNode[];
19
20
  getTagsByName(tagName: string): PhpDocTagNode[];
21
+ getPropertyTagValues(tagName?: string): PropertyTagValueNode[];
20
22
  getVarTagValues(tagName?: string): VarTagValueNode[];
21
23
  getParamTagValues(tagName?: string): ParamTagValueNode[];
22
24
  getTypelessParamTagValues(tagName?: string): TypelessParamTagValueNode[];
@@ -7,6 +7,7 @@ const implements_tag_value_node_1 = require("./implements-tag-value-node");
7
7
  const mixin_tag_value_node_1 = require("./mixin-tag-value-node");
8
8
  const param_tag_value_node_1 = require("./param-tag-value-node");
9
9
  const php_doc_tag_node_1 = require("./php-doc-tag-node");
10
+ const property_tag_value_node_1 = require("./property-tag-value-node");
10
11
  const return_tag_value_node_1 = require("./return-tag-value-node");
11
12
  const template_tag_value_node_1 = require("./template-tag-value-node");
12
13
  const throws_tag_value_node_1 = require("./throws-tag-value-node");
@@ -29,6 +30,13 @@ class PhpDocNode extends base_node_1.BaseNode {
29
30
  return tag.name === tagName;
30
31
  });
31
32
  }
33
+ getPropertyTagValues(tagName = '@property') {
34
+ return this.getTagsByName(tagName)
35
+ .map((tag) => tag.value)
36
+ .filter((value) => {
37
+ return value instanceof property_tag_value_node_1.PropertyTagValueNode;
38
+ });
39
+ }
32
40
  getVarTagValues(tagName = '@var') {
33
41
  return this.getTagsByName(tagName)
34
42
  .map((tag) => tag.value)
@@ -1,56 +1,9 @@
1
- import type { AssertTagMethodValueNode } from './assert-tag-method-value-node';
2
- import type { AssertTagPropertyValueNode } from './assert-tag-property-value-node';
3
- import type { AssertTagValueNode } from './assert-tag-value-node';
4
- import type { DeprecatedTagValueNode } from './deprecated-tag-value-node';
5
- import type { ExtendsTagValueNode } from './extends-tag-value-node';
6
- import type { GenericTagValueNode } from './generic-tag-value-node';
7
- import type { ImplementsTagValueNode } from './implements-tag-value-node';
8
- import type { InvalidTagValueNode } from './invalid-tag-value-node';
9
- import type { MethodTagValueNode } from './method-tag-value-node';
10
- import type { MethodTagValueParameterNode } from './method-tag-value-parameter-node';
11
- import type { MixinTagValueNode } from './mixin-tag-value-node';
12
- import type { ParamOutTagValueNode } from './param-out-tag-value-node';
13
- import type { ParamTagValueNode } from './param-tag-value-node';
14
1
  import { PhpDocChildNode } from './php-doc-child-node';
15
2
  import type { PhpDocTagValueNode } from './php-doc-tag-value-node';
16
- import type { PropertyTagValueNode } from './property-tag-value-node';
17
- import type { ReturnTagValueNode } from './return-tag-value-node';
18
- import type { SelfOutTagValueNode } from './self-out-tag-value-node';
19
- import type { TemplateTagValueNode } from './template-tag-value-node';
20
- import type { ThrowsTagValueNode } from './throws-tag-value-node';
21
- import type { TypeAliasImportTagValueNode } from './type-alias-import-tag-value-node';
22
- import type { TypeAliasTagValueNode } from './type-alias-tag-value-node';
23
- import type { TypelessParamTagValueNode } from './typeless-param-tag-value-node';
24
- import type { UsesTagValueNode } from './uses-tag-value-node';
25
- import type { VarTagValueNode } from './var-tag-value-node';
26
3
  export declare class PhpDocTagNode extends PhpDocChildNode {
27
4
  name: string;
28
5
  value: PhpDocTagValueNode;
29
6
  constructor(name: string, value: PhpDocTagValueNode);
30
7
  toString(): string;
31
8
  getNodeType(): string;
32
- isParamOutTagValueNode(): this is ParamOutTagValueNode;
33
- isAssertTagValueNode(): this is AssertTagValueNode;
34
- isUsesTagValueNode(): this is UsesTagValueNode;
35
- isInvalidTagValueNode(): this is InvalidTagValueNode;
36
- isMethodTagValueNode(): this is MethodTagValueNode;
37
- isDeprecatedTagValueNode(): this is DeprecatedTagValueNode;
38
- isExtendsTagValueNode(): this is ExtendsTagValueNode;
39
- isParamTagValueNode(): this is ParamTagValueNode;
40
- isGenericTagValueNode(): this is GenericTagValueNode;
41
- isTypeAliasTagValueNode(): this is TypeAliasTagValueNode;
42
- isAssertTagPropertyValueNode(): this is AssertTagPropertyValueNode;
43
- isTypelessParamTagValueNode(): this is TypelessParamTagValueNode;
44
- isVarTagValueNode(): this is VarTagValueNode;
45
- isMethodTagValueParameterNode(): this is MethodTagValueParameterNode;
46
- isAssertTagMethodValueNode(): this is AssertTagMethodValueNode;
47
- isTemplateTagValueNode(): this is TemplateTagValueNode;
48
- isImplementsTagValueNode(): this is ImplementsTagValueNode;
49
- isThrowsTagValueNode(): this is ThrowsTagValueNode;
50
- isSelfOutTagValueNode(): this is SelfOutTagValueNode;
51
- isPropertyTagValueNode(): this is PropertyTagValueNode;
52
- isTypeAliasImportTagValueNode(): this is TypeAliasImportTagValueNode;
53
- isMixinTagValueNode(): this is MixinTagValueNode;
54
- isPhpDocTagValueNode(): this is PhpDocTagValueNode;
55
- isReturnTagValueNode(): this is ReturnTagValueNode;
56
9
  }
@@ -14,77 +14,5 @@ class PhpDocTagNode extends php_doc_child_node_1.PhpDocChildNode {
14
14
  getNodeType() {
15
15
  return 'PhpDocTagNode';
16
16
  }
17
- isParamOutTagValueNode() {
18
- return this.getNodeType() === 'ParamOutTagValueNode';
19
- }
20
- isAssertTagValueNode() {
21
- return this.getNodeType() === 'AssertTagValueNode';
22
- }
23
- isUsesTagValueNode() {
24
- return this.getNodeType() === 'UsesTagValueNode';
25
- }
26
- isInvalidTagValueNode() {
27
- return this.getNodeType() === 'InvalidTagValueNode';
28
- }
29
- isMethodTagValueNode() {
30
- return this.getNodeType() === 'MethodTagValueNode';
31
- }
32
- isDeprecatedTagValueNode() {
33
- return this.getNodeType() === 'DeprecatedTagValueNode';
34
- }
35
- isExtendsTagValueNode() {
36
- return this.getNodeType() === 'ExtendsTagValueNode';
37
- }
38
- isParamTagValueNode() {
39
- return this.getNodeType() === 'ParamTagValueNode';
40
- }
41
- isGenericTagValueNode() {
42
- return this.getNodeType() === 'GenericTagValueNode';
43
- }
44
- isTypeAliasTagValueNode() {
45
- return this.getNodeType() === 'TypeAliasTagValueNode';
46
- }
47
- isAssertTagPropertyValueNode() {
48
- return this.getNodeType() === 'AssertTagPropertyValueNode';
49
- }
50
- isTypelessParamTagValueNode() {
51
- return this.getNodeType() === 'TypelessParamTagValueNode';
52
- }
53
- isVarTagValueNode() {
54
- return this.getNodeType() === 'VarTagValueNode';
55
- }
56
- isMethodTagValueParameterNode() {
57
- return this.getNodeType() === 'MethodTagValueParameterNode';
58
- }
59
- isAssertTagMethodValueNode() {
60
- return this.getNodeType() === 'AssertTagMethodValueNode';
61
- }
62
- isTemplateTagValueNode() {
63
- return this.getNodeType() === 'TemplateTagValueNode';
64
- }
65
- isImplementsTagValueNode() {
66
- return this.getNodeType() === 'ImplementsTagValueNode';
67
- }
68
- isThrowsTagValueNode() {
69
- return this.getNodeType() === 'ThrowsTagValueNode';
70
- }
71
- isSelfOutTagValueNode() {
72
- return this.getNodeType() === 'SelfOutTagValueNode';
73
- }
74
- isPropertyTagValueNode() {
75
- return this.getNodeType() === 'PropertyTagValueNode';
76
- }
77
- isTypeAliasImportTagValueNode() {
78
- return this.getNodeType() === 'TypeAliasImportTagValueNode';
79
- }
80
- isMixinTagValueNode() {
81
- return this.getNodeType() === 'MixinTagValueNode';
82
- }
83
- isPhpDocTagValueNode() {
84
- return this.getNodeType() === 'PhpDocTagValueNode';
85
- }
86
- isReturnTagValueNode() {
87
- return this.getNodeType() === 'ReturnTagValueNode';
88
- }
89
17
  }
90
18
  exports.PhpDocTagNode = PhpDocTagNode;
@@ -0,0 +1,10 @@
1
+ import { type ImportDeclaration, type ExportDeclaration, type TypeElement, type TypeParameterDeclaration, type HeritageClause, type InterfaceDeclaration, ScriptTarget, type SourceFile, ScriptKind, type Statement, type EnumDeclaration, type ModifierSyntaxKind, type Node } from 'typescript';
2
+ export declare function createSourceFileRoot(fileName: string, sourceText?: string, scriptTarget?: ScriptTarget, scriptKind?: ScriptKind): SourceFile;
3
+ export declare function addStatementsToNode(sourceFile: SourceFile, newStatements: Statement[]): SourceFile;
4
+ export declare function createImportDeclarationNode(symbols: string[], filePath: string): ImportDeclaration;
5
+ export declare function createExportDeclarationNode(symbols: string[], moduleSpecifierString?: string): ExportDeclaration;
6
+ export declare function createInterfaceNode(interfaceName: string, members?: TypeElement[], typeParameters?: TypeParameterDeclaration[], heritageClauses?: HeritageClause[]): InterfaceDeclaration;
7
+ export declare function createCommentNode(commentText: string, isMultiLine?: boolean, hasTrailingNewLine?: boolean): Statement;
8
+ export declare function createEnumNode(enumName: string, members: [string, number | string][], modifiers: ModifierSyntaxKind[]): EnumDeclaration;
9
+ export declare function renderTsNodeToString(tsNode: Node): string;
10
+ export declare function renderTsSourceFileToString(sourceFile: SourceFile): string;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderTsSourceFileToString = exports.renderTsNodeToString = exports.createEnumNode = exports.createCommentNode = exports.createInterfaceNode = exports.createExportDeclarationNode = exports.createImportDeclarationNode = exports.addStatementsToNode = exports.createSourceFileRoot = void 0;
4
+ const typescript_1 = require("typescript");
5
+ function createSourceFileRoot(fileName, sourceText = '', scriptTarget = typescript_1.ScriptTarget.Latest, scriptKind = typescript_1.ScriptKind.TS) {
6
+ const sourceFile = (0, typescript_1.createSourceFile)(fileName, sourceText, scriptTarget, true, scriptKind);
7
+ return sourceFile;
8
+ }
9
+ exports.createSourceFileRoot = createSourceFileRoot;
10
+ function addStatementsToNode(sourceFile, newStatements) {
11
+ const updatedStatements = typescript_1.factory.createNodeArray([
12
+ ...sourceFile.statements,
13
+ ...newStatements,
14
+ ]);
15
+ return typescript_1.factory.updateSourceFile(sourceFile, updatedStatements);
16
+ }
17
+ exports.addStatementsToNode = addStatementsToNode;
18
+ function createImportDeclarationNode(symbols, filePath) {
19
+ const importClause = typescript_1.factory.createImportClause(true, undefined, typescript_1.factory.createNamedImports(symbols.map((symbol) => typescript_1.factory.createImportSpecifier(false, undefined, typescript_1.factory.createIdentifier(symbol)))));
20
+ const moduleSpecifier = typescript_1.factory.createStringLiteral(filePath);
21
+ const importDeclaration = typescript_1.factory.createImportDeclaration(undefined, importClause, moduleSpecifier);
22
+ return importDeclaration;
23
+ }
24
+ exports.createImportDeclarationNode = createImportDeclarationNode;
25
+ function createExportDeclarationNode(symbols, moduleSpecifierString) {
26
+ const exportSpecifiers = symbols.map((symbol) => typescript_1.factory.createExportSpecifier(false, undefined, typescript_1.factory.createIdentifier(symbol)));
27
+ const namedExports = typescript_1.factory.createNamedExports(exportSpecifiers);
28
+ const moduleSpecifier = moduleSpecifierString
29
+ ? typescript_1.factory.createStringLiteral(moduleSpecifierString)
30
+ : undefined;
31
+ const exportDeclaration = typescript_1.factory.createExportDeclaration(undefined, false, namedExports, moduleSpecifier);
32
+ return exportDeclaration;
33
+ }
34
+ exports.createExportDeclarationNode = createExportDeclarationNode;
35
+ function createInterfaceNode(interfaceName, members = [], typeParameters = [], heritageClauses = []) {
36
+ const interfaceDeclaration = typescript_1.factory.createInterfaceDeclaration([typescript_1.factory.createModifier(typescript_1.SyntaxKind.ExportKeyword)], typescript_1.factory.createIdentifier(interfaceName), typeParameters, heritageClauses, members);
37
+ return interfaceDeclaration;
38
+ }
39
+ exports.createInterfaceNode = createInterfaceNode;
40
+ function createCommentNode(commentText, isMultiLine = true, hasTrailingNewLine = true) {
41
+ const emptyStatement = typescript_1.factory.createEmptyStatement();
42
+ let formattedCommentText;
43
+ if (isMultiLine) {
44
+ formattedCommentText = `*\n * ${commentText.split('\n').join('\n * ')}\n `;
45
+ }
46
+ else {
47
+ formattedCommentText = commentText;
48
+ }
49
+ const emptyStatementWithComment = (0, typescript_1.addSyntheticLeadingComment)(emptyStatement, isMultiLine
50
+ ? typescript_1.SyntaxKind.MultiLineCommentTrivia
51
+ : typescript_1.SyntaxKind.SingleLineCommentTrivia, formattedCommentText, hasTrailingNewLine);
52
+ return emptyStatementWithComment;
53
+ }
54
+ exports.createCommentNode = createCommentNode;
55
+ function createEnumNode(enumName, members, modifiers) {
56
+ const memberNodes = members.map(([key, value]) => typescript_1.factory.createEnumMember(key, typeof value === 'number'
57
+ ? typescript_1.factory.createNumericLiteral(value)
58
+ : typescript_1.factory.createStringLiteral(value)));
59
+ const enumDeclaration = typescript_1.factory.createEnumDeclaration(modifiers.map((modifier) => typescript_1.factory.createToken(modifier)), typescript_1.factory.createIdentifier(enumName), memberNodes);
60
+ return enumDeclaration;
61
+ }
62
+ exports.createEnumNode = createEnumNode;
63
+ function renderTsNodeToString(tsNode) {
64
+ const printer = (0, typescript_1.createPrinter)({ newLine: typescript_1.NewLineKind.LineFeed });
65
+ const resultFile = createSourceFileRoot('temp.ts');
66
+ return printer.printNode(typescript_1.EmitHint.Unspecified, tsNode, resultFile);
67
+ }
68
+ exports.renderTsNodeToString = renderTsNodeToString;
69
+ function renderTsSourceFileToString(sourceFile) {
70
+ const printer = (0, typescript_1.createPrinter)({ newLine: typescript_1.NewLineKind.LineFeed });
71
+ const sourceFileContent = printer.printFile(sourceFile);
72
+ return sourceFileContent;
73
+ }
74
+ exports.renderTsSourceFileToString = renderTsSourceFileToString;
@@ -0,0 +1,23 @@
1
+ import { type ImportDeclaration, type TypeNode } from 'typescript';
2
+ import type { TypeNode as PhpDocTypeNode } from '../ast/type/type-node';
3
+ export type NameNodePathResolver<T> = (this: T, nodeParts: string[]) => {
4
+ path: string;
5
+ name: string;
6
+ isTypeOnly: boolean;
7
+ };
8
+ export declare class PhpDocTypeNodeToTypescriptTypeNodeTranspiler {
9
+ nameNodePathResolver: (nodeParts: string[]) => {
10
+ path: string;
11
+ name: string;
12
+ isTypeOnly: boolean;
13
+ };
14
+ constructor(nameNodePathResolver: (nodeParts: string[]) => {
15
+ path: string;
16
+ name: string;
17
+ isTypeOnly: boolean;
18
+ });
19
+ transpile(sourceTypeNode: PhpDocTypeNode): TypeNode;
20
+ beforeTranspile(): void;
21
+ getImportDeclarations(): ImportDeclaration[];
22
+ protected importDeclarations: ImportDeclaration[];
23
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PhpDocTypeNodeToTypescriptTypeNodeTranspiler = void 0;
4
+ const typescript_1 = require("typescript");
5
+ const array_shape_node_1 = require("../ast/type/array-shape-node");
6
+ const array_type_node_1 = require("../ast/type/array-type-node");
7
+ const object_shape_node_1 = require("../ast/type/object-shape-node");
8
+ const union_type_node_1 = require("../ast/type/union-type-node");
9
+ class PhpDocTypeNodeToTypescriptTypeNodeTranspiler {
10
+ constructor(nameNodePathResolver) {
11
+ this.nameNodePathResolver = nameNodePathResolver;
12
+ }
13
+ transpile(sourceTypeNode) {
14
+ if (sourceTypeNode instanceof union_type_node_1.UnionTypeNode) {
15
+ return typescript_1.factory.createUnionTypeNode(sourceTypeNode.types.map(this.transpile.bind(this)));
16
+ }
17
+ if (sourceTypeNode instanceof array_type_node_1.ArrayTypeNode) {
18
+ return typescript_1.factory.createArrayTypeNode(this.transpile(sourceTypeNode.type));
19
+ }
20
+ if (sourceTypeNode instanceof array_shape_node_1.ArrayShapeNode) {
21
+ return typescript_1.factory.createTypeLiteralNode(sourceTypeNode.items.map((item) => {
22
+ return typescript_1.factory.createPropertySignature(undefined, item.keyName.toString(), item.optional
23
+ ? typescript_1.factory.createToken(typescript_1.SyntaxKind.QuestionToken)
24
+ : undefined, this.transpile(item.valueType));
25
+ }));
26
+ }
27
+ if (sourceTypeNode instanceof object_shape_node_1.ObjectShapeNode) {
28
+ return typescript_1.factory.createTypeLiteralNode(sourceTypeNode.items.map((item) => {
29
+ return typescript_1.factory.createPropertySignature(undefined, item.keyName.toString(), item.optional
30
+ ? typescript_1.factory.createToken(typescript_1.SyntaxKind.QuestionToken)
31
+ : undefined, this.transpile(item.valueType));
32
+ }));
33
+ }
34
+ if (sourceTypeNode.isGenericTypeNode()) {
35
+ if ([
36
+ 'array',
37
+ 'non-empty-array',
38
+ 'list',
39
+ 'non-empty-list',
40
+ '\\Illuminate\\Database\\Eloquent\\Collection',
41
+ ].includes(sourceTypeNode.type.name)) {
42
+ if (sourceTypeNode.genericTypes.length === 1) {
43
+ return typescript_1.factory.createArrayTypeNode(this.transpile(sourceTypeNode.genericTypes[0]));
44
+ }
45
+ if (sourceTypeNode.genericTypes.length === 2) {
46
+ return typescript_1.factory.createTypeReferenceNode(typescript_1.factory.createIdentifier('Record'), [
47
+ this.transpile(sourceTypeNode.genericTypes[0]),
48
+ this.transpile(sourceTypeNode.genericTypes[1]),
49
+ ]);
50
+ }
51
+ }
52
+ throw Error('Not yet supported Generic type so far');
53
+ }
54
+ if (sourceTypeNode.isIdentifierTypeNode()) {
55
+ if (['bool', 'boolean', 'true', 'false'].includes(sourceTypeNode.name)) {
56
+ return typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.BooleanKeyword);
57
+ }
58
+ if (['int', 'integer', 'float', 'double'].includes(sourceTypeNode.name)) {
59
+ return typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.NumberKeyword);
60
+ }
61
+ if (sourceTypeNode.name === 'string') {
62
+ return typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.StringKeyword);
63
+ }
64
+ if (sourceTypeNode.name === 'array-key') {
65
+ return typescript_1.factory.createUnionTypeNode([
66
+ typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.StringKeyword),
67
+ typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.NumberKeyword),
68
+ ]);
69
+ }
70
+ if (sourceTypeNode.name === 'scalar') {
71
+ return typescript_1.factory.createUnionTypeNode([
72
+ typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.StringKeyword),
73
+ typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.NumberKeyword),
74
+ typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.BooleanKeyword),
75
+ ]);
76
+ }
77
+ if (sourceTypeNode.name === 'mixed') {
78
+ typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.AnyKeyword);
79
+ }
80
+ if (sourceTypeNode.name === 'void') {
81
+ return typescript_1.factory.createToken(typescript_1.SyntaxKind.VoidKeyword);
82
+ }
83
+ if (sourceTypeNode.name === 'null') {
84
+ return typescript_1.factory.createLiteralTypeNode(typescript_1.factory.createNull());
85
+ }
86
+ if (/^[A-Z\\]/.test(sourceTypeNode.name)) {
87
+ const nameNodeParts = sourceTypeNode.name.split('\\');
88
+ const { name, path, isTypeOnly } = this.nameNodePathResolver(nameNodeParts);
89
+ if (name !== 'string' && path !== '') {
90
+ this.importDeclarations.push(typescript_1.factory.createImportDeclaration(undefined, typescript_1.factory.createImportClause(isTypeOnly, undefined, typescript_1.factory.createNamedImports([
91
+ typescript_1.factory.createImportSpecifier(false, undefined, typescript_1.factory.createIdentifier(name)),
92
+ ])), typescript_1.factory.createStringLiteral(path), undefined));
93
+ }
94
+ return typescript_1.factory.createTypeReferenceNode(typescript_1.factory.createIdentifier(name), undefined);
95
+ }
96
+ }
97
+ return typescript_1.factory.createKeywordTypeNode(typescript_1.SyntaxKind.AnyKeyword);
98
+ }
99
+ beforeTranspile() {
100
+ this.importDeclarations = [];
101
+ }
102
+ getImportDeclarations() {
103
+ return this.importDeclarations;
104
+ }
105
+ }
106
+ exports.PhpDocTypeNodeToTypescriptTypeNodeTranspiler = PhpDocTypeNodeToTypescriptTypeNodeTranspiler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rightcapital/phpdoc-parser",
3
- "version": "0.3.52",
3
+ "version": "0.3.53-.378.1.0",
4
4
  "keywords": [
5
5
  "PHP",
6
6
  "PHPDoc",
@@ -44,12 +44,17 @@
44
44
  "husky": "9.0.11",
45
45
  "inquirer": "9.2.15",
46
46
  "prettier": "3.2.5",
47
- "typescript": "5.3.3",
48
47
  "vitest": "1.3.0"
49
48
  },
50
49
  "dependencies": {
51
50
  "@types/node": "20.11.25",
52
- "lodash": "4.17.21"
51
+ "lodash": "4.17.21",
52
+ "typescript": "5.3.3"
53
+ },
54
+ "config": {
55
+ "commitizen": {
56
+ "path": "@commitlint/cz-commitlint"
57
+ }
53
58
  },
54
59
  "scripts": {
55
60
  "commit": "cz",
@@ -58,14 +63,8 @@
58
63
  "check": "beachball check",
59
64
  "build": "pnpm run clean && tsc --project ./tsconfig.build.json",
60
65
  "preinstall": "npx only-allow pnpm",
61
- "prepare": "husky install",
62
66
  "eslint": "eslint --report-unused-disable-directives 'src/**/*.ts*'",
63
67
  "eslint:fix": "eslint --report-unused-disable-directives --fix 'src/**/*.ts*'",
64
68
  "test": "vitest"
65
- },
66
- "config": {
67
- "commitizen": {
68
- "path": "@commitlint/cz-commitlint"
69
- }
70
69
  }
71
- }
70
+ }