@teambit/typescript 0.0.730 → 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.
- package/dist/schema-extractor-context.d.ts +6 -4
- package/dist/schema-extractor-context.js +83 -25
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/transformers/class-deceleration.js +21 -6
- package/dist/transformers/class-deceleration.js.map +1 -1
- package/dist/transformers/function-declaration.js +4 -3
- package/dist/transformers/function-declaration.js.map +1 -1
- package/dist/transformers/index-signature.js +11 -1
- package/dist/transformers/index-signature.js.map +1 -1
- package/dist/transformers/index.d.ts +0 -4
- package/dist/transformers/index.js +0 -64
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/method-declaration.js +6 -6
- package/dist/transformers/method-declaration.js.map +1 -1
- package/dist/transformers/method-signature.js +2 -2
- package/dist/transformers/method-signature.js.map +1 -1
- package/dist/transformers/property-declaration.js +2 -3
- package/dist/transformers/property-declaration.js.map +1 -1
- package/dist/transformers/property-signature.js +3 -4
- package/dist/transformers/property-signature.js.map +1 -1
- package/dist/transformers/type-alias.js +11 -2
- package/dist/transformers/type-alias.js.map +1 -1
- package/dist/transformers/utils/get-params.d.ts +2 -2
- package/dist/transformers/utils/get-params.js +14 -12
- package/dist/transformers/utils/get-params.js.map +1 -1
- package/dist/transformers/utils/parse-type-from-quick-info.d.ts +35 -2
- package/dist/transformers/utils/parse-type-from-quick-info.js +93 -7
- package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
- package/dist/transformers/utils/type-node-to-schema.d.ts +4 -0
- package/dist/transformers/utils/type-node-to-schema.js +251 -0
- package/dist/transformers/utils/type-node-to-schema.js.map +1 -0
- package/dist/transformers/variable-declaration.js +2 -2
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/typescript.main.runtime.js +1 -1
- package/dist/typescript.main.runtime.js.map +1 -1
- package/package-tar/teambit-typescript-0.0.731.tgz +0 -0
- package/package.json +15 -15
- package/{preview-1652325916507.js → preview-1652498684867.js} +2 -2
- package/transformers/class-deceleration.ts +8 -4
- package/transformers/function-declaration.ts +4 -3
- package/transformers/index-signature.ts +2 -1
- package/transformers/index.ts +0 -4
- package/transformers/method-declaration.ts +6 -6
- package/transformers/method-signature.ts +2 -2
- package/transformers/property-declaration.ts +2 -3
- package/transformers/property-signature.ts +3 -4
- package/transformers/type-alias.ts +3 -3
- package/transformers/utils/get-params.ts +11 -12
- package/transformers/utils/parse-type-from-quick-info.ts +79 -7
- package/transformers/utils/type-node-to-schema.ts +205 -0
- package/transformers/variable-declaration.ts +2 -2
- package/dist/transformers/type-intersection.d.ts +0 -9
- package/dist/transformers/type-intersection.js +0 -63
- package/dist/transformers/type-intersection.js.map +0 -1
- package/dist/transformers/type-literal.d.ts +0 -14
- package/dist/transformers/type-literal.js +0 -67
- package/dist/transformers/type-literal.js.map +0 -1
- package/dist/transformers/type-reference.d.ts +0 -8
- package/dist/transformers/type-reference.js +0 -41
- package/dist/transformers/type-reference.js.map +0 -1
- package/dist/transformers/type-union.d.ts +0 -9
- package/dist/transformers/type-union.js +0 -63
- package/dist/transformers/type-union.js.map +0 -1
- package/package-tar/teambit-typescript-0.0.730.tgz +0 -0
- package/transformers/type-intersection.ts +0 -23
- package/transformers/type-literal.ts +0 -28
- package/transformers/type-reference.ts +0 -19
- package/transformers/type-union.ts +0 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["method-declaration.ts"],"names":["MethodDeclaration","predicate","node","kind","ts","SyntaxKind","getIdentifiers","funcDec","ExportIdentifier","getName","getSourceFile","fileName","name","getText","transform","methodDec","context","info","getQuickInfo","displaySig","body","displayString","returnTypeStr","
|
|
1
|
+
{"version":3,"sources":["method-declaration.ts"],"names":["MethodDeclaration","predicate","node","kind","ts","SyntaxKind","getIdentifiers","funcDec","ExportIdentifier","getName","getSourceFile","fileName","name","getText","transform","methodDec","context","info","getQuickInfo","displaySig","body","displayString","returnTypeStr","params","parameters","modifiers","map","modifier","returnType","resolveType","FunctionSchema"],"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;;AACA;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;;AAEmB,QAAdM,cAAc,CAACC,OAAD,EAAiC;AACnD,WAAO,CAAC,KAAIC,oCAAJ,EAAqB,KAAKC,OAAL,CAAaF,OAAb,CAArB,EAA4CA,OAAO,CAACG,aAAR,GAAwBC,QAApE,CAAD,CAAP;AACD;;AAEOF,EAAAA,OAAO,CAACF,OAAD,EAAiC;AAAA;;AAC9C,WAAO,kBAAAA,OAAO,CAACK,IAAR,gEAAcC,OAAd,OAA2B,EAAlC;AACD;;AAEc,QAATC,SAAS,CAACC,SAAD,EAAmCC,OAAnC,EAAyF;AAAA;;AACtG,UAAMJ,IAAI,GAAG,KAAKH,OAAL,CAAaM,SAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,SAAS,CAACH,IAA/B,CAAnB;AACA,UAAMO,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,UAAMC,aAAa,GAAG,sDAAuBL,IAAvB,CAAtB;AACA,UAAMM,MAAM,GAAG,MAAM,4BAAUR,SAAS,CAACS,UAApB,EAAgCR,OAAhC,CAArB;AACA,UAAMS,SAAS,GAAG,yBAAAV,SAAS,CAACU,SAAV,8EAAqBC,GAArB,CAA0BC,QAAD,IAAcA,QAAQ,CAACd,OAAT,EAAvC,MAA8D,EAAhF;AACA,UAAMe,UAAU,GAAG,MAAMZ,OAAO,CAACa,WAAR,CAAoBd,SAApB,EAA+BO,aAA/B,CAAzB;AACA,WAAO,KAAIQ,mCAAJ,EAAmBlB,IAAnB,EAAyBW,MAAzB,EAAiCK,UAAjC,EAA6CT,UAAU,IAAI,EAA3D,EAA+DM,SAA/D,CAAP;AACD;;AAtByD","sourcesContent":["import { SchemaNode, FunctionSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, MethodDeclaration as MethodDeclarationNode } from 'typescript';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { ExportIdentifier } from '../export-identifier';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { getParams } from './utils/get-params';\n\nexport class MethodDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.MethodDeclaration;\n }\n\n async getIdentifiers(funcDec: MethodDeclarationNode) {\n return [new ExportIdentifier(this.getName(funcDec), funcDec.getSourceFile().fileName)];\n }\n\n private getName(funcDec: MethodDeclarationNode) {\n return funcDec.name?.getText() || '';\n }\n\n async transform(methodDec: MethodDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(methodDec);\n const info = await context.getQuickInfo(methodDec.name);\n const displaySig = info?.body?.displayString;\n const returnTypeStr = parseTypeFromQuickInfo(info);\n const params = await getParams(methodDec.parameters, context);\n const modifiers = methodDec.modifiers?.map((modifier) => modifier.getText()) || [];\n const returnType = await context.resolveType(methodDec, returnTypeStr);\n return new FunctionSchema(name, params, returnType, displaySig || '', modifiers as Modifier[]);\n }\n}\n"]}
|
|
@@ -68,9 +68,9 @@ class MethodSignatureTransformer {
|
|
|
68
68
|
const name = this.getName(methodSig);
|
|
69
69
|
const info = await context.getQuickInfo(methodSig.name);
|
|
70
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
|
-
const returnTypeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(
|
|
71
|
+
const returnTypeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
72
72
|
const args = await (0, _getParams().getParams)(methodSig.parameters, context);
|
|
73
|
-
const returnType = await context.resolveType(methodSig
|
|
73
|
+
const returnType = await context.resolveType(methodSig, returnTypeStr);
|
|
74
74
|
return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig || '');
|
|
75
75
|
}
|
|
76
76
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["method-signature.ts"],"names":["MethodSignatureTransformer","predicate","node","kind","ts","SyntaxKind","MethodSignature","getName","name","getText","getIdentifiers","transform","methodSig","context","info","getQuickInfo","displaySig","body","displayString","returnTypeStr","args","parameters","returnType","resolveType","FunctionSchema"],"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,0BAAN,CAA8D;AACnEC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,eAAnC;AACD;;AAEDC,EAAAA,OAAO,CAACL,IAAD,EAA4B;AACjC,WAAOA,IAAI,CAACM,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,GAAG;AACrB,WAAO,EAAP;AACD;;AAEc,QAATC,SAAS,CAACC,SAAD,EAAiCC,OAAjC,EAAuF;AAAA;;AACpG,UAAML,IAAI,GAAG,KAAKD,OAAL,CAAaK,SAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,SAAS,CAACJ,IAA/B,CAAnB;AACA,UAAMQ,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,UAAMC,aAAa,GAAG,
|
|
1
|
+
{"version":3,"sources":["method-signature.ts"],"names":["MethodSignatureTransformer","predicate","node","kind","ts","SyntaxKind","MethodSignature","getName","name","getText","getIdentifiers","transform","methodSig","context","info","getQuickInfo","displaySig","body","displayString","returnTypeStr","args","parameters","returnType","resolveType","FunctionSchema"],"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,0BAAN,CAA8D;AACnEC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,eAAnC;AACD;;AAEDC,EAAAA,OAAO,CAACL,IAAD,EAA4B;AACjC,WAAOA,IAAI,CAACM,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,GAAG;AACrB,WAAO,EAAP;AACD;;AAEc,QAATC,SAAS,CAACC,SAAD,EAAiCC,OAAjC,EAAuF;AAAA;;AACpG,UAAML,IAAI,GAAG,KAAKD,OAAL,CAAaK,SAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,SAAS,CAACJ,IAA/B,CAAnB;AACA,UAAMQ,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,UAAMC,aAAa,GAAG,sDAAuBL,IAAvB,CAAtB;AACA,UAAMM,IAAI,GAAG,MAAM,4BAAUR,SAAS,CAACS,UAApB,EAAgCR,OAAhC,CAAnB;AACA,UAAMS,UAAU,GAAG,MAAMT,OAAO,CAACU,WAAR,CAAoBX,SAApB,EAA+BO,aAA/B,CAAzB;AACA,WAAO,KAAIK,mCAAJ,EAAmBhB,IAAnB,EAAyBY,IAAzB,EAA+BE,UAA/B,EAA2CN,UAAU,IAAI,EAAzD,CAAP;AACD;;AArBkE","sourcesContent":["import { SchemaNode, FunctionSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, MethodSignature as MethodSignatureNode } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { getParams } from './utils/get-params';\n\nexport class MethodSignatureTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.MethodSignature;\n }\n\n getName(node: MethodSignatureNode) {\n return node.name.getText();\n }\n\n async getIdentifiers() {\n return [];\n }\n\n async transform(methodSig: MethodSignatureNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(methodSig);\n const info = await context.getQuickInfo(methodSig.name);\n const displaySig = info?.body?.displayString;\n const returnTypeStr = parseTypeFromQuickInfo(info);\n const args = await getParams(methodSig.parameters, context);\n const returnType = await context.resolveType(methodSig, returnTypeStr);\n return new FunctionSchema(name, args, returnType, displaySig || '');\n }\n}\n"]}
|
|
@@ -65,11 +65,10 @@ class PropertyDeclaration {
|
|
|
65
65
|
async transform(propertyDec, context) {
|
|
66
66
|
var _info$body;
|
|
67
67
|
|
|
68
|
-
const name = this.getName(propertyDec);
|
|
69
|
-
|
|
68
|
+
const name = this.getName(propertyDec);
|
|
70
69
|
const info = await context.getQuickInfo(propertyDec.name);
|
|
71
70
|
const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
|
|
72
|
-
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(
|
|
71
|
+
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
73
72
|
const type = await context.resolveType(propertyDec, typeStr);
|
|
74
73
|
return new (_semanticsEntities().VariableSchema)(name || '', displaySig || '', type);
|
|
75
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["property-declaration.ts"],"names":["PropertyDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","propertyDec","context","info","getQuickInfo","displaySig","body","displayString","typeStr","type","resolveType","VariableSchema"],"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,mBAAN,CAAuD;AAC5DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,mBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAAgC;AACrC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,CAACP,IAAD,EAAgC;AAClD,WAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;AACD;;AAEc,QAATC,SAAS,CAACC,WAAD,EAAuCC,OAAvC,EAA6F;AAAA;;AAC1G,UAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,WAAb,CAAb
|
|
1
|
+
{"version":3,"sources":["property-declaration.ts"],"names":["PropertyDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","propertyDec","context","info","getQuickInfo","displaySig","body","displayString","typeStr","type","resolveType","VariableSchema"],"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,mBAAN,CAAuD;AAC5DC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcL,mBAAnC;AACD;;AAEDM,EAAAA,OAAO,CAACJ,IAAD,EAAgC;AACrC,WAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;AACD;;AAEmB,QAAdC,cAAc,CAACP,IAAD,EAAgC;AAClD,WAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;AACD;;AAEc,QAATC,SAAS,CAACC,WAAD,EAAuCC,OAAvC,EAA6F;AAAA;;AAC1G,UAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,WAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,WAAW,CAACP,IAAjC,CAAnB;AACA,UAAMW,UAAU,GAAGF,IAAH,aAAGA,IAAH,qCAAGA,IAAI,CAAEG,IAAT,+CAAG,WAAYC,aAA/B;AACA,UAAMC,OAAO,GAAG,sDAAuBL,IAAvB,CAAhB;AACA,UAAMM,IAAI,GAAG,MAAMP,OAAO,CAACQ,WAAR,CAAoBT,WAApB,EAAiCO,OAAjC,CAAnB;AAEA,WAAO,KAAIG,mCAAJ,EAAmBjB,IAAI,IAAI,EAA3B,EAA+BW,UAAU,IAAI,EAA7C,EAAiDI,IAAjD,CAAP;AACD;;AArB2D","sourcesContent":["import { SchemaNode, VariableSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, PropertyDeclaration as PropertyDeclarationNode } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class PropertyDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.PropertyDeclaration;\n }\n\n getName(node: PropertyDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: PropertyDeclarationNode) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(propertyDec: PropertyDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(propertyDec);\n const info = await context.getQuickInfo(propertyDec.name);\n const displaySig = info?.body?.displayString;\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(propertyDec, typeStr);\n\n return new VariableSchema(name || '', displaySig || '', type);\n }\n}\n"]}
|
|
@@ -65,8 +65,7 @@ class PropertySignature {
|
|
|
65
65
|
async transform(prop, context) {
|
|
66
66
|
var _info$body, _prop$type;
|
|
67
67
|
|
|
68
|
-
const name = this.getName(prop);
|
|
69
|
-
|
|
68
|
+
const name = this.getName(prop);
|
|
70
69
|
const info = await context.getQuickInfo(prop.name);
|
|
71
70
|
const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
|
|
72
71
|
|
|
@@ -74,12 +73,12 @@ class PropertySignature {
|
|
|
74
73
|
// e.g. `propertySig: () => void;` inside interface
|
|
75
74
|
const propType = prop.type;
|
|
76
75
|
const args = await (0, _getParams().getParams)(propType.parameters, context);
|
|
77
|
-
const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(
|
|
76
|
+
const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(info);
|
|
78
77
|
const returnType = await context.resolveType(propType, typeStr);
|
|
79
78
|
return new (_semanticsEntities().FunctionSchema)(name, args, returnType, displaySig);
|
|
80
79
|
}
|
|
81
80
|
|
|
82
|
-
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(
|
|
81
|
+
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
83
82
|
const type = await context.resolveType(prop, typeStr);
|
|
84
83
|
return new (_semanticsEntities().VariableSchema)(name, displaySig, type);
|
|
85
84
|
}
|
|
@@ -1 +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
|
|
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"]}
|
|
@@ -39,6 +39,16 @@ function _exportIdentifier() {
|
|
|
39
39
|
return data;
|
|
40
40
|
}
|
|
41
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
|
+
|
|
42
52
|
class TypeAliasTransformer {
|
|
43
53
|
predicate(node) {
|
|
44
54
|
return node.kind === _typescript().default.SyntaxKind.TypeAliasDeclaration;
|
|
@@ -55,10 +65,9 @@ class TypeAliasTransformer {
|
|
|
55
65
|
async transform(typeAlias, context) {
|
|
56
66
|
var _info$body;
|
|
57
67
|
|
|
58
|
-
|
|
68
|
+
const type = await (0, _typeNodeToSchema().typeNodeToSchema)(typeAlias.type, context);
|
|
59
69
|
const info = await context.getQuickInfo(typeAlias.name);
|
|
60
70
|
const displaySig = info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString;
|
|
61
|
-
const type = await context.computeSchema(typeAlias.type);
|
|
62
71
|
return new (_semanticsEntities().TypeSchema)(this.getName(typeAlias), type, displaySig);
|
|
63
72
|
}
|
|
64
73
|
|
|
@@ -1 +1 @@
|
|
|
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","info","getQuickInfo","displaySig","body","displayString","
|
|
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"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ParameterSchema } from '@teambit/semantics.entities.semantic-schema';
|
|
2
2
|
import { ParameterDeclaration, NodeArray } from 'typescript';
|
|
3
3
|
import { SchemaExtractorContext } from '../../schema-extractor-context';
|
|
4
|
-
export declare function getParams(parameterNodes: NodeArray<ParameterDeclaration>, context: SchemaExtractorContext): Promise<
|
|
4
|
+
export declare function getParams(parameterNodes: NodeArray<ParameterDeclaration>, context: SchemaExtractorContext): Promise<ParameterSchema[]>;
|
|
@@ -39,28 +39,30 @@ function _parseTypeFromQuickInfo() {
|
|
|
39
39
|
return data;
|
|
40
40
|
}
|
|
41
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
|
+
|
|
42
52
|
async function getParams(parameterNodes, context) {
|
|
43
53
|
return (0, _pMapSeries().default)(parameterNodes, async param => {
|
|
44
|
-
return
|
|
45
|
-
name: param.name.getText(),
|
|
46
|
-
type: await getParamType(param, context),
|
|
47
|
-
defaultValue: param.initializer ? param.initializer.getText() : undefined
|
|
48
|
-
};
|
|
54
|
+
return new (_semanticsEntities().ParameterSchema)(param.name.getText(), await getParamType(param, context), param.initializer ? param.initializer.getText() : undefined);
|
|
49
55
|
});
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
async function getParamType(param, context) {
|
|
53
|
-
var _info$body;
|
|
54
|
-
|
|
55
59
|
if (param.type) {
|
|
56
|
-
const type = param.type;
|
|
57
|
-
|
|
58
|
-
return context.resolveType(type, (type === null || type === void 0 ? void 0 : type.getText()) || 'any');
|
|
60
|
+
const type = param.type;
|
|
61
|
+
return (0, _typeNodeToSchema().typeNodeToSchema)(type, context);
|
|
59
62
|
}
|
|
60
63
|
|
|
61
64
|
const info = await context.getQuickInfo(param.name);
|
|
62
|
-
const
|
|
63
|
-
const parsed = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(displaySig);
|
|
65
|
+
const parsed = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
64
66
|
return new (_semanticsEntities().TypeRefSchema)(parsed || 'any');
|
|
65
67
|
}
|
|
66
68
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["get-params.ts"],"names":["getParams","parameterNodes","context","param","
|
|
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"]}
|
|
@@ -1,2 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
require("core-js/modules/es.array.iterator.js");
|
|
4
|
+
|
|
3
5
|
require("core-js/modules/es.regexp.exec.js");
|
|
4
6
|
|
|
5
7
|
require("core-js/modules/es.string.trim.js");
|
|
@@ -10,15 +12,99 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
10
12
|
exports.parseReturnTypeFromQuickInfo = parseReturnTypeFromQuickInfo;
|
|
11
13
|
exports.parseTypeFromQuickInfo = parseTypeFromQuickInfo;
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
+
}
|
|
17
103
|
}
|
|
18
104
|
|
|
19
|
-
function parseReturnTypeFromQuickInfo(
|
|
20
|
-
if (!
|
|
21
|
-
const typeStr = parseTypeFromQuickInfo(
|
|
105
|
+
function parseReturnTypeFromQuickInfo(quickInfo) {
|
|
106
|
+
if (!quickInfo) return '';
|
|
107
|
+
const typeStr = parseTypeFromQuickInfo(quickInfo);
|
|
22
108
|
const array = typeStr.split('=>');
|
|
23
109
|
return array[array.length - 1].trim();
|
|
24
110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["parse-type-from-quick-info.ts"],"names":["parseTypeFromQuickInfo","displayString","
|
|
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>;
|