@teambit/typescript 0.0.734 → 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.
Files changed (63) hide show
  1. package/dist/schema-extractor-context.d.ts +2 -1
  2. package/dist/schema-extractor-context.js +15 -6
  3. package/dist/schema-extractor-context.js.map +1 -1
  4. package/dist/transformers/class-deceleration.js +2 -2
  5. package/dist/transformers/class-deceleration.js.map +1 -1
  6. package/dist/transformers/constructor.js +1 -1
  7. package/dist/transformers/constructor.js.map +1 -1
  8. package/dist/transformers/export-declaration.js +1 -1
  9. package/dist/transformers/export-declaration.js.map +1 -1
  10. package/dist/transformers/index-signature.js +1 -1
  11. package/dist/transformers/index-signature.js.map +1 -1
  12. package/dist/transformers/interface-declaration.js +1 -1
  13. package/dist/transformers/interface-declaration.js.map +1 -1
  14. package/dist/transformers/literal-type.d.ts +2 -1
  15. package/dist/transformers/literal-type.js +2 -2
  16. package/dist/transformers/literal-type.js.map +1 -1
  17. package/dist/transformers/property-declaration.js +1 -1
  18. package/dist/transformers/property-declaration.js.map +1 -1
  19. package/dist/transformers/property-signature.js +1 -1
  20. package/dist/transformers/property-signature.js.map +1 -1
  21. package/dist/transformers/source-file-transformer.js +1 -1
  22. package/dist/transformers/source-file-transformer.js.map +1 -1
  23. package/dist/transformers/type-alias.js +1 -1
  24. package/dist/transformers/type-alias.js.map +1 -1
  25. package/dist/transformers/utils/get-params.js +6 -2
  26. package/dist/transformers/utils/get-params.js.map +1 -1
  27. package/dist/transformers/utils/to-function-schema.js +2 -2
  28. package/dist/transformers/utils/to-function-schema.js.map +1 -1
  29. package/dist/transformers/utils/type-node-to-schema.js +17 -10
  30. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  31. package/dist/transformers/variable-declaration.js +3 -3
  32. package/dist/transformers/variable-declaration.js.map +1 -1
  33. package/dist/transformers/variable-statement.js +2 -3
  34. package/dist/transformers/variable-statement.js.map +1 -1
  35. package/dist/typescript.extractor.js +3 -3
  36. package/dist/typescript.extractor.js.map +1 -1
  37. package/dist/typescript.parser.d.ts +2 -2
  38. package/dist/typescript.parser.js +4 -4
  39. package/dist/typescript.parser.js.map +1 -1
  40. package/package-tar/teambit-typescript-0.0.737.tgz +0 -0
  41. package/package.json +15 -15
  42. package/{preview-1652785756723.js → preview-1652930732694.js} +2 -2
  43. package/transformers/class-deceleration.ts +2 -2
  44. package/transformers/constructor.ts +1 -1
  45. package/transformers/export-declaration.ts +1 -1
  46. package/transformers/index-signature.ts +1 -1
  47. package/transformers/interface-declaration.ts +1 -1
  48. package/transformers/literal-type.ts +3 -2
  49. package/transformers/property-declaration.ts +1 -1
  50. package/transformers/property-signature.ts +1 -1
  51. package/transformers/source-file-transformer.ts +1 -1
  52. package/transformers/type-alias.ts +1 -1
  53. package/transformers/utils/get-params.ts +5 -1
  54. package/transformers/utils/to-function-schema.ts +2 -2
  55. package/transformers/utils/type-node-to-schema.ts +16 -10
  56. package/transformers/variable-declaration.ts +3 -3
  57. package/transformers/variable-statement.ts +1 -2
  58. package/tsconfig.json +1 -1
  59. package/dist/transformers/export-declaration-type.d.ts +0 -0
  60. package/dist/transformers/export-declaration-type.js +0 -3
  61. package/dist/transformers/export-declaration-type.js.map +0 -1
  62. package/package-tar/teambit-typescript-0.0.734.tgz +0 -0
  63. 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
