@teambit/typescript 0.0.736 → 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 (100) hide show
  1. package/dist/cmds/check-types.cmd.js.map +1 -1
  2. package/dist/cmds/init.cmd.js.map +1 -1
  3. package/dist/compiler-options.js.map +1 -1
  4. package/dist/exceptions/index.js.map +1 -1
  5. package/dist/exceptions/transformer-not-found.d.ts +2 -1
  6. package/dist/exceptions/transformer-not-found.js +3 -2
  7. package/dist/exceptions/transformer-not-found.js.map +1 -1
  8. package/dist/export-identifier.js.map +1 -1
  9. package/dist/export-list.js.map +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/schema-extractor-context.d.ts +6 -2
  12. package/dist/schema-extractor-context.js +35 -8
  13. package/dist/schema-extractor-context.js.map +1 -1
  14. package/dist/schema-transformer.js.map +1 -1
  15. package/dist/schema-transformer.plugin.js.map +1 -1
  16. package/dist/transformers/class-deceleration.js +11 -3
  17. package/dist/transformers/class-deceleration.js.map +1 -1
  18. package/dist/transformers/constructor.js +1 -1
  19. package/dist/transformers/constructor.js.map +1 -1
  20. package/dist/transformers/enum-declaration.d.ts +10 -0
  21. package/dist/transformers/enum-declaration.js +60 -0
  22. package/dist/transformers/enum-declaration.js.map +1 -0
  23. package/dist/transformers/export-declaration.js +1 -1
  24. package/dist/transformers/export-declaration.js.map +1 -1
  25. package/dist/transformers/function-declaration.js.map +1 -1
  26. package/dist/transformers/index-signature.js +1 -1
  27. package/dist/transformers/index-signature.js.map +1 -1
  28. package/dist/transformers/index.d.ts +1 -0
  29. package/dist/transformers/index.js +16 -0
  30. package/dist/transformers/index.js.map +1 -1
  31. package/dist/transformers/interface-declaration.js +1 -1
  32. package/dist/transformers/interface-declaration.js.map +1 -1
  33. package/dist/transformers/literal-type.d.ts +2 -1
  34. package/dist/transformers/literal-type.js +2 -2
  35. package/dist/transformers/literal-type.js.map +1 -1
  36. package/dist/transformers/method-declaration.js.map +1 -1
  37. package/dist/transformers/method-signature.js.map +1 -1
  38. package/dist/transformers/property-declaration.js +1 -1
  39. package/dist/transformers/property-declaration.js.map +1 -1
  40. package/dist/transformers/property-signature.js +1 -1
  41. package/dist/transformers/property-signature.js.map +1 -1
  42. package/dist/transformers/source-file-transformer.js +1 -1
  43. package/dist/transformers/source-file-transformer.js.map +1 -1
  44. package/dist/transformers/type-alias.js +1 -1
  45. package/dist/transformers/type-alias.js.map +1 -1
  46. package/dist/transformers/utils/get-params.js +54 -4
  47. package/dist/transformers/utils/get-params.js.map +1 -1
  48. package/dist/transformers/utils/parse-type-from-quick-info.d.ts +1 -0
  49. package/dist/transformers/utils/parse-type-from-quick-info.js +12 -3
  50. package/dist/transformers/utils/parse-type-from-quick-info.js.map +1 -1
  51. package/dist/transformers/utils/to-function-schema.js +2 -2
  52. package/dist/transformers/utils/to-function-schema.js.map +1 -1
  53. package/dist/transformers/utils/type-node-to-schema.js +51 -14
  54. package/dist/transformers/utils/type-node-to-schema.js.map +1 -1
  55. package/dist/transformers/variable-declaration.js +3 -3
  56. package/dist/transformers/variable-declaration.js.map +1 -1
  57. package/dist/transformers/variable-statement.js +2 -3
  58. package/dist/transformers/variable-statement.js.map +1 -1
  59. package/dist/typescript.aspect.js.map +1 -1
  60. package/dist/typescript.compiler.js.map +1 -1
  61. package/dist/typescript.compiler.spec.js.map +1 -1
  62. package/dist/typescript.composition.js.map +1 -1
  63. package/dist/typescript.extractor.d.ts +7 -1
  64. package/dist/typescript.extractor.js +33 -12
  65. package/dist/typescript.extractor.js.map +1 -1
  66. package/dist/typescript.main.runtime.d.ts +11 -2
  67. package/dist/typescript.main.runtime.js +17 -6
  68. package/dist/typescript.main.runtime.js.map +1 -1
  69. package/dist/typescript.parser.d.ts +2 -2
  70. package/dist/typescript.parser.js +4 -4
  71. package/dist/typescript.parser.js.map +1 -1
  72. package/dist/typescript.parser.spec.js.map +1 -1
  73. package/exceptions/transformer-not-found.ts +4 -2
  74. package/package-tar/teambit-typescript-0.0.739.tgz +0 -0
  75. package/package.json +12 -11
  76. package/{preview-1652844422371.js → preview-1653362849981.js} +2 -2
  77. package/transformers/class-deceleration.ts +6 -3
  78. package/transformers/constructor.ts +1 -1
  79. package/transformers/enum-declaration.ts +20 -0
  80. package/transformers/export-declaration.ts +1 -1
  81. package/transformers/index-signature.ts +1 -1
  82. package/transformers/index.ts +1 -0
  83. package/transformers/interface-declaration.ts +1 -1
  84. package/transformers/literal-type.ts +3 -2
  85. package/transformers/property-declaration.ts +1 -1
  86. package/transformers/property-signature.ts +1 -1
  87. package/transformers/source-file-transformer.ts +1 -1
  88. package/transformers/type-alias.ts +1 -1
  89. package/transformers/utils/get-params.ts +54 -6
  90. package/transformers/utils/parse-type-from-quick-info.ts +9 -1
  91. package/transformers/utils/to-function-schema.ts +2 -2
  92. package/transformers/utils/type-node-to-schema.ts +53 -14
  93. package/transformers/variable-declaration.ts +3 -3
  94. package/transformers/variable-statement.ts +1 -2
  95. package/tsconfig.json +1 -1
  96. package/dist/transformers/export-declaration-type.d.ts +0 -0
  97. package/dist/transformers/export-declaration-type.js +0 -3
  98. package/dist/transformers/export-declaration-type.js.map +0 -1
  99. package/package-tar/teambit-typescript-0.0.736.tgz +0 -0
  100. 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);
