@teambit/typescript 0.0.880 → 0.0.882

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 (78) hide show
  1. package/dist/cmds/check-types.cmd.js +0 -21
  2. package/dist/cmds/check-types.cmd.js.map +1 -1
  3. package/dist/cmds/write-tsconfig.cmd.js +2 -25
  4. package/dist/cmds/write-tsconfig.cmd.js.map +1 -1
  5. package/dist/dedupe-path.spec.js +6 -8
  6. package/dist/dedupe-path.spec.js.map +1 -1
  7. package/dist/exceptions/index.js +0 -3
  8. package/dist/exceptions/index.js.map +1 -1
  9. package/dist/exceptions/transformer-not-found.js +0 -7
  10. package/dist/exceptions/transformer-not-found.js.map +1 -1
  11. package/dist/export-identifier.js +0 -3
  12. package/dist/export-identifier.js.map +1 -1
  13. package/dist/export-list.js +0 -4
  14. package/dist/export-list.js.map +1 -1
  15. package/dist/index.js +0 -9
  16. package/dist/index.js.map +1 -1
  17. package/dist/schema-extractor-context.js +16 -120
  18. package/dist/schema-extractor-context.js.map +1 -1
  19. package/dist/schema-transformer.plugin.js +0 -8
  20. package/dist/schema-transformer.plugin.js.map +1 -1
  21. package/dist/transformers/binding-element.js +0 -23
  22. package/dist/transformers/binding-element.js.map +1 -1
  23. package/dist/transformers/class-deceleration.js +2 -34
  24. package/dist/transformers/class-deceleration.js.map +1 -1
  25. package/dist/transformers/enum-declaration.js +0 -16
  26. package/dist/transformers/enum-declaration.js.map +1 -1
  27. package/dist/transformers/export-declaration.js +8 -47
  28. package/dist/transformers/export-declaration.js.map +1 -1
  29. package/dist/transformers/function-declaration.js +2 -19
  30. package/dist/transformers/function-declaration.js.map +1 -1
  31. package/dist/transformers/index.js +0 -30
  32. package/dist/transformers/index.js.map +1 -1
  33. package/dist/transformers/interface-declaration.js +0 -25
  34. package/dist/transformers/interface-declaration.js.map +1 -1
  35. package/dist/transformers/source-file-transformer.js +3 -24
  36. package/dist/transformers/source-file-transformer.js.map +1 -1
  37. package/dist/transformers/type-alias.js +0 -23
  38. package/dist/transformers/type-alias.js.map +1 -1
  39. package/dist/transformers/utils/class-element-to-schema.js +0 -35
  40. package/dist/transformers/utils/class-element-to-schema.js.map +1 -1
  41. package/dist/transformers/utils/get-params.js +6 -33
  42. package/dist/transformers/utils/get-params.js.map +1 -1
  43. package/dist/transformers/utils/jsdoc-to-doc-schema.js +4 -49
  44. package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -1
  45. package/dist/transformers/utils/parse-type-from-quick-info.js +4 -16
  46. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
  47. package/dist/transformers/utils/to-function-like-schema.js +0 -15
  48. package/dist/transformers/utils/to-function-like-schema.js.map +1 -1
  49. package/dist/transformers/utils/type-element-to-schema.js +0 -37
  50. package/dist/transformers/utils/type-element-to-schema.js.map +1 -1
  51. package/dist/transformers/utils/type-node-to-schema.js +5 -71
  52. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  53. package/dist/transformers/variable-declaration.js +0 -30
  54. package/dist/transformers/variable-declaration.js.map +1 -1
  55. package/dist/transformers/variable-statement.js +0 -22
  56. package/dist/transformers/variable-statement.js.map +1 -1
  57. package/dist/tsconfig-writer.js +8 -58
  58. package/dist/tsconfig-writer.js.map +1 -1
  59. package/dist/typescript.aspect.js +0 -5
  60. package/dist/typescript.aspect.js.map +1 -1
  61. package/dist/typescript.compiler.js +16 -83
  62. package/dist/typescript.compiler.js.map +1 -1
  63. package/dist/typescript.compiler.spec.js +0 -25
  64. package/dist/typescript.compiler.spec.js.map +1 -1
  65. package/dist/typescript.composition.js +0 -6
  66. package/dist/typescript.composition.js.map +1 -1
  67. package/dist/typescript.extractor.js +6 -50
  68. package/dist/typescript.extractor.js.map +1 -1
  69. package/dist/typescript.main.runtime.js +10 -114
  70. package/dist/typescript.main.runtime.js.map +1 -1
  71. package/dist/typescript.parser.js +3 -30
  72. package/dist/typescript.parser.js.map +1 -1
  73. package/dist/typescript.parser.spec.js +0 -22
  74. package/dist/typescript.parser.spec.js.map +1 -1
  75. package/package-tar/teambit-typescript-0.0.882.tgz +0 -0
  76. package/package.json +15 -15
  77. package/{preview-1666312873430.js → preview-1666496165706.js} +2 -2
  78. package/package-tar/teambit-typescript-0.0.880.tgz +0 -0
@@ -1,100 +1,75 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.promise.js");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.getParams = getParams;
11
-
12
9
  function _semanticsEntities() {
13
10
  const data = require("@teambit/semantics.entities.semantic-schema");
14
-
15
11
  _semanticsEntities = function () {
16
12
  return data;
17
13
  };
18
-
19
14
  return data;
20
15
  }
21
-
22
16
  function _pMapSeries() {
23
17
  const data = _interopRequireDefault(require("p-map-series"));
24
-
25
18
  _pMapSeries = function () {
26
19
  return data;
27
20
  };
28
-
29
21
  return data;
30
22
  }
31
-
32
23
  function _typescript() {
33
24
  const data = require("typescript");
34
-
35
25
  _typescript = function () {
36
26
  return data;
37
27
  };
38
-
39
28
  return data;
40
29
  }
41
-
42
30
  function _parseTypeFromQuickInfo() {
43
31
  const data = require("./parse-type-from-quick-info");
44
-
45
32
  _parseTypeFromQuickInfo = function () {
46
33
  return data;
47
34
  };
48
-
49
35
  return data;
50
36
  }
51
-
52
37
  function _typeNodeToSchema() {
53
38
  const data = require("./type-node-to-schema");
54
-
55
39
  _typeNodeToSchema = function () {
56
40
  return data;
57
41
  };
58
-
59
42
  return data;
60
43
  }
61
-
62
44
  async function getParams(parameterNodes, context) {
63
45
  return (0, _pMapSeries().default)(parameterNodes, async param => {
64
46
  return new (_semanticsEntities().ParameterSchema)(context.getLocation(param), getParamName(param), await getParamType(param, context), Boolean(param.questionToken), param.initializer ? param.initializer.getText() : undefined);
65
47
  });
66
48
  }
67
-
68
49
  function getParamName(param) {
69
50
  if ((0, _typescript().isIdentifier)(param.name)) {
70
51
  return param.name.getText();
71
- } // it's binding pattern, either an array or an object
72
-
73
-
52
+ }
53
+ // it's binding pattern, either an array or an object
74
54
  const elements = param.name.elements.map(elem => elem.getText());
75
55
  const elementsStr = elements.join(', ');
76
-
77
56
  if (param.name.kind === _typescript().SyntaxKind.ArrayBindingPattern) {
78
57
  return `[ ${elementsStr} ]`;
79
- } // it's an object binding
80
-
81
-
58
+ }
59
+ // it's an object binding
82
60
  return `{ ${elementsStr} }`;
83
61
  }
