@teambit/typescript 0.0.738 → 0.0.739

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 (38) hide show
  1. package/dist/exceptions/transformer-not-found.d.ts +2 -1
  2. package/dist/exceptions/transformer-not-found.js +3 -2
  3. package/dist/exceptions/transformer-not-found.js.map +1 -1
  4. package/dist/schema-extractor-context.d.ts +4 -1
  5. package/dist/schema-extractor-context.js +20 -2
  6. package/dist/schema-extractor-context.js.map +1 -1
  7. package/dist/transformers/class-deceleration.js +9 -1
  8. package/dist/transformers/class-deceleration.js.map +1 -1
  9. package/dist/transformers/enum-declaration.d.ts +10 -0
  10. package/dist/transformers/enum-declaration.js +60 -0
  11. package/dist/transformers/enum-declaration.js.map +1 -0
  12. package/dist/transformers/index.d.ts +1 -0
  13. package/dist/transformers/index.js +16 -0
  14. package/dist/transformers/index.js.map +1 -1
  15. package/dist/transformers/utils/get-params.js +53 -7
  16. package/dist/transformers/utils/get-params.js.map +1 -1
  17. package/dist/transformers/utils/parse-type-from-quick-info.d.ts +1 -0
  18. package/dist/transformers/utils/parse-type-from-quick-info.js +12 -3
  19. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
  20. package/dist/transformers/utils/type-node-to-schema.js +34 -4
  21. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  22. package/dist/typescript.extractor.d.ts +7 -1
  23. package/dist/typescript.extractor.js +30 -9
  24. package/dist/typescript.extractor.js.map +1 -1
  25. package/dist/typescript.main.runtime.d.ts +11 -2
  26. package/dist/typescript.main.runtime.js +17 -6
  27. package/dist/typescript.main.runtime.js.map +1 -1
  28. package/exceptions/transformer-not-found.ts +4 -2
  29. package/package-tar/teambit-typescript-0.0.739.tgz +0 -0
  30. package/package.json +12 -11
  31. package/{preview-1653227849497.js → preview-1653362849981.js} +2 -2
  32. package/transformers/class-deceleration.ts +4 -1
  33. package/transformers/enum-declaration.ts +20 -0
  34. package/transformers/index.ts +1 -0
  35. package/transformers/utils/get-params.ts +53 -9
  36. package/transformers/utils/parse-type-from-quick-info.ts +9 -1
  37. package/transformers/utils/type-node-to-schema.ts +37 -4
  38. package/package-tar/teambit-typescript-0.0.738.tgz +0 -0
