@teambit/typescript 0.0.728 → 0.0.731

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 (91) hide show
  1. package/dist/exceptions/transformer-not-found.js +14 -1
  2. package/dist/exceptions/transformer-not-found.js.map +1 -1
  3. package/dist/schema-extractor-context.d.ts +38 -7
  4. package/dist/schema-extractor-context.js +228 -31
  5. package/dist/schema-extractor-context.js.map +1 -1
  6. package/dist/transformers/class-deceleration.d.ts +11 -0
  7. package/dist/transformers/class-deceleration.js +141 -0
  8. package/dist/transformers/class-deceleration.js.map +1 -0
  9. package/dist/transformers/constructor.d.ts +10 -0
  10. package/dist/transformers/constructor.js +70 -0
  11. package/dist/transformers/constructor.js.map +1 -0
  12. package/dist/transformers/export-declaration.d.ts +2 -1
  13. package/dist/transformers/export-declaration.js +64 -13
  14. package/dist/transformers/export-declaration.js.map +1 -1
  15. package/dist/transformers/function-declaration.d.ts +1 -3
  16. package/dist/transformers/function-declaration.js +27 -32
  17. package/dist/transformers/function-declaration.js.map +1 -1
  18. package/dist/transformers/index-signature.d.ts +9 -0
  19. package/dist/transformers/index-signature.js +71 -0
  20. package/dist/transformers/index-signature.js.map +1 -0
  21. package/dist/transformers/index.d.ts +10 -0
  22. package/dist/transformers/index.js +160 -0
  23. package/dist/transformers/index.js.map +1 -1
  24. package/dist/transformers/interface-declaration.d.ts +10 -0
  25. package/dist/transformers/interface-declaration.js +73 -0
  26. package/dist/transformers/interface-declaration.js.map +1 -0
  27. package/dist/transformers/literal-type.d.ts +8 -0
  28. package/dist/transformers/literal-type.js +50 -0
  29. package/dist/transformers/literal-type.js.map +1 -0
  30. package/dist/transformers/method-declaration.d.ts +11 -0
  31. package/dist/transformers/method-declaration.js +94 -0
  32. package/dist/transformers/method-declaration.js.map +1 -0
  33. package/dist/transformers/method-signature.d.ts +10 -0
  34. package/dist/transformers/method-signature.js +81 -0
  35. package/dist/transformers/method-signature.js.map +1 -0
  36. package/dist/transformers/property-declaration.d.ts +11 -0
  37. package/dist/transformers/property-declaration.js +80 -0
  38. package/dist/transformers/property-declaration.js.map +1 -0
  39. package/dist/transformers/property-signature.d.ts +10 -0
  40. package/dist/transformers/property-signature.js +90 -0
  41. package/dist/transformers/property-signature.js.map +1 -0
  42. package/dist/transformers/source-file-transformer.d.ts +2 -1
  43. package/dist/transformers/source-file-transformer.js +23 -3
  44. package/dist/transformers/source-file-transformer.js.map +1 -1
  45. package/dist/transformers/type-alias.d.ts +4 -1
  46. package/dist/transformers/type-alias.js +31 -2
  47. package/dist/transformers/type-alias.js.map +1 -1
  48. package/dist/transformers/utils/get-params.d.ts +4 -0
  49. package/dist/transformers/utils/get-params.js +69 -0
  50. package/dist/transformers/utils/get-params.js.map +1 -0
  51. package/dist/transformers/utils/parse-type-from-quick-info.d.ts +35 -0
  52. package/dist/transformers/utils/parse-type-from-quick-info.js +112 -0
  53. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -0
  54. package/dist/transformers/utils/type-node-to-schema.d.ts +4 -0
  55. package/dist/transformers/utils/type-node-to-schema.js +251 -0
  56. package/dist/transformers/utils/type-node-to-schema.js.map +1 -0
  57. package/dist/transformers/variable-declaration.d.ts +11 -0
  58. package/dist/transformers/variable-declaration.js +98 -0
  59. package/dist/transformers/variable-declaration.js.map +1 -0
  60. package/dist/transformers/variable-statement.d.ts +7 -1
  61. package/dist/transformers/variable-statement.js +42 -2
  62. package/dist/transformers/variable-statement.js.map +1 -1
  63. package/dist/typescript.extractor.d.ts +3 -3
  64. package/dist/typescript.extractor.js +7 -4
  65. package/dist/typescript.extractor.js.map +1 -1
  66. package/dist/typescript.main.runtime.js +1 -1
  67. package/dist/typescript.main.runtime.js.map +1 -1
  68. package/exceptions/transformer-not-found.ts +5 -4
  69. package/package-tar/teambit-typescript-0.0.731.tgz +0 -0
  70. package/package.json +15 -15
  71. package/{preview-1652153159767.js → preview-1652498684867.js} +2 -2
  72. package/transformers/class-deceleration.ts +53 -0
  73. package/transformers/constructor.ts +22 -0
  74. package/transformers/export-declaration.ts +42 -13
  75. package/transformers/function-declaration.ts +9 -28
  76. package/transformers/index-signature.ts +22 -0
  77. package/transformers/index.ts +10 -0
  78. package/transformers/interface-declaration.ts +24 -0
  79. package/transformers/literal-type.ts +18 -0
  80. package/transformers/method-declaration.ts +32 -0
  81. package/transformers/method-signature.ts +30 -0
  82. package/transformers/property-declaration.ts +30 -0
  83. package/transformers/property-signature.ts +37 -0
  84. package/transformers/source-file-transformer.ts +6 -6
  85. package/transformers/type-alias.ts +12 -2
  86. package/transformers/utils/get-params.ts +29 -0
  87. package/transformers/utils/parse-type-from-quick-info.ts +84 -0
  88. package/transformers/utils/type-node-to-schema.ts +205 -0
  89. package/transformers/variable-declaration.ts +36 -0
  90. package/transformers/variable-statement.ts +16 -2
  91. package/package-tar/teambit-typescript-0.0.728.tgz +0 -0