- return new (_semanticsEntities().TypeIntersectionSchema)(types);
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
- return new (_semanticsEntities().TypeUnionSchema)(types);
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
- return new (_semanticsEntities().TypeLiteralSchema)(members);
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, '', location);
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
- return new (_semanticsEntities().TypeQuerySchema)(type, displaySig);
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
- return new (_semanticsEntities().TypeArraySchema)(type);
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
- const location = context.getLocation(varDec);
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","location","getLocation","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,QAAI,wBAAAN,MAAM,CAACO,WAAP,4EAAoBlB,IAApB,MAA6BC,sBAAGC,UAAH,CAAciB,aAA/C,EAA8D;AAC5D,YAAMC,IAAI,GAAG,MAAM,4BAAWT,MAAM,CAACO,WAAR,CAAsCG,UAAhD,EAA4DT,OAA5D,CAAnB;AACA,YAAMU,OAAO,GAAG,4DAA6BT,IAA7B,CAAhB;AACA,YAAMU,UAAU,GAAG,MAAMX,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAzB;AACA,YAAMG,QAAQ,GAAGb,OAAO,CAACc,WAAR,CAAoBf,MAApB,CAAjB;AACA,aAAO,KAAIgB,uCAAJ,EAAuBvB,IAAvB,EAA6BgB,IAA7B,EAAmCG,UAAnC,EAA+CR,UAA/C,EAA2DU,QAA3D,CAAP;AACD;;AACD,UAAMH,OAAO,GAAG,sDAAuBT,IAAvB,CAAhB;AACA,UAAMe,IAAI,GAAG,MAAMhB,OAAO,CAACY,WAAR,CAAoBb,MAApB,EAA4BW,OAA5B,CAAnB;AACA,WAAO,KAAIO,mCAAJ,EAAmBzB,IAAnB,EAAyBW,UAAzB,EAAqCa,IAArC,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 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 location = context.getLocation(varDec);\n return new FunctionLikeSchema(name, args, returnType, displaySig, location);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableSchema(name, displaySig, type);\n }\n}\n"]}
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
- }); // @todo: find a better way to return an array of SchemaNode. this is not really a module
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,CAD6F,CAM7F;;AACA,WAAO,KAAIE,2BAAJ,EAAW,uBAAQH,OAAR,CAAX,CAAP;AACD;;AAnBoE","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 // @todo: find a better way to return an array of SchemaNode. this is not really a module\n return new Module(compact(schemas));\n }\n}\n"]}
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; // return APISchema.from({ });
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":"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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\n // return APISchema.from({ });\n return new APISchema(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
+ {"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, Module, StaticProperties } from '@teambit/semantics.entities.semantic-schema';
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): Module;
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, undefined, staticProperties.get(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, undefined, staticProperties.get(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, undefined, staticProperties.get(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 new (_semanticsEntities().Module)(moduleExports);
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","undefined","get","withoutEmpty","exportModel","parseModule","modulePath","ast","createSourceFile","ScriptTarget","Latest","moduleExports","Module","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, Module, 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, undefined, 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, undefined, 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, undefined, 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\n return new Module(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"]}
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":";;;;;;;;;;;;;;;;;;;;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAQO,MAAMA,gBAAN,CAAyC;AAG9CC,EAAAA,UAAU,CAACC,UAAD,EAAmC;AAC3C,UAAMC,gBAAgB,GAAG,KAAKC,qBAAL,CAA2BF,UAA3B,CAAzB;AAEA,UAAMG,OAAO,GAAGH,UAAU,CAACI,UAAX,CAAsBC,MAAtB,CAA8BC,SAAD,IAAe;AAC1D,UAAI,CAACA,SAAS,CAACC,SAAf,EAA0B,OAAO,KAAP;AAC1B,aAAOD,SAAS,CAACC,SAAV,CAAoBC,IAApB,CAA0BC,QAAD,IAAc;AAC5C,eAAOA,QAAQ,CAACC,IAAT,KAAkBC,sBAAGC,UAAH,CAAcC,aAAvC;AACD,OAFM,CAAP;AAGD,KALe,CAAhB;AAOA,UAAMC,YAAY,GAAGX,OAAO,CAACY,GAAR,CAAaT,SAAD,IAAe;AAC9C;AACA,UAAI,uCAAoBA,SAApB,CAAJ,EAAoC;AAClC,cAAMU,KAAK,GAAIV,SAAD,CAAiCW,eAAjC,CAAiDC,YAAjD,CAA8D,CAA9D,CAAd;AACA,cAAMC,IAAI,GAAIH,KAAD,CAAeG,IAAf,CAAoBC,IAAjC;AACA,eAAO,KAAIC,2BAAJ,EAAWF,IAAX,EAAiBlB,gBAAgB,CAACqB,GAAjB,CAAqBH,IAArB,CAAjB,CAAP;AACD;;AAED,UAAI,yCAAsBb,SAAtB,CAAJ,EAAsC;AACpC,YAAI,CAACA,SAAS,CAACa,IAAf,EAAqB,OAAOI,SAAP;AACrB,cAAMJ,IAAI,GAAGb,SAAS,CAACa,IAAV,CAAeC,IAA5B;AACA,eAAO,KAAIC,2BAAJ,EAAWF,IAAX,EAAiBlB,gBAAgB,CAACqB,GAAjB,CAAqBH,IAArB,CAAjB,CAAP;AACD;;AAED,UAAI,sCAAmBb,SAAnB,CAAJ,EAAmC;AACjC,YAAI,CAACA,SAAS,CAACa,IAAf,EAAqB,OAAOI,SAAP;AACrB,cAAMJ,IAAI,GAAGb,SAAS,CAACa,IAAV,CAAeC,IAA5B;AACA,eAAO,KAAIC,2BAAJ,EAAWF,IAAX,EAAiBlB,gBAAgB,CAACqB,GAAjB,CAAqBH,IAArB,CAAjB,CAAP;AACD;;AAED,aAAOI,SAAP;AACD,KArBoB,CAArB;AAsBA,UAAMC,YAAY,GAAGV,YAAY,CAACT,MAAb,CAAqBoB,WAAD,IAAiBA,WAAW,KAAKF,SAArD,CAArB,CAhC2C,CAiC3C;;AACA,WAAOC,YAAP;AACD;;AAEDE,EAAAA,WAAW,CAACC,UAAD,EAAqB;AAC9B,UAAMC,GAAG,GAAGjB,sBAAGkB,gBAAH,CAAoBF,UAApB,EAAgC,6BAAaA,UAAb,EAAyB,MAAzB,CAAhC,EAAkEhB,sBAAGmB,YAAH,CAAgBC,MAAlF,CAAZ;;AAEA,UAAMC,aAAa,GAAG,KAAKjC,UAAL,CAAgB6B,GAAhB,CAAtB;AACA,WAAOI,aAAP;AACD;;AAED9B,EAAAA,qBAAqB,CAACF,UAAD,EAAyB;AAC5C;AAEA,UAAMiC,sBAAsB,GAAG,IAAIC,GAAJ,EAA/B;AAEAlC,IAAAA,UAAU,CAACI,UAAX,CAAsB+B,OAAtB,CAA+B7B,SAAD,IAAe;AAC3C,UAAI;AACF,YAAI,CAACK,sBAAGyB,qBAAH,CAAyB9B,SAAzB,CAAL,EAA0C;AAC1C,YAAI,CAACK,sBAAG0B,kBAAH,CAAsB/B,SAAS,CAACgC,UAAhC,CAAL,EAAkD;AAClD,YAAIhC,SAAS,CAACgC,UAAV,CAAqBC,aAArB,CAAmC7B,IAAnC,KAA4CC,sBAAGC,UAAH,CAAc4B,WAA9D,EAA2E;AAC3E,YAAI,CAAC7B,sBAAG8B,0BAAH,CAA8BnC,SAAS,CAACgC,UAAV,CAAqBI,IAAnD,CAAL,EAA+D;AAC/D,YAAI,CAAC/B,sBAAGgC,YAAH,CAAgBrC,SAAS,CAACgC,UAAV,CAAqBI,IAArB,CAA0BJ,UAA1C,CAAL,EAA4D;AAE5D,cAAMM,UAAU,GAAGtC,SAAS,CAACgC,UAAV,CAAqBI,IAArB,CAA0BJ,UAA1B,CAAqClB,IAAxD;AACA,cAAMyB,YAAY,GAAGvC,SAAS,CAACgC,UAAV,CAAqBI,IAArB,CAA0BvB,IAA1B,CAA+BC,IAApD;AAEA,YAAI,CAACa,sBAAsB,CAACa,GAAvB,CAA2BF,UAA3B,CAAL,EAA6CX,sBAAsB,CAACc,GAAvB,CAA2BH,UAA3B,EAAuC,IAAIV,GAAJ,EAAvC;AAE7C,cAAMc,kBAAkB,GAAGf,sBAAsB,CAACX,GAAvB,CAA2BsB,UAA3B,CAA3B;;AAEA,YAAIjC,sBAAGsC,eAAH,CAAmB3C,SAAS,CAACgC,UAAV,CAAqBY,KAAxC,CAAJ,EAAoD;AAClDF,UAAAA,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAED,GAApB,CAAwBF,YAAxB,EAAsCvC,SAAS,CAACgC,UAAV,CAAqBY,KAArB,CAA2B9B,IAAjE;AACD,SAFD,MAEO,IAAIT,sBAAGwC,gBAAH,CAAoB7C,SAAS,CAACgC,UAAV,CAAqBY,KAAzC,CAAJ,EAAqD;AAC1DF,UAAAA,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAED,GAApB,CAAwBF,YAAxB,EAAsC,CAACvC,SAAS,CAACgC,UAAV,CAAqBY,KAArB,CAA2B9B,IAAlE;AACD,SAFM,MAEA,IAAId,SAAS,CAACgC,UAAV,CAAqBY,KAArB,CAA2BxC,IAA3B,KAAoCC,sBAAGC,UAAH,CAAcwC,gBAAtD,EAAwE;AAC7EJ,UAAAA,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAED,GAApB,CAAwBF,YAAxB,EAAsCtB,SAAtC;AACD,SAFM,MAEA,IAAIjB,SAAS,CAACgC,UAAV,CAAqBY,KAArB,CAA2BxC,IAA3B,KAAoCC,sBAAGC,UAAH,CAAcyC,WAAtD,EAAmE;AACxEL,UAAAA,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAED,GAApB,CAAwBF,YAAxB,EAAsC,IAAtC;AACD,SAFM,MAEA,IAAIvC,SAAS,CAACgC,UAAV,CAAqBY,KAArB,CAA2BxC,IAA3B,KAAoCC,sBAAGC,UAAH,CAAc0C,WAAtD,EAAmE;AACxEN,UAAAA,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAED,GAApB,CAAwBF,YAAxB,EAAsC,IAAtC;AACD,SAFM,MAEA,IAAIvC,SAAS,CAACgC,UAAV,CAAqBY,KAArB,CAA2BxC,IAA3B,KAAoCC,sBAAGC,UAAH,CAAc2C,YAAtD,EAAoE;AACzEP,UAAAA,kBAAkB,SAAlB,IAAAA,kBAAkB,WAAlB,YAAAA,kBAAkB,CAAED,GAApB,CAAwBF,YAAxB,EAAsC,KAAtC;AACD;AACF,OA3BD,CA2BE,OAAOW,GAAP,EAAY;AAAA;;AACZ,6BAAKC,MAAL,8DAAaC,KAAb,CAAmB,kCAAnB,EAAuDF,GAAvD;AACD;AACF,KA/BD;AAiCA,WAAOvB,sBAAP;AACD;;AAED0B,EAAAA,WAAW,CAASF,MAAT,EAAsC;AAAA,SAA7BA,MAA6B,GAA7BA,MAA6B;AAAA,uDAvF9B,uBAuF8B;AAAE;;AAxFL","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"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/typescript",
3
- "version": "0.0.734",
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.734"
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.734",
21
+ "@teambit/compiler": "0.0.737",
22
22
  "@teambit/typescript.modules.ts-config-mutator": "0.0.68",
23
- "@teambit/component": "0.0.734",
24
- "@teambit/semantics.entities.semantic-schema": "0.0.10",
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.734",
26
+ "@teambit/aspect-loader": "0.0.737",
27
27
  "@teambit/bit-error": "0.0.394",
28
- "@teambit/builder": "0.0.734",
29
- "@teambit/isolator": "0.0.734",
30
- "@teambit/logger": "0.0.582",
31
- "@teambit/schema": "0.0.734",
32
- "@teambit/cli": "0.0.490",
33
- "@teambit/pkg": "0.0.734",
34
- "@teambit/workspace": "0.0.734"
28
+ "@teambit/builder": "0.0.737",
29
+ "@teambit/isolator": "0.0.737",
30
+ "@teambit/logger": "0.0.583",
31
+ "@teambit/schema": "0.0.737",
32
+ "@teambit/cli": "0.0.491",
33
+ "@teambit/pkg": "0.0.737",
34
+ "@teambit/workspace": "0.0.737"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/lodash": "4.14.165",
@@ -47,7 +47,7 @@
47
47
  "@teambit/typescript.aspect-docs.typescript": "0.0.137"
48
48
  },
49
49
  "peerDependencies": {
50
- "@teambit/legacy": "1.0.270",
50
+ "@teambit/legacy": "1.0.271",
51
51
  "react-dom": "^16.8.0 || ^17.0.0",
52
52
  "react": "^16.8.0 || ^17.0.0"
53
53
  },
@@ -75,7 +75,7 @@
75
75
  "react": "-"
76
76
  },
77
77
  "peerDependencies": {
78
- "@teambit/legacy": "1.0.270",
78
+ "@teambit/legacy": "1.0.271",
79
79
  "react-dom": "^16.8.0 || ^17.0.0",
80
80
  "react": "^16.8.0 || ^17.0.0"
81
81
  }
@@ -1,2 +1,2 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.734/dist/typescript.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.734/dist/typescript.docs.mdx')]
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 || '', displaySig || '', type);
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
  }
@@ -35,7 +35,7 @@ export class SourceFileTransformer implements SchemaTransformer {
35
35
  return context.computeSchema(exportNode);
36
36
  });
37
37
 
38
- return new Module(schemas);
38
+ return new Module(context.getLocation(node), schemas);
39
39
  }
40
40
 
41
41
  /**
@@ -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 as string);
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
  }