@@ -89,16 +89,22 @@ async function typeNodeToSchema(node, context) {
89
89
  case _typescript().SyntaxKind.TupleType:
90
90
  return tupleType(node, context);
91
91
 
92
+ case _typescript().SyntaxKind.ParenthesizedType:
93
+ return parenthesizedType(node, context);
94
+
92
95
  case _typescript().SyntaxKind.TypePredicate:
96
+ return typePredicate(node, context);
97
+
98
+ case _typescript().SyntaxKind.IndexedAccessType:
99
+ return indexedAccessType(node, context);
100
+
93
101
  case _typescript().SyntaxKind.ConstructorType:
94
102
  case _typescript().SyntaxKind.NamedTupleMember:
95
103
  case _typescript().SyntaxKind.OptionalType:
96
104
  case _typescript().SyntaxKind.RestType:
97
105
  case _typescript().SyntaxKind.ConditionalType:
98
106
  case _typescript().SyntaxKind.InferType:
99
- case _typescript().SyntaxKind.ParenthesizedType:
100
107
  case _typescript().SyntaxKind.ThisType:
101
- case _typescript().SyntaxKind.IndexedAccessType:
102
108
  case _typescript().SyntaxKind.MappedType:
103
109
  case _typescript().SyntaxKind.TemplateLiteralType:
104
110
  case _typescript().SyntaxKind.TemplateLiteralTypeSpan:
@@ -115,11 +121,11 @@ async function typeNodeToSchema(node, context) {
115
121
  case _typescript().SyntaxKind.JSDocNamepathType:
116
122
  case _typescript().SyntaxKind.JSDocSignature:
117
123
  case _typescript().SyntaxKind.JSDocTypeLiteral:
118
- throw new Error(`TypeNode "${_typescript().SyntaxKind[node.kind]}" was not implemented yet.
124
+ throw new Error(`TypeNode ${node.kind} (probably ${_typescript().SyntaxKind[node.kind]}) was not implemented yet.
119
125
  context: ${node.getText()}`);
120
126
 
121
127
  default:
122
- throw new Error(`Node "${_typescript().SyntaxKind[node.kind]}" is not a TypeNode.
128
+ throw new Error(`Node ${node.kind} (probably ${_typescript().SyntaxKind[node.kind]}) is not a TypeNode.
123
129
  context: ${node.getText()}`);
124
130
  }
125
131
  }
@@ -192,6 +198,12 @@ async function typeLiteral(node, context) {
192
198
  async function typeReference(node, context) {
193
199
  const name = node.typeName.getText();
194
200
  const type = await context.resolveType(node, name, false);
201
+
202
+ if (node.typeArguments && type instanceof _semanticsEntities().TypeRefSchema) {
203
+ const args = await (0, _pMapSeries().default)(node.typeArguments, arg => typeNodeToSchema(arg, context));
204
+ type.typeArgs = args;
205
+ }
206
+
195
207
  return type;
196
208
  }
197
209
 
@@ -256,4 +268,22 @@ async function tupleType(node, context) {
256
268
  return new (_semanticsEntities().TupleTypeSchema)(context.getLocation(node), elements);
257
269
  }
258
270
 
271
+ async function parenthesizedType(node, context) {
272
+ const type = await typeNodeToSchema(node.type, context);
273
+ return new (_semanticsEntities().ParenthesizedTypeSchema)(context.getLocation(node), type);
274
+ }
275
+
276
+ async function typePredicate(node, context) {
277
+ const parameterName = (0, _typescript().isIdentifier)(node.parameterName) ? node.parameterName.getText() : 'this';
278
+ const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;
279
+ const hasAssertsModifier = Boolean(node.assertsModifier);
280
+ return new (_semanticsEntities().TypePredicateSchema)(context.getLocation(node), parameterName, type, hasAssertsModifier);
281
+ }
282
+
283
+ async function indexedAccessType(node, context) {
284
+ const objectType = await typeNodeToSchema(node.objectType, context);
285
+ const indexType = await typeNodeToSchema(node.indexType, context);
286
+ return new (_semanticsEntities().IndexedAccessSchema)(context.getLocation(node), objectType, indexType);
287
+ }
288
+
259
289
  //# sourceMappingURL=type-node-to-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["typeNodeToSchema","node","context","location","getLocation","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","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","pMapSeries","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","computeSchema","TypeLiteralSchema","name","typeName","resolveType","params","getParams","parameters","returnType","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema"],"sources":["type-node-to-schema.ts"],"sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n} 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"],"mappings":"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"}
1
+ {"version":3,"names":["typeNodeToSchema","node","context","location","getLocation","isKeywordType","KeywordTypeSchema","getText","kind","SyntaxKind","IntersectionType","intersectionType","UnionType","unionType","TypeReference","typeReference","TypeLiteral","typeLiteral","LiteralType","LiteralTypeSchema","FunctionType","functionType","TypeQuery","typeQuery","ArrayType","arrayType","TypeOperator","typeOperator","TupleType","tupleType","ParenthesizedType","parenthesizedType","TypePredicate","typePredicate","IndexedAccessType","indexedAccessType","ConstructorType","NamedTupleMember","OptionalType","RestType","ConditionalType","InferType","ThisType","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","pMapSeries","type","typeSchema","TypeIntersectionSchema","TypeUnionSchema","members","member","computeSchema","TypeLiteralSchema","name","typeName","resolveType","typeArguments","TypeRefSchema","args","arg","typeArgs","params","getParams","parameters","returnType","FunctionLikeSchema","displaySig","getQuickInfoDisplayString","exprName","TypeQuerySchema","elementType","TypeArraySchema","operatorName","getOperatorName","operator","TypeOperatorSchema","KeyOfKeyword","UniqueKeyword","ReadonlyKeyword","elements","elem","TupleTypeSchema","ParenthesizedTypeSchema","parameterName","isIdentifier","undefined","hasAssertsModifier","Boolean","assertsModifier","TypePredicateSchema","objectType","indexType","IndexedAccessSchema"],"sources":["type-node-to-schema.ts"],"sourcesContent":["import {\n TypeNode,\n SyntaxKind,\n KeywordTypeNode,\n FunctionTypeNode,\n TypeQueryNode,\n TypeReferenceNode,\n ArrayTypeNode,\n TypeOperatorNode,\n TupleTypeNode,\n IntersectionTypeNode,\n UnionTypeNode,\n TypeLiteralNode,\n ParenthesizedTypeNode,\n TypePredicateNode,\n isIdentifier,\n IndexedAccessTypeNode,\n} from 'typescript';\nimport {\n SchemaNode,\n TypeRefSchema,\n TypeIntersectionSchema,\n TypeUnionSchema,\n TypeLiteralSchema,\n TypeQuerySchema,\n LiteralTypeSchema,\n KeywordTypeSchema,\n TypeArraySchema,\n TypeOperatorSchema,\n TupleTypeSchema,\n FunctionLikeSchema,\n ParenthesizedTypeSchema,\n TypePredicateSchema,\n IndexedAccessSchema,\n} from '@teambit/semantics.entities.semantic-schema';\nimport pMapSeries from 'p-map-series';\nimport { SchemaExtractorContext } from '../../schema-extractor-context';\nimport { getParams } from './get-params';\n\n// eslint-disable-next-line complexity\nexport async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const location = context.getLocation(node);\n if (isKeywordType(node)) {\n return new KeywordTypeSchema(location, node.getText());\n }\n switch (node.kind) {\n case SyntaxKind.IntersectionType:\n return intersectionType(node as IntersectionTypeNode, context);\n case SyntaxKind.UnionType:\n return unionType(node as UnionTypeNode, context);\n case SyntaxKind.TypeReference:\n return typeReference(node as TypeReferenceNode, context);\n case SyntaxKind.TypeLiteral:\n return typeLiteral(node as TypeLiteralNode, context);\n case SyntaxKind.LiteralType: // e.g. string/boolean\n return new LiteralTypeSchema(location, node.getText());\n case SyntaxKind.FunctionType:\n return functionType(node as FunctionTypeNode, context);\n case SyntaxKind.TypeQuery:\n return typeQuery(node as TypeQueryNode, context);\n case SyntaxKind.ArrayType:\n return arrayType(node as ArrayTypeNode, context);\n case SyntaxKind.TypeOperator:\n return typeOperator(node as TypeOperatorNode, context);\n case SyntaxKind.TupleType:\n return tupleType(node as TupleTypeNode, context);\n case SyntaxKind.ParenthesizedType:\n return parenthesizedType(node as ParenthesizedTypeNode, context);\n case SyntaxKind.TypePredicate:\n return typePredicate(node as TypePredicateNode, context);\n case SyntaxKind.IndexedAccessType:\n return indexedAccessType(node as IndexedAccessTypeNode, context);\n case SyntaxKind.ConstructorType:\n case SyntaxKind.NamedTupleMember:\n case SyntaxKind.OptionalType:\n case SyntaxKind.RestType:\n case SyntaxKind.ConditionalType:\n case SyntaxKind.InferType:\n case SyntaxKind.ThisType:\n case SyntaxKind.MappedType:\n case SyntaxKind.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 ${node.kind} (probably ${SyntaxKind[node.kind]}) was not implemented yet.\ncontext: ${node.getText()}`);\n default:\n throw new Error(`Node ${node.kind} (probably ${SyntaxKind[node.kind]}) is not a TypeNode.\ncontext: ${node.getText()}`);\n }\n}\n\n/**\n * whether it's kind of `ts.KeywordTypeSyntaxKind`\n */\nfunction isKeywordType(node: TypeNode): node is KeywordTypeNode {\n switch (node.kind) {\n case SyntaxKind.AnyKeyword:\n case SyntaxKind.BigIntKeyword:\n case SyntaxKind.BooleanKeyword:\n case SyntaxKind.IntrinsicKeyword:\n case SyntaxKind.NeverKeyword:\n case SyntaxKind.NumberKeyword:\n case SyntaxKind.ObjectKeyword:\n case SyntaxKind.StringKeyword:\n case SyntaxKind.SymbolKeyword:\n case SyntaxKind.UndefinedKeyword:\n case SyntaxKind.UnknownKeyword:\n case SyntaxKind.VoidKeyword:\n return true;\n default:\n return false;\n }\n}\n\nasync function intersectionType(node: IntersectionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeIntersectionSchema(location, types);\n}\n\nasync function unionType(node: UnionTypeNode, context: SchemaExtractorContext) {\n const types = await pMapSeries(node.types, async (type) => {\n const typeSchema = await typeNodeToSchema(type, context);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeUnionSchema(location, types);\n}\n\n/**\n * not to be confused with \"LiteralType\", which is string/boolean/null.\n * this \"TypeLiteral\" is an object with properties, such as: `{ a: string; b: number }`, similar to Interface.\n */\nasync function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContext) {\n const members = await pMapSeries(node.members, async (member) => {\n const typeSchema = await context.computeSchema(member);\n return typeSchema;\n });\n const location = context.getLocation(node);\n return new TypeLiteralSchema(location, members);\n}\n\n/**\n * In the following example, `AriaButtonProps` is a type reference\n * ```ts\n * import type { AriaButtonProps } from '@react-types/button';\n * export type ButtonProps = AriaButtonProps & { a: string };\n * ```\n */\nasync function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {\n const name = node.typeName.getText();\n const type = await context.resolveType(node, name, false);\n if (node.typeArguments && type instanceof TypeRefSchema) {\n const args = await pMapSeries(node.typeArguments, (arg) => typeNodeToSchema(arg, context));\n type.typeArgs = args;\n }\n return type;\n}\n\nasync function functionType(node: FunctionTypeNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = node.name?.getText() || '';\n const params = await getParams(node.parameters, context);\n const returnType = await typeNodeToSchema(node.type, context);\n const location = context.getLocation(node);\n return new FunctionLikeSchema(location, name, params, returnType, '');\n}\n\n/**\n * e.g. `typeof Foo`\n */\nasync function typeQuery(node: TypeQueryNode, context: SchemaExtractorContext) {\n const displaySig = await context.getQuickInfoDisplayString(node.exprName);\n const type = await context.resolveType(node.exprName, node.exprName.getText(), false);\n const location = context.getLocation(node);\n return new TypeQuerySchema(location, type, displaySig);\n}\n\nasync function arrayType(node: ArrayTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.elementType, context);\n const location = context.getLocation(node);\n return new TypeArraySchema(location, type);\n}\n\n/**\n * e.g. keyof typeof Foo\n */\nasync function typeOperator(node: TypeOperatorNode, context: SchemaExtractorContext) {\n const operatorName = getOperatorName(node.operator);\n const type = await typeNodeToSchema(node.type, context);\n return new TypeOperatorSchema(context.getLocation(node), operatorName, type);\n}\n\nfunction getOperatorName(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword) {\n switch (operator) {\n case SyntaxKind.KeyOfKeyword:\n return 'keyof';\n case SyntaxKind.UniqueKeyword:\n return 'unique';\n case SyntaxKind.ReadonlyKeyword:\n return 'readonly';\n default:\n throw new Error(`getOperatorName: unable to find operator name for ${operator}`);\n }\n}\n\nasync function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {\n const elements = await pMapSeries(node.elements, async (elem) => {\n const typeSchema = await typeNodeToSchema(elem, context);\n return typeSchema;\n });\n return new TupleTypeSchema(context.getLocation(node), elements);\n}\n\nasync function parenthesizedType(node: ParenthesizedTypeNode, context: SchemaExtractorContext) {\n const type = await typeNodeToSchema(node.type, context);\n return new ParenthesizedTypeSchema(context.getLocation(node), type);\n}\n\nasync function typePredicate(node: TypePredicateNode, context: SchemaExtractorContext) {\n const parameterName = isIdentifier(node.parameterName) ? node.parameterName.getText() : 'this';\n const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;\n const hasAssertsModifier = Boolean(node.assertsModifier);\n return new TypePredicateSchema(context.getLocation(node), parameterName, type, hasAssertsModifier);\n}\n\nasync function indexedAccessType(node: IndexedAccessTypeNode, context: SchemaExtractorContext) {\n const objectType = await typeNodeToSchema(node.objectType, context);\n const indexType = await typeNodeToSchema(node.indexType, context);\n return new IndexedAccessSchema(context.getLocation(node), objectType, indexType);\n}\n"],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import ts, { Node } from 'typescript';
2
2
  import { SchemaExtractor } from '@teambit/schema';
3
+ import type { Workspace } from '@teambit/workspace';
4
+ import { DependencyResolverMain } from '@teambit/dependency-resolver';
3
5
  import { SchemaNode, APISchema } from '@teambit/semantics.entities.semantic-schema';
4
6
  import { Component } from '@teambit/component';
5
7
  import { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';
@@ -10,7 +12,9 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
10
12
  private schemaTransformerSlot;
11
13
  private tsMain;
12
14
  private rootPath;
13
- constructor(tsconfig: any, schemaTransformerSlot: SchemaTransformerSlot, tsMain: TypescriptMain, rootPath: string);
15
+ private depResolver;
16
+ private workspace;
17
+ constructor(tsconfig: any, schemaTransformerSlot: SchemaTransformerSlot, tsMain: TypescriptMain, rootPath: string, depResolver: DependencyResolverMain, workspace: Workspace | undefined);
14
18
  parseSourceFile(file: AbstractVinyl): ts.SourceFile;
15
19
  /**
16
20
  * extract a component schema.
@@ -18,9 +22,11 @@ export declare class TypeScriptExtractor implements SchemaExtractor {
18
22
  extract(component: Component): Promise<APISchema>;
19
23
  computeExportedIdentifiers(node: Node, context: SchemaExtractorContext): Promise<import("./export-identifier").ExportIdentifier[]>;
20
24
  private createContext;
25
+ private getComponentDeps;
21
26
  private tsserver;
22
27
  private getTsServer;
23
28
  computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode>;
29
+ getComponentIDByPath(file: string): Promise<import("@teambit/component").ComponentID | null | undefined>;
24
30
  /**
25
31
  * select the correct transformer for a node.
26
32
  */
@@ -82,11 +82,13 @@ function _exportList() {
82
82
  }
83
83
 
84
84
  class TypeScriptExtractor {
85
- constructor(tsconfig, schemaTransformerSlot, tsMain, rootPath) {
85
+ constructor(tsconfig, schemaTransformerSlot, tsMain, rootPath, depResolver, workspace) {
86
86
  this.tsconfig = tsconfig;
87
87
  this.schemaTransformerSlot = schemaTransformerSlot;
88
88
  this.tsMain = tsMain;
89
89
  this.rootPath = rootPath;
90
+ this.depResolver = depResolver;
91
+ this.workspace = workspace;
90
92
  (0, _defineProperty2().default)(this, "tsserver", undefined);
91
93
  }
92
94
 
@@ -102,7 +104,7 @@ class TypeScriptExtractor {
102
104
  const tsserver = await this.getTsServer();
103
105
  const mainFile = component.mainFile;
104
106
  const mainAst = this.parseSourceFile(mainFile);
105
- const context = this.createContext(tsserver, component);
107
+ const context = await this.createContext(tsserver, component);
106
108
  const exportNames = await this.computeExportedIdentifiers(mainAst, context);
107
109
  context.setExports(new (_exportList().ExportList)(exportNames));
108
110
  const moduleSchema = await this.computeSchema(mainAst, context);
@@ -113,13 +115,24 @@ class TypeScriptExtractor {
113
115
  }
114
116
 
115
117
  async computeExportedIdentifiers(node, context) {
116
- const transformer = this.getTransformer(node, context.component);
117
- if (!transformer || !transformer.getIdentifiers) throw new (_exceptions().TransformerNotFound)(node, context.component);
118
+ const transformer = this.getTransformer(node, context);
119
+
120
+ if (!transformer || !transformer.getIdentifiers) {
121
+ throw new (_exceptions().TransformerNotFound)(node, context.component, context.getLocation(node));
122
+ }
123
+
118
124
  return transformer.getIdentifiers(node, context);
119
125
  }
120
126
 
121
- createContext(tsserver, component) {
122
- return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this);
127
+ async createContext(tsserver, component) {
128
+ const componentDeps = await this.getComponentDeps(component);
129
+ return new (_schemaExtractorContext().SchemaExtractorContext)(tsserver, component, this, componentDeps);
130
+ }
131
+
132
+ async getComponentDeps(component) {
133
+ const deps = await this.depResolver.getDependencies(component);
134
+ const componentDeps = deps.getComponentDependencies();
135
+ return componentDeps;
123
136
  }
124
137
 
125
138
  async getTsServer() {
@@ -139,20 +152,28 @@ class TypeScriptExtractor {
139
152
  }
140
153
 
141
154
  async computeSchema(node, context) {
142
- const transformer = this.getTransformer(node, context.component); // leave the next line commented out, it is used for debugging
155
+ const transformer = this.getTransformer(node, context); // leave the next line commented out, it is used for debugging
143
156
  // console.log('transformer', transformer.constructor.name, node.getText());
144
157
 
145
158
  return transformer.transform(node, context);
146
159
  }
160
+
161
+ async getComponentIDByPath(file) {
162
+ if (!this.workspace) {
163
+ return null;
164
+ }
165
+
166
+ return this.workspace.getComponentIdByPath(file);
167
+ }
147
168
  /**
148
169
  * select the correct transformer for a node.
149
170
  */
150
171
 
151
172
 
152
- getTransformer(node, component) {
173
+ getTransformer(node, context) {
153
174
  const transformers = (0, _lodash().flatten)(this.schemaTransformerSlot.values());
154
175
  const transformer = transformers.find(singleTransformer => singleTransformer.predicate(node));
155
- if (!transformer) throw new (_exceptions().TransformerNotFound)(node, component);
176
+ if (!transformer) throw new (_exceptions().TransformerNotFound)(node, context.component, context.getLocation(node));
156
177
  return transformer;
157
178
  }
158
179
 
@@ -1 +1 @@
1
- {"version":3,"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","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport { 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"],"mappings":"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"}
1
+ {"version":3,"names":["TypeScriptExtractor","constructor","tsconfig","schemaTransformerSlot","tsMain","rootPath","depResolver","workspace","undefined","parseSourceFile","file","ts","createSourceFile","path","contents","toString","ScriptTarget","Latest","compilerOptions","extract","component","tsserver","getTsServer","mainFile","mainAst","context","createContext","exportNames","computeExportedIdentifiers","setExports","ExportList","moduleSchema","computeSchema","flatExportsRecursively","apiScheme","location","getLocation","APISchema","node","transformer","getTransformer","getIdentifiers","TransformerNotFound","componentDeps","getComponentDeps","SchemaExtractorContext","deps","getDependencies","getComponentDependencies","getTsserverClient","initTsserverClient","transform","getComponentIDByPath","getComponentIdByPath","transformers","flatten","values","find","singleTransformer","predicate"],"sources":["typescript.extractor.ts"],"sourcesContent":["import ts, { Node } from 'typescript';\nimport { SchemaExtractor } from '@teambit/schema';\nimport { TsserverClient } from '@teambit/ts-server';\nimport type { Workspace } from '@teambit/workspace';\nimport { ComponentDependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { SchemaNode, APISchema, Module } from '@teambit/semantics.entities.semantic-schema';\nimport { Component } from '@teambit/component';\nimport { AbstractVinyl } from '@teambit/legacy/dist/consumer/component/sources';\nimport { flatten } from 'lodash';\nimport { TypescriptMain, SchemaTransformerSlot } from './typescript.main.runtime';\nimport { TransformerNotFound } from './exceptions';\nimport { SchemaExtractorContext } from './schema-extractor-context';\nimport { ExportList } from './export-list';\n\nexport class TypeScriptExtractor implements SchemaExtractor {\n constructor(\n private tsconfig: any,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private tsMain: TypescriptMain,\n private rootPath: string,\n private depResolver: DependencyResolverMain,\n private workspace: Workspace | undefined\n ) {}\n\n parseSourceFile(file: AbstractVinyl) {\n return ts.createSourceFile(\n file.path,\n file.contents.toString('utf8'),\n ts.ScriptTarget.Latest,\n true,\n this.tsconfig.compilerOptions\n );\n }\n\n /**\n * extract a component schema.\n */\n async extract(component: Component): Promise<APISchema> {\n const tsserver = await this.getTsServer();\n const mainFile = component.mainFile;\n const mainAst = this.parseSourceFile(mainFile);\n const context = await this.createContext(tsserver, component);\n const exportNames = await this.computeExportedIdentifiers(mainAst, context);\n context.setExports(new ExportList(exportNames));\n const moduleSchema = (await this.computeSchema(mainAst, context)) as Module;\n moduleSchema.flatExportsRecursively();\n const apiScheme = moduleSchema;\n const location = context.getLocation(mainAst);\n\n return new APISchema(location, apiScheme);\n }\n\n async computeExportedIdentifiers(node: Node, context: SchemaExtractorContext) {\n const transformer = this.getTransformer(node, context);\n if (!transformer || !transformer.getIdentifiers) {\n throw new TransformerNotFound(node, context.component, context.getLocation(node));\n }\n return transformer.getIdentifiers(node, context);\n }\n\n private async createContext(tsserver: TsserverClient, component: Component): Promise<SchemaExtractorContext> {\n const componentDeps = await this.getComponentDeps(component);\n return new SchemaExtractorContext(tsserver, component, this, componentDeps);\n }\n\n private async getComponentDeps(component: Component): Promise<ComponentDependency[]> {\n const deps = await this.depResolver.getDependencies(component);\n const componentDeps = deps.getComponentDependencies();\n return componentDeps;\n }\n\n private tsserver: TsserverClient | undefined = undefined;\n\n private async getTsServer() {\n if (!this.tsserver) {\n const tsserver = this.tsMain.getTsserverClient();\n if (tsserver) {\n this.tsserver = tsserver;\n return tsserver;\n }\n\n this.tsserver = await this.tsMain.initTsserverClient(this.rootPath);\n return this.tsserver;\n }\n\n return this.tsserver;\n }\n\n async computeSchema(node: Node, context: SchemaExtractorContext): Promise<SchemaNode> {\n const transformer = this.getTransformer(node, context);\n // leave the next line commented out, it is used for debugging\n // console.log('transformer', transformer.constructor.name, node.getText());\n return transformer.transform(node, context);\n }\n\n async getComponentIDByPath(file: string) {\n if (!this.workspace) {\n return null;\n }\n return this.workspace.getComponentIdByPath(file);\n }\n\n /**\n * select the correct transformer for a node.\n */\n private getTransformer(node: Node, context: SchemaExtractorContext) {\n const transformers = flatten(this.schemaTransformerSlot.values());\n const transformer = transformers.find((singleTransformer) => singleTransformer.predicate(node));\n\n if (!transformer) throw new TransformerNotFound(node, context.component, context.getLocation(node));\n\n return transformer;\n }\n}\n"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { SchemaExtractor, SchemaMain } from '@teambit/schema';
7
7
  import { PackageJsonProps } from '@teambit/pkg';
8
8
  import { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';
9
9
  import type { Workspace } from '@teambit/workspace';
10
+ import { DependencyResolverMain } from '@teambit/dependency-resolver';
10
11
  import { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';
11
12
  import { AspectLoaderMain } from '@teambit/aspect-loader';
12
13
  import type { Component } from '@teambit/component';
@@ -20,7 +21,8 @@ export declare class TypescriptMain {
20
21
  private logger;
21
22
  private schemaTransformerSlot;
22
23
  private workspace;
23
- constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, workspace: Workspace);
24
+ private depResolver;
25
+ constructor(logger: Logger, schemaTransformerSlot: SchemaTransformerSlot, workspace: Workspace, depResolver: DependencyResolverMain);
24
26
  private tsServer;
25
27
  /**
26
28
  * create a new compiler.
@@ -91,6 +93,13 @@ export declare class TypescriptMain {
91
93
  static runtime: import("@teambit/harmony").RuntimeDefinition;
92
94
  static dependencies: import("@teambit/harmony").Aspect[];
93
95
  static slots: ((registerFn: () => string) => SlotRegistry<SchemaTransformer[]>)[];
94
- static provider([schema, loggerExt, aspectLoader, workspace, cli]: [SchemaMain, LoggerMain, AspectLoaderMain, Workspace, CLIMain], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
96
+ static provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver]: [
97
+ SchemaMain,
98
+ LoggerMain,
99
+ AspectLoaderMain,
100
+ Workspace,
101
+ CLIMain,
102
+ DependencyResolverMain
103
+ ], config: any, [schemaTransformerSlot]: [SchemaTransformerSlot]): Promise<TypescriptMain>;
95
104
  }
96
105
  export declare function runTransformersWithContext(config: TypescriptConfigMutator, transformers: TsConfigTransformer[] | undefined, context: TsConfigTransformContext): TypescriptConfigMutator;
@@ -96,6 +96,16 @@ function _workspace() {
96
96
  return data;
97
97
  }
98
98
 
99
+ function _dependencyResolver() {
100
+ const data = require("@teambit/dependency-resolver");
101
+
102
+ _dependencyResolver = function () {
103
+ return data;
104
+ };
105
+
106
+ return data;
107
+ }
108
+
99
109
  function _pMapSeries() {
100
110
  const data = _interopRequireDefault(require("p-map-series"));
101
111
 
@@ -197,10 +207,11 @@ function _checkTypes() {
197
207
  }
198
208
 
199
209
  class TypescriptMain {
200
- constructor(logger, schemaTransformerSlot, workspace) {
210
+ constructor(logger, schemaTransformerSlot, workspace, depResolver) {
201
211
  this.logger = logger;
202
212
  this.schemaTransformerSlot = schemaTransformerSlot;
203
213
  this.workspace = workspace;
214
+ this.depResolver = depResolver;
204
215
  (0, _defineProperty2().default)(this, "tsServer", void 0);
205
216
  }
206
217
 
@@ -308,7 +319,7 @@ class TypescriptMain {
308
319
 
309
320
 
310
321
  createSchemaExtractor(tsconfig, path) {
311
- return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);
322
+ return new (_typescript2().TypeScriptExtractor)(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path, this.depResolver, this.workspace);
312
323
  }
313
324
  /**
314
325
  * add the default package json properties to the component
@@ -375,12 +386,12 @@ class TypescriptMain {
375
386
  };
376
387
  }
377
388
 
378
- static async provider([schema, loggerExt, aspectLoader, workspace, cli], config, [schemaTransformerSlot]) {
389
+ static async provider([schema, loggerExt, aspectLoader, workspace, cli, depResolver], config, [schemaTransformerSlot]) {
379
390
  schema.registerParser(new (_typescript5().TypeScriptParser)());
380
391
  const logger = loggerExt.createLogger(_typescript3().TypescriptAspect.id);
381
392
  aspectLoader.registerPlugins([new (_schemaTransformer().SchemaTransformerPlugin)(schemaTransformerSlot)]);
382
- const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);
383
- schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().MethodDeclaration)(), new (_transformers().PropertyDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().Constructor)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().PropertySignature)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().IndexSignature)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().MethodSignatureTransformer)()]);
393
+ const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver);
394
+ schemaTransformerSlot.register([new (_transformers().ExportDeclaration)(), new (_transformers().FunctionDeclaration)(), new (_transformers().MethodDeclaration)(), new (_transformers().PropertyDeclaration)(), new (_transformers().VariableStatementTransformer)(), new (_transformers().VariableDeclaration)(), new (_transformers().Constructor)(), new (_transformers().SourceFileTransformer)(), new (_transformers().TypeAliasTransformer)(), new (_transformers().ClassDecelerationTransformer)(), new (_transformers().PropertySignature)(), new (_transformers().LiteralTypeTransformer)(), new (_transformers().IndexSignature)(), new (_transformers().InterfaceDeclarationTransformer)(), new (_transformers().MethodSignatureTransformer)(), new (_transformers().EnumDeclarationTransformer)()]);
384
395
 
385
396
  if (workspace) {
386
397
  workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));
@@ -397,7 +408,7 @@ class TypescriptMain {
397
408
 
398
409
  exports.TypescriptMain = TypescriptMain;
399
410
  (0, _defineProperty2().default)(TypescriptMain, "runtime", _cli().MainRuntime);
400
- (0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect]);
411
+ (0, _defineProperty2().default)(TypescriptMain, "dependencies", [_schema().SchemaAspect, _logger().LoggerAspect, _aspectLoader().default, _workspace().WorkspaceAspect, _cli().CLIAspect, _dependencyResolver().DependencyResolverAspect]);
401
412
  (0, _defineProperty2().default)(TypescriptMain, "slots", [_harmony().Slot.withType()]);
402
413
 
403
414
  _typescript3().TypescriptAspect.addRuntime(TypescriptMain);
@@ -1 +1 @@
1
- {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","pMapSeries","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","MethodDeclaration","PropertyDeclaration","VariableStatementTransformer","VariableDeclaration","Constructor","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","PropertySignature","LiteralTypeTransformer","IndexSignature","InterfaceDeclarationTransformer","MethodSignatureTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n MethodDeclaration,\n PropertyDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n Constructor,\n PropertySignature,\n LiteralTypeTransformer,\n IndexSignature,\n InterfaceDeclarationTransformer,\n MethodSignatureTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(tsconfig, this.schemaTransformerSlot, this, path || this.workspace.path);\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n public getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [SchemaAspect, LoggerAspect, AspectLoaderAspect, WorkspaceAspect, CLIAspect];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli]: [SchemaMain, LoggerMain, AspectLoaderMain, Workspace, CLIMain],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new MethodDeclaration(),\n new PropertyDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new Constructor(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new PropertySignature(),\n new LiteralTypeTransformer(),\n new IndexSignature(),\n new InterfaceDeclarationTransformer(),\n new MethodSignatureTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["TypescriptMain","constructor","logger","schemaTransformerSlot","workspace","depResolver","createCompiler","options","transformers","tsModule","ts","configMutator","TypescriptConfigMutator","transformerContext","afterMutation","runTransformersWithContext","clone","TypescriptCompiler","TypescriptAspect","id","raw","getTsserverClient","tsServer","initTsserverClient","projectPath","files","TsserverClient","init","initTsserverClientFromWorkspace","Error","path","createCjsCompiler","getCjsTransformer","createEsmCompiler","getEsmTransformer","cjsTransformer","config","setModule","esmTransformer","createSchemaExtractor","tsconfig","TypeScriptExtractor","getCjsPackageJsonProps","main","types","getEsmPackageJsonProps","type","getSupportedFilesForTsserver","components","map","c","filesystem","flat","f","filter","endsWith","onPreWatch","watchOpts","spawnTSServer","verbose","checkTypes","printTypeErrors","Boolean","onComponentChange","component","results","pMapSeries","file","onFileChange","provider","schema","loggerExt","aspectLoader","cli","registerParser","TypeScriptParser","createLogger","registerPlugins","SchemaTransformerPlugin","tsMain","register","ExportDeclaration","FunctionDeclaration","MethodDeclaration","PropertyDeclaration","VariableStatementTransformer","VariableDeclaration","Constructor","SourceFileTransformer","TypeAliasTransformer","ClassDecelerationTransformer","PropertySignature","LiteralTypeTransformer","IndexSignature","InterfaceDeclarationTransformer","MethodSignatureTransformer","EnumDeclarationTransformer","registerOnPreWatch","bind","registerOnComponentChange","registerOnComponentAdd","checkTypesCmd","CheckTypesCmd","MainRuntime","SchemaAspect","LoggerAspect","AspectLoaderAspect","WorkspaceAspect","CLIAspect","DependencyResolverAspect","Slot","withType","addRuntime","context","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["typescript.main.runtime.ts"],"sourcesContent":["import ts from 'typescript';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Compiler } from '@teambit/compiler';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { SchemaAspect, SchemaExtractor, SchemaMain } from '@teambit/schema';\nimport { PackageJsonProps } from '@teambit/pkg';\nimport { TypescriptConfigMutator } from '@teambit/typescript.modules.ts-config-mutator';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport type { WatchOptions, Workspace } from '@teambit/workspace';\nimport { DependencyResolverAspect, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport pMapSeries from 'p-map-series';\nimport { TsserverClient, TsserverClientOpts } from '@teambit/ts-server';\nimport AspectLoaderAspect, { AspectLoaderMain } from '@teambit/aspect-loader';\nimport type { Component } from '@teambit/component';\nimport { TypeScriptExtractor } from './typescript.extractor';\nimport { TypeScriptCompilerOptions } from './compiler-options';\nimport { TypescriptAspect } from './typescript.aspect';\nimport { TypescriptCompiler } from './typescript.compiler';\nimport { TypeScriptParser } from './typescript.parser';\nimport { SchemaTransformer } from './schema-transformer';\nimport { SchemaTransformerPlugin } from './schema-transformer.plugin';\nimport {\n ExportDeclaration,\n TypeAliasTransformer,\n FunctionDeclaration,\n MethodDeclaration,\n PropertyDeclaration,\n VariableStatementTransformer,\n VariableDeclaration,\n SourceFileTransformer,\n ClassDecelerationTransformer,\n Constructor,\n PropertySignature,\n LiteralTypeTransformer,\n IndexSignature,\n InterfaceDeclarationTransformer,\n MethodSignatureTransformer,\n EnumDeclarationTransformer,\n} from './transformers';\nimport { CheckTypesCmd } from './cmds/check-types.cmd';\n\nexport type TsMode = 'build' | 'dev';\n\nexport type SchemaTransformerSlot = SlotRegistry<SchemaTransformer[]>;\n\nexport type TsConfigTransformContext = {\n // mode: TsMode;\n};\n\nexport type TsConfigTransformer = (\n config: TypescriptConfigMutator,\n context: TsConfigTransformContext\n) => TypescriptConfigMutator;\n\nexport class TypescriptMain {\n constructor(\n private logger: Logger,\n private schemaTransformerSlot: SchemaTransformerSlot,\n private workspace: Workspace,\n private depResolver: DependencyResolverMain\n ) {}\n\n private tsServer: TsserverClient;\n /**\n * create a new compiler.\n */\n createCompiler(\n options: TypeScriptCompilerOptions,\n transformers: TsConfigTransformer[] = [],\n tsModule = ts\n ): Compiler {\n const configMutator = new TypescriptConfigMutator(options);\n const transformerContext: TsConfigTransformContext = {};\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n return new TypescriptCompiler(TypescriptAspect.id, this.logger, afterMutation.raw, tsModule);\n }\n\n /**\n * get TsserverClient instance if initiated already, otherwise, return undefined.\n */\n getTsserverClient(): TsserverClient | undefined {\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API.\n * @param projectPath absolute path of the project root directory\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClient(\n projectPath: string,\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n this.tsServer = new TsserverClient(projectPath, this.logger, options, files);\n this.tsServer.init();\n return this.tsServer;\n }\n\n /**\n * starts a tsserver process to communicate with its API. use only when running on the workspace.\n * @param options TsserverClientOpts\n * @param files optionally, if check-types is enabled, provide files to open and type check.\n * @returns TsserverClient\n */\n async initTsserverClientFromWorkspace(\n options: TsserverClientOpts = {},\n files: string[] = []\n ): Promise<TsserverClient> {\n if (!this.workspace) {\n throw new Error(`initTsserverClientFromWorkspace: workspace was not found`);\n }\n return this.initTsserverClient(this.workspace.path, options, files);\n }\n\n /**\n * Create a compiler instance and run the cjs transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createCjsCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getCjsTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a compiler instance and run the esm transformer for it\n * @param options\n * @param transformers\n * @param tsModule\n * @returns\n */\n createEsmCompiler(options: TypeScriptCompilerOptions, transformers: TsConfigTransformer[] = [], tsModule = ts) {\n return this.createCompiler(options, [this.getEsmTransformer(), ...transformers], tsModule);\n }\n\n /**\n * Create a transformer that change the ts module to CommonJS\n * @returns\n */\n getCjsTransformer(): TsConfigTransformer {\n const cjsTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('CommonJS');\n return config;\n };\n return cjsTransformer;\n }\n\n /**\n * Create a transformer that change the ts module to ES2020\n * @returns\n */\n getEsmTransformer(): TsConfigTransformer {\n const esmTransformer = (config: TypescriptConfigMutator) => {\n config.setModule('ES2020');\n return config;\n };\n return esmTransformer;\n }\n\n /**\n * create an instance of a typescript semantic schema extractor.\n */\n createSchemaExtractor(tsconfig: any, path?: string): SchemaExtractor {\n return new TypeScriptExtractor(\n tsconfig,\n this.schemaTransformerSlot,\n this,\n path || this.workspace.path,\n this.depResolver,\n this.workspace\n );\n }\n\n /**\n * add the default package json properties to the component\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getCjsPackageJsonProps(): PackageJsonProps {\n return {\n main: 'dist/{main}.js',\n types: '{main}.ts',\n };\n }\n\n /**\n * add type: module to the package.json props and the default props\n * :TODO @gilad why do we need this DSL? can't I just get the args here.\n */\n getEsmPackageJsonProps(): PackageJsonProps {\n return {\n // main: 'dist-esm/{main}.js',\n main: 'dist/{main}.js',\n type: 'module',\n types: '{main}.ts',\n };\n }\n\n public getSupportedFilesForTsserver(components: Component[]): string[] {\n const files = components\n .map((c) => c.filesystem.files)\n .flat()\n .map((f) => f.path);\n return files.filter((f) => f.endsWith('.ts') || f.endsWith('.tsx'));\n }\n\n private async onPreWatch(components: Component[], watchOpts: WatchOptions) {\n const workspace = this.workspace;\n if (!workspace || !watchOpts.spawnTSServer) {\n return;\n }\n const { verbose, checkTypes } = watchOpts;\n const files = checkTypes ? this.getSupportedFilesForTsserver(components) : [];\n const printTypeErrors = Boolean(checkTypes);\n await this.initTsserverClientFromWorkspace({ verbose, checkTypes, printTypeErrors }, files);\n }\n\n private async onComponentChange(component: Component, files: string[]) {\n if (!this.tsServer) {\n return {\n results: 'N/A',\n };\n }\n await pMapSeries(files, (file) => this.tsServer.onFileChange(file));\n return {\n results: 'succeed',\n };\n }\n\n static runtime = MainRuntime;\n static dependencies = [\n SchemaAspect,\n LoggerAspect,\n AspectLoaderAspect,\n WorkspaceAspect,\n CLIAspect,\n DependencyResolverAspect,\n ];\n static slots = [Slot.withType<SchemaTransformer[]>()];\n\n static async provider(\n [schema, loggerExt, aspectLoader, workspace, cli, depResolver]: [\n SchemaMain,\n LoggerMain,\n AspectLoaderMain,\n Workspace,\n CLIMain,\n DependencyResolverMain\n ],\n config,\n [schemaTransformerSlot]: [SchemaTransformerSlot]\n ) {\n schema.registerParser(new TypeScriptParser());\n const logger = loggerExt.createLogger(TypescriptAspect.id);\n aspectLoader.registerPlugins([new SchemaTransformerPlugin(schemaTransformerSlot)]);\n const tsMain = new TypescriptMain(logger, schemaTransformerSlot, workspace, depResolver);\n schemaTransformerSlot.register([\n new ExportDeclaration(),\n new FunctionDeclaration(),\n new MethodDeclaration(),\n new PropertyDeclaration(),\n new VariableStatementTransformer(),\n new VariableDeclaration(),\n new Constructor(),\n new SourceFileTransformer(),\n new TypeAliasTransformer(),\n new ClassDecelerationTransformer(),\n new PropertySignature(),\n new LiteralTypeTransformer(),\n new IndexSignature(),\n new InterfaceDeclarationTransformer(),\n new MethodSignatureTransformer(),\n new EnumDeclarationTransformer(),\n ]);\n\n if (workspace) {\n workspace.registerOnPreWatch(tsMain.onPreWatch.bind(this));\n workspace.registerOnComponentChange(tsMain.onComponentChange.bind(this));\n workspace.registerOnComponentAdd(tsMain.onComponentChange.bind(this));\n }\n\n const checkTypesCmd = new CheckTypesCmd(tsMain, workspace, logger);\n cli.register(checkTypesCmd);\n\n return tsMain;\n }\n}\n\nTypescriptAspect.addRuntime(TypescriptMain);\n\nexport function runTransformersWithContext(\n config: TypescriptConfigMutator,\n transformers: TsConfigTransformer[] = [],\n context: TsConfigTransformContext\n): TypescriptConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"],"mappings":"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"}
@@ -1,13 +1,15 @@
1
1
  import ts, { Node } from 'typescript';
2
2
  import { Component } from '@teambit/component';
3
+ import { Location } from '@teambit/semantics.entities.semantic-schema';
3
4
 
4
5
  export class TransformerNotFound extends Error {
5
- constructor(readonly node: Node, readonly component: Component) {
6
+ constructor(readonly node: Node, readonly component: Component, location: Location) {
6
7
  super(
7
8
  `typescript: could not find schema transformer for node of kind ${node.kind} (${
8
9
  ts.SyntaxKind[node.kind]
9
10
  }) in component ${component.id.toString()}.
10
- node text: ${node.getText()}`
11
+ location: ${location.file}, line: ${location.line}, character: ${location.character}.
12
+ node-text: ${node.getText()}`
11
13
  );
12
14
  }
13
15
  }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/typescript",
3
- "version": "0.0.738",
3
+ "version": "0.0.739",
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.738"
9
+ "version": "0.0.739"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -18,20 +18,21 @@
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.738",
21
+ "@teambit/compiler": "0.0.739",
22
22
  "@teambit/typescript.modules.ts-config-mutator": "0.0.68",
23
- "@teambit/component": "0.0.738",
24
- "@teambit/semantics.entities.semantic-schema": "0.0.11",
23
+ "@teambit/component": "0.0.739",
24
+ "@teambit/dependency-resolver": "0.0.739",
25
+ "@teambit/semantics.entities.semantic-schema": "0.0.12",
25
26
  "@teambit/ts-server": "0.0.32",
26
- "@teambit/aspect-loader": "0.0.738",
27
+ "@teambit/aspect-loader": "0.0.739",
27
28
  "@teambit/bit-error": "0.0.394",
28
- "@teambit/builder": "0.0.738",
29
- "@teambit/isolator": "0.0.738",
29
+ "@teambit/builder": "0.0.739",
30
+ "@teambit/isolator": "0.0.739",
30
31
  "@teambit/logger": "0.0.583",
31
- "@teambit/schema": "0.0.738",
32
+ "@teambit/schema": "0.0.739",
33
+ "@teambit/workspace": "0.0.739",
32
34
  "@teambit/cli": "0.0.491",
33
- "@teambit/pkg": "0.0.738",
34
- "@teambit/workspace": "0.0.738"
35
+ "@teambit/pkg": "0.0.739"
35
36
  },
36
37
  "devDependencies": {
37
38
  "@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.738/dist/typescript.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.738/dist/typescript.docs.mdx')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.739/dist/typescript.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.typescript_typescript@0.0.739/dist/typescript.docs.mdx')]
@@ -1,7 +1,7 @@
1
1
  import pMapSeries from 'p-map-series';
2
2
  import { compact } from 'lodash';
3
3
  import { ClassSchema, GetAccessorSchema, SetAccessorSchema } from '@teambit/semantics.entities.semantic-schema';
4
- import ts, { Node, ClassDeclaration } from 'typescript';
4
+ import ts, { Node, ClassDeclaration, isSemicolonClassElement } from 'typescript';
5
5
  import { SchemaTransformer } from '../schema-transformer';
6
6
  import { SchemaExtractorContext } from '../schema-extractor-context';
7
7
  import { ExportIdentifier } from '../export-identifier';
@@ -29,6 +29,9 @@ export class ClassDecelerationTransformer implements SchemaTransformer {
29
29
  if (isPrivate) {
30
30
  return null;
31
31
  }
32
+ if (isSemicolonClassElement(member)) {
33
+ return null;
34
+ }
32
35
  switch (member.kind) {
33
36
  case ts.SyntaxKind.GetAccessor: {
34
37
  const getter = member as ts.GetAccessorDeclaration;