@@ -0,0 +1,10 @@
1
+ import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
2
+ import { Node, PropertySignature as PropertySignatureNode } from 'typescript';
3
+ import { SchemaTransformer } from '../schema-transformer';
4
+ import { SchemaExtractorContext } from '../schema-extractor-context';
5
+ export declare class PropertySignature implements SchemaTransformer {
6
+ predicate(node: Node): boolean;
7
+ getName(node: PropertySignatureNode): string;
8
+ getIdentifiers(): Promise<never[]>;
9
+ transform(prop: PropertySignatureNode, context: SchemaExtractorContext): Promise<SchemaNode>;
10
+ }
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("core-js/modules/es.promise.js");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.PropertySignature = void 0;
11
+
12
+ function _semanticsEntities() {
13
+ const data = require("@teambit/semantics.entities.semantic-schema");
14
+
15
+ _semanticsEntities = function () {
16
+ return data;
17
+ };
18
+
19
+ return data;
20
+ }
21
+
22
+ function _typescript() {
23
+ const data = _interopRequireDefault(require("typescript"));
24
+
25
+ _typescript = function () {
26
+ return data;
27
+ };
28
+
29
+ return data;
30
+ }
31
+
32
+ function _getParams() {
33
+ const data = require("./utils/get-params");
34
+
35
+ _getParams = function () {
36
+ return data;
37
+ };
38
+
39
+ return data;
40
+ }
41
+
42
+ function _parseTypeFromQuickInfo() {
43
+ const data = require("./utils/parse-type-from-quick-info");
44
+
45
+ _parseTypeFromQuickInfo = function () {
46
+ return data;
47
+ };
48
+
49
+ return data;
50
+ }
51
+
52
+ class PropertySignature {
53
+ predicate(node) {
54
+ return node.kind === _typescript().default.SyntaxKind.PropertySignature;
55
+ }
56
+
57
+ getName(node) {
58
+ return node.name.getText();
59
+ }
60
+
61
+ async getIdentifiers() {
62
+ return [];
63
+ }
64
+
65
+ async transform(prop, context) {
66
+ var _info$body, _prop$type;
67
+
68
+ const name = this.getName(prop);
69
+ const info = await context.getQuickInfo(prop.name);
70
+ const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
71
+
72
+ if (((_prop$type = prop.type) === null || _prop$type === void 0 ? void 0 : _prop$type.kind) === _typescript().default.SyntaxKind.FunctionType) {
73
+ // e.g. `propertySig: () => void;` inside interface
74
+ const propType = prop.type;
75
+ const args = await (0, _getParams().getParams)(propType.parameters, context);
76
+ const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(info);
77
+ const returnType = await context.resolveType(propType, typeStr);
78
+ return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig);
79
+ }
80
+
81
+ const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
82
+ const type = await context.resolveType(prop, typeStr);
83
+ return new (_semanticsEntities().VariableSchema)(name, displaySig, type);
84
+ }
85
+
86
+ }
87
+
88
+ exports.PropertySignature = PropertySignature;
89
+
90
+ //# sourceMappingURL=property-signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["property-signature.ts"],"names":["PropertySignature","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","transform","prop","context","info","getQuickInfo","displaySig","body","displayString","type","FunctionType","propType","args","parameters","typeStr","returnType","resolveType","FunctionSchema","VariableSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,iBAAN,CAAqD;AAC1DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,iBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAA8B;AACnC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,GAAG;AACrB,WAAO,EAAP;AACD;;AAEc,QAATC,SAAS,CAACC,IAAD,EAA8BC,OAA9B,EAAoF;AAAA;;AACjG,UAAML,IAAI,GAAG,KAAKD,OAAL,CAAaK,IAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,IAAI,CAACJ,IAA1B,CAAnB;AACA,UAAMQ,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;;AACA,QAAI,eAAAN,IAAI,CAACO,IAAL,0DAAWf,IAAX,MAAoBC,sBAAGC,UAAH,CAAcc,YAAtC,EAAoD;AAClD;AACA,YAAMC,QAAQ,GAAGT,IAAI,CAACO,IAAtB;AACA,YAAMG,IAAI,GAAG,MAAM,4BAAUD,QAAQ,CAACE,UAAnB,EAA+BV,OAA/B,CAAnB;AACA,YAAMW,OAAO,GAAG,4DAA6BV,IAA7B,CAAhB;AACA,YAAMW,UAAU,GAAG,MAAMZ,OAAO,CAACa,WAAR,CAAoBL,QAApB,EAA8BG,OAA9B,CAAzB;AACA,aAAO,KAAIG,mCAAJ,EAAmBnB,IAAnB,EAAyBc,IAAzB,EAA+BG,UAA/B,EAA2CT,UAA3C,CAAP;AACD;;AACD,UAAMQ,OAAO,GAAG,sDAAuBV,IAAvB,CAAhB;AACA,UAAMK,IAAI,GAAG,MAAMN,OAAO,CAACa,WAAR,CAAoBd,IAApB,EAA0BY,OAA1B,CAAnB;AACA,WAAO,KAAII,mCAAJ,EAAmBpB,IAAnB,EAAyBQ,UAAzB,EAAqCG,IAArC,CAAP;AACD;;AA5ByD","sourcesContent":["import { FunctionSchema, SchemaNode, VariableSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { FunctionTypeNode, Node, PropertySignature as PropertySignatureNode } from 'typescript';\nimport { getParams } from './utils/get-params';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class PropertySignature implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.PropertySignature;\n }\n\n getName(node: PropertySignatureNode) {\n return node.name.getText();\n }\n\n async getIdentifiers() {\n return [];\n }\n\n async transform(prop: PropertySignatureNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(prop);\n const info = await context.getQuickInfo(prop.name);\n const displaySig = info?.body?.displayString || '';\n if (prop.type?.kind === ts.SyntaxKind.FunctionType) {\n // e.g. `propertySig: () => void;` inside interface\n const propType = prop.type as FunctionTypeNode;\n const args = await getParams(propType.parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(propType, typeStr);\n return new FunctionSchema(name, args, returnType, displaySig);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(prop, typeStr);\n return new VariableSchema(name, displaySig, type);\n }\n}\n"]}
@@ -1,11 +1,12 @@
1
1
  import { Node, SourceFile } from 'typescript';