84
-
85
62
  async function getParamType(param, context) {
86
63
  if (param.type) {
87
64
  const type = param.type;
88
65
  return (0, _typeNodeToSchema().typeNodeToSchema)(type, context);
89
66
  }
90
-
91
67
  if ((0, _typescript().isIdentifier)(param.name)) {
92
68
  const info = await context.getQuickInfo(param.name);
93
69
  const parsed = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
94
70
  return new (_semanticsEntities().InferenceTypeSchema)(context.getLocation(param), parsed);
95
- } // it's binding pattern, either an array or an object
96
-
97
-
71
+ }
72
+ // it's binding pattern, either an array or an object
98
73
  if (param.name.kind === _typescript().SyntaxKind.ArrayBindingPattern) {
99
74
  const elements = await (0, _pMapSeries().default)(param.name.elements, async elem => {
100
75
  const info = await context.getQuickInfo(elem);
@@ -103,7 +78,6 @@ async function getParamType(param, context) {
103
78
  });
104
79
  return new (_semanticsEntities().TupleTypeSchema)(context.getLocation(param), elements);
105
80
  }
106
-
107
81
  if (param.name.kind === _typescript().SyntaxKind.ObjectBindingPattern) {
108
82
  const elements = await (0, _pMapSeries().default)(param.name.elements, async elem => {
109
83
  const info = await context.getQuickInfo(elem.name);
@@ -112,7 +86,6 @@ async function getParamType(param, context) {
112
86
  });
113
87
  return new (_semanticsEntities().TypeLiteralSchema)(context.getLocation(param), elements);
114
88
  }
115
-
116
89
  throw new Error(`unknown param type`);
117
90
  }
118
91
 
@@ -1 +1 @@
1
- {"version":3,"names":["getParams","parameterNodes","context","pMapSeries","param","ParameterSchema","getLocation","getParamName","getParamType","Boolean","questionToken","initializer","getText","undefined","isIdentifier","name","elements","map","elem","elementsStr","join","kind","SyntaxKind","ArrayBindingPattern","type","typeNodeToSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error"],"sources":["get-params.ts"],"sourcesContent":["import {\n InferenceTypeSchema,\n ParameterSchema,\n TupleTypeSchema,\n TypeLiteralSchema,\n SchemaNode,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport {\n SyntaxKind,\n ParameterDeclaration,\n NodeArray,\n isIdentifier,\n BindingElement,\n ArrayBindingElement,\n} from 'typescript';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { typeNodeToSchema } from './type-node-to-schema';\n\nexport async function getParams(\n parameterNodes: NodeArray<ParameterDeclaration>,\n context: SchemaExtractorContext\n): Promise<ParameterSchema[]> {\n return pMapSeries(parameterNodes, async (param) => {\n return new ParameterSchema(\n context.getLocation(param),\n getParamName(param),\n await getParamType(param, context),\n Boolean(param.questionToken),\n param.initializer ? param.initializer.getText() : undefined\n );\n });\n}\n\nfunction getParamName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n}\n\nasync function getParamType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n const type = param.type;\n return typeNodeToSchema(type, context);\n }\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n}\n"],"mappings":";;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAOA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AASA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,eAAeA,SAAf,CACLC,cADK,EAELC,OAFK,EAGuB;EAC5B,OAAO,IAAAC,qBAAA,EAAWF,cAAX,EAA2B,MAAOG,KAAP,IAAiB;IACjD,OAAO,KAAIC,oCAAJ,EACLH,OAAO,CAACI,WAAR,CAAoBF,KAApB,CADK,EAELG,YAAY,CAACH,KAAD,CAFP,EAGL,MAAMI,YAAY,CAACJ,KAAD,EAAQF,OAAR,CAHb,EAILO,OAAO,CAACL,KAAK,CAACM,aAAP,CAJF,EAKLN,KAAK,CAACO,WAAN,GAAoBP,KAAK,CAACO,WAAN,CAAkBC,OAAlB,EAApB,GAAkDC,SAL7C,CAAP;EAOD,CARM,CAAP;AASD;;AAED,SAASN,YAAT,CAAsBH,KAAtB,EAA2D;EACzD,IAAI,IAAAU,0BAAA,EAAaV,KAAK,CAACW,IAAnB,CAAJ,EAA8B;IAC5B,OAAOX,KAAK,CAACW,IAAN,CAAWH,OAAX,EAAP;EACD,CAHwD,CAIzD;;;EACA,MAAMI,QAAQ,GAAGZ,KAAK,CAACW,IAAN,CAAWC,QAAX,CAAoBC,GAApB,CAAyBC,IAAD,IAAUA,IAAI,CAACN,OAAL,EAAlC,CAAjB;EACA,MAAMO,WAAW,GAAGH,QAAQ,CAACI,IAAT,CAAc,IAAd,CAApB;;EACA,IAAIhB,KAAK,CAACW,IAAN,CAAWM,IAAX,KAAoBC,wBAAA,CAAWC,mBAAnC,EAAwD;IACtD,OAAQ,KAAIJ,WAAY,IAAxB;EACD,CATwD,CAUzD;;;EACA,OAAQ,KAAIA,WAAY,IAAxB;AACD;;AAED,eAAeX,YAAf,CAA4BJ,KAA5B,EAAyDF,OAAzD,EAA+G;EAC7G,IAAIE,KAAK,CAACoB,IAAV,EAAgB;IACd,MAAMA,IAAI,GAAGpB,KAAK,CAACoB,IAAnB;IACA,OAAO,IAAAC,oCAAA,EAAiBD,IAAjB,EAAuBtB,OAAvB,CAAP;EACD;;EACD,IAAI,IAAAY,0BAAA,EAAaV,KAAK,CAACW,IAAnB,CAAJ,EAA8B;IAC5B,MAAMW,IAAI,GAAG,MAAMxB,OAAO,CAACyB,YAAR,CAAqBvB,KAAK,CAACW,IAA3B,CAAnB;IACA,MAAMa,MAAM,GAAG,IAAAC,gDAAA,EAAuBH,IAAvB,CAAf;IACA,OAAO,KAAII,wCAAJ,EAAwB5B,OAAO,CAACI,WAAR,CAAoBF,KAApB,CAAxB,EAAoDwB,MAApD,CAAP;EACD,CAT4G,CAU7G;;;EACA,IAAIxB,KAAK,CAACW,IAAN,CAAWM,IAAX,KAAoBC,wBAAA,CAAWC,mBAAnC,EAAwD;IACtD,MAAMP,QAAQ,GAAG,MAAM,IAAAb,qBAAA,EAAWC,KAAK,CAACW,IAAN,CAAWC,QAAtB,EAAgC,MAAOE,IAAP,IAAqC;MAC1F,MAAMQ,IAAI,GAAG,MAAMxB,OAAO,CAACyB,YAAR,CAAqBT,IAArB,CAAnB;MACA,MAAMU,MAAM,GAAG,IAAAC,gDAAA,EAAuBH,IAAvB,CAAf;MACA,OAAO,KAAII,wCAAJ,EAAwB5B,OAAO,CAACI,WAAR,CAAoBF,KAApB,CAAxB,EAAoDwB,MAApD,CAAP;IACD,CAJsB,CAAvB;IAKA,OAAO,KAAIG,oCAAJ,EAAoB7B,OAAO,CAACI,WAAR,CAAoBF,KAApB,CAApB,EAAgDY,QAAhD,CAAP;EACD;;EACD,IAAIZ,KAAK,CAACW,IAAN,CAAWM,IAAX,KAAoBC,wBAAA,CAAWU,oBAAnC,EAAyD;IACvD,MAAMhB,QAAQ,GAAG,MAAM,IAAAb,qBAAA,EAAWC,KAAK,CAACW,IAAN,CAAWC,QAAtB,EAAgC,MAAOE,IAAP,IAAgC;MACrF,MAAMQ,IAAI,GAAG,MAAMxB,OAAO,CAACyB,YAAR,CAAqBT,IAAI,CAACH,IAA1B,CAAnB;MACA,MAAMa,MAAM,GAAG,IAAAC,gDAAA,EAAuBH,IAAvB,CAAf;MACA,OAAO,KAAII,wCAAJ,EAAwB5B,OAAO,CAACI,WAAR,CAAoBF,KAApB,CAAxB,EAAoDwB,MAApD,EAA4DV,IAAI,CAACH,IAAL,CAAUH,OAAV,EAA5D,CAAP;IACD,CAJsB,CAAvB;IAKA,OAAO,KAAIqB,sCAAJ,EAAsB/B,OAAO,CAACI,WAAR,CAAoBF,KAApB,CAAtB,EAAkDY,QAAlD,CAAP;EACD;;EACD,MAAM,IAAIkB,KAAJ,CAAW,oBAAX,CAAN;AACD"}
1
+ {"version":3,"names":["getParams","parameterNodes","context","pMapSeries","param","ParameterSchema","getLocation","getParamName","getParamType","Boolean","questionToken","initializer","getText","undefined","isIdentifier","name","elements","map","elem","elementsStr","join","kind","SyntaxKind","ArrayBindingPattern","type","typeNodeToSchema","info","getQuickInfo","parsed","parseTypeFromQuickInfo","InferenceTypeSchema","TupleTypeSchema","ObjectBindingPattern","TypeLiteralSchema","Error"],"sources":["get-params.ts"],"sourcesContent":["import {\n InferenceTypeSchema,\n ParameterSchema,\n TupleTypeSchema,\n TypeLiteralSchema,\n SchemaNode,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport {\n SyntaxKind,\n ParameterDeclaration,\n NodeArray,\n isIdentifier,\n BindingElement,\n ArrayBindingElement,\n} from 'typescript';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { typeNodeToSchema } from './type-node-to-schema';\n\nexport async function getParams(\n parameterNodes: NodeArray<ParameterDeclaration>,\n context: SchemaExtractorContext\n): Promise<ParameterSchema[]> {\n return pMapSeries(parameterNodes, async (param) => {\n return new ParameterSchema(\n context.getLocation(param),\n getParamName(param),\n await getParamType(param, context),\n Boolean(param.questionToken),\n param.initializer ? param.initializer.getText() : undefined\n );\n });\n}\n\nfunction getParamName(param: ParameterDeclaration): string {\n if (isIdentifier(param.name)) {\n return param.name.getText();\n }\n // it's binding pattern, either an array or an object\n const elements = param.name.elements.map((elem) => elem.getText());\n const elementsStr = elements.join(', ');\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n return `[ ${elementsStr} ]`;\n }\n // it's an object binding\n return `{ ${elementsStr} }`;\n}\n\nasync function getParamType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {\n if (param.type) {\n const type = param.type;\n return typeNodeToSchema(type, context);\n }\n if (isIdentifier(param.name)) {\n const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n }\n // it's binding pattern, either an array or an object\n if (param.name.kind === SyntaxKind.ArrayBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: ArrayBindingElement) => {\n const info = await context.getQuickInfo(elem);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed);\n });\n return new TupleTypeSchema(context.getLocation(param), elements);\n }\n if (param.name.kind === SyntaxKind.ObjectBindingPattern) {\n const elements = await pMapSeries(param.name.elements, async (elem: BindingElement) => {\n const info = await context.getQuickInfo(elem.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new InferenceTypeSchema(context.getLocation(param), parsed, elem.name.getText());\n });\n return new TypeLiteralSchema(context.getLocation(param), elements);\n }\n throw new Error(`unknown param type`);\n}\n"],"mappings":"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"}
@@ -1,148 +1,108 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.promise.js");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.jsDocToDocSchema = jsDocToDocSchema;
11
-
12
9
  function _typescript() {
13
10
  const data = require("typescript");
14
-
15
11
  _typescript = function () {
16
12
  return data;
17
13
  };
18
-
19
14
  return data;
20
15
  }
21
-
22
16
  function _tsutils() {
23
17
  const data = require("tsutils");
24
-
25
18
  _tsutils = function () {
26
19
  return data;
27
20
  };
28
-
29
21
  return data;
30
22
  }
31
-
32
23
  function _pMapSeries() {
33
24
  const data = _interopRequireDefault(require("p-map-series"));
34
-
35
25
  _pMapSeries = function () {
36
26
  return data;
37
27
  };
38
-
39
28
  return data;
40
29
  }
41
-
42
30
  function _semanticsEntities() {
43
31
  const data = require("@teambit/semantics.entities.semantic-schema");
44
-
45
32
  _semanticsEntities = function () {
46
33
  return data;
47
34
  };
48
-
49
35
  return data;
50
36
  }
51
-
52
37
  function _typeNodeToSchema() {
53
38
  const data = require("./type-node-to-schema");
54
-
55
39
  _typeNodeToSchema = function () {
56
40
  return data;
57
41
  };
58
-
59
42
  return data;
60
43
  }
61
-
62
44
  /* eslint-disable no-fallthrough */
45
+
63
46
  async function jsDocToDocSchema(node, context) {
64
47
  if (!(0, _tsutils().canHaveJsDoc)(node)) {
65
48
  return undefined;
66
49
  }
67
-
68
50
  const jsDocs = (0, _tsutils().getJsDoc)(node);
69
-
70
51
  if (!jsDocs.length) {
71
52
  return undefined;
72
- } // not sure how common it is to have multiple JSDocs. never seen it before.
53
+ }
54
+ // not sure how common it is to have multiple JSDocs. never seen it before.
73
55
  // regardless, in typescript implementation of methods like `getJSDocDeprecatedTag()`, they use the first one. (`getFirstJSDocTag()`)
74
-
75
-
76
56
  const jsDoc = jsDocs[0];
77
57
  const location = context.getLocation(jsDoc);
78
58
  const comment = (0, _typescript().getTextOfJSDocComment)(jsDoc.comment);
79
59
  const tags = jsDoc.tags ? await (0, _pMapSeries().default)(jsDoc.tags, tag => tagParser(tag, context)) : undefined;
80
60
  return new (_semanticsEntities().DocSchema)(location, jsDoc.getText(), comment, tags);
81
61
  }
