@teambit/typescript 0.0.738 → 0.0.741

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 (47) 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 +8 -7
  5. package/dist/schema-extractor-context.js +49 -21
  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/export-declaration.js +9 -2
  13. package/dist/transformers/export-declaration.js.map +1 -1
  14. package/dist/transformers/index.d.ts +1 -0
  15. package/dist/transformers/index.js +16 -0
  16. package/dist/transformers/index.js.map +1 -1
  17. package/dist/transformers/property-signature.js +5 -20
  18. package/dist/transformers/property-signature.js.map +1 -1
  19. package/dist/transformers/type-alias.js +2 -5
  20. package/dist/transformers/type-alias.js.map +1 -1
  21. package/dist/transformers/utils/get-params.js +53 -7
  22. package/dist/transformers/utils/get-params.js.map +1 -1
  23. package/dist/transformers/utils/parse-type-from-quick-info.d.ts +1 -0
  24. package/dist/transformers/utils/parse-type-from-quick-info.js +12 -3
  25. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
  26. package/dist/transformers/utils/type-node-to-schema.js +52 -6
  27. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  28. package/dist/typescript.extractor.d.ts +7 -1
  29. package/dist/typescript.extractor.js +30 -9
  30. package/dist/typescript.extractor.js.map +1 -1
  31. package/dist/typescript.main.runtime.d.ts +11 -2
  32. package/dist/typescript.main.runtime.js +17 -6
  33. package/dist/typescript.main.runtime.js.map +1 -1
  34. package/exceptions/transformer-not-found.ts +4 -2
  35. package/package-tar/teambit-typescript-0.0.741.tgz +0 -0
  36. package/package.json +16 -15
  37. package/{preview-1653227849497.js → preview-1653494536947.js} +2 -2
  38. package/transformers/class-deceleration.ts +4 -1
  39. package/transformers/enum-declaration.ts +20 -0
  40. package/transformers/export-declaration.ts +7 -2
  41. package/transformers/index.ts +1 -0
  42. package/transformers/property-signature.ts +2 -8
  43. package/transformers/type-alias.ts +2 -3
  44. package/transformers/utils/get-params.ts +53 -9
  45. package/transformers/utils/parse-type-from-quick-info.ts +9 -1
  46. package/transformers/utils/type-node-to-schema.ts +57 -6
  47. package/package-tar/teambit-typescript-0.0.738.tgz +0 -0
@@ -11,9 +11,16 @@ import {
11
11
  IntersectionTypeNode,
12
12
  UnionTypeNode,
13
13
  TypeLiteralNode,
14
+ ParenthesizedTypeNode,
15
+ TypePredicateNode,
16
+ isIdentifier,
17
+ IndexedAccessTypeNode,
18
+ TemplateLiteralTypeNode,
19
+ TemplateLiteralTypeSpan,
14
20
  } from 'typescript';
