flow-api-translator 0.17.0 → 0.18.0

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.
@@ -3027,6 +3027,8 @@ const getTransforms = (originalCode, scopeManager, opts) => {
3027
3027
  TypeOperator(node) {
3028
3028
  switch (node.operator) {
3029
3029
  case 'renders':
3030
+ case 'renders?':
3031
+ case 'renders*':
3030
3032
  {
3031
3033
  const hasReactImport = isReactImport(node, 'React');
3032
3034
  return {
@@ -3330,9 +3330,11 @@ const getTransforms = (
3330
3330
  typeAnnotation: transformTypeAnnotationType(node.argument),
3331
3331
  };
3332
3332
  },
3333
- TypeOperator(node: FlowESTree.TypeOperator): TSESTree.TypeNode {
3333
+ TypeOperator(node: FlowESTree.RendersType): TSESTree.TypeNode {
3334
3334
  switch (node.operator) {
3335
- case 'renders': {
3335
+ case 'renders':
3336
+ case 'renders?':
3337
+ case 'renders*': {
3336
3338
  const hasReactImport = isReactImport(node, 'React');
3337
3339
  return {
3338
3340
  type: 'TSTypeReference',
@@ -334,6 +334,12 @@ function convertStatement(stmt, context) {
334
334
 
335
335
  function convertExpressionToTypeAnnotation(expr, context) {
336
336
  switch (expr.type) {
337
+ case 'AsExpression':
338
+ {
339
+ const [resultExpr, deps] = convertAsExpression(expr, context);
340
+ return [resultExpr, deps];
341
+ }
342
+
337
343
  case 'TypeCastExpression':
338
344
  {
339
345
  const [resultExpr, deps] = convertTypeCastExpression(expr, context);
@@ -1009,6 +1015,10 @@ function convertOpaqueType(opaqueType, context) {
1009
1015
  }), [...typeParamsDeps, ...supertypeDeps]];
1010
1016
  }
1011
1017
 
1018
+ function convertAsExpression(asExpression, context) {
1019
+ return convertTypeAnnotationType(asExpression.typeAnnotation, asExpression, context);
1020
+ }
1021
+
1012
1022
  function convertTypeCastExpression(typeCast, context) {
1013
1023
  return convertTypeAnnotation(typeCast.typeAnnotation, typeCast, context);
1014
1024
  }
@@ -12,6 +12,7 @@
12
12
 
13
13
  import type {
14
14
  AFunction,
15
+ AsExpression,
15
16
  BindingName,
16
17
  ClassBody,
17
18
  ClassDeclaration,
@@ -54,7 +55,7 @@ import type {
54
55
  TypeAnnotation,
55
56
  TypeAnnotationType,
56
57
  TypeCastExpression,
57
- TypeOperator,
58
+ RendersType,
58
59
  TypeParameterDeclaration,
59
60
  TypeParameterInstantiation,
60
61
  VariableDeclaration,
@@ -419,6 +420,10 @@ function convertExpressionToTypeAnnotation(
419
420
  context: TranslationContext,
420
421
  ): TranslatedResult<TypeAnnotationType> {
421
422
  switch (expr.type) {
423
+ case 'AsExpression': {
424
+ const [resultExpr, deps] = convertAsExpression(expr, context);
425
+ return [resultExpr, deps];
426
+ }
422
427
  case 'TypeCastExpression': {
423
428
  const [resultExpr, deps] = convertTypeCastExpression(expr, context);
424
429
  return [resultExpr, deps];
@@ -1109,7 +1114,7 @@ function convertComponentDeclaration(
1109
1114
  }
1110
1115
 
1111
1116
  return [
1112
- asDetachedNode<TypeOperator>(rendersType),
1117
+ asDetachedNode<RendersType>(rendersType),
1113
1118
  analyzeTypeDependencies(rendersType, context),
1114
1119
  ];
1115
1120
  })();
@@ -1404,6 +1409,17 @@ function convertOpaqueType(
1404
1409
  ];
1405
1410
  }
1406
1411
 
1412
+ function convertAsExpression(
1413
+ asExpression: AsExpression,
1414
+ context: TranslationContext,
1415
+ ): TranslatedResult<TypeAnnotationType> {
1416
+ return convertTypeAnnotationType(
1417
+ asExpression.typeAnnotation,
1418
+ asExpression,
1419
+ context,
1420
+ );
1421
+ }
1422
+
1407
1423
  function convertTypeCastExpression(
1408
1424
  typeCast: TypeCastExpression,
1409
1425
  context: TranslationContext,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flow-api-translator",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "description": "Toolkit for creating Flow and TypeScript compatible libraries from Flow source code.",
5
5
  "main": "dist/index.js",
6
6
  "license": "MIT",
@@ -12,10 +12,10 @@
12
12
  "@babel/code-frame": "^7.16.0",
13
13
  "@typescript-eslint/visitor-keys": "^5.42.0",
14
14
  "flow-enums-runtime": "^0.0.6",
15
- "hermes-eslint": "0.17.0",
16
- "hermes-estree": "0.17.0",
17
- "hermes-parser": "0.17.0",
18
- "hermes-transform": "0.17.0"
15
+ "hermes-eslint": "0.18.0",
16
+ "hermes-estree": "0.18.0",
17
+ "hermes-parser": "0.18.0",
18
+ "hermes-transform": "0.18.0"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "prettier": "^3.0.0 || ^2.7.1"