82
-
83
62
  async function tagParser(tag, context) {
84
63
  // for some reason, in some cases, if `tag.getSourceFile()` is not provided to the `getText()`, it throws "Cannot read property 'text' of undefined"
64
+
85
65
  switch (tag.kind) {
86
66
  case _typescript().SyntaxKind.JSDocReturnTag:
87
67
  return returnTag(tag, context);
88
-
89
68
  case _typescript().SyntaxKind.JSDocPropertyTag:
90
69
  return propertyLikeTag(tag, context);
91
-
92
70
  case _typescript().SyntaxKind.JSDocParameterTag:
93
71
  return propertyLikeTag(tag, context);
94
-
95
72
  case _typescript().SyntaxKind.JSDocAugmentsTag:
96
73
  return simpleTag(tag, _semanticsEntities().TagName.augments, context);
97
-
98
74
  case _typescript().SyntaxKind.JSDocAuthorTag:
99
75
  return simpleTag(tag, _semanticsEntities().TagName.author, context);
100
-
101
76
  case _typescript().SyntaxKind.JSDocClassTag:
102
77
  return simpleTag(tag, _semanticsEntities().TagName.class, context);
103
-
104
78
  case _typescript().SyntaxKind.JSDocCallbackTag:
105
79
  return simpleTag(tag, _semanticsEntities().TagName.callback, context);
106
-
107
80
  case _typescript().SyntaxKind.JSDocPublicTag:
108
81
  return simpleTag(tag, _semanticsEntities().TagName.public, context);
109
-
110
82
  case _typescript().SyntaxKind.JSDocPrivateTag:
111
83
  return simpleTag(tag, _semanticsEntities().TagName.private, context);
112
-
113
84
  case _typescript().SyntaxKind.JSDocProtectedTag:
114
85
  return simpleTag(tag, _semanticsEntities().TagName.protected, context);
115
-
116
86
  case _typescript().SyntaxKind.JSDocReadonlyTag:
117
87
  return simpleTag(tag, _semanticsEntities().TagName.readonly, context);
118
-
119
88
  case _typescript().SyntaxKind.JSDocOverrideTag:
120
89
  return simpleTag(tag, _semanticsEntities().TagName.override, context);
121
-
122
90
  case _typescript().SyntaxKind.JSDocDeprecatedTag:
123
91
  return simpleTag(tag, _semanticsEntities().TagName.deprecated, context);
124
-
125
92
  case _typescript().SyntaxKind.JSDocSeeTag:
126
93
  return simpleTag(tag, _semanticsEntities().TagName.see, context);
127
-
128
94
  case _typescript().SyntaxKind.JSDocEnumTag:
129
95
  return simpleTag(tag, _semanticsEntities().TagName.enum, context);
130
-
131
96
  case _typescript().SyntaxKind.JSDocThisTag:
132
97
  return simpleTag(tag, _semanticsEntities().TagName.this, context);
133
-
134
98
  case _typescript().SyntaxKind.JSDocTypeTag:
135
99
  return simpleTag(tag, _semanticsEntities().TagName.type, context);
136
-
137
100
  case _typescript().SyntaxKind.JSDocTemplateTag:
138
101
  return simpleTag(tag, _semanticsEntities().TagName.template, context);
139
-
140
102
  case _typescript().SyntaxKind.JSDocTypedefTag:
141
103
  return simpleTag(tag, _semanticsEntities().TagName.typedef, context);
142
-
143
104
  case _typescript().SyntaxKind.JSDocImplementsTag:
144
105
  return simpleTag(tag, _semanticsEntities().TagName.implements, context);
145
-
146
106
  default:
147
107
  {
148
108
  const tagName = tag.tagName.getText(tag.getSourceFile());
@@ -150,21 +110,16 @@ async function tagParser(tag, context) {
150
110
  }
151
111
  }
152
112
  }
153
-
154
113
  function simpleTag(tag, tagName, context) {
155
114
  return new (_semanticsEntities().TagSchema)(context.getLocation(tag), tagName, (0, _typescript().getTextOfJSDocComment)(tag.comment));
156
115
  }
157
-
158
116
  async function returnTag(tag, context) {
159
117
  var _tag$typeExpression, _tag$typeExpression2;
160
-
161
118
  const type = (_tag$typeExpression = tag.typeExpression) !== null && _tag$typeExpression !== void 0 && _tag$typeExpression.type ? await (0, _typeNodeToSchema().typeNodeToSchema)((_tag$typeExpression2 = tag.typeExpression) === null || _tag$typeExpression2 === void 0 ? void 0 : _tag$typeExpression2.type, context) : undefined;
162
119
  return new (_semanticsEntities().ReturnTagSchema)(context.getLocation(tag), (0, _typescript().getTextOfJSDocComment)(tag.comment), type);
163
120
  }
164
-
165
121
  async function propertyLikeTag(tag, context) {
166
122
  var _tag$typeExpression3, _tag$typeExpression4;
167
-
168
123
  const type = (_tag$typeExpression3 = tag.typeExpression) !== null && _tag$typeExpression3 !== void 0 && _tag$typeExpression3.type ? await (0, _typeNodeToSchema().typeNodeToSchema)((_tag$typeExpression4 = tag.typeExpression) === null || _tag$typeExpression4 === void 0 ? void 0 : _tag$typeExpression4.type, context) : undefined;
169
124
  return new (_semanticsEntities().PropertyLikeTagSchema)(context.getLocation(tag), tag.name.getText(), (0, _typescript().getTextOfJSDocComment)(tag.comment), type);
170
125
  }
@@ -1 +1 @@
1
- {"version":3,"names":["jsDocToDocSchema","node","context","canHaveJsDoc","undefined","jsDocs","getJsDoc","length","jsDoc","location","getLocation","comment","getTextOfJSDocComment","tags","pMapSeries","tag","tagParser","DocSchema","getText","kind","SyntaxKind","JSDocReturnTag","returnTag","JSDocPropertyTag","propertyLikeTag","JSDocParameterTag","JSDocAugmentsTag","simpleTag","TagName","augments","JSDocAuthorTag","author","JSDocClassTag","class","JSDocCallbackTag","callback","JSDocPublicTag","public","JSDocPrivateTag","private","JSDocProtectedTag","protected","JSDocReadonlyTag","readonly","JSDocOverrideTag","override","JSDocDeprecatedTag","deprecated","JSDocSeeTag","see","JSDocEnumTag","enum","JSDocThisTag","this","JSDocTypeTag","type","JSDocTemplateTag","template","JSDocTypedefTag","typedef","JSDocImplementsTag","implements","tagName","getSourceFile","TagSchema","typeExpression","typeNodeToSchema","ReturnTagSchema","PropertyLikeTagSchema","name"],"sources":["jsdoc-to-doc-schema.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\nimport {\n getTextOfJSDocComment,\n JSDocParameterTag,\n JSDocPropertyLikeTag,\n JSDocPropertyTag,\n JSDocReturnTag,\n JSDocTag,\n Node,\n SyntaxKind,\n} from 'typescript';\nimport { getJsDoc, canHaveJsDoc } from 'tsutils';\nimport pMapSeries from 'p-map-series';\nimport {\n DocSchema,\n PropertyLikeTagSchema,\n ReturnTagSchema,\n TagName,\n TagSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { typeNodeToSchema } from './type-node-to-schema';\n\nexport async function jsDocToDocSchema(node: Node, context: SchemaExtractorContext): Promise<DocSchema | undefined> {\n if (!canHaveJsDoc(node)) {\n return undefined;\n }\n const jsDocs = getJsDoc(node);\n if (!jsDocs.length) {\n return undefined;\n }\n // not sure how common it is to have multiple JSDocs. never seen it before.\n // regardless, in typescript implementation of methods like `getJSDocDeprecatedTag()`, they use the first one. (`getFirstJSDocTag()`)\n const jsDoc = jsDocs[0];\n const location = context.getLocation(jsDoc);\n const comment = getTextOfJSDocComment(jsDoc.comment);\n const tags = jsDoc.tags ? await pMapSeries(jsDoc.tags, (tag) => tagParser(tag, context)) : undefined;\n return new DocSchema(location, jsDoc.getText(), comment, tags);\n}\n\nasync function tagParser(tag: JSDocTag, context: SchemaExtractorContext): Promise<TagSchema> {\n // for some reason, in some cases, if `tag.getSourceFile()` is not provided to the `getText()`, it throws \"Cannot read property 'text' of undefined\"\n\n switch (tag.kind) {\n case SyntaxKind.JSDocReturnTag:\n return returnTag(tag as JSDocReturnTag, context);\n case SyntaxKind.JSDocPropertyTag:\n return propertyLikeTag(tag as JSDocPropertyTag, context);\n case SyntaxKind.JSDocParameterTag:\n return propertyLikeTag(tag as JSDocParameterTag, context);\n case SyntaxKind.JSDocAugmentsTag:\n return simpleTag(tag, TagName.augments, context);\n case SyntaxKind.JSDocAuthorTag:\n return simpleTag(tag, TagName.author, context);\n case SyntaxKind.JSDocClassTag:\n return simpleTag(tag, TagName.class, context);\n case SyntaxKind.JSDocCallbackTag:\n return simpleTag(tag, TagName.callback, context);\n case SyntaxKind.JSDocPublicTag:\n return simpleTag(tag, TagName.public, context);\n case SyntaxKind.JSDocPrivateTag:\n return simpleTag(tag, TagName.private, context);\n case SyntaxKind.JSDocProtectedTag:\n return simpleTag(tag, TagName.protected, context);\n case SyntaxKind.JSDocReadonlyTag:\n return simpleTag(tag, TagName.readonly, context);\n case SyntaxKind.JSDocOverrideTag:\n return simpleTag(tag, TagName.override, context);\n case SyntaxKind.JSDocDeprecatedTag:\n return simpleTag(tag, TagName.deprecated, context);\n case SyntaxKind.JSDocSeeTag:\n return simpleTag(tag, TagName.see, context);\n case SyntaxKind.JSDocEnumTag:\n return simpleTag(tag, TagName.enum, context);\n case SyntaxKind.JSDocThisTag:\n return simpleTag(tag, TagName.this, context);\n case SyntaxKind.JSDocTypeTag:\n return simpleTag(tag, TagName.type, context);\n case SyntaxKind.JSDocTemplateTag:\n return simpleTag(tag, TagName.template, context);\n case SyntaxKind.JSDocTypedefTag:\n return simpleTag(tag, TagName.typedef, context);\n case SyntaxKind.JSDocImplementsTag:\n return simpleTag(tag, TagName.implements, context);\n default: {\n const tagName: TagName | string = tag.tagName.getText(tag.getSourceFile());\n return simpleTag(tag, tagName, context);\n }\n }\n}\n\nfunction simpleTag(tag: JSDocTag, tagName: TagName | string, context: SchemaExtractorContext): TagSchema {\n return new TagSchema(context.getLocation(tag), tagName, getTextOfJSDocComment(tag.comment));\n}\n\nasync function returnTag(tag: JSDocReturnTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await typeNodeToSchema(tag.typeExpression?.type, context) : undefined;\n return new ReturnTagSchema(context.getLocation(tag), getTextOfJSDocComment(tag.comment), type);\n}\n\nasync function propertyLikeTag(tag: JSDocPropertyLikeTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await typeNodeToSchema(tag.typeExpression?.type, context) : undefined;\n return new PropertyLikeTagSchema(\n context.getLocation(tag),\n tag.name.getText(),\n getTextOfJSDocComment(tag.comment),\n type\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["jsDocToDocSchema","node","context","canHaveJsDoc","undefined","jsDocs","getJsDoc","length","jsDoc","location","getLocation","comment","getTextOfJSDocComment","tags","pMapSeries","tag","tagParser","DocSchema","getText","kind","SyntaxKind","JSDocReturnTag","returnTag","JSDocPropertyTag","propertyLikeTag","JSDocParameterTag","JSDocAugmentsTag","simpleTag","TagName","augments","JSDocAuthorTag","author","JSDocClassTag","class","JSDocCallbackTag","callback","JSDocPublicTag","public","JSDocPrivateTag","private","JSDocProtectedTag","protected","JSDocReadonlyTag","readonly","JSDocOverrideTag","override","JSDocDeprecatedTag","deprecated","JSDocSeeTag","see","JSDocEnumTag","enum","JSDocThisTag","this","JSDocTypeTag","type","JSDocTemplateTag","template","JSDocTypedefTag","typedef","JSDocImplementsTag","implements","tagName","getSourceFile","TagSchema","typeExpression","typeNodeToSchema","ReturnTagSchema","PropertyLikeTagSchema","name"],"sources":["jsdoc-to-doc-schema.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\nimport {\n getTextOfJSDocComment,\n JSDocParameterTag,\n JSDocPropertyLikeTag,\n JSDocPropertyTag,\n JSDocReturnTag,\n JSDocTag,\n Node,\n SyntaxKind,\n} from 'typescript';\nimport { getJsDoc, canHaveJsDoc } from 'tsutils';\nimport pMapSeries from 'p-map-series';\nimport {\n DocSchema,\n PropertyLikeTagSchema,\n ReturnTagSchema,\n TagName,\n TagSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { typeNodeToSchema } from './type-node-to-schema';\n\nexport async function jsDocToDocSchema(node: Node, context: SchemaExtractorContext): Promise<DocSchema | undefined> {\n if (!canHaveJsDoc(node)) {\n return undefined;\n }\n const jsDocs = getJsDoc(node);\n if (!jsDocs.length) {\n return undefined;\n }\n // not sure how common it is to have multiple JSDocs. never seen it before.\n // regardless, in typescript implementation of methods like `getJSDocDeprecatedTag()`, they use the first one. (`getFirstJSDocTag()`)\n const jsDoc = jsDocs[0];\n const location = context.getLocation(jsDoc);\n const comment = getTextOfJSDocComment(jsDoc.comment);\n const tags = jsDoc.tags ? await pMapSeries(jsDoc.tags, (tag) => tagParser(tag, context)) : undefined;\n return new DocSchema(location, jsDoc.getText(), comment, tags);\n}\n\nasync function tagParser(tag: JSDocTag, context: SchemaExtractorContext): Promise<TagSchema> {\n // for some reason, in some cases, if `tag.getSourceFile()` is not provided to the `getText()`, it throws \"Cannot read property 'text' of undefined\"\n\n switch (tag.kind) {\n case SyntaxKind.JSDocReturnTag:\n return returnTag(tag as JSDocReturnTag, context);\n case SyntaxKind.JSDocPropertyTag:\n return propertyLikeTag(tag as JSDocPropertyTag, context);\n case SyntaxKind.JSDocParameterTag:\n return propertyLikeTag(tag as JSDocParameterTag, context);\n case SyntaxKind.JSDocAugmentsTag:\n return simpleTag(tag, TagName.augments, context);\n case SyntaxKind.JSDocAuthorTag:\n return simpleTag(tag, TagName.author, context);\n case SyntaxKind.JSDocClassTag:\n return simpleTag(tag, TagName.class, context);\n case SyntaxKind.JSDocCallbackTag:\n return simpleTag(tag, TagName.callback, context);\n case SyntaxKind.JSDocPublicTag:\n return simpleTag(tag, TagName.public, context);\n case SyntaxKind.JSDocPrivateTag:\n return simpleTag(tag, TagName.private, context);\n case SyntaxKind.JSDocProtectedTag:\n return simpleTag(tag, TagName.protected, context);\n case SyntaxKind.JSDocReadonlyTag:\n return simpleTag(tag, TagName.readonly, context);\n case SyntaxKind.JSDocOverrideTag:\n return simpleTag(tag, TagName.override, context);\n case SyntaxKind.JSDocDeprecatedTag:\n return simpleTag(tag, TagName.deprecated, context);\n case SyntaxKind.JSDocSeeTag:\n return simpleTag(tag, TagName.see, context);\n case SyntaxKind.JSDocEnumTag:\n return simpleTag(tag, TagName.enum, context);\n case SyntaxKind.JSDocThisTag:\n return simpleTag(tag, TagName.this, context);\n case SyntaxKind.JSDocTypeTag:\n return simpleTag(tag, TagName.type, context);\n case SyntaxKind.JSDocTemplateTag:\n return simpleTag(tag, TagName.template, context);\n case SyntaxKind.JSDocTypedefTag:\n return simpleTag(tag, TagName.typedef, context);\n case SyntaxKind.JSDocImplementsTag:\n return simpleTag(tag, TagName.implements, context);\n default: {\n const tagName: TagName | string = tag.tagName.getText(tag.getSourceFile());\n return simpleTag(tag, tagName, context);\n }\n }\n}\n\nfunction simpleTag(tag: JSDocTag, tagName: TagName | string, context: SchemaExtractorContext): TagSchema {\n return new TagSchema(context.getLocation(tag), tagName, getTextOfJSDocComment(tag.comment));\n}\n\nasync function returnTag(tag: JSDocReturnTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await typeNodeToSchema(tag.typeExpression?.type, context) : undefined;\n return new ReturnTagSchema(context.getLocation(tag), getTextOfJSDocComment(tag.comment), type);\n}\n\nasync function propertyLikeTag(tag: JSDocPropertyLikeTag, context: SchemaExtractorContext) {\n const type = tag.typeExpression?.type ? await typeNodeToSchema(tag.typeExpression?.type, context) : undefined;\n return new PropertyLikeTagSchema(\n context.getLocation(tag),\n tag.name.getText(),\n getTextOfJSDocComment(tag.comment),\n type\n );\n}\n"],"mappings":"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"}
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.array.iterator.js");
4
-
5
4
  require("core-js/modules/es.regexp.exec.js");
6
-
7
5
  require("core-js/modules/es.string.trim.js");
8
-
9
6
  Object.defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
@@ -13,7 +10,9 @@ exports.UNRESOLVED = void 0;
13
10
  exports.parseReturnTypeFromQuickInfo = parseReturnTypeFromQuickInfo;
14
11
  exports.parseTypeFromQuickInfo = parseTypeFromQuickInfo;
15
12
  // eslint-disable-next-line import/no-unresolved
13
+
16
14
  const UNRESOLVED = '<<unresolved>>';
15
+
17
16
  /**
18
17
  * try to parse the type from the quickinfo.
19
18
  * this is an error-prone process, we do our best here.
@@ -46,16 +45,12 @@ const UNRESOLVED = '<<unresolved>>';
46
45
  * b: number;
47
46
  * }
48
47
  */
49
-
50
48
  exports.UNRESOLVED = UNRESOLVED;
51
-
52
49
  function parseTypeFromQuickInfo(quickInfo) {
53
50
  var _quickInfo$body;
54
-
55
51
  if (!(quickInfo !== null && quickInfo !== void 0 && (_quickInfo$body = quickInfo.body) !== null && _quickInfo$body !== void 0 && _quickInfo$body.displayString)) return '';
56
52
  const displayString = quickInfo.body.displayString;
57
53
  const splitByColon = displayString.split(':');
58
-
59
54
  switch (quickInfo.body.kind) {
60
55
  case 'const':
61
56
  case 'property':
@@ -65,12 +60,10 @@ function parseTypeFromQuickInfo(quickInfo) {
65
60
  const [, ...tail] = splitByColon;
66
61
  return tail.join(':').trim();
67
62
  }
68
-
69
63
  case 'method':
70
64
  case 'function':
71
65
  {
72
66
  const split = displayString.split('): ');
73
-
74
67
  if (split.length !== 2) {
75
68
  // it's hard to determine where the return-type is. so it's better to show unresolved.
76
69
  // maybe, in the UI, in this case, it's best to show the signature.
@@ -80,10 +73,8 @@ function parseTypeFromQuickInfo(quickInfo) {
80
73
  // }): T | undefined
81
74
  return UNRESOLVED;
82
75
  }
83
-
84
76
  return split[1].trim();
85
77
  }
86
-
87
78
  case 'alias':
88
79
  {
89
80
  // e.g. (alias) class BuilderService\nimport BuilderService
@@ -92,12 +83,11 @@ function parseTypeFromQuickInfo(quickInfo) {
92
83
  // '}\n' +
93
84
  // 'import Serializable'
94
85
  const firstLine = displayString.split('\n')[0];
95
- const splitBySpace = firstLine.trim().split(' '); // first two are alias keyword and alias type
96
-
86
+ const splitBySpace = firstLine.trim().split(' ');
87
+ // first two are alias keyword and alias type
97
88
  const [,, typeName] = splitBySpace;
98
89
  return typeName;
99
90
  }
100
-
101
91
  case 'type':
102
92
  {
103
93
  // e.g. `type TaskSlot = SlotRegistry<BuildTask[]>`
@@ -105,12 +95,10 @@ function parseTypeFromQuickInfo(quickInfo) {
105
95
  const [, ...tail] = splitByEqual;
106
96
  return tail.join('=').trim();
107
97
  }
108
-
109
98
  default:
110
99
  return splitByColon[splitByColon.length - 1].trim();
111
100
  }
112
101
  }
113
-
114
102
  function parseReturnTypeFromQuickInfo(quickInfo) {
115
103
  if (!quickInfo) return '';
116
104
  const typeStr = parseTypeFromQuickInfo(quickInfo);
@@ -1 +1 @@
1
- {"version":3,"names":["UNRESOLVED","parseTypeFromQuickInfo","quickInfo","body","displayString","splitByColon","split","kind","tail","join","trim","length","firstLine","splitBySpace","typeName","splitByEqual","parseReturnTypeFromQuickInfo","typeStr","array"],"sources":["parse-type-from-quick-info.ts"],"sourcesContent":["// eslint-disable-next-line import/no-unresolved\nimport protocol from 'typescript/lib/protocol';\n\nexport const UNRESOLVED = '<<unresolved>>';\n\n/**\n * try to parse the type from the quickinfo.\n * this is an error-prone process, we do our best here.\n *\n * an example of a function with many \":\"\n * `export function getObj(a: string, func: (b: number) => {}) { return { a: 1, b: 2 } };`\n * which produce the following quickinfo:\n * ```ts\n * function getObj(a: string, func: (b: number) => {}): {\n * a: number;\n * b: number;\n * }\n * ```\n *\n * some examples of quickinfo:\n *\n * function ts.signatureToDisplayParts(typechecker: TypeChecker, signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags): SymbolDisplayPart[]\n *\n * const enum ts.TypeFormatFlags\n *\n * (method) ts.TypeChecker.writeSignature(signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags | undefined, kind?: SignatureKind | undefined, writer?: EmitTextWriter | undefined): string\n *\n * const obj: {\n * a: number;\n * b: number;\n * }\n *\n * function getObj(a: string): {\n * a: number;\n * b: number;\n * }\n */\nexport function parseTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo?.body?.displayString) return '';\n const displayString = quickInfo.body.displayString;\n const splitByColon = displayString.split(':');\n switch (quickInfo.body.kind) {\n case 'const':\n case 'property':\n case 'let':\n case 'var': {\n const [, ...tail] = splitByColon;\n return tail.join(':').trim();\n }\n case 'method':\n case 'function': {\n const split = displayString.split('): ');\n if (split.length !== 2) {\n // it's hard to determine where the return-type is. so it's better to show unresolved.\n // maybe, in the UI, in this case, it's best to show the signature.\n // e.g.\n // (method) IssuesList.getIssue<T extends ComponentIssue>(IssueClass: {\n // new (): T;\n // }): T | undefined\n return UNRESOLVED;\n }\n return split[1].trim();\n }\n case 'alias': {\n // e.g. (alias) class BuilderService\\nimport BuilderService\n // e.g. '(alias) type Serializable = {\\n' +\n // ' toString(): string;\\n' +\n // '}\\n' +\n // 'import Serializable'\n const firstLine = displayString.split('\\n')[0];\n const splitBySpace = firstLine.trim().split(' ');\n // first two are alias keyword and alias type\n const [, , typeName] = splitBySpace;\n return typeName;\n }\n case 'type': {\n // e.g. `type TaskSlot = SlotRegistry<BuildTask[]>`\n const splitByEqual = displayString.split('=');\n const [, ...tail] = splitByEqual;\n return tail.join('=').trim();\n }\n default:\n return splitByColon[splitByColon.length - 1].trim();\n }\n}\n\nexport function parseReturnTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo) return '';\n const typeStr = parseTypeFromQuickInfo(quickInfo);\n const array = typeStr.split('=>');\n return array[array.length - 1].trim();\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AAGO,MAAMA,UAAU,GAAG,gBAAnB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASC,sBAAT,CAAgCC,SAAhC,EAA2F;EAAA;;EAChG,IAAI,EAACA,SAAD,aAACA,SAAD,kCAACA,SAAS,CAAEC,IAAZ,4CAAC,gBAAiBC,aAAlB,CAAJ,EAAqC,OAAO,EAAP;EACrC,MAAMA,aAAa,GAAGF,SAAS,CAACC,IAAV,CAAeC,aAArC;EACA,MAAMC,YAAY,GAAGD,aAAa,CAACE,KAAd,CAAoB,GAApB,CAArB;;EACA,QAAQJ,SAAS,CAACC,IAAV,CAAeI,IAAvB;IACE,KAAK,OAAL;IACA,KAAK,UAAL;IACA,KAAK,KAAL;IACA,KAAK,KAAL;MAAY;QACV,MAAM,GAAG,GAAGC,IAAN,IAAcH,YAApB;QACA,OAAOG,IAAI,CAACC,IAAL,CAAU,GAAV,EAAeC,IAAf,EAAP;MACD;;IACD,KAAK,QAAL;IACA,KAAK,UAAL;MAAiB;QACf,MAAMJ,KAAK,GAAGF,aAAa,CAACE,KAAd,CAAoB,KAApB,CAAd;;QACA,IAAIA,KAAK,CAACK,MAAN,KAAiB,CAArB,EAAwB;UACtB;UACA;UACA;UACA;UACA;UACA;UACA,OAAOX,UAAP;QACD;;QACD,OAAOM,KAAK,CAAC,CAAD,CAAL,CAASI,IAAT,EAAP;MACD;;IACD,KAAK,OAAL;MAAc;QACZ;QACA;QACA;QACA;QACA;QACA,MAAME,SAAS,GAAGR,aAAa,CAACE,KAAd,CAAoB,IAApB,EAA0B,CAA1B,CAAlB;QACA,MAAMO,YAAY,GAAGD,SAAS,CAACF,IAAV,GAAiBJ,KAAjB,CAAuB,GAAvB,CAArB,CAPY,CAQZ;;QACA,MAAM,IAAKQ,QAAL,IAAiBD,YAAvB;QACA,OAAOC,QAAP;MACD;;IACD,KAAK,MAAL;MAAa;QACX;QACA,MAAMC,YAAY,GAAGX,aAAa,CAACE,KAAd,CAAoB,GAApB,CAArB;QACA,MAAM,GAAG,GAAGE,IAAN,IAAcO,YAApB;QACA,OAAOP,IAAI,CAACC,IAAL,CAAU,GAAV,EAAeC,IAAf,EAAP;MACD;;IACD;MACE,OAAOL,YAAY,CAACA,YAAY,CAACM,MAAb,GAAsB,CAAvB,CAAZ,CAAsCD,IAAtC,EAAP;EAzCJ;AA2CD;;AAEM,SAASM,4BAAT,CAAsCd,SAAtC,EAAiG;EACtG,IAAI,CAACA,SAAL,EAAgB,OAAO,EAAP;EAChB,MAAMe,OAAO,GAAGhB,sBAAsB,CAACC,SAAD,CAAtC;EACA,MAAMgB,KAAK,GAAGD,OAAO,CAACX,KAAR,CAAc,IAAd,CAAd;EACA,OAAOY,KAAK,CAACA,KAAK,CAACP,MAAN,GAAe,CAAhB,CAAL,CAAwBD,IAAxB,EAAP;AACD"}
1
+ {"version":3,"names":["UNRESOLVED","parseTypeFromQuickInfo","quickInfo","body","displayString","splitByColon","split","kind","tail","join","trim","length","firstLine","splitBySpace","typeName","splitByEqual","parseReturnTypeFromQuickInfo","typeStr","array"],"sources":["parse-type-from-quick-info.ts"],"sourcesContent":["// eslint-disable-next-line import/no-unresolved\nimport protocol from 'typescript/lib/protocol';\n\nexport const UNRESOLVED = '<<unresolved>>';\n\n/**\n * try to parse the type from the quickinfo.\n * this is an error-prone process, we do our best here.\n *\n * an example of a function with many \":\"\n * `export function getObj(a: string, func: (b: number) => {}) { return { a: 1, b: 2 } };`\n * which produce the following quickinfo:\n * ```ts\n * function getObj(a: string, func: (b: number) => {}): {\n * a: number;\n * b: number;\n * }\n * ```\n *\n * some examples of quickinfo:\n *\n * function ts.signatureToDisplayParts(typechecker: TypeChecker, signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags): SymbolDisplayPart[]\n *\n * const enum ts.TypeFormatFlags\n *\n * (method) ts.TypeChecker.writeSignature(signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags | undefined, kind?: SignatureKind | undefined, writer?: EmitTextWriter | undefined): string\n *\n * const obj: {\n * a: number;\n * b: number;\n * }\n *\n * function getObj(a: string): {\n * a: number;\n * b: number;\n * }\n */\nexport function parseTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo?.body?.displayString) return '';\n const displayString = quickInfo.body.displayString;\n const splitByColon = displayString.split(':');\n switch (quickInfo.body.kind) {\n case 'const':\n case 'property':\n case 'let':\n case 'var': {\n const [, ...tail] = splitByColon;\n return tail.join(':').trim();\n }\n case 'method':\n case 'function': {\n const split = displayString.split('): ');\n if (split.length !== 2) {\n // it's hard to determine where the return-type is. so it's better to show unresolved.\n // maybe, in the UI, in this case, it's best to show the signature.\n // e.g.\n // (method) IssuesList.getIssue<T extends ComponentIssue>(IssueClass: {\n // new (): T;\n // }): T | undefined\n return UNRESOLVED;\n }\n return split[1].trim();\n }\n case 'alias': {\n // e.g. (alias) class BuilderService\\nimport BuilderService\n // e.g. '(alias) type Serializable = {\\n' +\n // ' toString(): string;\\n' +\n // '}\\n' +\n // 'import Serializable'\n const firstLine = displayString.split('\\n')[0];\n const splitBySpace = firstLine.trim().split(' ');\n // first two are alias keyword and alias type\n const [, , typeName] = splitBySpace;\n return typeName;\n }\n case 'type': {\n // e.g. `type TaskSlot = SlotRegistry<BuildTask[]>`\n const splitByEqual = displayString.split('=');\n const [, ...tail] = splitByEqual;\n return tail.join('=').trim();\n }\n default:\n return splitByColon[splitByColon.length - 1].trim();\n }\n}\n\nexport function parseReturnTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string {\n if (!quickInfo) return '';\n const typeStr = parseTypeFromQuickInfo(quickInfo);\n const array = typeStr.split('=>');\n return array[array.length - 1].trim();\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAGO,MAAMA,UAAU,GAAG,gBAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA/BA;AAgCO,SAASC,sBAAsB,CAACC,SAAiD,EAAU;EAAA;EAChG,IAAI,EAACA,SAAS,aAATA,SAAS,kCAATA,SAAS,CAAEC,IAAI,4CAAf,gBAAiBC,aAAa,GAAE,OAAO,EAAE;EAC9C,MAAMA,aAAa,GAAGF,SAAS,CAACC,IAAI,CAACC,aAAa;EAClD,MAAMC,YAAY,GAAGD,aAAa,CAACE,KAAK,CAAC,GAAG,CAAC;EAC7C,QAAQJ,SAAS,CAACC,IAAI,CAACI,IAAI;IACzB,KAAK,OAAO;IACZ,KAAK,UAAU;IACf,KAAK,KAAK;IACV,KAAK,KAAK;MAAE;QACV,MAAM,GAAG,GAAGC,IAAI,CAAC,GAAGH,YAAY;QAChC,OAAOG,IAAI,CAACC,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,EAAE;MAC9B;IACA,KAAK,QAAQ;IACb,KAAK,UAAU;MAAE;QACf,MAAMJ,KAAK,GAAGF,aAAa,CAACE,KAAK,CAAC,KAAK,CAAC;QACxC,IAAIA,KAAK,CAACK,MAAM,KAAK,CAAC,EAAE;UACtB;UACA;UACA;UACA;UACA;UACA;UACA,OAAOX,UAAU;QACnB;QACA,OAAOM,KAAK,CAAC,CAAC,CAAC,CAACI,IAAI,EAAE;MACxB;IACA,KAAK,OAAO;MAAE;QACZ;QACA;QACA;QACA;QACA;QACA,MAAME,SAAS,GAAGR,aAAa,CAACE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAMO,YAAY,GAAGD,SAAS,CAACF,IAAI,EAAE,CAACJ,KAAK,CAAC,GAAG,CAAC;QAChD;QACA,MAAM,IAAKQ,QAAQ,CAAC,GAAGD,YAAY;QACnC,OAAOC,QAAQ;MACjB;IACA,KAAK,MAAM;MAAE;QACX;QACA,MAAMC,YAAY,GAAGX,aAAa,CAACE,KAAK,CAAC,GAAG,CAAC;QAC7C,MAAM,GAAG,GAAGE,IAAI,CAAC,GAAGO,YAAY;QAChC,OAAOP,IAAI,CAACC,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,EAAE;MAC9B;IACA;MACE,OAAOL,YAAY,CAACA,YAAY,CAACM,MAAM,GAAG,CAAC,CAAC,CAACD,IAAI,EAAE;EAAC;AAE1D;AAEO,SAASM,4BAA4B,CAACd,SAAiD,EAAU;EACtG,IAAI,CAACA,SAAS,EAAE,OAAO,EAAE;EACzB,MAAMe,OAAO,GAAGhB,sBAAsB,CAACC,SAAS,CAAC;EACjD,MAAMgB,KAAK,GAAGD,OAAO,CAACX,KAAK,CAAC,IAAI,CAAC;EACjC,OAAOY,KAAK,CAACA,KAAK,CAACP,MAAM,GAAG,CAAC,CAAC,CAACD,IAAI,EAAE;AACvC"}
@@ -1,55 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.promise.js");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.toFunctionLikeSchema = toFunctionLikeSchema;
9
-
10
8
  function _semanticsEntities() {
11
9
  const data = require("@teambit/semantics.entities.semantic-schema");
12
-
13
10
  _semanticsEntities = function () {
14
11
  return data;
15
12
  };
16
-
17
13
  return data;
18
14
  }
19
-
20
15
  function _getParams() {
21
16
  const data = require("./get-params");
22
-
23
17
  _getParams = function () {
24
18
  return data;
25
19
  };
26
-
27
20
  return data;
28
21
  }
29
-
30
22
  function _parseTypeFromQuickInfo() {
31
23
  const data = require("./parse-type-from-quick-info");
32
-
33
24
  _parseTypeFromQuickInfo = function () {
34
25
  return data;
35
26
  };
36
-
37
27
  return data;
38
28
  }
39
-
40
29
  function _jsdocToDocSchema() {
41
30
  const data = require("./jsdoc-to-doc-schema");
42
-
43
31
  _jsdocToDocSchema = function () {
44
32
  return data;
45
33
  };
46
-
47
34
  return data;
48
35
  }
49
-
50
36
  async function toFunctionLikeSchema(node, context, funcName) {
51
37
  var _node$name, _info$body, _node$modifiers, _node$typeParameters;
52
-
53
38
  const name = funcName || ((_node$name = node.name) === null || _node$name === void 0 ? void 0 : _node$name.getText()) || '';
54
39
  const info = node.name ? await context.getQuickInfo(node.name) : null;
55
40
  const returnTypeStr = info ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info) : 'any';
@@ -1 +1 @@
1
- {"version":3,"names":["toFunctionLikeSchema","node","context","funcName","name","getText","info","getQuickInfo","returnTypeStr","parseTypeFromQuickInfo","displaySig","body","displayString","args","getParams","parameters","returnType","resolveType","Boolean","modifiers","map","modifier","typeParameters","typeParam","location","getLocation","doc","jsDocToDocSchema","FunctionLikeSchema"],"sources":["to-function-like-schema.ts"],"sourcesContent":["import { SignatureDeclaration } from 'typescript';\nimport { FunctionLikeSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { jsDocToDocSchema } from './jsdoc-to-doc-schema';\n\nexport async function toFunctionLikeSchema(\n node: SignatureDeclaration,\n context: SchemaExtractorContext,\n funcName?: string\n) {\n const name = funcName || node.name?.getText() || '';\n const info = node.name ? await context.getQuickInfo(node.name) : null;\n const returnTypeStr = info ? parseTypeFromQuickInfo(info) : 'any';\n const displaySig = info?.body?.displayString || '';\n const args = await getParams(node.parameters, context);\n const returnType = await context.resolveType(node, returnTypeStr, Boolean(info));\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const typeParameters = node.typeParameters?.map((typeParam) => typeParam.name.getText());\n const location = context.getLocation(node);\n const doc = await jsDocToDocSchema(node, context);\n return new FunctionLikeSchema(\n location,\n name,\n args,\n returnType,\n displaySig,\n modifiers as Modifier[],\n doc,\n typeParameters\n );\n}\n"],"mappings":";;;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,eAAeA,oBAAf,CACLC,IADK,EAELC,OAFK,EAGLC,QAHK,EAIL;EAAA;;EACA,MAAMC,IAAI,GAAGD,QAAQ,mBAAIF,IAAI,CAACG,IAAT,+CAAI,WAAWC,OAAX,EAAJ,CAAR,IAAoC,EAAjD;EACA,MAAMC,IAAI,GAAGL,IAAI,CAACG,IAAL,GAAY,MAAMF,OAAO,CAACK,YAAR,CAAqBN,IAAI,CAACG,IAA1B,CAAlB,GAAoD,IAAjE;EACA,MAAMI,aAAa,GAAGF,IAAI,GAAG,IAAAG,gDAAA,EAAuBH,IAAvB,CAAH,GAAkC,KAA5D;EACA,MAAMI,UAAU,GAAG,CAAAJ,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEK,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;EACA,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAA,EAAUb,IAAI,CAACc,UAAf,EAA2Bb,OAA3B,CAAnB;EACA,MAAMc,UAAU,GAAG,MAAMd,OAAO,CAACe,WAAR,CAAoBhB,IAApB,EAA0BO,aAA1B,EAAyCU,OAAO,CAACZ,IAAD,CAAhD,CAAzB;EACA,MAAMa,SAAS,GAAG,oBAAAlB,IAAI,CAACkB,SAAL,oEAAgBC,GAAhB,CAAqBC,QAAD,IAAcA,QAAQ,CAAChB,OAAT,EAAlC,MAAyD,EAA3E;EACA,MAAMiB,cAAc,2BAAGrB,IAAI,CAACqB,cAAR,yDAAG,qBAAqBF,GAArB,CAA0BG,SAAD,IAAeA,SAAS,CAACnB,IAAV,CAAeC,OAAf,EAAxC,CAAvB;EACA,MAAMmB,QAAQ,GAAGtB,OAAO,CAACuB,WAAR,CAAoBxB,IAApB,CAAjB;EACA,MAAMyB,GAAG,GAAG,MAAM,IAAAC,oCAAA,EAAiB1B,IAAjB,EAAuBC,OAAvB,CAAlB;EACA,OAAO,KAAI0B,uCAAJ,EACLJ,QADK,EAELpB,IAFK,EAGLS,IAHK,EAILG,UAJK,EAKLN,UALK,EAMLS,SANK,EAOLO,GAPK,EAQLJ,cARK,CAAP;AAUD"}
1
+ {"version":3,"names":["toFunctionLikeSchema","node","context","funcName","name","getText","info","getQuickInfo","returnTypeStr","parseTypeFromQuickInfo","displaySig","body","displayString","args","getParams","parameters","returnType","resolveType","Boolean","modifiers","map","modifier","typeParameters","typeParam","location","getLocation","doc","jsDocToDocSchema","FunctionLikeSchema"],"sources":["to-function-like-schema.ts"],"sourcesContent":["import { SignatureDeclaration } from 'typescript';\nimport { FunctionLikeSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { jsDocToDocSchema } from './jsdoc-to-doc-schema';\n\nexport async function toFunctionLikeSchema(\n node: SignatureDeclaration,\n context: SchemaExtractorContext,\n funcName?: string\n) {\n const name = funcName || node.name?.getText() || '';\n const info = node.name ? await context.getQuickInfo(node.name) : null;\n const returnTypeStr = info ? parseTypeFromQuickInfo(info) : 'any';\n const displaySig = info?.body?.displayString || '';\n const args = await getParams(node.parameters, context);\n const returnType = await context.resolveType(node, returnTypeStr, Boolean(info));\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const typeParameters = node.typeParameters?.map((typeParam) => typeParam.name.getText());\n const location = context.getLocation(node);\n const doc = await jsDocToDocSchema(node, context);\n return new FunctionLikeSchema(\n location,\n name,\n args,\n returnType,\n displaySig,\n modifiers as Modifier[],\n doc,\n typeParameters\n );\n}\n"],"mappings":";;;;;;;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEO,eAAeA,oBAAoB,CACxCC,IAA0B,EAC1BC,OAA+B,EAC/BC,QAAiB,EACjB;EAAA;EACA,MAAMC,IAAI,GAAGD,QAAQ,mBAAIF,IAAI,CAACG,IAAI,+CAAT,WAAWC,OAAO,EAAE,KAAI,EAAE;EACnD,MAAMC,IAAI,GAAGL,IAAI,CAACG,IAAI,GAAG,MAAMF,OAAO,CAACK,YAAY,CAACN,IAAI,CAACG,IAAI,CAAC,GAAG,IAAI;EACrE,MAAMI,aAAa,GAAGF,IAAI,GAAG,IAAAG,gDAAsB,EAACH,IAAI,CAAC,GAAG,KAAK;EACjE,MAAMI,UAAU,GAAG,CAAAJ,IAAI,aAAJA,IAAI,qCAAJA,IAAI,CAAEK,IAAI,+CAAV,WAAYC,aAAa,KAAI,EAAE;EAClD,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAS,EAACb,IAAI,CAACc,UAAU,EAAEb,OAAO,CAAC;EACtD,MAAMc,UAAU,GAAG,MAAMd,OAAO,CAACe,WAAW,CAAChB,IAAI,EAAEO,aAAa,EAAEU,OAAO,CAACZ,IAAI,CAAC,CAAC;EAChF,MAAMa,SAAS,GAAG,oBAAAlB,IAAI,CAACkB,SAAS,oDAAd,gBAAgBC,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAAChB,OAAO,EAAE,CAAC,KAAI,EAAE;EAC7E,MAAMiB,cAAc,2BAAGrB,IAAI,CAACqB,cAAc,yDAAnB,qBAAqBF,GAAG,CAAEG,SAAS,IAAKA,SAAS,CAACnB,IAAI,CAACC,OAAO,EAAE,CAAC;EACxF,MAAMmB,QAAQ,GAAGtB,OAAO,CAACuB,WAAW,CAACxB,IAAI,CAAC;EAC1C,MAAMyB,GAAG,GAAG,MAAM,IAAAC,oCAAgB,EAAC1B,IAAI,EAAEC,OAAO,CAAC;EACjD,OAAO,KAAI0B,uCAAkB,EAC3BJ,QAAQ,EACRpB,IAAI,EACJS,IAAI,EACJG,UAAU,EACVN,UAAU,EACVS,SAAS,EACTO,GAAG,EACHJ,cAAc,CACf;AACH"}