@teambit/typescript 0.0.741 → 0.0.744
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/transformers/class-deceleration.js +10 -40
- package/dist/transformers/class-deceleration.js.map +1 -1
- package/dist/transformers/index.d.ts +0 -6
- package/dist/transformers/index.js +0 -96
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/interface-declaration.js +13 -6
- package/dist/transformers/interface-declaration.js.map +1 -1
- package/dist/transformers/utils/class-element-to-schema.d.ts +4 -0
- package/dist/transformers/utils/class-element-to-schema.js +122 -0
- package/dist/transformers/utils/class-element-to-schema.js.map +1 -0
- package/dist/transformers/utils/jsdoc-to-doc-schema.d.ts +4 -0
- package/dist/transformers/utils/jsdoc-to-doc-schema.js +163 -0
- package/dist/transformers/utils/jsdoc-to-doc-schema.js.map +1 -0
- package/dist/transformers/utils/to-function-schema.d.ts +1 -1
- package/dist/transformers/utils/to-function-schema.js +17 -7
- package/dist/transformers/utils/to-function-schema.js.map +1 -1
- package/dist/transformers/utils/type-element-to-schema.d.ts +7 -0
- package/dist/transformers/utils/type-element-to-schema.js +134 -0
- package/dist/transformers/utils/type-element-to-schema.js.map +1 -0
- package/dist/transformers/utils/type-node-to-schema.js +32 -7
- package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
- package/dist/transformers/variable-declaration.js +15 -1
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/typescript.extractor.js +1 -1
- package/dist/typescript.extractor.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.744.tgz +0 -0
- package/package.json +17 -17
- package/{preview-1653494536947.js → preview-1653827208409.js} +2 -2
- package/transformers/class-deceleration.ts +7 -26
- package/transformers/index.ts +0 -6
- package/transformers/interface-declaration.ts +4 -6
- package/transformers/utils/class-element-to-schema.ts +61 -0
- package/transformers/utils/jsdoc-to-doc-schema.ts +81 -0
- package/transformers/utils/to-function-schema.ts +12 -8
- package/transformers/utils/type-element-to-schema.ts +72 -0
- package/transformers/utils/type-node-to-schema.ts +15 -6
- package/transformers/variable-declaration.ts +5 -2
- package/dist/transformers/constructor.d.ts +0 -10
- package/dist/transformers/constructor.js +0 -70
- package/dist/transformers/constructor.js.map +0 -1
- package/dist/transformers/index-signature.d.ts +0 -9
- package/dist/transformers/index-signature.js +0 -71
- package/dist/transformers/index-signature.js.map +0 -1
- package/dist/transformers/method-declaration.d.ts +0 -11
- package/dist/transformers/method-declaration.js +0 -65
- package/dist/transformers/method-declaration.js.map +0 -1
- package/dist/transformers/method-signature.d.ts +0 -10
- package/dist/transformers/method-signature.js +0 -53
- package/dist/transformers/method-signature.js.map +0 -1
- package/dist/transformers/property-declaration.d.ts +0 -11
- package/dist/transformers/property-declaration.js +0 -80
- package/dist/transformers/property-declaration.js.map +0 -1
- package/dist/transformers/property-signature.d.ts +0 -10
- package/dist/transformers/property-signature.js +0 -72
- package/dist/transformers/property-signature.js.map +0 -1
- package/package-tar/teambit-typescript-0.0.741.tgz +0 -0
- package/transformers/constructor.ts +0 -22
- package/transformers/index-signature.ts +0 -22
- package/transformers/method-declaration.ts +0 -24
- package/transformers/method-signature.ts +0 -23
- package/transformers/property-declaration.ts +0 -30
- package/transformers/property-signature.ts +0 -28
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsDocToDocSchema","node","context","canHaveJsDoc","undefined","jsDocs","getJsDoc","length","jsDoc","location","getLocation","comment","getTextOfJSDocComment","tags","pMapSeries","tag","tagParser","DocSchema","tagName","getText","kind","SyntaxKind","JSDocReturnTag","returnTag","JSDocAugmentsTag","TagName","augments","JSDocAuthorTag","author","JSDocClassTag","class","JSDocCallbackTag","callback","JSDocPublicTag","public","JSDocPrivateTag","private","JSDocProtectedTag","protected","JSDocReadonlyTag","readonly","JSDocOverrideTag","override","JSDocDeprecatedTag","deprecated","JSDocSeeTag","see","JSDocEnumTag","enum","JSDocParameterTag","parameter","JSDocThisTag","this","JSDocTypeTag","type","JSDocTemplateTag","template","JSDocTypedefTag","typedef","JSDocPropertyTag","property","JSDocImplementsTag","implements","simpleTag","TagSchema","typeExpression","typeNodeToSchema","ReturnTagSchema","return"],"sources":["jsdoc-to-doc-schema.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\nimport { getTextOfJSDocComment, JSDocReturnTag, JSDocTag, Node, SyntaxKind } from 'typescript';\nimport { getJsDoc, canHaveJsDoc } from 'tsutils';\nimport pMapSeries from 'p-map-series';\nimport { DocSchema, ReturnTagSchema, TagName, TagSchema } 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, comment, tags);\n}\n\nasync function tagParser(tag: JSDocTag, context: SchemaExtractorContext): Promise<TagSchema> {\n let tagName: TagName | string = tag.tagName.getText();\n switch (tag.kind) {\n case SyntaxKind.JSDocReturnTag:\n return returnTag(tag as JSDocReturnTag, context);\n case SyntaxKind.JSDocAugmentsTag:\n tagName = TagName.augments;\n case SyntaxKind.JSDocAuthorTag:\n tagName = TagName.author;\n case SyntaxKind.JSDocClassTag:\n tagName = TagName.class;\n case SyntaxKind.JSDocCallbackTag:\n tagName = TagName.callback;\n case SyntaxKind.JSDocPublicTag:\n tagName = TagName.public;\n case SyntaxKind.JSDocPrivateTag:\n tagName = TagName.private;\n case SyntaxKind.JSDocProtectedTag:\n tagName = TagName.protected;\n case SyntaxKind.JSDocReadonlyTag:\n tagName = TagName.readonly;\n case SyntaxKind.JSDocOverrideTag:\n tagName = TagName.override;\n case SyntaxKind.JSDocDeprecatedTag:\n tagName = TagName.deprecated;\n case SyntaxKind.JSDocSeeTag:\n tagName = TagName.see;\n case SyntaxKind.JSDocEnumTag:\n tagName = TagName.enum;\n case SyntaxKind.JSDocParameterTag:\n tagName = TagName.parameter;\n case SyntaxKind.JSDocThisTag:\n tagName = TagName.this;\n case SyntaxKind.JSDocTypeTag:\n tagName = TagName.type;\n case SyntaxKind.JSDocTemplateTag:\n tagName = TagName.template;\n case SyntaxKind.JSDocTypedefTag:\n tagName = TagName.typedef;\n case SyntaxKind.JSDocPropertyTag:\n tagName = TagName.property;\n case SyntaxKind.JSDocImplementsTag:\n tagName = TagName.implements;\n default:\n return simpleTag(tag, tagName, context);\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), TagName.return, getTextOfJSDocComment(tag.comment), type);\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { SignatureDeclaration } from 'typescript';
|
|
2
2
|
import { FunctionLikeSchema } from '@teambit/semantics.entities.semantic-schema';
|
|
3
3
|
import { SchemaExtractorContext } from '../../schema-extractor-context';
|
|
4
|
-
export declare function toFunctionLikeSchema(node: SignatureDeclaration, context: SchemaExtractorContext): Promise<FunctionLikeSchema>;
|
|
4
|
+
export declare function toFunctionLikeSchema(node: SignatureDeclaration, context: SchemaExtractorContext, funcName?: string): Promise<FunctionLikeSchema>;
|
|
@@ -37,19 +37,29 @@ function _parseTypeFromQuickInfo() {
|
|
|
37
37
|
return data;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
function _jsdocToDocSchema() {
|
|
41
|
+
const data = require("./jsdoc-to-doc-schema");
|
|
42
|
+
|
|
43
|
+
_jsdocToDocSchema = function () {
|
|
44
|
+
return data;
|
|
45
|
+
};
|
|
42
46
|
|
|
43
|
-
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async function toFunctionLikeSchema(node, context, funcName) {
|
|
51
|
+
var _node$name, _info$body, _node$modifiers;
|
|
44
52
|
|
|
45
|
-
const
|
|
46
|
-
const
|
|
53
|
+
const name = funcName || ((_node$name = node.name) === null || _node$name === void 0 ? void 0 : _node$name.getText()) || '';
|
|
54
|
+
const info = node.name ? await context.getQuickInfo(node.name) : null;
|
|
55
|
+
const returnTypeStr = info ? (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info) : 'any';
|
|
47
56
|
const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
|
|
48
57
|
const args = await (0, _getParams().getParams)(node.parameters, context);
|
|
49
|
-
const returnType = await context.resolveType(node, returnTypeStr);
|
|
58
|
+
const returnType = await context.resolveType(node, returnTypeStr, Boolean(info));
|
|
50
59
|
const modifiers = ((_node$modifiers = node.modifiers) === null || _node$modifiers === void 0 ? void 0 : _node$modifiers.map(modifier => modifier.getText())) || [];
|
|
51
60
|
const location = context.getLocation(node);
|
|
52
|
-
|
|
61
|
+
const doc = await (0, _jsdocToDocSchema().jsDocToDocSchema)(node, context);
|
|
62
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, args, returnType, displaySig, modifiers, doc);
|
|
53
63
|
}
|
|
54
64
|
|
|
55
65
|
//# sourceMappingURL=to-function-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["toFunctionLikeSchema","node","context","name","getText","info","getQuickInfo","returnTypeStr","parseTypeFromQuickInfo","displaySig","body","displayString","args","getParams","parameters","returnType","resolveType","modifiers","map","modifier","location","getLocation","FunctionLikeSchema"],"sources":["to-function-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';\n\nexport async function toFunctionLikeSchema(node: SignatureDeclaration
|
|
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","location","getLocation","doc","jsDocToDocSchema","FunctionLikeSchema"],"sources":["to-function-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 location = context.getLocation(node);\n const doc = await jsDocToDocSchema(node, context);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\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,QAAQ,GAAGpB,OAAO,CAACqB,WAAR,CAAoBtB,IAApB,CAAjB;EACA,MAAMuB,GAAG,GAAG,MAAM,IAAAC,oCAAA,EAAiBxB,IAAjB,EAAuBC,OAAvB,CAAlB;EACA,OAAO,KAAIwB,uCAAJ,EAAuBJ,QAAvB,EAAiClB,IAAjC,EAAuCS,IAAvC,EAA6CG,UAA7C,EAAyDN,UAAzD,EAAqES,SAArE,EAA8FK,GAA9F,CAAP;AACD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TypeElement, IndexSignatureDeclaration, GetAccessorDeclaration, SetAccessorDeclaration } from 'typescript';
|
|
2
|
+
import { GetAccessorSchema, IndexSignatureSchema, SchemaNode, SetAccessorSchema } from '@teambit/semantics.entities.semantic-schema';
|
|
3
|
+
import { SchemaExtractorContext } from '../../schema-extractor-context';
|
|
4
|
+
export declare function typeElementToSchema(node: TypeElement, context: SchemaExtractorContext): Promise<SchemaNode>;
|
|
5
|
+
export declare function indexSignature(node: IndexSignatureDeclaration, context: SchemaExtractorContext): Promise<IndexSignatureSchema>;
|
|
6
|
+
export declare function getAccessor(node: GetAccessorDeclaration, context: SchemaExtractorContext): Promise<GetAccessorSchema>;
|
|
7
|
+
export declare function setAccessor(node: SetAccessorDeclaration, context: SchemaExtractorContext): Promise<SetAccessorSchema>;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.promise.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getAccessor = getAccessor;
|
|
9
|
+
exports.indexSignature = indexSignature;
|
|
10
|
+
exports.setAccessor = setAccessor;
|
|
11
|
+
exports.typeElementToSchema = typeElementToSchema;
|
|
12
|
+
|
|
13
|
+
function _typescript() {
|
|
14
|
+
const data = require("typescript");
|
|
15
|
+
|
|
16
|
+
_typescript = function () {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function _semanticsEntities() {
|
|
24
|
+
const data = require("@teambit/semantics.entities.semantic-schema");
|
|
25
|
+
|
|
26
|
+
_semanticsEntities = function () {
|
|
27
|
+
return data;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function _toFunctionSchema() {
|
|
34
|
+
const data = require("./to-function-schema");
|
|
35
|
+
|
|
36
|
+
_toFunctionSchema = function () {
|
|
37
|
+
return data;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function _parseTypeFromQuickInfo() {
|
|
44
|
+
const data = require("./parse-type-from-quick-info");
|
|
45
|
+
|
|
46
|
+
_parseTypeFromQuickInfo = function () {
|
|
47
|
+
return data;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function _typeNodeToSchema() {
|
|
54
|
+
const data = require("./type-node-to-schema");
|
|
55
|
+
|
|
56
|
+
_typeNodeToSchema = function () {
|
|
57
|
+
return data;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function _getParams() {
|
|
64
|
+
const data = require("./get-params");
|
|
65
|
+
|
|
66
|
+
_getParams = function () {
|
|
67
|
+
return data;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
return data;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async function typeElementToSchema(node, context) {
|
|
74
|
+
switch (node.kind) {
|
|
75
|
+
case _typescript().SyntaxKind.MethodSignature:
|
|
76
|
+
return (0, _toFunctionSchema().toFunctionLikeSchema)(node, context);
|
|
77
|
+
|
|
78
|
+
case _typescript().SyntaxKind.ConstructSignature:
|
|
79
|
+
return (0, _toFunctionSchema().toFunctionLikeSchema)(node, context, 'new');
|
|
80
|
+
|
|
81
|
+
case _typescript().SyntaxKind.CallSignature:
|
|
82
|
+
throw new Error(`CallSignature was not implemented yet`);
|
|
83
|
+
|
|
84
|
+
case _typescript().SyntaxKind.PropertySignature:
|
|
85
|
+
return propertySignature(node, context);
|
|
86
|
+
|
|
87
|
+
case _typescript().SyntaxKind.IndexSignature:
|
|
88
|
+
return indexSignature(node, context);
|
|
89
|
+
|
|
90
|
+
case _typescript().SyntaxKind.GetAccessor:
|
|
91
|
+
return getAccessor(node, context);
|
|
92
|
+
|
|
93
|
+
case _typescript().SyntaxKind.SetAccessor:
|
|
94
|
+
return setAccessor(node, context);
|
|
95
|
+
|
|
96
|
+
default:
|
|
97
|
+
throw new Error(`typeElementToSchema expect type-element node. got ${node.kind}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async function propertySignature(node, context) {
|
|
102
|
+
var _info$body;
|
|
103
|
+
|
|
104
|
+
const name = node.name.getText();
|
|
105
|
+
const info = (0, _typescript().isComputedPropertyName)(node.name) ? undefined : await context.getQuickInfo(node.name);
|
|
106
|
+
const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
|
|
107
|
+
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
108
|
+
const type = await context.resolveType(node, typeStr);
|
|
109
|
+
return new (_semanticsEntities().VariableSchema)(context.getLocation(node), name, displaySig, type);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async function indexSignature(node, context) {
|
|
113
|
+
const params = await (0, _getParams().getParams)(node.parameters, context);
|
|
114
|
+
const type = await (0, _typeNodeToSchema().typeNodeToSchema)(node.type, context);
|
|
115
|
+
return new (_semanticsEntities().IndexSignatureSchema)(context.getLocation(node), params, type);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
async function getAccessor(node, context) {
|
|
119
|
+
var _info$body2;
|
|
120
|
+
|
|
121
|
+
const info = await context.getQuickInfo(node.name);
|
|
122
|
+
const displaySig = (info === null || info === void 0 ? void 0 : (_info$body2 = info.body) === null || _info$body2 === void 0 ? void 0 : _info$body2.displayString) || '';
|
|
123
|
+
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
124
|
+
const type = await context.resolveType(node, typeStr);
|
|
125
|
+
return new (_semanticsEntities().GetAccessorSchema)(context.getLocation(node), node.name.getText(), type, displaySig);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async function setAccessor(node, context) {
|
|
129
|
+
const params = await (0, _getParams().getParams)(node.parameters, context);
|
|
130
|
+
const displaySig = await context.getQuickInfoDisplayString(node.name);
|
|
131
|
+
return new (_semanticsEntities().SetAccessorSchema)(context.getLocation(node), node.name.getText(), params[0], displaySig);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
//# sourceMappingURL=type-element-to-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["typeElementToSchema","node","context","kind","SyntaxKind","MethodSignature","toFunctionLikeSchema","ConstructSignature","CallSignature","Error","PropertySignature","propertySignature","IndexSignature","indexSignature","GetAccessor","getAccessor","SetAccessor","setAccessor","name","getText","info","isComputedPropertyName","undefined","getQuickInfo","displaySig","body","displayString","typeStr","parseTypeFromQuickInfo","type","resolveType","VariableSchema","getLocation","params","getParams","parameters","typeNodeToSchema","IndexSignatureSchema","GetAccessorSchema","getQuickInfoDisplayString","SetAccessorSchema"],"sources":["type-element-to-schema.ts"],"sourcesContent":["import ts, {\n SyntaxKind,\n TypeElement,\n MethodSignature,\n isComputedPropertyName,\n IndexSignatureDeclaration,\n GetAccessorDeclaration,\n SetAccessorDeclaration,\n ConstructSignatureDeclaration,\n} from 'typescript';\nimport {\n GetAccessorSchema,\n IndexSignatureSchema,\n SchemaNode,\n SetAccessorSchema,\n VariableSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport { toFunctionLikeSchema } from './to-function-schema';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { parseTypeFromQuickInfo } from './parse-type-from-quick-info';\nimport { typeNodeToSchema } from './type-node-to-schema';\nimport { getParams } from './get-params';\n\nexport async function typeElementToSchema(node: TypeElement, context: SchemaExtractorContext): Promise<SchemaNode> {\n switch (node.kind) {\n case SyntaxKind.MethodSignature:\n return toFunctionLikeSchema(node as MethodSignature, context);\n case SyntaxKind.ConstructSignature:\n return toFunctionLikeSchema(node as ConstructSignatureDeclaration, context, 'new');\n case SyntaxKind.CallSignature:\n throw new Error(`CallSignature was not implemented yet`);\n case SyntaxKind.PropertySignature:\n return propertySignature(node as ts.PropertySignature, context);\n case SyntaxKind.IndexSignature:\n return indexSignature(node as IndexSignatureDeclaration, context);\n case SyntaxKind.GetAccessor:\n return getAccessor(node as GetAccessorDeclaration, context);\n case SyntaxKind.SetAccessor:\n return setAccessor(node as SetAccessorDeclaration, context);\n default:\n throw new Error(`typeElementToSchema expect type-element node. got ${node.kind}`);\n }\n}\n\nasync function propertySignature(node: ts.PropertySignature, context: SchemaExtractorContext) {\n const name = node.name.getText();\n const info = isComputedPropertyName(node.name) ? undefined : await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n return new VariableSchema(context.getLocation(node), name, displaySig, type);\n}\n\nexport async function indexSignature(node: IndexSignatureDeclaration, context: SchemaExtractorContext) {\n const params = await getParams(node.parameters, context);\n const type = await typeNodeToSchema(node.type, context);\n return new IndexSignatureSchema(context.getLocation(node), params, type);\n}\n\nexport async function getAccessor(node: GetAccessorDeclaration, context: SchemaExtractorContext) {\n const info = await context.getQuickInfo(node.name);\n const displaySig = info?.body?.displayString || '';\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(node, typeStr);\n return new GetAccessorSchema(context.getLocation(node), node.name.getText(), type, displaySig);\n}\n\nexport async function setAccessor(node: SetAccessorDeclaration, context: SchemaExtractorContext) {\n const params = await getParams(node.parameters, context);\n const displaySig = await context.getQuickInfoDisplayString(node.name);\n return new SetAccessorSchema(context.getLocation(node), node.name.getText(), params[0], displaySig);\n}\n"],"mappings":"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"}
|
|
@@ -49,6 +49,26 @@ function _getParams() {
|
|
|
49
49
|
return data;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
function _typeElementToSchema() {
|
|
53
|
+
const data = require("./type-element-to-schema");
|
|
54
|
+
|
|
55
|
+
_typeElementToSchema = function () {
|
|
56
|
+
return data;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
return data;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function _jsdocToDocSchema() {
|
|
63
|
+
const data = require("./jsdoc-to-doc-schema");
|
|
64
|
+
|
|
65
|
+
_jsdocToDocSchema = function () {
|
|
66
|
+
return data;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
return data;
|
|
70
|
+
}
|
|
71
|
+
|
|
52
72
|
// eslint-disable-next-line complexity
|
|
53
73
|
async function typeNodeToSchema(node, context) {
|
|
54
74
|
const location = context.getLocation(node);
|
|
@@ -104,13 +124,15 @@ async function typeNodeToSchema(node, context) {
|
|
|
104
124
|
case _typescript().SyntaxKind.TemplateLiteralType:
|
|
105
125
|
return templateLiteralType(node, context);
|
|
106
126
|
|
|
127
|
+
case _typescript().SyntaxKind.ThisType:
|
|
128
|
+
return thisType(node, context);
|
|
129
|
+
|
|
107
130
|
case _typescript().SyntaxKind.ConstructorType:
|
|
108
131
|
case _typescript().SyntaxKind.NamedTupleMember:
|
|
109
132
|
case _typescript().SyntaxKind.OptionalType:
|
|
110
133
|
case _typescript().SyntaxKind.RestType:
|
|
111
134
|
case _typescript().SyntaxKind.ConditionalType:
|
|
112
135
|
case _typescript().SyntaxKind.InferType:
|
|
113
|
-
case _typescript().SyntaxKind.ThisType:
|
|
114
136
|
case _typescript().SyntaxKind.MappedType:
|
|
115
137
|
case _typescript().SyntaxKind.ImportType:
|
|
116
138
|
case _typescript().SyntaxKind.ExpressionWithTypeArguments:
|
|
@@ -183,10 +205,7 @@ async function unionType(node, context) {
|
|
|
183
205
|
|
|
184
206
|
|
|
185
207
|
async function typeLiteral(node, context) {
|
|
186
|
-
const members = await (0, _pMapSeries().default)(node.members,
|
|
187
|
-
const typeSchema = await context.computeSchema(member);
|
|
188
|
-
return typeSchema;
|
|
189
|
-
});
|
|
208
|
+
const members = await (0, _pMapSeries().default)(node.members, member => (0, _typeElementToSchema().typeElementToSchema)(member, context));
|
|
190
209
|
const location = context.getLocation(node);
|
|
191
210
|
return new (_semanticsEntities().TypeLiteralSchema)(location, members);
|
|
192
211
|
}
|
|
@@ -212,13 +231,15 @@ async function typeReference(node, context) {
|
|
|
212
231
|
}
|
|
213
232
|
|
|
214
233
|
async function functionType(node, context) {
|
|
215
|
-
var _node$name;
|
|
234
|
+
var _node$name, _node$modifiers;
|
|
216
235
|
|
|
217
236
|
const name = ((_node$name = node.name) === null || _node$name === void 0 ? void 0 : _node$name.getText()) || '';
|
|
218
237
|
const params = await (0, _getParams().getParams)(node.parameters, context);
|
|
219
238
|
const returnType = await typeNodeToSchema(node.type, context);
|
|
220
239
|
const location = context.getLocation(node);
|
|
221
|
-
|
|
240
|
+
const modifiers = ((_node$modifiers = node.modifiers) === null || _node$modifiers === void 0 ? void 0 : _node$modifiers.map(modifier => modifier.getText())) || [];
|
|
241
|
+
const doc = await (0, _jsdocToDocSchema().jsDocToDocSchema)(node, context);
|
|
242
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, params, returnType, '', modifiers, doc);
|
|
222
243
|
}
|
|
223
244
|
/**
|
|
224
245
|
* e.g. `typeof Foo`
|
|
@@ -302,4 +323,8 @@ async function templateLiteralTypeSpan(node, context) {
|
|
|
302
323
|
return new (_semanticsEntities().TemplateLiteralTypeSpanSchema)(context.getLocation(node), literal, type);
|
|
303
324
|
}
|
|
304
325
|
|
|
326
|
+
async function thisType(node, context) {
|
|
327
|
+
return new (_semanticsEntities().ThisTypeSchema)(context.getLocation(node));
|
|
328
|
+
}
|
|
329
|
+
|
|
305
330
|
//# sourceMappingURL=type-node-to-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["typeNodeToSchema","node","context","location","getLocation","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","ParenthesizedType","parenthesizedType","TypePredicate","typePredicate","IndexedAccessType","indexedAccessType","TemplateLiteralTypeSpan","templateLiteralTypeSpan","TemplateLiteralType","templateLiteralType","ConstructorType","NamedTupleMember","OptionalType","RestType","ConditionalType","InferType","ThisType","MappedType","ImportType","ExpressionWithTypeArguments","JSDocTypeExpression","JSDocAllType","JSDocUnknownType","JSDocNonNullableType","JSDocNullableType","JSDocOptionalType","JSDocFunctionType","JSDocVariadicType","JSDocNamepathType","JSDocSignature","JSDocTypeLiteral","Error","AnyKeyword","BigIntKeyword","BooleanKeyword","IntrinsicKeyword","NeverKeyword","NumberKeyword","ObjectKeyword","StringKeyword","SymbolKeyword","UndefinedKeyword","UnknownKeyword","VoidKeyword","types","pMapSeries","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","computeSchema","TypeLiteralSchema","name","typeName","resolveType","typeArguments","TypeRefSchema","args","arg","typeArgs","params","getParams","parameters","returnType","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema","ParenthesizedTypeSchema","parameterName","isIdentifier","undefined","hasAssertsModifier","Boolean","assertsModifier","TypePredicateSchema","objectType","indexType","IndexedAccessSchema","templateSpans","span","head","text","TemplateLiteralTypeSchema","literal","TemplateLiteralTypeSpanSchema"],"sources":["type-node-to-schema.ts"],"sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n ParenthesizedTypeNode,\n TypePredicateNode,\n isIdentifier,\n IndexedAccessTypeNode,\n TemplateLiteralTypeNode,\n TemplateLiteralTypeSpan,\n} from 'typescript';\nimport {\n SchemaNode,\n TypeRefSchema,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\n ParenthesizedTypeSchema,\n TypePredicateSchema,\n IndexedAccessSchema,\n TemplateLiteralTypeSpanSchema,\n TemplateLiteralTypeSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\n\n// eslint-disable-next-line complexity\nexport async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const location = context.getLocation(node);\n if (isKeywordType(node)) {\n return new KeywordTypeSchema(location, node.getText());\n }\n switch (node.kind) {\n case SyntaxKind.IntersectionType:\n return intersectionType(node as IntersectionTypeNode, context);\n case SyntaxKind.UnionType:\n return unionType(node as UnionTypeNode, context);\n case SyntaxKind.TypeReference:\n return typeReference(node as TypeReferenceNode, context);\n case SyntaxKind.TypeLiteral:\n return typeLiteral(node as TypeLiteralNode, context);\n case SyntaxKind.LiteralType: // e.g. string/boolean\n return new LiteralTypeSchema(location, node.getText());\n case SyntaxKind.FunctionType:\n return functionType(node as FunctionTypeNode, context);\n case SyntaxKind.TypeQuery:\n return typeQuery(node as TypeQueryNode, context);\n case SyntaxKind.ArrayType:\n return arrayType(node as ArrayTypeNode, context);\n case SyntaxKind.TypeOperator:\n return typeOperator(node as TypeOperatorNode, context);\n case SyntaxKind.TupleType:\n return tupleType(node as TupleTypeNode, context);\n case SyntaxKind.ParenthesizedType:\n return parenthesizedType(node as ParenthesizedTypeNode, context);\n case SyntaxKind.TypePredicate:\n return typePredicate(node as TypePredicateNode, context);\n case SyntaxKind.IndexedAccessType:\n return indexedAccessType(node as IndexedAccessTypeNode, context);\n case SyntaxKind.TemplateLiteralTypeSpan:\n return templateLiteralTypeSpan(node as TemplateLiteralTypeSpan, context);\n case SyntaxKind.TemplateLiteralType:\n return templateLiteralType(node as TemplateLiteralTypeNode, context);\n case SyntaxKind.ConstructorType:\n case SyntaxKind.NamedTupleMember:\n case SyntaxKind.OptionalType:\n case SyntaxKind.RestType:\n case SyntaxKind.ConditionalType:\n case SyntaxKind.InferType:\n case SyntaxKind.ThisType:\n case SyntaxKind.MappedType:\n case SyntaxKind.ImportType:\n case SyntaxKind.ExpressionWithTypeArguments:\n case SyntaxKind.JSDocTypeExpression:\n case SyntaxKind.JSDocAllType:\n case SyntaxKind.JSDocUnknownType:\n case SyntaxKind.JSDocNonNullableType:\n case SyntaxKind.JSDocNullableType:\n case SyntaxKind.JSDocOptionalType:\n case SyntaxKind.JSDocFunctionType:\n case SyntaxKind.JSDocVariadicType:\n case SyntaxKind.JSDocNamepathType:\n case SyntaxKind.JSDocSignature:\n case SyntaxKind.JSDocTypeLiteral:\n throw new Error(`TypeNode ${node.kind} (probably ${SyntaxKind[node.kind]}) was not implemented yet.\ncontext: ${node.getText()}`);\n default:\n throw new Error(`Node ${node.kind} (probably ${SyntaxKind[node.kind]}) is not a TypeNode.\ncontext: ${node.getText()}`);\n }\n}\n\n/**\n * whether it's kind of `ts.KeywordTypeSyntaxKind`\n */\nfunction isKeywordType(node: TypeNode): node is KeywordTypeNode {\n switch (node.kind) {\n case SyntaxKind.AnyKeyword:\n case SyntaxKind.BigIntKeyword:\n case SyntaxKind.BooleanKeyword:\n case SyntaxKind.IntrinsicKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.NumberKeyword:\n case SyntaxKind.ObjectKeyword:\n case SyntaxKind.StringKeyword:\n case SyntaxKind.SymbolKeyword:\n case SyntaxKind.UndefinedKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.VoidKeyword:\n return true;\n default:\n return false;\n }\n}\n\nasync function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeIntersectionSchema(location, types);\n}\n\nasync function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeUnionSchema(location, types);\n}\n\n/**\n * not to be confused with \"LiteralType\", which is string/boolean/null.\n * this \"TypeLiteral\" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.\n */\nasync function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {\n const members = await pMapSeries(node.members, async (member) => {\n const typeSchema = await context.computeSchema(member);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeLiteralSchema(location, members);\n}\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nasync function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n const type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => typeNodeToSchema(arg, context));\n type.typeArgs = args;\n }\n return type;\n}\n\nasync function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = node.name?.getText() || '';\n const params = await getParams(node.parameters, context);\n const returnType = await typeNodeToSchema(node.type, context);\n const location = context.getLocation(node);\n return new FunctionLikeSchema(location, name, params, returnType, '');\n}\n\n/**\n * e.g. `typeof Foo`\n */\nasync function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n const location = context.getLocation(node);\n return new TypeQuerySchema(location, type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n const location = context.getLocation(node);\n return new TypeArraySchema(location, type);\n}\n\n/**\n * e.g. keyof typeof Foo\n */\nasync function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {\n const operatorName = getOperatorName(node.operator);\n const type = await typeNodeToSchema(node.type, context);\n return new TypeOperatorSchema(context.getLocation(node), operatorName, type);\n}\n\nfunction getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {\n switch (operator) {\n case SyntaxKind.KeyOfKeyword:\n return 'keyof';\n case SyntaxKind.UniqueKeyword:\n return 'unique';\n case SyntaxKind.ReadonlyKeyword:\n return 'readonly';\n default:\n throw new Error(`getOperatorName: unable to find operator name for ${operator}`);\n }\n}\n\nasync function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {\n const elements = await pMapSeries(node.elements, async (elem) => {\n const typeSchema = await typeNodeToSchema(elem, context);\n return typeSchema;\n });\n return new TupleTypeSchema(context.getLocation(node), elements);\n}\n\nasync function parenthesizedType(node: ParenthesizedTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n return new ParenthesizedTypeSchema(context.getLocation(node), type);\n}\n\nasync function typePredicate(node: TypePredicateNode, context: SchemaExtractorContext) {\n const parameterName = isIdentifier(node.parameterName) ? node.parameterName.getText() : 'this';\n const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;\n const hasAssertsModifier = Boolean(node.assertsModifier);\n return new TypePredicateSchema(context.getLocation(node), parameterName, type, hasAssertsModifier);\n}\n\nasync function indexedAccessType(node: IndexedAccessTypeNode, context: SchemaExtractorContext) {\n const objectType = await typeNodeToSchema(node.objectType, context);\n const indexType = await typeNodeToSchema(node.indexType, context);\n return new IndexedAccessSchema(context.getLocation(node), objectType, indexType);\n}\n\nasync function templateLiteralType(node: TemplateLiteralTypeNode, context: SchemaExtractorContext) {\n const templateSpans = await pMapSeries(node.templateSpans, (span) => templateLiteralTypeSpan(span, context));\n const head = node.head.text;\n return new TemplateLiteralTypeSchema(context.getLocation(node), head, templateSpans);\n}\n\nasync function templateLiteralTypeSpan(node: TemplateLiteralTypeSpan, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n const literal = node.literal.text;\n return new TemplateLiteralTypeSpanSchema(context.getLocation(node), literal, type);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["typeNodeToSchema","node","context","location","getLocation","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","ParenthesizedType","parenthesizedType","TypePredicate","typePredicate","IndexedAccessType","indexedAccessType","TemplateLiteralTypeSpan","templateLiteralTypeSpan","TemplateLiteralType","templateLiteralType","ThisType","thisType","ConstructorType","NamedTupleMember","OptionalType","RestType","ConditionalType","InferType","MappedType","ImportType","ExpressionWithTypeArguments","JSDocTypeExpression","JSDocAllType","JSDocUnknownType","JSDocNonNullableType","JSDocNullableType","JSDocOptionalType","JSDocFunctionType","JSDocVariadicType","JSDocNamepathType","JSDocSignature","JSDocTypeLiteral","Error","AnyKeyword","BigIntKeyword","BooleanKeyword","IntrinsicKeyword","NeverKeyword","NumberKeyword","ObjectKeyword","StringKeyword","SymbolKeyword","UndefinedKeyword","UnknownKeyword","VoidKeyword","types","pMapSeries","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","typeElementToSchema","TypeLiteralSchema","name","typeName","resolveType","typeArguments","TypeRefSchema","args","arg","typeArgs","params","getParams","parameters","returnType","modifiers","map","modifier","doc","jsDocToDocSchema","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema","ParenthesizedTypeSchema","parameterName","isIdentifier","undefined","hasAssertsModifier","Boolean","assertsModifier","TypePredicateSchema","objectType","indexType","IndexedAccessSchema","templateSpans","span","head","text","TemplateLiteralTypeSchema","literal","TemplateLiteralTypeSpanSchema","ThisTypeSchema"],"sources":["type-node-to-schema.ts"],"sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n ParenthesizedTypeNode,\n TypePredicateNode,\n isIdentifier,\n IndexedAccessTypeNode,\n TemplateLiteralTypeNode,\n TemplateLiteralTypeSpan,\n ThisTypeNode,\n} from 'typescript';\nimport {\n SchemaNode,\n TypeRefSchema,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\n ParenthesizedTypeSchema,\n TypePredicateSchema,\n IndexedAccessSchema,\n TemplateLiteralTypeSpanSchema,\n TemplateLiteralTypeSchema,\n ThisTypeSchema,\n Modifier,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\nimport { typeElementToSchema } from './type-element-to-schema';\nimport { jsDocToDocSchema } from './jsdoc-to-doc-schema';\n\n// eslint-disable-next-line complexity\nexport async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const location = context.getLocation(node);\n if (isKeywordType(node)) {\n return new KeywordTypeSchema(location, node.getText());\n }\n switch (node.kind) {\n case SyntaxKind.IntersectionType:\n return intersectionType(node as IntersectionTypeNode, context);\n case SyntaxKind.UnionType:\n return unionType(node as UnionTypeNode, context);\n case SyntaxKind.TypeReference:\n return typeReference(node as TypeReferenceNode, context);\n case SyntaxKind.TypeLiteral:\n return typeLiteral(node as TypeLiteralNode, context);\n case SyntaxKind.LiteralType: // e.g. string/boolean\n return new LiteralTypeSchema(location, node.getText());\n case SyntaxKind.FunctionType:\n return functionType(node as FunctionTypeNode, context);\n case SyntaxKind.TypeQuery:\n return typeQuery(node as TypeQueryNode, context);\n case SyntaxKind.ArrayType:\n return arrayType(node as ArrayTypeNode, context);\n case SyntaxKind.TypeOperator:\n return typeOperator(node as TypeOperatorNode, context);\n case SyntaxKind.TupleType:\n return tupleType(node as TupleTypeNode, context);\n case SyntaxKind.ParenthesizedType:\n return parenthesizedType(node as ParenthesizedTypeNode, context);\n case SyntaxKind.TypePredicate:\n return typePredicate(node as TypePredicateNode, context);\n case SyntaxKind.IndexedAccessType:\n return indexedAccessType(node as IndexedAccessTypeNode, context);\n case SyntaxKind.TemplateLiteralTypeSpan:\n return templateLiteralTypeSpan(node as TemplateLiteralTypeSpan, context);\n case SyntaxKind.TemplateLiteralType:\n return templateLiteralType(node as TemplateLiteralTypeNode, context);\n case SyntaxKind.ThisType:\n return thisType(node as ThisTypeNode, context);\n case SyntaxKind.ConstructorType:\n case SyntaxKind.NamedTupleMember:\n case SyntaxKind.OptionalType:\n case SyntaxKind.RestType:\n case SyntaxKind.ConditionalType:\n case SyntaxKind.InferType:\n case SyntaxKind.MappedType:\n case SyntaxKind.ImportType:\n case SyntaxKind.ExpressionWithTypeArguments:\n case SyntaxKind.JSDocTypeExpression:\n case SyntaxKind.JSDocAllType:\n case SyntaxKind.JSDocUnknownType:\n case SyntaxKind.JSDocNonNullableType:\n case SyntaxKind.JSDocNullableType:\n case SyntaxKind.JSDocOptionalType:\n case SyntaxKind.JSDocFunctionType:\n case SyntaxKind.JSDocVariadicType:\n case SyntaxKind.JSDocNamepathType:\n case SyntaxKind.JSDocSignature:\n case SyntaxKind.JSDocTypeLiteral:\n throw new Error(`TypeNode ${node.kind} (probably ${SyntaxKind[node.kind]}) was not implemented yet.\ncontext: ${node.getText()}`);\n default:\n throw new Error(`Node ${node.kind} (probably ${SyntaxKind[node.kind]}) is not a TypeNode.\ncontext: ${node.getText()}`);\n }\n}\n\n/**\n * whether it's kind of `ts.KeywordTypeSyntaxKind`\n */\nfunction isKeywordType(node: TypeNode): node is KeywordTypeNode {\n switch (node.kind) {\n case SyntaxKind.AnyKeyword:\n case SyntaxKind.BigIntKeyword:\n case SyntaxKind.BooleanKeyword:\n case SyntaxKind.IntrinsicKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.NumberKeyword:\n case SyntaxKind.ObjectKeyword:\n case SyntaxKind.StringKeyword:\n case SyntaxKind.SymbolKeyword:\n case SyntaxKind.UndefinedKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.VoidKeyword:\n return true;\n default:\n return false;\n }\n}\n\nasync function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeIntersectionSchema(location, types);\n}\n\nasync function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeUnionSchema(location, types);\n}\n\n/**\n * not to be confused with \"LiteralType\", which is string/boolean/null.\n * this \"TypeLiteral\" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.\n */\nasync function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {\n const members = await pMapSeries(node.members, (member) => typeElementToSchema(member, context));\n const location = context.getLocation(node);\n return new TypeLiteralSchema(location, members);\n}\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nasync function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n const type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => typeNodeToSchema(arg, context));\n type.typeArgs = args;\n }\n return type;\n}\n\nasync function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = node.name?.getText() || '';\n const params = await getParams(node.parameters, context);\n const returnType = await typeNodeToSchema(node.type, context);\n const location = context.getLocation(node);\n const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];\n const doc = await jsDocToDocSchema(node, context);\n return new FunctionLikeSchema(location, name, params, returnType, '', modifiers as Modifier[], doc);\n}\n\n/**\n * e.g. `typeof Foo`\n */\nasync function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n const location = context.getLocation(node);\n return new TypeQuerySchema(location, type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n const location = context.getLocation(node);\n return new TypeArraySchema(location, type);\n}\n\n/**\n * e.g. keyof typeof Foo\n */\nasync function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {\n const operatorName = getOperatorName(node.operator);\n const type = await typeNodeToSchema(node.type, context);\n return new TypeOperatorSchema(context.getLocation(node), operatorName, type);\n}\n\nfunction getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {\n switch (operator) {\n case SyntaxKind.KeyOfKeyword:\n return 'keyof';\n case SyntaxKind.UniqueKeyword:\n return 'unique';\n case SyntaxKind.ReadonlyKeyword:\n return 'readonly';\n default:\n throw new Error(`getOperatorName: unable to find operator name for ${operator}`);\n }\n}\n\nasync function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {\n const elements = await pMapSeries(node.elements, async (elem) => {\n const typeSchema = await typeNodeToSchema(elem, context);\n return typeSchema;\n });\n return new TupleTypeSchema(context.getLocation(node), elements);\n}\n\nasync function parenthesizedType(node: ParenthesizedTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n return new ParenthesizedTypeSchema(context.getLocation(node), type);\n}\n\nasync function typePredicate(node: TypePredicateNode, context: SchemaExtractorContext) {\n const parameterName = isIdentifier(node.parameterName) ? node.parameterName.getText() : 'this';\n const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;\n const hasAssertsModifier = Boolean(node.assertsModifier);\n return new TypePredicateSchema(context.getLocation(node), parameterName, type, hasAssertsModifier);\n}\n\nasync function indexedAccessType(node: IndexedAccessTypeNode, context: SchemaExtractorContext) {\n const objectType = await typeNodeToSchema(node.objectType, context);\n const indexType = await typeNodeToSchema(node.indexType, context);\n return new IndexedAccessSchema(context.getLocation(node), objectType, indexType);\n}\n\nasync function templateLiteralType(node: TemplateLiteralTypeNode, context: SchemaExtractorContext) {\n const templateSpans = await pMapSeries(node.templateSpans, (span) => templateLiteralTypeSpan(span, context));\n const head = node.head.text;\n return new TemplateLiteralTypeSchema(context.getLocation(node), head, templateSpans);\n}\n\nasync function templateLiteralTypeSpan(node: TemplateLiteralTypeSpan, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n const literal = node.literal.text;\n return new TemplateLiteralTypeSpanSchema(context.getLocation(node), literal, type);\n}\n\nasync function thisType(node: ThisTypeNode, context: SchemaExtractorContext) {\n return new ThisTypeSchema(context.getLocation(node));\n}\n"],"mappings":"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"}
|
|
@@ -59,6 +59,16 @@ function _parseTypeFromQuickInfo() {
|
|
|
59
59
|
return data;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
function _jsdocToDocSchema() {
|
|
63
|
+
const data = require("./utils/jsdoc-to-doc-schema");
|
|
64
|
+
|
|
65
|
+
_jsdocToDocSchema = function () {
|
|
66
|
+
return data;
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
return data;
|
|
70
|
+
}
|
|
71
|
+
|
|
62
72
|
class VariableDeclaration {
|
|
63
73
|
predicate(node) {
|
|
64
74
|
return node.kind === _typescript().default.SyntaxKind.VariableDeclaration;
|
|
@@ -81,10 +91,14 @@ class VariableDeclaration {
|
|
|
81
91
|
const location = context.getLocation(varDec);
|
|
82
92
|
|
|
83
93
|
if (((_varDec$initializer = varDec.initializer) === null || _varDec$initializer === void 0 ? void 0 : _varDec$initializer.kind) === _typescript().default.SyntaxKind.ArrowFunction) {
|
|
94
|
+
var _varDec$modifiers;
|
|
95
|
+
|
|
84
96
|
const args = await (0, _getParams().getParams)(varDec.initializer.parameters, context);
|
|
85
97
|
const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(info);
|
|
86
98
|
const returnType = await context.resolveType(varDec, typeStr);
|
|
87
|
-
|
|
99
|
+
const modifiers = ((_varDec$modifiers = varDec.modifiers) === null || _varDec$modifiers === void 0 ? void 0 : _varDec$modifiers.map(modifier => modifier.getText())) || [];
|
|
100
|
+
const doc = await (0, _jsdocToDocSchema().jsDocToDocSchema)(varDec, context);
|
|
101
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, args, returnType, displaySig, modifiers, doc);
|
|
88
102
|
}
|
|
89
103
|
|
|
90
104
|
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","location","getLocation","initializer","ArrowFunction","args","getParams","parameters","typeStr","parseReturnTypeFromQuickInfo","returnType","resolveType","FunctionLikeSchema","parseTypeFromQuickInfo","type","VariableSchema"],"sources":["variable-declaration.ts"],"sourcesContent":["import { SchemaNode, VariableSchema, FunctionLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n const location = context.getLocation(varDec);\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableSchema(location, name, displaySig, type);\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;EAC5DC,SAAS,CAACC,IAAD,EAAa;IACpB,OAAOA,IAAI,CAACC,IAAL,KAAcC,qBAAA,CAAGC,UAAH,CAAcL,mBAAnC;EACD;;EAEDM,OAAO,CAACJ,IAAD,EAAgC;IACrC,OAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;EACD;;EAEmB,MAAdC,cAAc,CAACP,IAAD,EAAgC;IAClD,OAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;EACD;;EAEc,MAATC,SAAS,CAACC,MAAD,EAAkCC,OAAlC,EAAwF;IAAA;;IACrG,MAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,MAAb,CAAb;IACA,MAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,MAAM,CAACP,IAA5B,CAAnB;IACA,MAAMW,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;IACA,MAAMC,QAAQ,GAAGN,OAAO,CAACO,WAAR,CAAoBR,MAApB,CAAjB;;IACA,IAAI,wBAAAA,MAAM,CAACS,WAAP,4EAAoBpB,IAApB,MAA6BC,qBAAA,CAAGC,UAAH,CAAcmB,aAA/C,EAA8D;MAC5D,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAA,EAAWZ,MAAM,CAACS,WAAR,CAAsCI,UAAhD,EAA4DZ,OAA5D,CAAnB;MACA,MAAMa,OAAO,GAAG,IAAAC,sDAAA,EAA6Bb,IAA7B,CAAhB;MACA,MAAMc,UAAU,GAAG,MAAMf,OAAO,CAACgB,WAAR,CAAoBjB,MAApB,EAA4Bc,OAA5B,CAAzB;MACA,OAAO,
|
|
1
|
+
{"version":3,"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","location","getLocation","initializer","ArrowFunction","args","getParams","parameters","typeStr","parseReturnTypeFromQuickInfo","returnType","resolveType","modifiers","map","modifier","doc","jsDocToDocSchema","FunctionLikeSchema","parseTypeFromQuickInfo","type","VariableSchema"],"sources":["variable-declaration.ts"],"sourcesContent":["import { SchemaNode, VariableSchema, FunctionLikeSchema, Modifier } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\nimport { jsDocToDocSchema } from './utils/jsdoc-to-doc-schema';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n const location = context.getLocation(varDec);\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n const modifiers = varDec.modifiers?.map((modifier) => modifier.getText()) || [];\n const doc = await jsDocToDocSchema(varDec, context);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[], doc);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableSchema(location, name, displaySig, type);\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;EAC5DC,SAAS,CAACC,IAAD,EAAa;IACpB,OAAOA,IAAI,CAACC,IAAL,KAAcC,qBAAA,CAAGC,UAAH,CAAcL,mBAAnC;EACD;;EAEDM,OAAO,CAACJ,IAAD,EAAgC;IACrC,OAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;EACD;;EAEmB,MAAdC,cAAc,CAACP,IAAD,EAAgC;IAClD,OAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;EACD;;EAEc,MAATC,SAAS,CAACC,MAAD,EAAkCC,OAAlC,EAAwF;IAAA;;IACrG,MAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,MAAb,CAAb;IACA,MAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,MAAM,CAACP,IAA5B,CAAnB;IACA,MAAMW,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;IACA,MAAMC,QAAQ,GAAGN,OAAO,CAACO,WAAR,CAAoBR,MAApB,CAAjB;;IACA,IAAI,wBAAAA,MAAM,CAACS,WAAP,4EAAoBpB,IAApB,MAA6BC,qBAAA,CAAGC,UAAH,CAAcmB,aAA/C,EAA8D;MAAA;;MAC5D,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAA,EAAWZ,MAAM,CAACS,WAAR,CAAsCI,UAAhD,EAA4DZ,OAA5D,CAAnB;MACA,MAAMa,OAAO,GAAG,IAAAC,sDAAA,EAA6Bb,IAA7B,CAAhB;MACA,MAAMc,UAAU,GAAG,MAAMf,OAAO,CAACgB,WAAR,CAAoBjB,MAApB,EAA4Bc,OAA5B,CAAzB;MACA,MAAMI,SAAS,GAAG,sBAAAlB,MAAM,CAACkB,SAAP,wEAAkBC,GAAlB,CAAuBC,QAAD,IAAcA,QAAQ,CAAC1B,OAAT,EAApC,MAA2D,EAA7E;MACA,MAAM2B,GAAG,GAAG,MAAM,IAAAC,oCAAA,EAAiBtB,MAAjB,EAAyBC,OAAzB,CAAlB;MACA,OAAO,KAAIsB,uCAAJ,EAAuBhB,QAAvB,EAAiCd,IAAjC,EAAuCkB,IAAvC,EAA6CK,UAA7C,EAAyDZ,UAAzD,EAAqEc,SAArE,EAA8FG,GAA9F,CAAP;IACD;;IACD,MAAMP,OAAO,GAAG,IAAAU,gDAAA,EAAuBtB,IAAvB,CAAhB;IACA,MAAMuB,IAAI,GAAG,MAAMxB,OAAO,CAACgB,WAAR,CAAoBjB,MAApB,EAA4Bc,OAA5B,CAAnB;IACA,OAAO,KAAIY,mCAAJ,EAAmBnB,QAAnB,EAA6Bd,IAA7B,EAAmCW,UAAnC,EAA+CqB,IAA/C,CAAP;EACD;;AA7B2D"}
|
|
@@ -111,7 +111,7 @@ class TypeScriptExtractor {
|
|
|
111
111
|
moduleSchema.flatExportsRecursively();
|
|
112
112
|
const apiScheme = moduleSchema;
|
|
113
113
|
const location = context.getLocation(mainAst);
|
|
114
|
-
return new (_semanticsEntities().APISchema)(location, apiScheme);
|
|
114
|
+
return new (_semanticsEntities().APISchema)(location, apiScheme, component.id);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
async computeExportedIdentifiers(node, context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","undefined","parseSourceFile","file","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","compilerOptions","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","transform","getComponentIDByPath","getComponentIdByPath","transformers","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined\n ) {}\n\n parseSourceFile(file: AbstractVinyl) {\n return ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true,\n this.tsconfig.compilerOptions\n );\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = await this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme);\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n if (!transformer || !transformer.getIdentifiers) {\n throw new TransformerNotFound(node, context.component, context.getLocation(node));\n }\n return transformer.getIdentifiers(node, context);\n }\n\n private async createContext(tsserver: TsserverClient, component: Component): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, context.component, context.getLocation(node));\n\n return transformer;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAKA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;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,MAAMA,mBAAN,CAAqD;EAC1DC,WAAW,CACDC,QADC,EAEDC,qBAFC,EAGDC,MAHC,EAIDC,QAJC,EAKDC,WALC,EAMDC,SANC,EAOT;IAAA,KANQL,QAMR,GANQA,QAMR;IAAA,KALQC,qBAKR,GALQA,qBAKR;IAAA,KAJQC,MAIR,GAJQA,MAIR;IAAA,KAHQC,QAGR,GAHQA,QAGR;IAAA,KAFQC,WAER,GAFQA,WAER;IAAA,KADQC,SACR,GADQA,SACR;IAAA,kDAiD6CC,SAjD7C;EAAE;;EAEJC,eAAe,CAACC,IAAD,EAAsB;IACnC,OAAOC,qBAAA,CAAGC,gBAAH,CACLF,IAAI,CAACG,IADA,EAELH,IAAI,CAACI,QAAL,CAAcC,QAAd,CAAuB,MAAvB,CAFK,EAGLJ,qBAAA,CAAGK,YAAH,CAAgBC,MAHX,EAIL,IAJK,EAKL,KAAKf,QAAL,CAAcgB,eALT,CAAP;EAOD;EAED;AACF;AACA;;;EACe,MAAPC,OAAO,CAACC,SAAD,EAA2C;IACtD,MAAMC,QAAQ,GAAG,MAAM,KAAKC,WAAL,EAAvB;IACA,MAAMC,QAAQ,GAAGH,SAAS,CAACG,QAA3B;IACA,MAAMC,OAAO,GAAG,KAAKf,eAAL,CAAqBc,QAArB,CAAhB;IACA,MAAME,OAAO,GAAG,MAAM,KAAKC,aAAL,CAAmBL,QAAnB,EAA6BD,SAA7B,CAAtB;IACA,MAAMO,WAAW,GAAG,MAAM,KAAKC,0BAAL,CAAgCJ,OAAhC,EAAyCC,OAAzC,CAA1B;IACAA,OAAO,CAACI,UAAR,CAAmB,KAAIC,wBAAJ,EAAeH,WAAf,CAAnB;IACA,MAAMI,YAAY,GAAI,MAAM,KAAKC,aAAL,CAAmBR,OAAnB,EAA4BC,OAA5B,CAA5B;IACAM,YAAY,CAACE,sBAAb;IACA,MAAMC,SAAS,GAAGH,YAAlB;IACA,MAAMI,QAAQ,GAAGV,OAAO,CAACW,WAAR,CAAoBZ,OAApB,CAAjB;IAEA,OAAO,KAAIa,8BAAJ,EAAcF,QAAd,EAAwBD,SAAxB,CAAP;EACD;;EAE+B,
|
|
1
|
+
{"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","undefined","parseSourceFile","file","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","compilerOptions","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","id","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","transform","getComponentIDByPath","getComponentIdByPath","transformers","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined\n ) {}\n\n parseSourceFile(file: AbstractVinyl) {\n return ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true,\n this.tsconfig.compilerOptions\n );\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = await this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme, component.id);\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n if (!transformer || !transformer.getIdentifiers) {\n throw new TransformerNotFound(node, context.component, context.getLocation(node));\n }\n return transformer.getIdentifiers(node, context);\n }\n\n private async createContext(tsserver: TsserverClient, component: Component): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, context.component, context.getLocation(node));\n\n return transformer;\n }\n}\n"],"mappings":"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"}
|
|
@@ -391,7 +391,7 @@ class TypescriptMain {
|
|
|
391
391
|
const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
|
|
392
392
|
aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
|
|
393
393
|
const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver);
|
|
394
|
-
schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().
|
|
394
|
+
schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().EnumDeclarationTransformer)()]);
|
|
395
395
|
|
|
396
396
|
if (workspace) {
|
|
397
397
|
workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));
|