@@ -87,16 +89,22 @@ async function typeNodeToSchema(node, context) {
87
89
  case _typescript().SyntaxKind.TupleType:
88
90
  return tupleType(node, context);
89
91
 
92
+ case _typescript().SyntaxKind.ParenthesizedType:
93
+ return parenthesizedType(node, context);
94
+
90
95
  case _typescript().SyntaxKind.TypePredicate:
96
+ return typePredicate(node, context);
97
+
98
+ case _typescript().SyntaxKind.IndexedAccessType:
99
+ return indexedAccessType(node, context);
100
+
91
101
  case _typescript().SyntaxKind.ConstructorType:
92
102
  case _typescript().SyntaxKind.NamedTupleMember:
93
103
  case _typescript().SyntaxKind.OptionalType:
94
104
  case _typescript().SyntaxKind.RestType:
95
105
  case _typescript().SyntaxKind.ConditionalType:
96
106
  case _typescript().SyntaxKind.InferType:
97
- case _typescript().SyntaxKind.ParenthesizedType:
98
107
  case _typescript().SyntaxKind.ThisType:
99
- case _typescript().SyntaxKind.IndexedAccessType:
100
108
  case _typescript().SyntaxKind.MappedType:
101
109
  case _typescript().SyntaxKind.TemplateLiteralType:
102
110
  case _typescript().SyntaxKind.TemplateLiteralTypeSpan:
@@ -113,11 +121,11 @@ async function typeNodeToSchema(node, context) {
113
121
  case _typescript().SyntaxKind.JSDocNamepathType:
114
122
  case _typescript().SyntaxKind.JSDocSignature:
115
123
  case _typescript().SyntaxKind.JSDocTypeLiteral:
116
- 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.
117
125
  context: ${node.getText()}`);
118
126
 
119
127
  default:
120
- 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.
121
129
  context: ${node.getText()}`);
122
130
  }
123
131
  }
@@ -152,7 +160,8 @@ async function intersectionType(node, context) {
152
160
  const typeSchema = await typeNodeToSchema(type, context);
153
161
  return typeSchema;
154
162
  });
155
- return new (_semanticsEntities().TypeIntersectionSchema)(types);
163
+ const location = context.getLocation(node);
164
+ return new (_semanticsEntities().TypeIntersectionSchema)(location, types);
156
165
  }
157
166
 
158
167
  async function unionType(node, context) {
@@ -160,7 +169,8 @@ async function unionType(node, context) {
160
169
  const typeSchema = await typeNodeToSchema(type, context);
161
170
  return typeSchema;
162
171
  });
163
- return new (_semanticsEntities().TypeUnionSchema)(types);
172
+ const location = context.getLocation(node);
173
+ return new (_semanticsEntities().TypeUnionSchema)(location, types);
164
174
  }
