@teambit/typescript 0.0.736 → 0.0.737
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 +2 -1
- package/dist/schema-extractor-context.js +15 -6
- package/dist/schema-extractor-context.js.map +1 -1
- package/dist/transformers/class-deceleration.js +2 -2
- package/dist/transformers/class-deceleration.js.map +1 -1
- package/dist/transformers/constructor.js +1 -1
- package/dist/transformers/constructor.js.map +1 -1
- package/dist/transformers/export-declaration.js +1 -1
- package/dist/transformers/export-declaration.js.map +1 -1
- package/dist/transformers/index-signature.js +1 -1
- package/dist/transformers/index-signature.js.map +1 -1
- package/dist/transformers/interface-declaration.js +1 -1
- package/dist/transformers/interface-declaration.js.map +1 -1
- package/dist/transformers/literal-type.d.ts +2 -1
- package/dist/transformers/literal-type.js +2 -2
- package/dist/transformers/literal-type.js.map +1 -1
- package/dist/transformers/property-declaration.js +1 -1
- package/dist/transformers/property-declaration.js.map +1 -1
- package/dist/transformers/property-signature.js +1 -1
- package/dist/transformers/property-signature.js.map +1 -1
- package/dist/transformers/source-file-transformer.js +1 -1
- package/dist/transformers/source-file-transformer.js.map +1 -1
- package/dist/transformers/type-alias.js +1 -1
- package/dist/transformers/type-alias.js.map +1 -1
- package/dist/transformers/utils/get-params.js +6 -2
- package/dist/transformers/utils/get-params.js.map +1 -1
- package/dist/transformers/utils/to-function-schema.js +2 -2
- package/dist/transformers/utils/to-function-schema.js.map +1 -1
- package/dist/transformers/utils/type-node-to-schema.js +17 -10
- package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
- package/dist/transformers/variable-declaration.js +3 -3
- package/dist/transformers/variable-declaration.js.map +1 -1
- package/dist/transformers/variable-statement.js +2 -3
- package/dist/transformers/variable-statement.js.map +1 -1
- package/dist/typescript.extractor.js +3 -3
- package/dist/typescript.extractor.js.map +1 -1
- package/dist/typescript.parser.d.ts +2 -2
- package/dist/typescript.parser.js +4 -4
- package/dist/typescript.parser.js.map +1 -1
- package/package-tar/teambit-typescript-0.0.737.tgz +0 -0
- package/package.json +11 -11
- package/{preview-1652844422371.js → preview-1652930732694.js} +2 -2
- package/transformers/class-deceleration.ts +2 -2
- package/transformers/constructor.ts +1 -1
- package/transformers/export-declaration.ts +1 -1
- package/transformers/index-signature.ts +1 -1
- package/transformers/interface-declaration.ts +1 -1
- package/transformers/literal-type.ts +3 -2
- package/transformers/property-declaration.ts +1 -1
- package/transformers/property-signature.ts +1 -1
- package/transformers/source-file-transformer.ts +1 -1
- package/transformers/type-alias.ts +1 -1
- package/transformers/utils/get-params.ts +5 -1
- package/transformers/utils/to-function-schema.ts +2 -2
- package/transformers/utils/type-node-to-schema.ts +16 -10
- package/transformers/variable-declaration.ts +3 -3
- package/transformers/variable-statement.ts +1 -2
- package/tsconfig.json +1 -1
- package/dist/transformers/export-declaration-type.d.ts +0 -0
- package/dist/transformers/export-declaration-type.js +0 -3
- package/dist/transformers/export-declaration-type.js.map +0 -1
- package/package-tar/teambit-typescript-0.0.736.tgz +0 -0
- package/transformers/export-declaration-type.ts +0 -0
|
@@ -51,8 +51,10 @@ function _getParams() {
|
|
|
51
51
|
|
|
52
52
|
// eslint-disable-next-line complexity
|
|
53
53
|
async function typeNodeToSchema(node, context) {
|
|
54
|
+
const location = context.getLocation(node);
|
|
55
|
+
|
|
54
56
|
if (isKeywordType(node)) {
|
|
55
|
-
return new (_semanticsEntities().KeywordTypeSchema)(node.getText());
|
|
57
|
+
return new (_semanticsEntities().KeywordTypeSchema)(location, node.getText());
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
switch (node.kind) {
|
|
@@ -70,7 +72,7 @@ async function typeNodeToSchema(node, context) {
|
|
|
70
72
|
|
|
71
73
|
case _typescript().SyntaxKind.LiteralType:
|
|
72
74
|
// e.g. string/boolean
|
|
73
|
-
return new (_semanticsEntities().LiteralTypeSchema)(node.getText());
|
|
75
|
+
return new (_semanticsEntities().LiteralTypeSchema)(location, node.getText());
|
|
74
76
|
|
|
75
77
|
case _typescript().SyntaxKind.FunctionType:
|
|
76
78
|
return functionType(node, context);
|
|
@@ -152,7 +154,8 @@ async function intersectionType(node, context) {
|
|
|
152
154
|
const typeSchema = await typeNodeToSchema(type, context);
|
|
153
155
|
return typeSchema;
|
|
154
156
|
});
|
|
155
|
-
|
|
157
|
+
const location = context.getLocation(node);
|
|
158
|
+
return new (_semanticsEntities().TypeIntersectionSchema)(location, types);
|
|
156
159
|
}
|
|
157
160
|
|
|
158
161
|
async function unionType(node, context) {
|
|
@@ -160,7 +163,8 @@ async function unionType(node, context) {
|
|
|
160
163
|
const typeSchema = await typeNodeToSchema(type, context);
|
|
161
164
|
return typeSchema;
|
|
162
165
|
});
|
|
163
|
-
|
|
166
|
+
const location = context.getLocation(node);
|
|
167
|
+
return new (_semanticsEntities().TypeUnionSchema)(location, types);
|
|
164
168
|
}
|
|
165
169
|
/**
|
|
166
170
|
* not to be confused with "LiteralType", which is string/boolean/null.
|
|
@@ -173,7 +177,8 @@ async function typeLiteral(node, context) {
|
|
|
173
177
|
const typeSchema = await context.computeSchema(member);
|
|
174
178
|
return typeSchema;
|
|
175
179
|
});
|
|
176
|
-
|
|
180
|
+
const location = context.getLocation(node);
|
|
181
|
+
return new (_semanticsEntities().TypeLiteralSchema)(location, members);
|
|
177
182
|
}
|
|
178
183
|
/**
|
|
179
184
|
* In the following example, `AriaButtonProps` is a type reference
|
|
@@ -197,7 +202,7 @@ async function functionType(node, context) {
|
|
|
197
202
|
const params = await (0, _getParams().getParams)(node.parameters, context);
|
|
198
203
|
const returnType = await typeNodeToSchema(node.type, context);
|
|
199
204
|
const location = context.getLocation(node);
|
|
200
|
-
return new (_semanticsEntities().FunctionLikeSchema)(name, params, returnType, ''
|
|
205
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, params, returnType, '');
|
|
201
206
|
}
|
|
202
207
|
/**
|
|
203
208
|
* e.g. `typeof Foo`
|
|
@@ -207,12 +212,14 @@ async function functionType(node, context) {
|
|
|
207
212
|
async function typeQuery(node, context) {
|
|
208
213
|
const displaySig = await context.getQuickInfoDisplayString(node.exprName);
|
|
209
214
|
const type = await context.resolveType(node.exprName, node.exprName.getText(), false);
|
|
210
|
-
|
|
215
|
+
const location = context.getLocation(node);
|
|
216
|
+
return new (_semanticsEntities().TypeQuerySchema)(location, type, displaySig);
|
|
211
217
|
}
|
|
212
218
|
|
|
213
219
|
async function arrayType(node, context) {
|
|
214
220
|
const type = await typeNodeToSchema(node.elementType, context);
|
|
215
|
-
|
|
221
|
+
const location = context.getLocation(node);
|
|
222
|
+
return new (_semanticsEntities().TypeArraySchema)(location, type);
|
|
216
223
|
}
|
|
217
224
|
/**
|
|
218
225
|
* e.g. keyof typeof Foo
|
|
@@ -222,7 +229,7 @@ async function arrayType(node, context) {
|
|
|
222
229
|
async function typeOperator(node, context) {
|
|
223
230
|
const operatorName = getOperatorName(node.operator);
|
|
224
231
|
const type = await typeNodeToSchema(node.type, context);
|
|
225
|
-
return new (_semanticsEntities().TypeOperatorSchema)(operatorName, type);
|
|
232
|
+
return new (_semanticsEntities().TypeOperatorSchema)(context.getLocation(node), operatorName, type);
|
|
226
233
|
}
|
|
227
234
|
|
|
228
235
|
function getOperatorName(operator) {
|
|
@@ -246,7 +253,7 @@ async function tupleType(node, context) {
|
|
|
246
253
|
const typeSchema = await typeNodeToSchema(elem, context);
|
|
247
254
|
return typeSchema;
|
|
248
255
|
});
|
|
249
|
-
return new (_semanticsEntities().TupleTypeSchema)(elements);
|
|
256
|
+
return new (_semanticsEntities().TupleTypeSchema)(context.getLocation(node), elements);
|
|
250
257
|
}
|
|
251
258
|
|
|
252
259
|
//# sourceMappingURL=type-node-to-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["type-node-to-schema.ts"],"names":["typeNodeToSchema","node","context","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","TypePredicate","ConstructorType","NamedTupleMember","OptionalType","RestType","ConditionalType","InferType","ParenthesizedType","ThisType","IndexedAccessType","MappedType","TemplateLiteralType","TemplateLiteralTypeSpan","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","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","computeSchema","TypeLiteralSchema","name","typeName","resolveType","params","parameters","returnType","location","getLocation","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema"],"mappings":"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","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} from 'typescript';\nimport {\n SchemaNode,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\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 if (isKeywordType(node)) {\n return new KeywordTypeSchema(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(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.TypePredicate:\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.ParenthesizedType:\n case SyntaxKind.ThisType:\n case SyntaxKind.IndexedAccessType:\n case SyntaxKind.MappedType:\n case SyntaxKind.TemplateLiteralType:\n case SyntaxKind.TemplateLiteralTypeSpan:\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 \"${SyntaxKind[node.kind]}\" was not implemented yet.\ncontext: ${node.getText()}`);\n default:\n throw new Error(`Node \"${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 return new TypeIntersectionSchema(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 return new TypeUnionSchema(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 return new TypeLiteralSchema(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 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(name, params, returnType, '', location);\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 return new TypeQuerySchema(type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n return new TypeArraySchema(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(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(elements);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["type-node-to-schema.ts"],"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","TypePredicate","ConstructorType","NamedTupleMember","OptionalType","RestType","ConditionalType","InferType","ParenthesizedType","ThisType","IndexedAccessType","MappedType","TemplateLiteralType","TemplateLiteralTypeSpan","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","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","computeSchema","TypeLiteralSchema","name","typeName","resolveType","params","parameters","returnType","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema"],"mappings":"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","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} from 'typescript';\nimport {\n SchemaNode,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\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.TypePredicate:\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.ParenthesizedType:\n case SyntaxKind.ThisType:\n case SyntaxKind.IndexedAccessType:\n case SyntaxKind.MappedType:\n case SyntaxKind.TemplateLiteralType:\n case SyntaxKind.TemplateLiteralTypeSpan:\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 \"${SyntaxKind[node.kind]}\" was not implemented yet.\ncontext: ${node.getText()}`);\n default:\n throw new Error(`Node \"${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 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"]}
|
|
@@ -78,18 +78,18 @@ class VariableDeclaration {
|
|
|
78
78
|
const name = this.getName(varDec);
|
|
79
79
|
const info = await context.getQuickInfo(varDec.name);
|
|
80
80
|
const displaySig = (info === null || info === void 0 ? void 0 : (_info$body = info.body) === null || _info$body === void 0 ? void 0 : _info$body.displayString) || '';
|
|
81
|
+
const location = context.getLocation(varDec);
|
|
81
82
|
|
|
82
83
|
if (((_varDec$initializer = varDec.initializer) === null || _varDec$initializer === void 0 ? void 0 : _varDec$initializer.kind) === _typescript().default.SyntaxKind.ArrowFunction) {
|
|
83
84
|
const args = await (0, _getParams().getParams)(varDec.initializer.parameters, context);
|
|
84
85
|
const typeStr = (0, _parseTypeFromQuickInfo().parseReturnTypeFromQuickInfo)(info);
|
|
85
86
|
const returnType = await context.resolveType(varDec, typeStr);
|
|
86
|
-
|
|
87
|
-
return new (_semanticsEntities().FunctionLikeSchema)(name, args, returnType, displaySig, location);
|
|
87
|
+
return new (_semanticsEntities().FunctionLikeSchema)(location, name, args, returnType, displaySig);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
const typeStr = (0, _parseTypeFromQuickInfo().parseTypeFromQuickInfo)(info);
|
|
91
91
|
const type = await context.resolveType(varDec, typeStr);
|
|
92
|
-
return new (_semanticsEntities().VariableSchema)(name, displaySig, type);
|
|
92
|
+
return new (_semanticsEntities().VariableSchema)(location, name, displaySig, type);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["variable-declaration.ts"],"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","initializer","ArrowFunction","args","parameters","typeStr","returnType","resolveType","
|
|
1
|
+
{"version":3,"sources":["variable-declaration.ts"],"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","parameters","typeStr","returnType","resolveType","FunctionLikeSchema","type","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;;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,MAAD,EAAkCC,OAAlC,EAAwF;AAAA;;AACrG,UAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,MAAb,CAAb;AACA,UAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,MAAM,CAACP,IAA5B,CAAnB;AACA,UAAMW,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;AACA,UAAMC,QAAQ,GAAGN,OAAO,CAACO,WAAR,CAAoBR,MAApB,CAAjB;;AACA,QAAI,wBAAAA,MAAM,CAACS,WAAP,4EAAoBpB,IAApB,MAA6BC,sBAAGC,UAAH,CAAcmB,aAA/C,EAA8D;AAC5D,YAAMC,IAAI,GAAG,MAAM,4BAAWX,MAAM,CAACS,WAAR,CAAsCG,UAAhD,EAA4DX,OAA5D,CAAnB;AACA,YAAMY,OAAO,GAAG,4DAA6BX,IAA7B,CAAhB;AACA,YAAMY,UAAU,GAAG,MAAMb,OAAO,CAACc,WAAR,CAAoBf,MAApB,EAA4Ba,OAA5B,CAAzB;AACA,aAAO,KAAIG,uCAAJ,EAAuBT,QAAvB,EAAiCd,IAAjC,EAAuCkB,IAAvC,EAA6CG,UAA7C,EAAyDV,UAAzD,CAAP;AACD;;AACD,UAAMS,OAAO,GAAG,sDAAuBX,IAAvB,CAAhB;AACA,UAAMe,IAAI,GAAG,MAAMhB,OAAO,CAACc,WAAR,CAAoBf,MAApB,EAA4Ba,OAA5B,CAAnB;AACA,WAAO,KAAIK,mCAAJ,EAAmBX,QAAnB,EAA6Bd,IAA7B,EAAmCW,UAAnC,EAA+Ca,IAA/C,CAAP;AACD;;AA3B2D","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"]}
|
|
@@ -79,9 +79,8 @@ class VariableStatementTransformer {
|
|
|
79
79
|
// this will get the schema from variable-declaration
|
|
80
80
|
const schema = await context.visitDefinition(dec.name);
|
|
81
81
|
return schema;
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
return new (_semanticsEntities().Module)((0, _lodash().compact)(schemas));
|
|
82
|
+
});
|
|
83
|
+
return new (_semanticsEntities().Module)(context.getLocation(node), (0, _lodash().compact)(schemas));
|
|
85
84
|
}
|
|
86
85
|
|
|
87
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["variable-statement.ts"],"names":["VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","ExportIdentifier","name","getText","getSourceFile","fileName","transform","context","schemas","schema","visitDefinition","Module"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACO,MAAMA,4BAAN,CAAgE;AACrEC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,iBAAnC;AACD;;AAEmB,QAAdC,cAAc,CAACL,IAAD,EAA0B;AAC5C,WAAOA,IAAI,CAACM,eAAL,CAAqBC,YAArB,CAAkCC,GAAlC,CAAuCC,GAAD,IAAS;AACpD,aAAO,KAAIC,oCAAJ,EAAqBD,GAAG,CAACE,IAAJ,CAASC,OAAT,EAArB,EAAyCH,GAAG,CAACI,aAAJ,GAAoBC,QAA7D,CAAP;AACD,KAFM,CAAP;AAGD;;AAEc,QAATC,SAAS,CAACf,IAAD,EAA0BgB,OAA1B,EAAgF;AAC7F,UAAMC,OAAO,GAAG,MAAM,2BAAWjB,IAAI,CAACM,eAAL,CAAqBC,YAAhC,EAA8C,MAAOE,GAAP,IAAe;AACjF;AACA,YAAMS,MAAM,GAAG,MAAMF,OAAO,CAACG,eAAR,CAAwBV,GAAG,CAACE,IAA5B,CAArB;AACA,aAAOO,MAAP;AACD,KAJqB,CAAtB,
|
|
1
|
+
{"version":3,"sources":["variable-statement.ts"],"names":["VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","ExportIdentifier","name","getText","getSourceFile","fileName","transform","context","schemas","schema","visitDefinition","Module","getLocation"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACO,MAAMA,4BAAN,CAAgE;AACrEC,EAAAA,SAAS,CAACC,IAAD,EAAa;AACpB,WAAOA,IAAI,CAACC,IAAL,KAAcC,sBAAGC,UAAH,CAAcC,iBAAnC;AACD;;AAEmB,QAAdC,cAAc,CAACL,IAAD,EAA0B;AAC5C,WAAOA,IAAI,CAACM,eAAL,CAAqBC,YAArB,CAAkCC,GAAlC,CAAuCC,GAAD,IAAS;AACpD,aAAO,KAAIC,oCAAJ,EAAqBD,GAAG,CAACE,IAAJ,CAASC,OAAT,EAArB,EAAyCH,GAAG,CAACI,aAAJ,GAAoBC,QAA7D,CAAP;AACD,KAFM,CAAP;AAGD;;AAEc,QAATC,SAAS,CAACf,IAAD,EAA0BgB,OAA1B,EAAgF;AAC7F,UAAMC,OAAO,GAAG,MAAM,2BAAWjB,IAAI,CAACM,eAAL,CAAqBC,YAAhC,EAA8C,MAAOE,GAAP,IAAe;AACjF;AACA,YAAMS,MAAM,GAAG,MAAMF,OAAO,CAACG,eAAR,CAAwBV,GAAG,CAACE,IAA5B,CAArB;AACA,aAAOO,MAAP;AACD,KAJqB,CAAtB;AAKA,WAAO,KAAIE,2BAAJ,EAAWJ,OAAO,CAACK,WAAR,CAAoBrB,IAApB,CAAX,EAAsC,uBAAQiB,OAAR,CAAtC,CAAP;AACD;;AAlBoE","sourcesContent":["import { SchemaNode, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { compact } from 'lodash';\nimport pMapSeries from 'p-map-series';\nimport ts, { Node, VariableStatement } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\n\n/**\n * variable statement is a collection of variable declarations.\n * e.g. `export const a = 1, b = () => {}, c = {};`\n */\nexport class VariableStatementTransformer implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableStatement;\n }\n\n async getIdentifiers(node: VariableStatement) {\n return node.declarationList.declarations.map((dec) => {\n return new ExportIdentifier(dec.name.getText(), dec.getSourceFile().fileName);\n });\n }\n\n async transform(node: VariableStatement, context: SchemaExtractorContext): Promise<SchemaNode> {\n const schemas = await pMapSeries(node.declarationList.declarations, async (dec) => {\n // this will get the schema from variable-declaration\n const schema = await context.visitDefinition(dec.name);\n return schema;\n });\n return new Module(context.getLocation(node), compact(schemas));\n }\n}\n"]}
|
|
@@ -107,9 +107,9 @@ class TypeScriptExtractor {
|
|
|
107
107
|
context.setExports(new (_exportList().ExportList)(exportNames));
|
|
108
108
|
const moduleSchema = await this.computeSchema(mainAst, context);
|
|
109
109
|
moduleSchema.flatExportsRecursively();
|
|
110
|
-
const apiScheme = moduleSchema;
|
|
111
|
-
|
|
112
|
-
return new (_semanticsEntities().APISchema)(apiScheme);
|
|
110
|
+
const apiScheme = moduleSchema;
|
|
111
|
+
const location = context.getLocation(mainAst);
|
|
112
|
+
return new (_semanticsEntities().APISchema)(location, apiScheme);
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
async computeExportedIdentifiers(node, context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["typescript.extractor.ts"],"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","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","APISchema","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","SchemaExtractorContext","getTsserverClient","initTsserverClient","transform","transformers","values","find","singleTransformer","predicate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAqD;AAC1DC,EAAAA,WAAW,CACDC,QADC,EAEDC,qBAFC,EAGDC,MAHC,EAIDC,QAJC,EAKT;AAAA,SAJQH,QAIR,GAJQA,QAIR;AAAA,SAHQC,qBAGR,GAHQA,qBAGR;AAAA,SAFQC,MAER,GAFQA,MAER;AAAA,SADQC,QACR,GADQA,QACR;AAAA,sDAwC6CC,SAxC7C;AAAE;;AAEJC,EAAAA,eAAe,CAACC,IAAD,EAAsB;AACnC,WAAOC,sBAAGC,gBAAH,CACLF,IAAI,CAACG,IADA,EAELH,IAAI,CAACI,QAAL,CAAcC,QAAd,CAAuB,MAAvB,CAFK,EAGLJ,sBAAGK,YAAH,CAAgBC,MAHX,EAIL,IAJK,EAKL,KAAKb,QAAL,CAAcc,eALT,CAAP;AAOD;AAED;AACF;AACA;;;AACe,QAAPC,OAAO,CAACC,SAAD,EAA2C;AACtD,UAAMC,QAAQ,GAAG,MAAM,KAAKC,WAAL,EAAvB;AACA,UAAMC,QAAQ,GAAGH,SAAS,CAACG,QAA3B;AACA,UAAMC,OAAO,GAAG,KAAKf,eAAL,CAAqBc,QAArB,CAAhB;AACA,UAAME,OAAO,GAAG,KAAKC,aAAL,CAAmBL,QAAnB,EAA6BD,SAA7B,CAAhB;AACA,UAAMO,WAAW,GAAG,MAAM,KAAKC,0BAAL,CAAgCJ,OAAhC,EAAyCC,OAAzC,CAA1B;AACAA,IAAAA,OAAO,CAACI,UAAR,CAAmB,KAAIC,wBAAJ,EAAeH,WAAf,CAAnB;AACA,UAAMI,YAAY,GAAI,MAAM,KAAKC,aAAL,CAAmBR,OAAnB,EAA4BC,OAA5B,CAA5B;AACAM,IAAAA,YAAY,CAACE,sBAAb;AACA,UAAMC,SAAS,GAAGH,YAAlB,
|
|
1
|
+
{"version":3,"sources":["typescript.extractor.ts"],"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","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","SchemaExtractorContext","getTsserverClient","initTsserverClient","transform","transformers","values","find","singleTransformer","predicate"],"mappings":"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","sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\n// @ts-ignore david what to do?\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 ) {}\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 = 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.component);\n if (!transformer || !transformer.getIdentifiers) throw new TransformerNotFound(node, context.component);\n return transformer.getIdentifiers(node, context);\n }\n\n private createContext(tsserver: TsserverClient, component: Component): SchemaExtractorContext {\n return new SchemaExtractorContext(tsserver, component, this);\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.component);\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 /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, component: Component) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, component);\n\n return transformer;\n }\n}\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Parser } from '@teambit/schema';
|
|
2
|
-
import { Export,
|
|
2
|
+
import { Export, StaticProperties } from '@teambit/semantics.entities.semantic-schema';
|
|
3
3
|
import { Logger } from '@teambit/logger';
|
|
4
4
|
import { SourceFile } from 'typescript';
|
|
5
5
|
export declare class TypeScriptParser implements Parser {
|
|
6
6
|
private logger?;
|
|
7
7
|
extension: RegExp;
|
|
8
8
|
getExports(sourceFile: SourceFile): Export[];
|
|
9
|
-
parseModule(modulePath: string):
|
|
9
|
+
parseModule(modulePath: string): Export[];
|
|
10
10
|
parseStaticProperties(sourceFile: SourceFile): Map<string, StaticProperties>;
|
|
11
11
|
constructor(logger?: Logger | undefined);
|
|
12
12
|
}
|
|
@@ -67,19 +67,19 @@ class TypeScriptParser {
|
|
|
67
67
|
if ((0, _typescript().isVariableStatement)(statement)) {
|
|
68
68
|
const child = statement.declarationList.declarations[0];
|
|
69
69
|
const name = child.name.text;
|
|
70
|
-
return new (_semanticsEntities().Export)(name,
|
|
70
|
+
return new (_semanticsEntities().Export)(name, staticProperties.get(name));
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
if ((0, _typescript().isFunctionDeclaration)(statement)) {
|
|
74
74
|
if (!statement.name) return undefined;
|
|
75
75
|
const name = statement.name.text;
|
|
76
|
-
return new (_semanticsEntities().Export)(name,
|
|
76
|
+
return new (_semanticsEntities().Export)(name, staticProperties.get(name));
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
if ((0, _typescript().isClassDeclaration)(statement)) {
|
|
80
80
|
if (!statement.name) return undefined;
|
|
81
81
|
const name = statement.name.text;
|
|
82
|
-
return new (_semanticsEntities().Export)(name,
|
|
82
|
+
return new (_semanticsEntities().Export)(name, staticProperties.get(name));
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
return undefined;
|
|
@@ -93,7 +93,7 @@ class TypeScriptParser {
|
|
|
93
93
|
const ast = _typescript().default.createSourceFile(modulePath, (0, _fsExtra().readFileSync)(modulePath, 'utf8'), _typescript().default.ScriptTarget.Latest);
|
|
94
94
|
|
|
95
95
|
const moduleExports = this.getExports(ast);
|
|
96
|
-
return
|
|
96
|
+
return moduleExports;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
parseStaticProperties(sourceFile) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["typescript.parser.ts"],"names":["TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exports","statements","filter","statement","modifiers","find","modifier","kind","ts","SyntaxKind","ExportKeyword","exportModels","map","child","declarationList","declarations","name","text","Export","
|
|
1
|
+
{"version":3,"sources":["typescript.parser.ts"],"names":["TypeScriptParser","getExports","sourceFile","staticProperties","parseStaticProperties","exports","statements","filter","statement","modifiers","find","modifier","kind","ts","SyntaxKind","ExportKeyword","exportModels","map","child","declarationList","declarations","name","text","Export","get","undefined","withoutEmpty","exportModel","parseModule","modulePath","ast","createSourceFile","ScriptTarget","Latest","moduleExports","exportStaticProperties","Map","forEach","isExpressionStatement","isBinaryExpression","expression","operatorToken","EqualsToken","isPropertyAccessExpression","left","isIdentifier","targetName","propertyName","has","set","existingProperties","isStringLiteral","right","isNumericLiteral","UndefinedKeyword","NullKeyword","TrueKeyword","FalseKeyword","err","logger","error","constructor"],"mappings":"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","sourcesContent":["import { Parser } from '@teambit/schema';\nimport { Export, StaticProperties } from '@teambit/semantics.entities.semantic-schema';\nimport { Logger } from '@teambit/logger';\nimport { readFileSync } from 'fs-extra';\nimport ts, {\n isClassDeclaration,\n isFunctionDeclaration,\n isVariableStatement,\n SourceFile,\n VariableStatement,\n} from 'typescript';\n\nexport class TypeScriptParser implements Parser {\n public extension = /^.*\\.(js|jsx|ts|tsx)$/;\n\n getExports(sourceFile: SourceFile): Export[] {\n const staticProperties = this.parseStaticProperties(sourceFile);\n\n const exports = sourceFile.statements.filter((statement) => {\n if (!statement.modifiers) return false;\n return statement.modifiers.find((modifier) => {\n return modifier.kind === ts.SyntaxKind.ExportKeyword;\n });\n });\n\n const exportModels = exports.map((statement) => {\n // todo refactor to a registry of variable statements.\n if (isVariableStatement(statement)) {\n const child = (statement as VariableStatement).declarationList.declarations[0];\n const name = (child as any).name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n if (isFunctionDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n if (isClassDeclaration(statement)) {\n if (!statement.name) return undefined;\n const name = statement.name.text;\n return new Export(name, staticProperties.get(name));\n }\n\n return undefined;\n });\n const withoutEmpty = exportModels.filter((exportModel) => exportModel !== undefined);\n // @ts-ignore\n return withoutEmpty;\n }\n\n parseModule(modulePath: string) {\n const ast = ts.createSourceFile(modulePath, readFileSync(modulePath, 'utf8'), ts.ScriptTarget.Latest);\n\n const moduleExports = this.getExports(ast);\n return moduleExports;\n }\n\n parseStaticProperties(sourceFile: SourceFile) {\n // TODO - should we also parse staticProperties inside classes / objects?\n\n const exportStaticProperties = new Map<string, StaticProperties>();\n\n sourceFile.statements.forEach((statement) => {\n try {\n if (!ts.isExpressionStatement(statement)) return;\n if (!ts.isBinaryExpression(statement.expression)) return;\n if (statement.expression.operatorToken.kind !== ts.SyntaxKind.EqualsToken) return;\n if (!ts.isPropertyAccessExpression(statement.expression.left)) return;\n if (!ts.isIdentifier(statement.expression.left.expression)) return;\n\n const targetName = statement.expression.left.expression.text;\n const propertyName = statement.expression.left.name.text;\n\n if (!exportStaticProperties.has(targetName)) exportStaticProperties.set(targetName, new Map());\n\n const existingProperties = exportStaticProperties.get(targetName);\n\n if (ts.isStringLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, statement.expression.right.text);\n } else if (ts.isNumericLiteral(statement.expression.right)) {\n existingProperties?.set(propertyName, +statement.expression.right.text);\n } else if (statement.expression.right.kind === ts.SyntaxKind.UndefinedKeyword) {\n existingProperties?.set(propertyName, undefined);\n } else if (statement.expression.right.kind === ts.SyntaxKind.NullKeyword) {\n existingProperties?.set(propertyName, null);\n } else if (statement.expression.right.kind === ts.SyntaxKind.TrueKeyword) {\n existingProperties?.set(propertyName, true);\n } else if (statement.expression.right.kind === ts.SyntaxKind.FalseKeyword) {\n existingProperties?.set(propertyName, false);\n }\n } catch (err) {\n this.logger?.error('failed parsing static properties', err);\n }\n });\n\n return exportStaticProperties;\n }\n\n constructor(private logger?: Logger | undefined) {}\n}\n"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/typescript",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.737",
|
|
4
4
|
"homepage": "https://bit.dev/teambit/typescript/typescript",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.typescript",
|
|
8
8
|
"name": "typescript",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.737"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"lodash": "4.17.21",
|
|
@@ -18,20 +18,20 @@
|
|
|
18
18
|
"@babel/runtime": "7.12.18",
|
|
19
19
|
"core-js": "^3.0.0",
|
|
20
20
|
"@teambit/harmony": "0.3.3",
|
|
21
|
-
"@teambit/compiler": "0.0.
|
|
21
|
+
"@teambit/compiler": "0.0.737",
|
|
22
22
|
"@teambit/typescript.modules.ts-config-mutator": "0.0.68",
|
|
23
|
-
"@teambit/component": "0.0.
|
|
24
|
-
"@teambit/semantics.entities.semantic-schema": "0.0.
|
|
23
|
+
"@teambit/component": "0.0.737",
|
|
24
|
+
"@teambit/semantics.entities.semantic-schema": "0.0.11",
|
|
25
25
|
"@teambit/ts-server": "0.0.32",
|
|
26
|
-
"@teambit/aspect-loader": "0.0.
|
|
26
|
+
"@teambit/aspect-loader": "0.0.737",
|
|
27
27
|
"@teambit/bit-error": "0.0.394",
|
|
28
|
-
"@teambit/builder": "0.0.
|
|
29
|
-
"@teambit/isolator": "0.0.
|
|
28
|
+
"@teambit/builder": "0.0.737",
|
|
29
|
+
"@teambit/isolator": "0.0.737",
|
|
30
30
|
"@teambit/logger": "0.0.583",
|
|
31
|
-
"@teambit/schema": "0.0.
|
|
31
|
+
"@teambit/schema": "0.0.737",
|
|
32
32
|
"@teambit/cli": "0.0.491",
|
|
33
|
-
"@teambit/pkg": "0.0.
|
|
34
|
-
"@teambit/workspace": "0.0.
|
|
33
|
+
"@teambit/pkg": "0.0.737",
|
|
34
|
+
"@teambit/workspace": "0.0.737"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/lodash": "4.14.165",
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.
|
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.
|
|
1
|
+
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.737/dist/typescript.composition.js')]
|
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.737/dist/typescript.docs.mdx')]
|
|
@@ -36,13 +36,13 @@ export class ClassDecelerationTransformer implements SchemaTransformer {
|
|
|
36
36
|
const displaySig = info?.body?.displayString || '';
|
|
37
37
|
const typeStr = parseTypeFromQuickInfo(info);
|
|
38
38
|
const type = await context.resolveType(getter, typeStr);
|
|
39
|
-
return new GetAccessorSchema(getter.name.getText(), type, displaySig);
|
|
39
|
+
return new GetAccessorSchema(context.getLocation(getter), getter.name.getText(), type, displaySig);
|
|
40
40
|
}
|
|
41
41
|
case ts.SyntaxKind.SetAccessor: {
|
|
42
42
|
const setter = member as ts.SetAccessorDeclaration;
|
|
43
43
|
const params = await getParams(setter.parameters, context);
|
|
44
44
|
const displaySig = await context.getQuickInfoDisplayString(setter.name);
|
|
45
|
-
return new SetAccessorSchema(setter.name.getText(), params[0], displaySig);
|
|
45
|
+
return new SetAccessorSchema(context.getLocation(setter), setter.name.getText(), params[0], displaySig);
|
|
46
46
|
}
|
|
47
47
|
default:
|
|
48
48
|
return context.computeSchema(member);
|
|
@@ -17,6 +17,6 @@ export class Constructor implements SchemaTransformer {
|
|
|
17
17
|
async transform(constructorDec: ConstructorDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {
|
|
18
18
|
const args = await getParams(constructorDec.parameters, context);
|
|
19
19
|
|
|
20
|
-
return new ConstructorSchema(args);
|
|
20
|
+
return new ConstructorSchema(context.getLocation(constructorDec), args);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -47,7 +47,7 @@ export class ExportDeclaration implements SchemaTransformer {
|
|
|
47
47
|
})
|
|
48
48
|
);
|
|
49
49
|
|
|
50
|
-
return new Module(compact(schemas));
|
|
50
|
+
return new Module(context.getLocation(node), compact(schemas));
|
|
51
51
|
}
|
|
52
52
|
// e.g. `export * as Composition from './button';
|
|
53
53
|
if (exportClause?.kind === SyntaxKind.NamespaceExport) {
|
|
@@ -17,6 +17,6 @@ export class IndexSignature implements SchemaTransformer {
|
|
|
17
17
|
async transform(indexSig: IndexSignatureDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {
|
|
18
18
|
const params = await getParams(indexSig.parameters, context);
|
|
19
19
|
const type = await typeNodeToSchema(indexSig.type, context);
|
|
20
|
-
return new IndexSignatureSchema(params, type);
|
|
20
|
+
return new IndexSignatureSchema(context.getLocation(indexSig), params, type);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -19,6 +19,6 @@ export class InterfaceDeclarationTransformer implements SchemaTransformer {
|
|
|
19
19
|
const typeSchema = await context.computeSchema(member);
|
|
20
20
|
return typeSchema;
|
|
21
21
|
});
|
|
22
|
-
return new InterfaceSchema(interfaceDec.name.getText(), members);
|
|
22
|
+
return new InterfaceSchema(context.getLocation(interfaceDec), interfaceDec.name.getText(), members);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import ts, { LiteralTypeNode, Node } from 'typescript';
|
|
2
2
|
import { TypeRefSchema } from '@teambit/semantics.entities.semantic-schema';
|
|
3
3
|
import { SchemaTransformer } from '../schema-transformer';
|
|
4
|
+
import { SchemaExtractorContext } from '../schema-extractor-context';
|
|
4
5
|
|
|
5
6
|
export class LiteralTypeTransformer implements SchemaTransformer {
|
|
6
7
|
predicate(node: Node) {
|
|
@@ -11,8 +12,8 @@ export class LiteralTypeTransformer implements SchemaTransformer {
|
|
|
11
12
|
return [];
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
async transform(literalType: LiteralTypeNode) {
|
|
15
|
+
async transform(literalType: LiteralTypeNode, context: SchemaExtractorContext) {
|
|
15
16
|
const type = literalType.literal.getText();
|
|
16
|
-
return new TypeRefSchema(type);
|
|
17
|
+
return new TypeRefSchema(context.getLocation(literalType), type);
|
|
17
18
|
}
|
|
18
19
|
}
|
|
@@ -25,6 +25,6 @@ export class PropertyDeclaration implements SchemaTransformer {
|
|
|
25
25
|
const typeStr = parseTypeFromQuickInfo(info);
|
|
26
26
|
const type = await context.resolveType(propertyDec, typeStr);
|
|
27
27
|
|
|
28
|
-
return new VariableSchema(name
|
|
28
|
+
return new VariableSchema(context.getLocation(propertyDec), name, displaySig || '', type);
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -29,6 +29,6 @@ export class PropertySignature implements SchemaTransformer {
|
|
|
29
29
|
}
|
|
30
30
|
const typeStr = parseTypeFromQuickInfo(info);
|
|
31
31
|
const type = await context.resolveType(prop, typeStr);
|
|
32
|
-
return new VariableSchema(name, displaySig, type);
|
|
32
|
+
return new VariableSchema(context.getLocation(prop), name, displaySig, type);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
@@ -22,6 +22,6 @@ export class TypeAliasTransformer implements SchemaTransformer {
|
|
|
22
22
|
const type = await typeNodeToSchema(typeAlias.type, context);
|
|
23
23
|
const info = await context.getQuickInfo(typeAlias.name);
|
|
24
24
|
const displaySig = info?.body?.displayString;
|
|
25
|
-
return new TypeSchema(this.getName(typeAlias), type, displaySig
|
|
25
|
+
return new TypeSchema(context.getLocation(typeAlias), this.getName(typeAlias), type, displaySig || '');
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -11,6 +11,7 @@ export async function getParams(
|
|
|
11
11
|
): Promise<ParameterSchema[]> {
|
|
12
12
|
return pMapSeries(parameterNodes, async (param) => {
|
|
13
13
|
return new ParameterSchema(
|
|
14
|
+
context.getLocation(param),
|
|
14
15
|
param.name.getText(),
|
|
15
16
|
await getParamType(param, context),
|
|
16
17
|
param.initializer ? param.initializer.getText() : undefined
|
|
@@ -18,6 +19,9 @@ export async function getParams(
|
|
|
18
19
|
});
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
/**
|
|
23
|
+
* @todo: probably not needed. just call context.resolveType instead.
|
|
24
|
+
*/
|
|
21
25
|
async function getParamType(param: ParameterDeclaration, context: SchemaExtractorContext): Promise<SchemaNode> {
|
|
22
26
|
if (param.type) {
|
|
23
27
|
const type = param.type;
|
|
@@ -25,5 +29,5 @@ async function getParamType(param: ParameterDeclaration, context: SchemaExtracto
|
|
|
25
29
|
}
|
|
26
30
|
const info = await context.getQuickInfo(param.name);
|
|
27
31
|
const parsed = parseTypeFromQuickInfo(info);
|
|
28
|
-
return new TypeRefSchema(parsed || 'any');
|
|
32
|
+
return new TypeRefSchema(context.getLocation(param), parsed || 'any');
|
|
29
33
|
}
|
|
@@ -9,11 +9,11 @@ export async function toFunctionLikeSchema(node: SignatureDeclaration, context:
|
|
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
10
10
|
const info = await context.getQuickInfo(node.name!);
|
|
11
11
|
const returnTypeStr = parseTypeFromQuickInfo(info);
|
|
12
|
-
const displaySig = info?.body?.displayString;
|
|
12
|
+
const displaySig = info?.body?.displayString || '';
|
|
13
13
|
const args = await getParams(node.parameters, context);
|
|
14
14
|
const returnType = await context.resolveType(node, returnTypeStr);
|
|
15
15
|
const modifiers = node.modifiers?.map((modifier) => modifier.getText()) || [];
|
|
16
16
|
const location = context.getLocation(node);
|
|
17
17
|
|
|
18
|
-
return new FunctionLikeSchema(name, args, returnType, displaySig
|
|
18
|
+
return new FunctionLikeSchema(location, name, args, returnType, displaySig, modifiers as Modifier[]);
|
|
19
19
|
}
|