2
+ import { Module } from '@teambit/semantics.entities.semantic-schema';
2
3
  import { SchemaTransformer } from '../schema-transformer';
3
4
  import { ExportIdentifier } from '../export-identifier';
4
5
  import { SchemaExtractorContext } from '../schema-extractor-context';
5
6
  export declare class SourceFileTransformer implements SchemaTransformer {
6
7
  predicate(node: Node): boolean;
7
8
  getIdentifiers(sourceFile: SourceFile, context: SchemaExtractorContext): Promise<ExportIdentifier[]>;
8
- transform(node: SourceFile, context: SchemaExtractorContext): Promise<(import("@teambit/semantics.entities.semantic-schema").SchemaNode | undefined)[]>;
9
+ transform(node: SourceFile, context: SchemaExtractorContext): Promise<Module>;
9
10
  /**
10
11
  * list all exports of a source file.
11
12
  */
@@ -31,6 +31,26 @@ function _lodash() {
31
31
  return data;
32
32
  }
33
33
 
34
+ function _pMapSeries() {
35
+ const data = _interopRequireDefault(require("p-map-series"));
36
+
37
+ _pMapSeries = function () {
38
+ return data;
39
+ };
40
+
41
+ return data;
42
+ }
43
+
44
+ function _semanticsEntities() {
45
+ const data = require("@teambit/semantics.entities.semantic-schema");
46
+
47
+ _semanticsEntities = function () {
48
+ return data;
49
+ };
50
+
51
+ return data;
52
+ }
53
+
34
54
  class SourceFileTransformer {
35
55
  predicate(node) {
36
56
  return node.kind === _typescript().default.SyntaxKind.SourceFile;
@@ -51,10 +71,10 @@ class SourceFileTransformer {
51
71
 
52
72
  async transform(node, context) {
53
73
  const exports = this.listExports(node);
54
- const schemas = await Promise.all(exports.map(exportNode => {
74
+ const schemas = await (0, _pMapSeries().default)(exports, exportNode => {
55
75
  return context.computeSchema(exportNode);
56
- }));
57
- return schemas;
76
+ });
77
+ return new (_semanticsEntities().Module)(schemas);
58
78
  }
59
79
  /**
60
80
  * list all exports of a source file.
@@ -1 +1 @@
1
- {"version":3,"sources":["source-file-transformer.ts"],"names":["SourceFileTransformer","predicate","node","kind","ts","SyntaxKind","SourceFile","getIdentifiers","sourceFile","context","exports","listExports","exportNames","Promise","all","map","getExportedIdentifiers","exportIds","reduce","acc","current","item","find","exportName","id","push","transform","schemas","exportNode","computeSchema","ast","statements","statement","ExportDeclaration","isExport","Boolean","modifiers","modifier","ExportKeyword"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKO,MAAMA,qBAAN,CAAyD;AAC9DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,UAAnC;AACD;;AAEmB,QAAdC,cAAc,CAACC,UAAD,EAAyBC,OAAzB,EAA0D;AAC5E,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBH,UAAjB,CAAhB;AAEA,UAAMI,WAAW,GAAG,MAAMC,OAAO,CAACC,GAAR,CACxBJ,OAAO,CAACK,GAAR,CAAab,IAAD,IAAgB;AAC1B,aAAOO,OAAO,CAACO,sBAAR,CAA+Bd,IAA/B,CAAP;AACD,KAFD,CADwB,CAA1B;AAMA,UAAMe,SAAS,GAAG,uBAAQL,WAAR,EAAqBM,MAArB,CAAgD,CAACC,GAAD,EAAMC,OAAN,KAAkB;AAClF,YAAMC,IAAI,GAAGF,GAAG,CAACG,IAAJ,CAAUC,UAAD,IAAgBA,UAAU,CAACC,EAAX,KAAkBJ,OAAO,CAACI,EAAnD,CAAb;AACA,UAAI,CAACH,IAAL,EAAWF,GAAG,CAACM,IAAJ,CAASL,OAAT;AACX,aAAOD,GAAP;AACD,KAJiB,EAIf,EAJe,CAAlB;AAMA,WAAOF,SAAP;AACD;;AAEc,QAATS,SAAS,CAACxB,IAAD,EAAmBO,OAAnB,EAAoD;AACjE,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBT,IAAjB,CAAhB;AACA,UAAMyB,OAAO,GAAG,MAAMd,OAAO,CAACC,GAAR,CACpBJ,OAAO,CAACK,GAAR,CAAaa,UAAD,IAAgB;AAC1B,aAAOnB,OAAO,CAACoB,aAAR,CAAsBD,UAAtB,CAAP;AACD,KAFD,CADoB,CAAtB;AAMA,WAAOD,OAAP;AACD;AAED;AACF;AACA;;;AACUhB,EAAAA,WAAW,CAACmB,GAAD,EAA0B;AAC3C,WAAO,uBACLA,GAAG,CAACC,UAAJ,CAAehB,GAAf,CAAoBiB,SAAD,IAAe;AAAA;;AAChC,UAAIA,SAAS,CAAC7B,IAAV,KAAmBC,sBAAGC,UAAH,CAAc4B,iBAArC,EAAwD,OAAOD,SAAP;AACxD,YAAME,QAAQ,GAAGC,OAAO,yBACtBH,SAAS,CAACI,SADY,yDACtB,qBAAqBd,IAArB,CAA2Be,QAAD,IAAc;AACtC,eAAOA,QAAQ,CAAClC,IAAT,KAAkBC,sBAAGC,UAAH,CAAciC,aAAvC;AACD,OAFD,CADsB,CAAxB,CAFgC,CAQhC;;AACA,UAAI,CAACJ,QAAL,EAAe;AACf,aAAOF,SAAP;AACD,KAXD,CADK,CAAP;AAcD;;AApD6D","sourcesContent":["import ts, { Node, SourceFile } from 'typescript';\nimport { compact, flatten } from 'lodash';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\n\nexport class SourceFileTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.SourceFile;\n }\n\n async getIdentifiers(sourceFile: SourceFile, context: SchemaExtractorContext) {\n const exports = this.listExports(sourceFile);\n\n const exportNames = await Promise.all(\n exports.map((node: Node) => {\n return context.getExportedIdentifiers(node);\n })\n );\n\n const exportIds = flatten(exportNames).reduce<ExportIdentifier[]>((acc, current) => {\n const item = acc.find((exportName) => exportName.id === current.id);\n if (!item) acc.push(current);\n return acc;\n }, []);\n\n return exportIds;\n }\n\n async transform(node: SourceFile, context: SchemaExtractorContext) {\n const exports = this.listExports(node);\n const schemas = await Promise.all(\n exports.map((exportNode) => {\n return context.computeSchema(exportNode);\n })\n );\n\n return schemas;\n }\n\n /**\n * list all exports of a source file.\n */\n private listExports(ast: SourceFile): Node[] {\n return compact(\n ast.statements.map((statement) => {\n if (statement.kind === ts.SyntaxKind.ExportDeclaration) return statement;\n const isExport = Boolean(\n statement.modifiers?.find((modifier) => {\n return modifier.kind === ts.SyntaxKind.ExportKeyword;\n })\n );\n\n // eslint-disable-next-line consistent-return\n if (!isExport) return;\n return statement;\n })\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["source-file-transformer.ts"],"names":["SourceFileTransformer","predicate","node","kind","ts","SyntaxKind","SourceFile","getIdentifiers","sourceFile","context","exports","listExports","exportNames","Promise","all","map","getExportedIdentifiers","exportIds","reduce","acc","current","item","find","exportName","id","push","transform","schemas","exportNode","computeSchema","Module","ast","statements","statement","ExportDeclaration","isExport","Boolean","modifiers","modifier","ExportKeyword"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKO,MAAMA,qBAAN,CAAyD;AAC9DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,UAAnC;AACD;;AAEmB,QAAdC,cAAc,CAACC,UAAD,EAAyBC,OAAzB,EAA0D;AAC5E,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBH,UAAjB,CAAhB;AAEA,UAAMI,WAAW,GAAG,MAAMC,OAAO,CAACC,GAAR,CACxBJ,OAAO,CAACK,GAAR,CAAab,IAAD,IAAgB;AAC1B,aAAOO,OAAO,CAACO,sBAAR,CAA+Bd,IAA/B,CAAP;AACD,KAFD,CADwB,CAA1B;AAMA,UAAMe,SAAS,GAAG,uBAAQL,WAAR,EAAqBM,MAArB,CAAgD,CAACC,GAAD,EAAMC,OAAN,KAAkB;AAClF,YAAMC,IAAI,GAAGF,GAAG,CAACG,IAAJ,CAAUC,UAAD,IAAgBA,UAAU,CAACC,EAAX,KAAkBJ,OAAO,CAACI,EAAnD,CAAb;AACA,UAAI,CAACH,IAAL,EAAWF,GAAG,CAACM,IAAJ,CAASL,OAAT;AACX,aAAOD,GAAP;AACD,KAJiB,EAIf,EAJe,CAAlB;AAMA,WAAOF,SAAP;AACD;;AAEc,QAATS,SAAS,CAACxB,IAAD,EAAmBO,OAAnB,EAAoD;AACjE,UAAMC,OAAO,GAAG,KAAKC,WAAL,CAAiBT,IAAjB,CAAhB;AACA,UAAMyB,OAAO,GAAG,MAAM,2BAAWjB,OAAX,EAAqBkB,UAAD,IAAgB;AACxD,aAAOnB,OAAO,CAACoB,aAAR,CAAsBD,UAAtB,CAAP;AACD,KAFqB,CAAtB;AAIA,WAAO,KAAIE,2BAAJ,EAAWH,OAAX,CAAP;AACD;AAED;AACF;AACA;;;AACUhB,EAAAA,WAAW,CAACoB,GAAD,EAA0B;AAC3C,WAAO,uBACLA,GAAG,CAACC,UAAJ,CAAejB,GAAf,CAAoBkB,SAAD,IAAe;AAAA;;AAChC,UAAIA,SAAS,CAAC9B,IAAV,KAAmBC,sBAAGC,UAAH,CAAc6B,iBAArC,EAAwD,OAAOD,SAAP;AACxD,YAAME,QAAQ,GAAGC,OAAO,yBACtBH,SAAS,CAACI,SADY,yDACtB,qBAAqBf,IAArB,CAA2BgB,QAAD,IAAc;AACtC,eAAOA,QAAQ,CAACnC,IAAT,KAAkBC,sBAAGC,UAAH,CAAckC,aAAvC;AACD,OAFD,CADsB,CAAxB,CAFgC,CAQhC;;AACA,UAAI,CAACJ,QAAL,EAAe;AACf,aAAOF,SAAP;AACD,KAXD,CADK,CAAP;AAcD;;AAlD6D","sourcesContent":["import ts, { Node, SourceFile } from 'typescript';\nimport { compact, flatten } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport { Module } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\n\nexport class SourceFileTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.SourceFile;\n }\n\n async getIdentifiers(sourceFile: SourceFile, context: SchemaExtractorContext) {\n const exports = this.listExports(sourceFile);\n\n const exportNames = await Promise.all(\n exports.map((node: Node) => {\n return context.getExportedIdentifiers(node);\n })\n );\n\n const exportIds = flatten(exportNames).reduce<ExportIdentifier[]>((acc, current) => {\n const item = acc.find((exportName) => exportName.id === current.id);\n if (!item) acc.push(current);\n return acc;\n }, []);\n\n return exportIds;\n }\n\n async transform(node: SourceFile, context: SchemaExtractorContext) {\n const exports = this.listExports(node);\n const schemas = await pMapSeries(exports, (exportNode) => {\n return context.computeSchema(exportNode);\n });\n\n return new Module(schemas);\n }\n\n /**\n * list all exports of a source file.\n */\n private listExports(ast: SourceFile): Node[] {\n return compact(\n ast.statements.map((statement) => {\n if (statement.kind === ts.SyntaxKind.ExportDeclaration) return statement;\n const isExport = Boolean(\n statement.modifiers?.find((modifier) => {\n return modifier.kind === ts.SyntaxKind.ExportKeyword;\n })\n );\n\n // eslint-disable-next-line consistent-return\n if (!isExport) return;\n return statement;\n })\n );\n }\n}\n"]}
@@ -1,8 +1,11 @@
1
1
  import { Node, TypeAliasDeclaration } from 'typescript';
2
+ import { TypeSchema } from '@teambit/semantics.entities.semantic-schema';
2
3
  import { SchemaTransformer } from '../schema-transformer';
4
+ import { SchemaExtractorContext } from '../schema-extractor-context';
3
5
  import { ExportIdentifier } from '../export-identifier';
4
6
  export declare class TypeAliasTransformer implements SchemaTransformer {
5
7
  predicate(node: Node): boolean;
6
8
  getIdentifiers(node: TypeAliasDeclaration): Promise<ExportIdentifier[]>;
7
- transform(): Promise<{}>;
9
+ private getName;
10
+ transform(typeAlias: TypeAliasDeclaration, context: SchemaExtractorContext): Promise<TypeSchema>;
8
11
  }
@@ -19,6 +19,16 @@ function _typescript() {
19
19
  return data;
20
20
  }
21
21
 
22
+ function _semanticsEntities() {
23
+ const data = require("@teambit/semantics.entities.semantic-schema");
24
+
25
+ _semanticsEntities = function () {
26
+ return data;
27
+ };
28
+
29
+ return data;
30
+ }
31
+
22
32
  function _exportIdentifier() {
23
33
  const data = require("../export-identifier");
24
34
 
@@ -29,6 +39,16 @@ function _exportIdentifier() {
29
39
  return data;
30
40
  }
31
41
 
42
+ function _typeNodeToSchema() {
43
+ const data = require("./utils/type-node-to-schema");
44
+
45
+ _typeNodeToSchema = function () {
46
+ return data;
47
+ };
48
+
49
+ return data;
50
+ }
51
+
32
52
  class TypeAliasTransformer {
33
53
  predicate(node) {
34
54
  return node.kind === _typescript().default.SyntaxKind.TypeAliasDeclaration;
@@ -38,8 +58,17 @@ class TypeAliasTransformer {
38
58
  return [new (_exportIdentifier().ExportIdentifier)(node.name.getText(), node.getSourceFile().fileName)];
39
59
  }
40
60
 
41
- async transform() {
42
- return {};
61
+ getName(node) {
62
+ return node.name.getText();
63
+ }
64
+
65
+ async transform(typeAlias, context) {
66
+ var _info$body;
67
+
68
+ const type = await (0, _typeNodeToSchema().typeNodeToSchema)(typeAlias.type, context);
69
+ const info = await context.getQuickInfo(typeAlias.name);
70
+ const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
71
+ return new (_semanticsEntities().TypeSchema)(this.getName(typeAlias), type, displaySig);
43
72
  }
44
73
 
45
74
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["type-alias.ts"],"names":["TypeAliasTransformer","predicate","node","kind","ts","SyntaxKind","TypeAliasDeclaration","getIdentifiers","ExportIdentifier","name","getText","getSourceFile","fileName","transform"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,oBAAN,CAAwD;AAC7DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,oBAAnC;AACD;;AAEmB,QAAdC,cAAc,CAACL,IAAD,EAA6B;AAC/C,WAAO,CAAC,KAAIM,oCAAJ,EAAqBN,IAAI,CAACO,IAAL,CAAUC,OAAV,EAArB,EAA0CR,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;AACD;;AAEc,QAATC,SAAS,GAAG;AAChB,WAAO,EAAP;AACD;;AAX4D","sourcesContent":["import ts, { Node, TypeAliasDeclaration } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\n\nexport class TypeAliasTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeAliasDeclaration;\n }\n\n async getIdentifiers(node: TypeAliasDeclaration) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform() {\n return {};\n }\n}\n"]}
1
+ {"version":3,"sources":["type-alias.ts"],"names":["TypeAliasTransformer","predicate","node","kind","ts","SyntaxKind","TypeAliasDeclaration","getIdentifiers","ExportIdentifier","name","getText","getSourceFile","fileName","getName","transform","typeAlias","context","type","info","getQuickInfo","displaySig","body","displayString","TypeSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,oBAAN,CAAwD;AAC7DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,oBAAnC;AACD;;AAEmB,QAAdC,cAAc,CAACL,IAAD,EAA6B;AAC/C,WAAO,CAAC,KAAIM,oCAAJ,EAAqBN,IAAI,CAACO,IAAL,CAAUC,OAAV,EAArB,EAA0CR,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;AACD;;AAEOC,EAAAA,OAAO,CAACX,IAAD,EAAqC;AAClD,WAAOA,IAAI,CAACO,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEc,QAATI,SAAS,CAACC,SAAD,EAAkCC,OAAlC,EAAmE;AAAA;;AAChF,UAAMC,IAAI,GAAG,MAAM,0CAAiBF,SAAS,CAACE,IAA3B,EAAiCD,OAAjC,CAAnB;AACA,UAAME,IAAI,GAAG,MAAMF,OAAO,CAACG,YAAR,CAAqBJ,SAAS,CAACN,IAA/B,CAAnB;AACA,UAAMW,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,WAAO,KAAIC,+BAAJ,EAAe,KAAKV,OAAL,CAAaE,SAAb,CAAf,EAAwCE,IAAxC,EAA8CG,UAA9C,CAAP;AACD;;AAlB4D","sourcesContent":["import ts, { Node, TypeAliasDeclaration } from 'typescript';\nimport { TypeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { typeNodeToSchema } from './utils/type-node-to-schema';\n\nexport class TypeAliasTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.TypeAliasDeclaration;\n }\n\n async getIdentifiers(node: TypeAliasDeclaration) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n private getName(node: TypeAliasDeclaration): string {\n return node.name.getText();\n }\n\n async transform(typeAlias: TypeAliasDeclaration, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(typeAlias.type, context);\n const info = await context.getQuickInfo(typeAlias.name);\n const displaySig = info?.body?.displayString;\n return new TypeSchema(this.getName(typeAlias), type, displaySig as string);\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { ParameterSchema } from '@teambit/semantics.entities.semantic-schema';
2
+ import { ParameterDeclaration, NodeArray } from 'typescript';
3
+ import { SchemaExtractorContext } from '../../schema-extractor-context';
4
+ export declare function getParams(parameterNodes: NodeArray<ParameterDeclaration>, context: SchemaExtractorContext): Promise<ParameterSchema[]>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("core-js/modules/es.promise.js");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.getParams = getParams;
11
+
12
+ function _semanticsEntities() {
13
+ const data = require("@teambit/semantics.entities.semantic-schema");
14
+
15
+ _semanticsEntities = function () {
16
+ return data;
17
+ };
18
+
19
+ return data;
20
+ }
21
+
22
+ function _pMapSeries() {
23
+ const data = _interopRequireDefault(require("p-map-series"));
24
+
25
+ _pMapSeries = function () {
26
+ return data;
27
+ };
28
+
29
+ return data;
30
+ }
31
+
32
+ function _parseTypeFromQuickInfo() {
33
+ const data = require("./parse-type-from-quick-info");
34
+
35
+ _parseTypeFromQuickInfo = function () {
36
+ return data;
37
+ };
38
+
39
+ return data;
40
+ }
41
+
42
+ function _typeNodeToSchema() {
43
+ const data = require("./type-node-to-schema");
44
+
45
+ _typeNodeToSchema = function () {
46
+ return data;
47
+ };
48
+
49
+ return data;
50
+ }
51
+
52
+ async function getParams(parameterNodes, context) {
53
+ return (0, _pMapSeries().default)(parameterNodes, async param => {
54
+ return new (_semanticsEntities().ParameterSchema)(param.name.getText(), await getParamType(param, context), param.initializer ? param.initializer.getText() : undefined);
55
+ });
56
+ }
57
+
58
+ async function getParamType(param, context) {
59
+ if (param.type) {
60
+ const type = param.type;
61
+ return (0, _typeNodeToSchema().typeNodeToSchema)(type, context);
62
+ }
63
+
64
+ const info = await context.getQuickInfo(param.name);
65
+ const parsed = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
66
+ return new (_semanticsEntities().TypeRefSchema)(parsed || 'any');
67
+ }
68
+
69
+ //# sourceMappingURL=get-params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["get-params.ts"],"names":["getParams","parameterNodes","context","param","ParameterSchema","name","getText","getParamType","initializer","undefined","type","info","getQuickInfo","parsed","TypeRefSchema"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,eAAeA,SAAf,CACLC,cADK,EAELC,OAFK,EAGuB;AAC5B,SAAO,2BAAWD,cAAX,EAA2B,MAAOE,KAAP,IAAiB;AACjD,WAAO,KAAIC,oCAAJ,EACLD,KAAK,CAACE,IAAN,CAAWC,OAAX,EADK,EAEL,MAAMC,YAAY,CAACJ,KAAD,EAAQD,OAAR,CAFb,EAGLC,KAAK,CAACK,WAAN,GAAoBL,KAAK,CAACK,WAAN,CAAkBF,OAAlB,EAApB,GAAkDG,SAH7C,CAAP;AAKD,GANM,CAAP;AAOD;;AAED,eAAeF,YAAf,CAA4BJ,KAA5B,EAAyDD,OAAzD,EAA+G;AAC7G,MAAIC,KAAK,CAACO,IAAV,EAAgB;AACd,UAAMA,IAAI,GAAGP,KAAK,CAACO,IAAnB;AACA,WAAO,0CAAiBA,IAAjB,EAAuBR,OAAvB,CAAP;AACD;;AACD,QAAMS,IAAI,GAAG,MAAMT,OAAO,CAACU,YAAR,CAAqBT,KAAK,CAACE,IAA3B,CAAnB;AACA,QAAMQ,MAAM,GAAG,sDAAuBF,IAAvB,CAAf;AACA,SAAO,KAAIG,kCAAJ,EAAkBD,MAAM,IAAI,KAA5B,CAAP;AACD","sourcesContent":["import { ParameterSchema, SchemaNode, TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { ParameterDeclaration, NodeArray } 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 param.name.getText(),\n await getParamType(param, context),\n param.initializer ? param.initializer.getText() : undefined\n );\n });\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 const info = await context.getQuickInfo(param.name);\n const parsed = parseTypeFromQuickInfo(info);\n return new TypeRefSchema(parsed || 'any');\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import protocol from 'typescript/lib/protocol';
2
+ /**
3
+ * try to parse the type from the quickinfo.
4
+ * this is an error-prone process, we do our best here.
5
+ *
6
+ * an example of a function with many ":"
7
+ * `export function getObj(a: string, func: (b: number) => {}) { return { a: 1, b: 2 } };`
8
+ * which produce the following quickinfo:
9
+ * ```ts
10
+ * function getObj(a: string, func: (b: number) => {}): {
11
+ * a: number;
12
+ * b: number;
13
+ * }
14
+ * ```
15
+ *
16
+ * some examples of quickinfo:
17
+ *
18
+ * function ts.signatureToDisplayParts(typechecker: TypeChecker, signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags): SymbolDisplayPart[]
19
+ *
20
+ * const enum ts.TypeFormatFlags
21
+ *
22
+ * (method) ts.TypeChecker.writeSignature(signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags | undefined, kind?: SignatureKind | undefined, writer?: EmitTextWriter | undefined): string
23
+ *
24
+ * const obj: {
25
+ * a: number;
26
+ * b: number;
27
+ * }
28
+ *
29
+ * function getObj(a: string): {
30
+ * a: number;
31
+ * b: number;
32
+ * }
33
+ */
34
+ export declare function parseTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string;
35
+ export declare function parseReturnTypeFromQuickInfo(quickInfo: protocol.QuickInfoResponse | undefined): string;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.array.iterator.js");
4
+
5
+ require("core-js/modules/es.regexp.exec.js");
6
+
7
+ require("core-js/modules/es.string.trim.js");
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: true
11
+ });
12
+ exports.parseReturnTypeFromQuickInfo = parseReturnTypeFromQuickInfo;
13
+ exports.parseTypeFromQuickInfo = parseTypeFromQuickInfo;
14
+
15
+ // eslint-disable-next-line import/no-unresolved
16
+
17
+ /**
18
+ * try to parse the type from the quickinfo.
19
+ * this is an error-prone process, we do our best here.
20
+ *
21
+ * an example of a function with many ":"
22
+ * `export function getObj(a: string, func: (b: number) => {}) { return { a: 1, b: 2 } };`
23
+ * which produce the following quickinfo:
24
+ * ```ts
25
+ * function getObj(a: string, func: (b: number) => {}): {
26
+ * a: number;
27
+ * b: number;
28
+ * }
29
+ * ```
30
+ *
31
+ * some examples of quickinfo:
32
+ *
33
+ * function ts.signatureToDisplayParts(typechecker: TypeChecker, signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags): SymbolDisplayPart[]
34
+ *
35
+ * const enum ts.TypeFormatFlags
36
+ *
37
+ * (method) ts.TypeChecker.writeSignature(signature: Signature, enclosingDeclaration?: Node | undefined, flags?: TypeFormatFlags | undefined, kind?: SignatureKind | undefined, writer?: EmitTextWriter | undefined): string
38
+ *
39
+ * const obj: {
40
+ * a: number;
41
+ * b: number;
42
+ * }
43
+ *
44
+ * function getObj(a: string): {
45
+ * a: number;
46
+ * b: number;
47
+ * }
48
+ */
49
+ function parseTypeFromQuickInfo(quickInfo) {
50
+ var _quickInfo$body;
51
+
52
+ if (!(quickInfo !== null && quickInfo !== void 0 && (_quickInfo$body = quickInfo.body) !== null && _quickInfo$body !== void 0 && _quickInfo$body.displayString)) return '';
53
+ const displayString = quickInfo.body.displayString;
54
+ const splitByColon = displayString.split(':');
55
+
56
+ switch (quickInfo.body.kind) {
57
+ case 'const':
58
+ case 'property':
59
+ case 'let':
60
+ case 'var':
61
+ {
62
+ const [, ...tail] = splitByColon;
63
+ return tail.join(':').trim();
64
+ }
65
+
66
+ case 'method':
67
+ case 'function':
68
+ {
69
+ const split = displayString.split('): ');
70
+
71
+ if (split.length !== 2) {
72
+ throw new Error(`quickinfo of a function below was not implemented.\n${displayString}`);
73
+ }
74
+
75
+ return split[1].trim();
76
+ }
77
+
78
+ case 'alias':
79
+ {
80
+ // e.g. (alias) class BuilderService\nimport BuilderService
81
+ // e.g. '(alias) type Serializable = {\n' +
82
+ // ' toString(): string;\n' +
83
+ // '}\n' +
84
+ // 'import Serializable'
85
+ const firstLine = displayString.split('\n')[0];
86
+ const splitBySpace = firstLine.trim().split(' '); // first two are alias keyword and alias type
87
+
88
+ const [,, typeName] = splitBySpace;
89
+ return typeName;
90
+ }
91
+
92
+ case 'type':
93
+ {
94
+ // e.g. `type TaskSlot = SlotRegistry<BuildTask[]>`
95
+ const splitByEqual = displayString.split('=');
96
+ const [, ...tail] = splitByEqual;
97
+ return tail.join('=').trim();
98
+ }
99
+
100
+ default:
101
+ return splitByColon[splitByColon.length - 1].trim();
102
+ }
103
+ }
104
+
105
+ function parseReturnTypeFromQuickInfo(quickInfo) {
106
+ if (!quickInfo) return '';
107
+ const typeStr = parseTypeFromQuickInfo(quickInfo);
108
+ const array = typeStr.split('=>');
109
+ return array[array.length - 1].trim();
110
+ }
111
+
112
+ //# sourceMappingURL=parse-type-from-quick-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["parse-type-from-quick-info.ts"],"names":["parseTypeFromQuickInfo","quickInfo","body","displayString","splitByColon","split","kind","tail","join","trim","length","Error","firstLine","splitBySpace","typeName","splitByEqual","parseReturnTypeFromQuickInfo","typeStr","array"],"mappings":";;;;;;;;;;;;;;AAAA;;AAGA;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,SAASA,sBAAT,CAAgCC,SAAhC,EAA2F;AAAA;;AAChG,MAAI,EAACA,SAAD,aAACA,SAAD,kCAACA,SAAS,CAAEC,IAAZ,4CAAC,gBAAiBC,aAAlB,CAAJ,EAAqC,OAAO,EAAP;AACrC,QAAMA,aAAa,GAAGF,SAAS,CAACC,IAAV,CAAeC,aAArC;AACA,QAAMC,YAAY,GAAGD,aAAa,CAACE,KAAd,CAAoB,GAApB,CAArB;;AACA,UAAQJ,SAAS,CAACC,IAAV,CAAeI,IAAvB;AACE,SAAK,OAAL;AACA,SAAK,UAAL;AACA,SAAK,KAAL;AACA,SAAK,KAAL;AAAY;AACV,cAAM,GAAG,GAAGC,IAAN,IAAcH,YAApB;AACA,eAAOG,IAAI,CAACC,IAAL,CAAU,GAAV,EAAeC,IAAf,EAAP;AACD;;AACD,SAAK,QAAL;AACA,SAAK,UAAL;AAAiB;AACf,cAAMJ,KAAK,GAAGF,aAAa,CAACE,KAAd,CAAoB,KAApB,CAAd;;AACA,YAAIA,KAAK,CAACK,MAAN,KAAiB,CAArB,EAAwB;AACtB,gBAAM,IAAIC,KAAJ,CAAW,uDAAsDR,aAAc,EAA/E,CAAN;AACD;;AACD,eAAOE,KAAK,CAAC,CAAD,CAAL,CAASI,IAAT,EAAP;AACD;;AACD,SAAK,OAAL;AAAc;AACZ;AACA;AACA;AACA;AACA;AACA,cAAMG,SAAS,GAAGT,aAAa,CAACE,KAAd,CAAoB,IAApB,EAA0B,CAA1B,CAAlB;AACA,cAAMQ,YAAY,GAAGD,SAAS,CAACH,IAAV,GAAiBJ,KAAjB,CAAuB,GAAvB,CAArB,CAPY,CAQZ;;AACA,cAAM,IAAKS,QAAL,IAAiBD,YAAvB;AACA,eAAOC,QAAP;AACD;;AACD,SAAK,MAAL;AAAa;AACX;AACA,cAAMC,YAAY,GAAGZ,aAAa,CAACE,KAAd,CAAoB,GAApB,CAArB;AACA,cAAM,GAAG,GAAGE,IAAN,IAAcQ,YAApB;AACA,eAAOR,IAAI,CAACC,IAAL,CAAU,GAAV,EAAeC,IAAf,EAAP;AACD;;AACD;AACE,aAAOL,YAAY,CAACA,YAAY,CAACM,MAAb,GAAsB,CAAvB,CAAZ,CAAsCD,IAAtC,EAAP;AAnCJ;AAqCD;;AAEM,SAASO,4BAAT,CAAsCf,SAAtC,EAAiG;AACtG,MAAI,CAACA,SAAL,EAAgB,OAAO,EAAP;AAChB,QAAMgB,OAAO,GAAGjB,sBAAsB,CAACC,SAAD,CAAtC;AACA,QAAMiB,KAAK,GAAGD,OAAO,CAACZ,KAAR,CAAc,IAAd,CAAd;AACA,SAAOa,KAAK,CAACA,KAAK,CAACR,MAAN,GAAe,CAAhB,CAAL,CAAwBD,IAAxB,EAAP;AACD","sourcesContent":["// eslint-disable-next-line import/no-unresolved\nimport protocol from 'typescript/lib/protocol';\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 throw new Error(`quickinfo of a function below was not implemented.\\n${displayString}`);\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"]}
@@ -0,0 +1,4 @@
1
+ import { TypeNode } from 'typescript';
2
+ import { SchemaNode } from '@teambit/semantics.entities.semantic-schema';
3
+ import { SchemaExtractorContext } from '../../schema-extractor-context';
4
+ export declare function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode>;