15
21
  import {
16
22
  SchemaNode,
23
+ TypeRefSchema,
17
24
  TypeIntersectionSchema,
18
25
  TypeUnionSchema,
19
26
  TypeLiteralSchema,
@@ -24,6 +31,11 @@ import {
24
31
  TypeOperatorSchema,
25
32
  TupleTypeSchema,
26
33
  FunctionLikeSchema,
34
+ ParenthesizedTypeSchema,
35
+ TypePredicateSchema,
36
+ IndexedAccessSchema,
37
+ TemplateLiteralTypeSpanSchema,
38
+ TemplateLiteralTypeSchema,
27
39
  } from '@teambit/semantics.entities.semantic-schema';
28
40
  import pMapSeries from 'p-map-series';
29
41
  import { SchemaExtractorContext } from '../../schema-extractor-context';
@@ -56,19 +68,24 @@ export async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorC
56
68
  return typeOperator(node as TypeOperatorNode, context);
57
69
  case SyntaxKind.TupleType:
58
70
  return tupleType(node as TupleTypeNode, context);
71
+ case SyntaxKind.ParenthesizedType:
72
+ return parenthesizedType(node as ParenthesizedTypeNode, context);
59
73
  case SyntaxKind.TypePredicate:
74
+ return typePredicate(node as TypePredicateNode, context);
75
+ case SyntaxKind.IndexedAccessType:
76
+ return indexedAccessType(node as IndexedAccessTypeNode, context);
77
+ case SyntaxKind.TemplateLiteralTypeSpan:
78
+ return templateLiteralTypeSpan(node as TemplateLiteralTypeSpan, context);
79
+ case SyntaxKind.TemplateLiteralType:
80
+ return templateLiteralType(node as TemplateLiteralTypeNode, context);
60
81
  case SyntaxKind.ConstructorType:
61
82
  case SyntaxKind.NamedTupleMember:
62
83
  case SyntaxKind.OptionalType:
63
84
  case SyntaxKind.RestType:
64
85
  case SyntaxKind.ConditionalType:
65
86
  case SyntaxKind.InferType:
66
- case SyntaxKind.ParenthesizedType:
67
87
  case SyntaxKind.ThisType:
68
- case SyntaxKind.IndexedAccessType:
69
88
  case SyntaxKind.MappedType:
70
- case SyntaxKind.TemplateLiteralType:
71
- case SyntaxKind.TemplateLiteralTypeSpan:
72
89
  case SyntaxKind.ImportType:
73
90
  case SyntaxKind.ExpressionWithTypeArguments:
74
91
  case SyntaxKind.JSDocTypeExpression:
@@ -82,10 +99,10 @@ export async function typeNodeToSchema(node: TypeNode, context: SchemaExtractorC
82
99
  case SyntaxKind.JSDocNamepathType:
83
100
  case SyntaxKind.JSDocSignature:
84
101
  case SyntaxKind.JSDocTypeLiteral:
85
- throw new Error(`TypeNode "${SyntaxKind[node.kind]}" was not implemented yet.
102
+ throw new Error(`TypeNode ${node.kind} (probably ${SyntaxKind[node.kind]}) was not implemented yet.
86
103
  context: ${node.getText()}`);
87
104
  default:
88
- throw new Error(`Node "${SyntaxKind[node.kind]}" is not a TypeNode.
105
+ throw new Error(`Node ${node.kind} (probably ${SyntaxKind[node.kind]}) is not a TypeNode.
89
106
  context: ${node.getText()}`);
90
107
  }
91
108
  }
@@ -154,6 +171,10 @@ async function typeLiteral(node: TypeLiteralNode, context: SchemaExtractorContex
154
171
  async function typeReference(node: TypeReferenceNode, context: SchemaExtractorContext) {
155
172
  const name = node.typeName.getText();
156
173
  const type = await context.resolveType(node, name, false);
174
+ if (node.typeArguments && type instanceof TypeRefSchema) {
175
+ const args = await pMapSeries(node.typeArguments, (arg) => typeNodeToSchema(arg, context));
176
+ type.typeArgs = args;
177
+ }
157
178
  return type;
158
179
  }
159
180
 
@@ -210,3 +231,33 @@ async function tupleType(node: TupleTypeNode, context: SchemaExtractorContext) {
210
231
  });
211
232
  return new TupleTypeSchema(context.getLocation(node), elements);
212
233
  }
234
+
235
+ async function parenthesizedType(node: ParenthesizedTypeNode, context: SchemaExtractorContext) {
236
+ const type = await typeNodeToSchema(node.type, context);
237
+ return new ParenthesizedTypeSchema(context.getLocation(node), type);
238
+ }
239
+
240
+ async function typePredicate(node: TypePredicateNode, context: SchemaExtractorContext) {
241
+ const parameterName = isIdentifier(node.parameterName) ? node.parameterName.getText() : 'this';
242
+ const type = node.type ? await typeNodeToSchema(node.type, context) : undefined;
243
+ const hasAssertsModifier = Boolean(node.assertsModifier);
244
+ return new TypePredicateSchema(context.getLocation(node), parameterName, type, hasAssertsModifier);
245
+ }
246
+
247
+ async function indexedAccessType(node: IndexedAccessTypeNode, context: SchemaExtractorContext) {
248
+ const objectType = await typeNodeToSchema(node.objectType, context);
249
+ const indexType = await typeNodeToSchema(node.indexType, context);
250
+ return new IndexedAccessSchema(context.getLocation(node), objectType, indexType);
251
+ }
252
+
253
+ async function templateLiteralType(node: TemplateLiteralTypeNode, context: SchemaExtractorContext) {
254
+ const templateSpans = await pMapSeries(node.templateSpans, (span) => templateLiteralTypeSpan(span, context));
255
+ const head = node.head.text;
256
+ return new TemplateLiteralTypeSchema(context.getLocation(node), head, templateSpans);
257
+ }
258
+
259
+ async function templateLiteralTypeSpan(node: TemplateLiteralTypeSpan, context: SchemaExtractorContext) {
260
+ const type = await typeNodeToSchema(node.type, context);
261
+ const literal = node.literal.text;
262
+ return new TemplateLiteralTypeSpanSchema(context.getLocation(node), literal, type);
263
+ }