mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Cleanup buildMethodSchema and introduce nullable methods
Summary: ## Changes - Started doing cleanup under `/parsers/flow/modules/methods.js` - Rename `NativeModuleMethodTypeShape` -> `NativeModulePropertyShape` - Moved optional property from `FunctionTypeAnnotation` to the `NativeModulePropertyShape` - Introduced a nullable property inside what was once `FunctionTypeAnnotation`. Changelog: [Internal] Reviewed By: PeteTheHeat Differential Revision: D23146050 fbshipit-source-id: 2fe97bb9c0736242682133e4923131a54bbea54b
This commit is contained in:
committed by
Facebook GitHub Bot
parent
747f493feb
commit
f9ea52574e
+8
-9
@@ -262,7 +262,7 @@ export type SchemaType = $ReadOnly<{|
|
||||
export type NativeModuleShape = $ReadOnly<{|
|
||||
// We only support aliases to Objects
|
||||
aliases: NativeModuleAliasMap,
|
||||
properties: $ReadOnlyArray<NativeModuleMethodTypeShape>,
|
||||
properties: $ReadOnlyArray<NativeModulePropertyShape>,
|
||||
|}>;
|
||||
|
||||
export type NativeModuleAliasMap = $ReadOnly<{
|
||||
@@ -276,16 +276,15 @@ export type ObjectTypeAliasTypeShape = $ReadOnly<{|
|
||||
properties: $ReadOnlyArray<ObjectParamTypeAnnotation>,
|
||||
|}>;
|
||||
|
||||
export type NativeModuleMethodTypeShape = $ReadOnly<{|
|
||||
export type NativeModulePropertyShape = $ReadOnly<{|
|
||||
name: string,
|
||||
typeAnnotation: FunctionTypeAnnotation,
|
||||
|}>;
|
||||
|
||||
export type FunctionTypeAnnotation = $ReadOnly<{|
|
||||
type: 'FunctionTypeAnnotation',
|
||||
params: $ReadOnlyArray<FunctionTypeAnnotationParam>,
|
||||
returnTypeAnnotation: FunctionTypeAnnotationReturn,
|
||||
optional: boolean,
|
||||
typeAnnotation: $ReadOnly<{|
|
||||
type: 'FunctionTypeAnnotation',
|
||||
params: $ReadOnlyArray<FunctionTypeAnnotationParam>,
|
||||
returnTypeAnnotation: FunctionTypeAnnotationReturn,
|
||||
nullable: boolean,
|
||||
|}>,
|
||||
|}>;
|
||||
|
||||
export type FunctionTypeAnnotationReturn =
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@
|
||||
import type {
|
||||
FunctionTypeAnnotationParam,
|
||||
FunctionTypeAnnotationReturn,
|
||||
NativeModuleMethodTypeShape,
|
||||
NativeModulePropertyShape,
|
||||
ObjectTypeAliasTypeShape,
|
||||
SchemaType,
|
||||
} from '../../CodegenSchema';
|
||||
@@ -156,7 +156,7 @@ function translateFunctionReturnTypeToJavaType(
|
||||
|
||||
// Build special-cased runtime check for getConstants().
|
||||
function buildGetConstantsMethod(
|
||||
method: NativeModuleMethodTypeShape,
|
||||
method: NativeModulePropertyShape,
|
||||
imports: Set<string>,
|
||||
): string {
|
||||
if (
|
||||
|
||||
+64
-32
@@ -34,6 +34,7 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'getConstants',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -64,11 +65,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
],
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'voidFunc',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -76,11 +78,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
type: 'VoidTypeAnnotation',
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getBool',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -96,11 +99,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getNumber',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -116,11 +120,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getString',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -136,11 +141,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getArray',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -162,11 +168,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getObject',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -182,11 +189,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getRootTag',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -204,11 +212,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getValue',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -238,11 +247,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getValueWithCallback',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -258,11 +268,12 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getValueWithPromise',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -278,7 +289,7 @@ const SIMPLE_NATIVE_MODULES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -297,6 +308,7 @@ const TWO_MODULES_SAME_FILE: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'voidFunc',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -304,7 +316,7 @@ const TWO_MODULES_SAME_FILE: SchemaType = {
|
||||
type: 'VoidTypeAnnotation',
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -314,6 +326,7 @@ const TWO_MODULES_SAME_FILE: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'voidFunc',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -321,7 +334,7 @@ const TWO_MODULES_SAME_FILE: SchemaType = {
|
||||
type: 'VoidTypeAnnotation',
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -340,6 +353,7 @@ const TWO_MODULES_DIFFERENT_FILES: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'voidFunc',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -347,7 +361,7 @@ const TWO_MODULES_DIFFERENT_FILES: SchemaType = {
|
||||
type: 'VoidTypeAnnotation',
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -361,6 +375,7 @@ const TWO_MODULES_DIFFERENT_FILES: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'getConstants',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -369,11 +384,12 @@ const TWO_MODULES_DIFFERENT_FILES: SchemaType = {
|
||||
properties: [],
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'voidFunc',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -381,7 +397,7 @@ const TWO_MODULES_DIFFERENT_FILES: SchemaType = {
|
||||
type: 'VoidTypeAnnotation',
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -400,6 +416,7 @@ const COMPLEX_OBJECTS: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'difficult',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -491,11 +508,12 @@ const COMPLEX_OBJECTS: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'optionals',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -567,11 +585,12 @@ const COMPLEX_OBJECTS: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'optionalMethod',
|
||||
optional: true,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -617,11 +636,12 @@ const COMPLEX_OBJECTS: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: true,
|
||||
nullable: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getArrays',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -698,7 +718,7 @@ const COMPLEX_OBJECTS: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -806,6 +826,7 @@ const NATIVE_MODULES_WITH_TYPE_ALIASES: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'getConstants',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -814,11 +835,12 @@ const NATIVE_MODULES_WITH_TYPE_ALIASES: SchemaType = {
|
||||
properties: [],
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'cropImage',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -835,7 +857,7 @@ const NATIVE_MODULES_WITH_TYPE_ALIASES: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -1092,6 +1114,7 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'getConstants',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1100,11 +1123,12 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
properties: [],
|
||||
},
|
||||
params: [],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'getPhotos',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1121,11 +1145,12 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'saveToCameraRoll',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1148,11 +1173,12 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'deletePhotos',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1171,7 +1197,7 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -1185,6 +1211,7 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'openCameraDialog',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1230,7 +1257,7 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
@@ -1350,6 +1377,7 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
properties: [
|
||||
{
|
||||
name: 'reportFatalException',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1383,11 +1411,12 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'reportSoftException',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1421,11 +1450,12 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'reportException',
|
||||
optional: true,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1442,11 +1472,12 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: true,
|
||||
nullable: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'updateExceptionMessage',
|
||||
optional: false,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1480,11 +1511,12 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
},
|
||||
},
|
||||
],
|
||||
optional: false,
|
||||
nullable: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'dismissRedbox',
|
||||
optional: true,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation: {
|
||||
@@ -1492,7 +1524,7 @@ const REAL_MODULE_EXAMPLE: SchemaType = {
|
||||
type: 'VoidTypeAnnotation',
|
||||
},
|
||||
params: [],
|
||||
optional: true,
|
||||
nullable: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
+62
-31
@@ -75,8 +75,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getNumber",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -95,8 +96,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getVoid",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [],
|
||||
"returnTypeAnnotation": Object {
|
||||
"nullable": false,
|
||||
@@ -107,8 +109,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getArray",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "a",
|
||||
@@ -139,8 +142,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getStringFromAlias",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "a",
|
||||
@@ -176,8 +180,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getArray",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -218,8 +223,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getArray",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -256,8 +262,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getArray",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -282,8 +289,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getArray",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -324,8 +332,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "passBool",
|
||||
"optional": true,
|
||||
"typeAnnotation": Object {
|
||||
"optional": true,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -344,8 +353,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "passNumber",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -364,8 +374,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "passString",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -384,8 +395,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "passStringish",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -420,8 +432,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getValueWithCallback",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "callback",
|
||||
@@ -456,8 +469,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getArray",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -516,8 +530,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getObject",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -572,8 +587,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getReadOnlyObject",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -628,8 +644,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getObject2",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -657,8 +674,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getObjectInArray",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -732,8 +750,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getConstants",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [],
|
||||
"returnTypeAnnotation": Object {
|
||||
"nullable": false,
|
||||
@@ -834,8 +853,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getInt",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -854,8 +874,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getFloat",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -924,8 +945,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "foo1",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "x",
|
||||
@@ -946,8 +968,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "foo2",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "x",
|
||||
@@ -983,8 +1006,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "voidFunc",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "arg",
|
||||
@@ -1032,8 +1056,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getConstants",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [],
|
||||
"returnTypeAnnotation": Object {
|
||||
"nullable": false,
|
||||
@@ -1063,8 +1088,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getConstants2",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [],
|
||||
"returnTypeAnnotation": Object {
|
||||
"nullable": false,
|
||||
@@ -1123,8 +1149,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getValueWithPromise",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [],
|
||||
"returnTypeAnnotation": Object {
|
||||
"nullable": false,
|
||||
@@ -1135,8 +1162,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getValueWithPromiseDefinedSomewhereElse",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [],
|
||||
"returnTypeAnnotation": Object {
|
||||
"nullable": false,
|
||||
@@ -1147,8 +1175,9 @@ Object {
|
||||
},
|
||||
Object {
|
||||
"name": "getValueWithPromiseObjDefinedSomewhereElse",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [],
|
||||
"returnTypeAnnotation": Object {
|
||||
"nullable": false,
|
||||
@@ -1175,8 +1204,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getRootTag",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "rootTag",
|
||||
@@ -1213,8 +1243,9 @@ Object {
|
||||
"properties": Array [
|
||||
Object {
|
||||
"name": "getObject",
|
||||
"optional": false,
|
||||
"typeAnnotation": Object {
|
||||
"optional": false,
|
||||
"nullable": false,
|
||||
"params": Array [
|
||||
Object {
|
||||
"name": "o",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
'use strict';
|
||||
|
||||
import type {
|
||||
NativeModuleMethodTypeShape,
|
||||
NativeModulePropertyShape,
|
||||
FunctionTypeAnnotationParam,
|
||||
FunctionTypeAnnotationReturn,
|
||||
} from '../../../CodegenSchema.js';
|
||||
@@ -24,9 +24,6 @@ const {
|
||||
} = require('./properties');
|
||||
const invariant = require('invariant');
|
||||
|
||||
// $FlowFixMe there's no flowtype for ASTs
|
||||
type MethodAST = Object;
|
||||
|
||||
function getTypeAnnotationForParam(
|
||||
name: string,
|
||||
paramAnnotation: ASTNode,
|
||||
@@ -315,16 +312,35 @@ function getReturnTypeAnnotation(
|
||||
}
|
||||
|
||||
function buildMethodSchema(
|
||||
property: MethodAST,
|
||||
// TODO(T71778680): This is an ObjectTypeProperty containing either:
|
||||
// - a FunctionTypeAnnotation or GenericTypeAnnotation
|
||||
// - a NullableTypeAnnoation containing a FunctionTypeAnnotation or GenericTypeAnnotation
|
||||
// Flow type this node
|
||||
property: $FlowFixMe,
|
||||
types: TypeDeclarationMap,
|
||||
): NativeModuleMethodTypeShape {
|
||||
const name: string = property.key.name;
|
||||
const value = getValueFromTypes(property.value, types);
|
||||
): NativeModulePropertyShape {
|
||||
let nullable = false;
|
||||
let {key, value} = property;
|
||||
|
||||
// Unwrap Nullable types
|
||||
if (value.type === 'NullableTypeAnnotation') {
|
||||
nullable = true;
|
||||
value = value.typeAnnotation;
|
||||
}
|
||||
|
||||
const name: string = key.name;
|
||||
|
||||
// Resolve type aliases
|
||||
if (value.type === 'GenericTypeAnnotation') {
|
||||
value = getValueFromTypes(value, types);
|
||||
}
|
||||
|
||||
if (value.type !== 'FunctionTypeAnnotation') {
|
||||
throw new Error(
|
||||
`Only methods are supported as module properties. Found ${value.type} in ${property.key.name}`,
|
||||
);
|
||||
}
|
||||
|
||||
const params = value.params.map(param =>
|
||||
getTypeAnnotationForParam(name, param, types),
|
||||
);
|
||||
@@ -334,20 +350,22 @@ function buildMethodSchema(
|
||||
value.returnType,
|
||||
types,
|
||||
);
|
||||
|
||||
return {
|
||||
name,
|
||||
optional: property.optional,
|
||||
typeAnnotation: {
|
||||
type: 'FunctionTypeAnnotation',
|
||||
returnTypeAnnotation,
|
||||
params,
|
||||
optional: property.optional,
|
||||
nullable,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function getMethods(
|
||||
types: TypeDeclarationMap,
|
||||
): $ReadOnlyArray<NativeModuleMethodTypeShape> {
|
||||
): $ReadOnlyArray<NativeModulePropertyShape> {
|
||||
const moduleInterfaceNames = Object.keys(types).filter((typeName: string) => {
|
||||
const declaration = types[typeName];
|
||||
return (
|
||||
@@ -368,8 +386,7 @@ function getMethods(
|
||||
const declaration = types[moduleInterfaceName];
|
||||
return declaration.body.properties
|
||||
.filter(property => property.type === 'ObjectTypeProperty')
|
||||
.map(property => buildMethodSchema(property, types))
|
||||
.filter(Boolean);
|
||||
.map(property => buildMethodSchema(property, types));
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
Reference in New Issue
Block a user