165
175
  /**
166
176
  * not to be confused with "LiteralType", which is string/boolean/null.
@@ -173,7 +183,8 @@ async function typeLiteral(node, context) {
173
183
  const typeSchema = await context.computeSchema(member);
174
184
  return typeSchema;
175
185
  });
176
- return new (_semanticsEntities().TypeLiteralSchema)(members);
186
+ const location = context.getLocation(node);
187
+ return new (_semanticsEntities().TypeLiteralSchema)(location, members);
177
188
  }
178
189
  /**
179
190
  * In the following example, `AriaButtonProps` is a type reference
@@ -187,6 +198,12 @@ async function typeLiteral(node, context) {
187
198
  async function typeReference(node, context) {
188
199
  const name = node.typeName.getText();
189
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
+
190
207
  return type;
191
208
  }
192
209
 
@@ -197,7 +214,7 @@ async function functionType(node, context) {
197
214
  const params = await (0, _getParams().getParams)(node.parameters, context);
198
215
  const returnType = await typeNodeToSchema(node.type, context);
199
216
  const location = context.getLocation(node);
200
- return new (_semanticsEntities().FunctionLikeSchema)(name, params, returnType, '', location);
217
+ return new (_semanticsEntities().FunctionLikeSchema)(location, name, params, returnType, '');
201
218
  }
202
219
  /**
203
220
  * e.g. `typeof Foo`
@@ -207,12 +224,14 @@ async function functionType(node, context) {
207
224
  async function typeQuery(node, context) {
208
225
  const displaySig = await context.getQuickInfoDisplayString(node.exprName);
209
226
  const type = await context.resolveType(node.exprName, node.exprName.getText(), false);
210
- return new (_semanticsEntities().TypeQuerySchema)(type, displaySig);
227
+ const location = context.getLocation(node);
228
+ return new (_semanticsEntities().TypeQuerySchema)(location, type, displaySig);
211
229
  }
212
230
 
213
231
  async function arrayType(node, context) {
214
232
  const type = await typeNodeToSchema(node.elementType, context);
215
- return new (_semanticsEntities().TypeArraySchema)(type);
233
+ const location = context.getLocation(node);
234
+ return new (_semanticsEntities().TypeArraySchema)(location, type);
216
235
  }
217
236
  /**
218
237
  * e.g. keyof typeof Foo
@@ -222,7 +241,7 @@ async function arrayType(node, context) {
222
241
  async function typeOperator(node, context) {
223
242
  const operatorName = getOperatorName(node.operator);
224
243
  const type = await typeNodeToSchema(node.type, context);
225
- return new (_semanticsEntities().TypeOperatorSchema)(operatorName, type);
244
+ return new (_semanticsEntities().TypeOperatorSchema)(context.getLocation(node), operatorName, type);
226
245
  }
227
246
 
228
247
  function getOperatorName(operator) {
@@ -246,7 +265,25 @@ async function tupleType(node, context) {
246
265
  const typeSchema = await typeNodeToSchema(elem, context);
247
266
  return typeSchema;
248
267
  });
249
- return new (_semanticsEntities().TupleTypeSchema)(elements);
268
+ return new (_semanticsEntities().TupleTypeSchema)(context.getLocation(node), elements);
269
+ }
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);
250
287
  }
251
288
 
252
289
  //# 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,"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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"}
@@ -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,"names":["VariableDeclaration","predicate","node","kind","ts","SyntaxKind","getName","name","getText","getIdentifiers","ExportIdentifier","getSourceFile","fileName","transform","varDec","context","info","getQuickInfo","displaySig","body","displayString","location","getLocation","initializer","ArrowFunction","args","getParams","parameters","typeStr","parseReturnTypeFromQuickInfo","returnType","resolveType","FunctionLikeSchema","parseTypeFromQuickInfo","type","VariableSchema"],"sources":["variable-declaration.ts"],"sourcesContent":["import { SchemaNode, VariableSchema, FunctionLikeSchema } from '@teambit/semantics.entities.semantic-schema';\nimport ts, { Node, VariableDeclaration as VariableDeclarationNode, ArrowFunction } from 'typescript';\nimport { SchemaTransformer } from '../schema-transformer';\nimport { SchemaExtractorContext } from '../schema-extractor-context';\nimport { ExportIdentifier } from '../export-identifier';\nimport { getParams } from './utils/get-params';\nimport { parseReturnTypeFromQuickInfo, parseTypeFromQuickInfo } from './utils/parse-type-from-quick-info';\n\nexport class VariableDeclaration implements SchemaTransformer {\n predicate(node: Node) {\n return node.kind === ts.SyntaxKind.VariableDeclaration;\n }\n\n getName(node: VariableDeclarationNode) {\n return node.name.getText();\n }\n\n async getIdentifiers(node: VariableDeclarationNode) {\n return [new ExportIdentifier(node.name.getText(), node.getSourceFile().fileName)];\n }\n\n async transform(varDec: VariableDeclarationNode, context: SchemaExtractorContext): Promise<SchemaNode> {\n const name = this.getName(varDec);\n const info = await context.getQuickInfo(varDec.name);\n const displaySig = info?.body?.displayString || '';\n const location = context.getLocation(varDec);\n if (varDec.initializer?.kind === ts.SyntaxKind.ArrowFunction) {\n const args = await getParams((varDec.initializer as ArrowFunction).parameters, context);\n const typeStr = parseReturnTypeFromQuickInfo(info);\n const returnType = await context.resolveType(varDec, typeStr);\n return new FunctionLikeSchema(location, name, args, returnType, displaySig);\n }\n const typeStr = parseTypeFromQuickInfo(info);\n const type = await context.resolveType(varDec, typeStr);\n return new VariableSchema(location, name, displaySig, type);\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,mBAAN,CAAuD;EAC5DC,SAAS,CAACC,IAAD,EAAa;IACpB,OAAOA,IAAI,CAACC,IAAL,KAAcC,qBAAA,CAAGC,UAAH,CAAcL,mBAAnC;EACD;;EAEDM,OAAO,CAACJ,IAAD,EAAgC;IACrC,OAAOA,IAAI,CAACK,IAAL,CAAUC,OAAV,EAAP;EACD;;EAEmB,MAAdC,cAAc,CAACP,IAAD,EAAgC;IAClD,OAAO,CAAC,KAAIQ,oCAAJ,EAAqBR,IAAI,CAACK,IAAL,CAAUC,OAAV,EAArB,EAA0CN,IAAI,CAACS,aAAL,GAAqBC,QAA/D,CAAD,CAAP;EACD;;EAEc,MAATC,SAAS,CAACC,MAAD,EAAkCC,OAAlC,EAAwF;IAAA;;IACrG,MAAMR,IAAI,GAAG,KAAKD,OAAL,CAAaQ,MAAb,CAAb;IACA,MAAME,IAAI,GAAG,MAAMD,OAAO,CAACE,YAAR,CAAqBH,MAAM,CAACP,IAA5B,CAAnB;IACA,MAAMW,UAAU,GAAG,CAAAF,IAAI,SAAJ,IAAAA,IAAI,WAAJ,0BAAAA,IAAI,CAAEG,IAAN,0DAAYC,aAAZ,KAA6B,EAAhD;IACA,MAAMC,QAAQ,GAAGN,OAAO,CAACO,WAAR,CAAoBR,MAApB,CAAjB;;IACA,IAAI,wBAAAA,MAAM,CAACS,WAAP,4EAAoBpB,IAApB,MAA6BC,qBAAA,CAAGC,UAAH,CAAcmB,aAA/C,EAA8D;MAC5D,MAAMC,IAAI,GAAG,MAAM,IAAAC,sBAAA,EAAWZ,MAAM,CAACS,WAAR,CAAsCI,UAAhD,EAA4DZ,OAA5D,CAAnB;MACA,MAAMa,OAAO,GAAG,IAAAC,sDAAA,EAA6Bb,IAA7B,CAAhB;MACA,MAAMc,UAAU,GAAG,MAAMf,OAAO,CAACgB,WAAR,CAAoBjB,MAApB,EAA4Bc,OAA5B,CAAzB;MACA,OAAO,KAAII,uCAAJ,EAAuBX,QAAvB,EAAiCd,IAAjC,EAAuCkB,IAAvC,EAA6CK,UAA7C,EAAyDZ,UAAzD,CAAP;IACD;;IACD,MAAMU,OAAO,GAAG,IAAAK,gDAAA,EAAuBjB,IAAvB,CAAhB;IACA,MAAMkB,IAAI,GAAG,MAAMnB,OAAO,CAACgB,WAAR,CAAoBjB,MAApB,EAA4Bc,OAA5B,CAAnB;IACA,OAAO,KAAIO,mCAAJ,EAAmBd,QAAnB,EAA6Bd,IAA7B,EAAmCW,UAAnC,EAA+CgB,IAA/C,CAAP;EACD;;AA3B2D"}
@@ -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,"names":["VariableStatementTransformer","predicate","node","kind","ts","SyntaxKind","VariableStatement","getIdentifiers","declarationList","declarations","map","dec","ExportIdentifier","name","getText","getSourceFile","fileName","transform","context","schemas","pMapSeries","schema","visitDefinition","Module","getLocation","compact"],"sources":["variable-statement.ts"],"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"],"mappings":";;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACA;AACO,MAAMA,4BAAN,CAAgE;EACrEC,SAAS,CAACC,IAAD,EAAa;IACpB,OAAOA,IAAI,CAACC,IAAL,KAAcC,qBAAA,CAAGC,UAAH,CAAcC,iBAAnC;EACD;;EAEmB,MAAdC,cAAc,CAACL,IAAD,EAA0B;IAC5C,OAAOA,IAAI,CAACM,eAAL,CAAqBC,YAArB,CAAkCC,GAAlC,CAAuCC,GAAD,IAAS;MACpD,OAAO,KAAIC,oCAAJ,EAAqBD,GAAG,CAACE,IAAJ,CAASC,OAAT,EAArB,EAAyCH,GAAG,CAACI,aAAJ,GAAoBC,QAA7D,CAAP;IACD,CAFM,CAAP;EAGD;;EAEc,MAATC,SAAS,CAACf,IAAD,EAA0BgB,OAA1B,EAAgF;IAC7F,MAAMC,OAAO,GAAG,MAAM,IAAAC,qBAAA,EAAWlB,IAAI,CAACM,eAAL,CAAqBC,YAAhC,EAA8C,MAAOE,GAAP,IAAe;MACjF;MACA,MAAMU,MAAM,GAAG,MAAMH,OAAO,CAACI,eAAR,CAAwBX,GAAG,CAACE,IAA5B,CAArB;MACA,OAAOQ,MAAP;IACD,CAJqB,CAAtB;IAKA,OAAO,KAAIE,2BAAJ,EAAWL,OAAO,CAACM,WAAR,CAAoBtB,IAApB,CAAX,EAAsC,IAAAuB,iBAAA,EAAQN,OAAR,CAAtC,CAAP;EACD;;AAlBoE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.aspect.ts"],"names":["TypescriptAspect","Aspect","create","id"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,gBAAgB,GAAGC,kBAAOC,MAAP,CAAc;AAC5CC,EAAAA,EAAE,EAAE;AADwC,CAAd,CAAzB","sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const TypescriptAspect = Aspect.create({\n id: 'teambit.typescript/typescript',\n});\n"]}
1
+ {"version":3,"names":["TypescriptAspect","Aspect","create","id"],"sources":["typescript.aspect.ts"],"sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const TypescriptAspect = Aspect.create({\n id: 'teambit.typescript/typescript',\n});\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,gBAAgB,GAAGC,iBAAA,CAAOC,MAAP,CAAc;EAC5CC,EAAE,EAAE;AADwC,CAAd,CAAzB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.compiler.ts"],"names":["TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","length","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","push","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","postBuild","Promise","all","packageJson","PackageJsonFile","loadFromCapsuleSync","packageJsonObject","types","write","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","undefined","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version"],"mappings":"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","sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n async postBuild(context: BuildContext) {\n await Promise.all(\n context.capsuleNetwork.seedersCapsules.map(async (capsule) => {\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n // the types['index.ts'] is needed only during the build to avoid errors when tsc finds the\n // same type once in the d.ts and once in the ts file.\n if (packageJson.packageJsonObject.types) {\n delete packageJson.packageJsonObject.types;\n await packageJson.write();\n }\n })\n );\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"]}
1
+ {"version":3,"names":["TypescriptCompiler","constructor","id","logger","options","tsModule","distDir","distGlobPatterns","shouldCopyNonSupportedFiles","artifactName","tsconfig","compilerOptions","outDir","displayConfig","stringifyTsconfig","getDistDir","transpileFile","fileContent","isFileSupported","filePath","compilerOptionsFromTsconfig","convertCompilerOptionsFromJson","errors","length","formattedErrors","formatDiagnosticsWithColorAndContext","getFormatDiagnosticsHost","Error","sourceRoot","componentDir","rootDir","result","transpileModule","fileName","reportDiagnostics","diagnostics","formatHost","error","outputPath","replaceFileExtToJs","outputFiles","outputText","sourceMapText","push","preBuild","context","capsules","capsuleNetwork","seedersCapsules","capsuleDirs","map","capsule","path","writeTsConfig","writeTypes","writeNpmIgnore","build","componentsResults","runTscBuild","artifacts","getArtifactDefinition","postBuild","Promise","all","packageJson","PackageJsonFile","loadFromCapsuleSync","packageJsonObject","types","write","generatedBy","name","globPatterns","getDistPathBySrcPath","srcPath","fileWithJSExtIfNeeded","join","isJsAndCompile","compileJs","endsWith","isJsxAndCompile","compileJsx","network","capsulesRootDir","getCapsulesToCompile","getAllCapsuleDirs","getCanonicalFileName","p","getCurrentDirectory","getNewLine","sys","newLine","currentComponentResult","reportDiagnostic","diagnostic","errorStr","process","stdout","isTTY","formatDiagnostic","file","BitError","consoleFailure","component","reportSolutionBuilderStatus","diag","msg","messageText","debug","errorCounter","errorCount","info","host","createSolutionBuilderHost","undefined","writeProjectReferencesTsConfig","solutionBuilder","createSolutionBuilder","verbose","nextProject","longProcessLogger","createLongProcessLogger","getNextInvalidatedProject","capsulePath","project","replace","currentComponentId","getIdByPathInCapsule","logProgress","toString","getCapsule","startTime","Date","now","done","endTime","end","dirs","typePath","contents","fs","readFile","filename","basename","dir","pathExists","outputFile","NPM_IGNORE_FILE","npmIgnorePath","npmIgnoreEntriesStr","appendFile","projects","files","references","tsconfigStr","writeFile","JSON","stringify","fileExtension","extname","RegExp","version"],"sources":["typescript.compiler.ts"],"sourcesContent":["import { BuildContext, BuiltTaskResult, ComponentResult } from '@teambit/builder';\nimport { Compiler, TranspileFileParams, TranspileFileOutput } from '@teambit/compiler';\nimport { Network } from '@teambit/isolator';\nimport { Logger } from '@teambit/logger';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport ts from 'typescript';\nimport { BitError } from '@teambit/bit-error';\nimport PackageJsonFile from '@teambit/legacy/dist/consumer/component/package-json-file';\nimport { TypeScriptCompilerOptions } from './compiler-options';\n\nexport class TypescriptCompiler implements Compiler {\n distDir: string;\n distGlobPatterns: string[];\n shouldCopyNonSupportedFiles: boolean;\n artifactName: string;\n constructor(\n readonly id: string,\n private logger: Logger,\n private options: TypeScriptCompilerOptions,\n private tsModule: typeof ts\n ) {\n this.distDir = options.distDir || 'dist';\n this.distGlobPatterns = options.distGlobPatterns || [`${this.distDir}/**`, `!${this.distDir}/tsconfig.tsbuildinfo`];\n this.shouldCopyNonSupportedFiles =\n typeof options.shouldCopyNonSupportedFiles === 'boolean' ? options.shouldCopyNonSupportedFiles : true;\n this.artifactName = options.artifactName || 'dist';\n this.options.tsconfig ||= {};\n this.options.tsconfig.compilerOptions ||= {};\n // mutate the outDir, otherwise, on capsules, the dists might be written to a different directory and make confusion\n this.options.tsconfig.compilerOptions.outDir = this.distDir;\n }\n\n displayName = 'TypeScript';\n deleteDistDir = false;\n\n displayConfig() {\n return this.stringifyTsconfig(this.options.tsconfig);\n }\n\n getDistDir() {\n return this.distDir;\n }\n\n /**\n * compile one file on the workspace\n */\n transpileFile(fileContent: string, options: TranspileFileParams): TranspileFileOutput {\n if (!this.isFileSupported(options.filePath)) {\n return null; // file is not supported\n }\n const compilerOptionsFromTsconfig = this.tsModule.convertCompilerOptionsFromJson(\n this.options.tsconfig.compilerOptions,\n '.'\n );\n if (compilerOptionsFromTsconfig.errors.length) {\n // :TODO @david replace to a more concrete error type and put in 'exceptions' directory here.\n const formattedErrors = this.tsModule.formatDiagnosticsWithColorAndContext(\n compilerOptionsFromTsconfig.errors,\n this.getFormatDiagnosticsHost()\n );\n throw new Error(`failed parsing the tsconfig.json.\\n${formattedErrors}`);\n }\n\n const compilerOptions = compilerOptionsFromTsconfig.options;\n compilerOptions.sourceRoot = options.componentDir;\n compilerOptions.rootDir = '.';\n const result = this.tsModule.transpileModule(fileContent, {\n compilerOptions,\n fileName: options.filePath,\n reportDiagnostics: true,\n });\n\n if (result.diagnostics && result.diagnostics.length) {\n const formatHost = this.getFormatDiagnosticsHost();\n const error = this.tsModule.formatDiagnosticsWithColorAndContext(result.diagnostics, formatHost);\n\n // :TODO @david please replace to a more concrete error type and put in 'exceptions' directory here.\n throw new Error(error);\n }\n\n const outputPath = this.replaceFileExtToJs(options.filePath);\n const outputFiles = [{ outputText: result.outputText, outputPath }];\n if (result.sourceMapText) {\n outputFiles.push({\n outputText: result.sourceMapText,\n outputPath: `${outputPath}.map`,\n });\n }\n return outputFiles;\n }\n\n async preBuild(context: BuildContext) {\n const capsules = context.capsuleNetwork.seedersCapsules;\n const capsuleDirs = capsules.map((capsule) => capsule.path);\n await this.writeTsConfig(capsuleDirs);\n await this.writeTypes(capsuleDirs);\n await this.writeNpmIgnore(capsuleDirs);\n }\n\n /**\n * compile multiple components on the capsules\n */\n async build(context: BuildContext): Promise<BuiltTaskResult> {\n const componentsResults = await this.runTscBuild(context.capsuleNetwork);\n\n return {\n artifacts: this.getArtifactDefinition(),\n componentsResults,\n };\n }\n\n async postBuild(context: BuildContext) {\n await Promise.all(\n context.capsuleNetwork.seedersCapsules.map(async (capsule) => {\n const packageJson = PackageJsonFile.loadFromCapsuleSync(capsule.path);\n // the types['index.ts'] is needed only during the build to avoid errors when tsc finds the\n // same type once in the d.ts and once in the ts file.\n if (packageJson.packageJsonObject.types) {\n delete packageJson.packageJsonObject.types;\n await packageJson.write();\n }\n })\n );\n }\n\n getArtifactDefinition() {\n return [\n {\n generatedBy: this.id,\n name: this.artifactName,\n globPatterns: this.distGlobPatterns,\n },\n ];\n }\n\n /**\n * given a source file, return its parallel in the dists. e.g. index.ts => dist/index.js\n */\n getDistPathBySrcPath(srcPath: string) {\n const fileWithJSExtIfNeeded = this.replaceFileExtToJs(srcPath);\n return path.join(this.distDir, fileWithJSExtIfNeeded);\n }\n\n /**\n * whether typescript is able to compile the given path\n */\n isFileSupported(filePath: string): boolean {\n const isJsAndCompile = !!this.options.compileJs && filePath.endsWith('.js');\n const isJsxAndCompile = !!this.options.compileJsx && filePath.endsWith('.jsx');\n return (\n (filePath.endsWith('.ts') || filePath.endsWith('.tsx') || isJsAndCompile || isJsxAndCompile) &&\n !filePath.endsWith('.d.ts')\n );\n }\n\n /**\n * we have two options here:\n * 1. pass all capsules-dir at the second parameter of createSolutionBuilder and then no\n * need to write the main tsconfig.json with all the references.\n * 2. write main tsconfig.json and pass the capsules root-dir.\n * we went with option #2 because it'll be easier for users to go to the capsule-root and run\n * `tsc --build` to debug issues.\n */\n private async runTscBuild(network: Network): Promise<ComponentResult[]> {\n const rootDir = network.capsulesRootDir;\n const capsules = await network.getCapsulesToCompile();\n if (!capsules.length) {\n return [];\n }\n const capsuleDirs = capsules.getAllCapsuleDirs();\n const formatHost = {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: () => '', // it helps to get the files with absolute paths\n getNewLine: () => this.tsModule.sys.newLine,\n };\n const componentsResults: ComponentResult[] = [];\n let currentComponentResult: Partial<ComponentResult> = { errors: [] };\n const reportDiagnostic = (diagnostic: ts.Diagnostic) => {\n const errorStr = process.stdout.isTTY\n ? this.tsModule.formatDiagnosticsWithColorAndContext([diagnostic], formatHost)\n : this.tsModule.formatDiagnostic(diagnostic, formatHost);\n if (!diagnostic.file) {\n // the error is general and not related to a specific file. e.g. tsconfig is missing.\n throw new BitError(errorStr);\n }\n this.logger.consoleFailure(errorStr);\n if (!currentComponentResult.component || !currentComponentResult.errors) {\n throw new Error(`currentComponentResult is not defined yet for ${diagnostic.file}`);\n }\n currentComponentResult.errors.push(errorStr);\n };\n // this only works when `verbose` is `true` in the `ts.createSolutionBuilder` function.\n const reportSolutionBuilderStatus = (diag: ts.Diagnostic) => {\n const msg = diag.messageText as string;\n this.logger.debug(msg);\n };\n const errorCounter = (errorCount: number) => {\n this.logger.info(`total error found: ${errorCount}`);\n };\n const host = this.tsModule.createSolutionBuilderHost(\n undefined,\n undefined,\n reportDiagnostic,\n reportSolutionBuilderStatus,\n errorCounter\n );\n await this.writeProjectReferencesTsConfig(rootDir, capsuleDirs);\n const solutionBuilder = this.tsModule.createSolutionBuilder(host, [rootDir], { verbose: true });\n let nextProject;\n const longProcessLogger = this.logger.createLongProcessLogger('compile typescript components', capsules.length);\n // eslint-disable-next-line no-cond-assign\n while ((nextProject = solutionBuilder.getNextInvalidatedProject())) {\n // regex to make sure it will work correctly for both linux and windows\n // it replaces both /tsconfig.json and \\tsocnfig.json\n const capsulePath = nextProject.project.replace(/[/\\\\]tsconfig.json/, '');\n const currentComponentId = capsules.getIdByPathInCapsule(capsulePath);\n if (!currentComponentId) throw new Error(`unable to find component for ${capsulePath}`);\n longProcessLogger.logProgress(currentComponentId.toString());\n const capsule = capsules.getCapsule(currentComponentId);\n if (!capsule) throw new Error(`unable to find capsule for ${currentComponentId.toString()}`);\n currentComponentResult.component = capsule.component;\n currentComponentResult.startTime = Date.now();\n nextProject.done();\n currentComponentResult.endTime = Date.now();\n componentsResults.push({ ...currentComponentResult } as ComponentResult);\n currentComponentResult = { errors: [] };\n }\n longProcessLogger.end();\n\n return componentsResults;\n }\n\n private getFormatDiagnosticsHost(): ts.FormatDiagnosticsHost {\n return {\n getCanonicalFileName: (p) => p,\n getCurrentDirectory: this.tsModule.sys.getCurrentDirectory,\n getNewLine: () => this.tsModule.sys.newLine,\n };\n }\n\n private async writeTypes(dirs: string[]) {\n await Promise.all(\n this.options.types.map(async (typePath) => {\n const contents = await fs.readFile(typePath, 'utf8');\n const filename = path.basename(typePath);\n\n await Promise.all(\n dirs.map(async (dir) => {\n const filePath = path.join(dir, 'types', filename);\n if (!(await fs.pathExists(filePath))) {\n await fs.outputFile(filePath, contents);\n }\n })\n );\n })\n );\n }\n\n /**\n * when using project-references, typescript adds a file \"tsconfig.tsbuildinfo\" which is not\n * needed for the package.\n */\n private async writeNpmIgnore(dirs: string[]) {\n const NPM_IGNORE_FILE = '.npmignore';\n await Promise.all(\n dirs.map(async (dir) => {\n const npmIgnorePath = path.join(dir, NPM_IGNORE_FILE);\n const npmIgnoreEntriesStr = `\\n${this.distDir}/tsconfig.tsbuildinfo\\n`;\n await fs.appendFile(npmIgnorePath, npmIgnoreEntriesStr);\n })\n );\n }\n\n private async writeProjectReferencesTsConfig(rootDir: string, projects: string[]) {\n const files = [];\n const references = projects.map((project) => ({ path: project }));\n const tsconfig = { files, references };\n const tsconfigStr = this.stringifyTsconfig(tsconfig);\n await fs.writeFile(path.join(rootDir, 'tsconfig.json'), tsconfigStr);\n }\n\n private async writeTsConfig(dirs: string[]) {\n const tsconfigStr = this.stringifyTsconfig(this.options.tsconfig);\n await Promise.all(dirs.map((dir) => fs.writeFile(path.join(dir, 'tsconfig.json'), tsconfigStr)));\n }\n\n private stringifyTsconfig(tsconfig) {\n return JSON.stringify(tsconfig, undefined, 2);\n }\n\n private replaceFileExtToJs(filePath: string): string {\n if (!this.isFileSupported(filePath)) return filePath;\n const fileExtension = path.extname(filePath);\n return filePath.replace(new RegExp(`${fileExtension}$`), '.js'); // makes sure it's the last occurrence\n }\n\n version() {\n return this.tsModule.version;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.compiler.spec.ts"],"names":["defaultOpts","tsconfig","types","describe","it","tsCompiler","getTsCompiler","getDistPathBySrcPath","to","equal","path","join","isFileSupported","be","true","false","compileJsx","compileJs","opts","finalOpts","Object","assign","TypescriptCompiler","TypescriptAspect","id","Logger","ts"],"mappings":"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","sourcesContent":["import { Logger } from '@teambit/logger';\nimport ts from 'typescript';\nimport { expect } from 'chai';\nimport path from 'path';\nimport { TypescriptAspect } from './typescript.aspect';\n\nimport { TypescriptCompiler } from './typescript.compiler';\nimport type { TsCompilerOptionsWithoutTsConfig } from './compiler-options';\n\nconst defaultOpts = {\n tsconfig: {},\n types: [],\n};\n\ndescribe('TypescriptCompiler', () => {\n describe('getDistPathBySrcPath', () => {\n it('should replace the extension with .js and prepend the dist dir', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('index.ts')).to.equal(path.join('dist', 'index.js'));\n expect(tsCompiler.getDistPathBySrcPath('index.tsx')).to.equal(path.join('dist', 'index.js'));\n });\n it('should not replace the extension if the file is not supported', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('style.css')).to.equal(path.join('dist', 'style.css'));\n expect(tsCompiler.getDistPathBySrcPath('index.d.ts')).to.equal(path.join('dist', 'index.d.ts'));\n });\n });\n describe('isFileSupported', () => {\n it('should support .ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.ts')).to.be.true;\n });\n it('should support .tsx files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.tsx')).to.be.true;\n });\n it('should not support .jsx files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.false;\n });\n it('should not support .js files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.js')).to.be.false;\n });\n it('should support .jsx files when passing compileJsx', () => {\n const tsCompiler = getTsCompiler({ compileJsx: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.true;\n });\n it('should support .js files when passing compileJs', () => {\n const tsCompiler = getTsCompiler({ compileJs: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.js')).to.be.true;\n });\n it('should not support .d.ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.d.ts')).to.be.false;\n });\n });\n});\n\nfunction getTsCompiler(opts: TsCompilerOptionsWithoutTsConfig = defaultOpts) {\n const finalOpts = Object.assign({}, defaultOpts, opts);\n return new TypescriptCompiler(TypescriptAspect.id, new Logger('test'), finalOpts, ts);\n}\n"]}
1
+ {"version":3,"names":["defaultOpts","tsconfig","types","describe","it","tsCompiler","getTsCompiler","expect","getDistPathBySrcPath","to","equal","path","join","isFileSupported","be","true","false","compileJsx","compileJs","opts","finalOpts","Object","assign","TypescriptCompiler","TypescriptAspect","id","Logger","ts"],"sources":["typescript.compiler.spec.ts"],"sourcesContent":["import { Logger } from '@teambit/logger';\nimport ts from 'typescript';\nimport { expect } from 'chai';\nimport path from 'path';\nimport { TypescriptAspect } from './typescript.aspect';\n\nimport { TypescriptCompiler } from './typescript.compiler';\nimport type { TsCompilerOptionsWithoutTsConfig } from './compiler-options';\n\nconst defaultOpts = {\n tsconfig: {},\n types: [],\n};\n\ndescribe('TypescriptCompiler', () => {\n describe('getDistPathBySrcPath', () => {\n it('should replace the extension with .js and prepend the dist dir', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('index.ts')).to.equal(path.join('dist', 'index.js'));\n expect(tsCompiler.getDistPathBySrcPath('index.tsx')).to.equal(path.join('dist', 'index.js'));\n });\n it('should not replace the extension if the file is not supported', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.getDistPathBySrcPath('style.css')).to.equal(path.join('dist', 'style.css'));\n expect(tsCompiler.getDistPathBySrcPath('index.d.ts')).to.equal(path.join('dist', 'index.d.ts'));\n });\n });\n describe('isFileSupported', () => {\n it('should support .ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.ts')).to.be.true;\n });\n it('should support .tsx files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.tsx')).to.be.true;\n });\n it('should not support .jsx files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.false;\n });\n it('should not support .js files by default', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.js')).to.be.false;\n });\n it('should support .jsx files when passing compileJsx', () => {\n const tsCompiler = getTsCompiler({ compileJsx: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.jsx')).to.be.true;\n });\n it('should support .js files when passing compileJs', () => {\n const tsCompiler = getTsCompiler({ compileJs: true, ...defaultOpts });\n expect(tsCompiler.isFileSupported('index.js')).to.be.true;\n });\n it('should not support .d.ts files', () => {\n const tsCompiler = getTsCompiler();\n expect(tsCompiler.isFileSupported('index.d.ts')).to.be.false;\n });\n });\n});\n\nfunction getTsCompiler(opts: TsCompilerOptionsWithoutTsConfig = defaultOpts) {\n const finalOpts = Object.assign({}, defaultOpts, opts);\n return new TypescriptCompiler(TypescriptAspect.id, new Logger('test'), finalOpts, ts);\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["typescript.composition.tsx"],"names":["Logo","height","display","justifyContent","width"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;AAAK,EAAA,KAAK,EAAE;AAAEC,IAAAA,MAAM,EAAE,MAAV;AAAkBC,IAAAA,OAAO,EAAE,MAA3B;AAAmCC,IAAAA,cAAc,EAAE;AAAnD;AAAZ,gBACE;AAAK,EAAA,KAAK,EAAE;AAAEC,IAAAA,KAAK,EAAE;AAAT,GAAZ;AAA2B,EAAA,GAAG,EAAC;AAA/B,EADF,CADK","sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/brands/logo-typescript.svg\" />\n </div>\n);\n"]}
1
+ {"version":3,"names":["Logo","height","display","justifyContent","width"],"sources":["typescript.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/brands/logo-typescript.svg\" />\n </div>\n);\n"],"mappings":";;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,MAAMA,IAAI,GAAG,mBAClB;EAAK,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAV;IAAkBC,OAAO,EAAE,MAA3B;IAAmCC,cAAc,EAAE;EAAnD;AAAZ,gBACE;EAAK,KAAK,EAAE;IAAEC,KAAK,EAAE;EAAT,CAAZ;EAA2B,GAAG,EAAC;AAA/B,EADF,CADK"}
@@ -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,24 +104,35 @@ 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);
109
111
  moduleSchema.flatExportsRecursively();
110
- const apiScheme = moduleSchema; // return APISchema.from({ });
111
-
112
- return new (_semanticsEntities().APISchema)(apiScheme);
112
+ const apiScheme = moduleSchema;
113
+ const location = context.getLocation(mainAst);
114
+ return new (_semanticsEntities().APISchema)(location, apiScheme);
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