From b5097c8dcdf41acb91b65ebc605c97787da674ec Mon Sep 17 00:00:00 2001 From: Ramanpreet Nara Date: Tue, 4 Aug 2020 15:47:30 -0700 Subject: [PATCH] Back out "Back out "[TM][JS] Forward NativeModule schema to __turboModuleProxy"" Summary: **Note:** This is a carbon copy of D22832730 (https://github.com/facebook/react-native/commit/3df6f5fb2c6176a809cdfef69a91792d3dce7d86). The fixes are stacked on top of this diff, in D22888030. Changelog: [Internal] Reviewed By: fkgozali Differential Revision: D22888032 fbshipit-source-id: 2f1b7ecd39437a3c5ee9c3214419716fde2bbdff --- Libraries/TurboModule/TurboModuleRegistry.js | 30 +++++++++++++++++-- .../src/parsers/flow/modules/schema.js | 2 +- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/Libraries/TurboModule/TurboModuleRegistry.js b/Libraries/TurboModule/TurboModuleRegistry.js index 1f06b8271a..2005279242 100644 --- a/Libraries/TurboModule/TurboModuleRegistry.js +++ b/Libraries/TurboModule/TurboModuleRegistry.js @@ -16,7 +16,7 @@ import invariant from 'invariant'; const turboModuleProxy = global.__turboModuleProxy; -export function get(name: string): ?T { +function requireModule(name: string, schema?: ?$FlowFixMe): ?T { // Bridgeless mode requires TurboModules if (!global.RN$Bridgeless) { // Backward compatibility layer during migration. @@ -27,15 +27,39 @@ export function get(name: string): ?T { } if (turboModuleProxy != null) { - const module: ?T = turboModuleProxy(name); + const module: ?T = turboModuleProxy(name, schema); return module; } return null; } +export function get(name: string): ?T { + /** + * What is Schema? + * + * @react-native/babel-plugin-codegen will parse the NativeModule + * spec, and pass in the generated schema as the second argument + * to this function. The schem will then be used to perform method + * dispatch on, and translate arguments/return to and from the Native + * TurboModule object. + */ + const schema = arguments.length === 2 ? arguments[1] : undefined; + return requireModule(name, schema); +} + export function getEnforcing(name: string): T { - const module = get(name); + /** + * What is Schema? + * + * @react-native/babel-plugin-codegen will parse the NativeModule + * spec, and pass in the generated schema as the second argument + * to this function. The schem will then be used to perform method + * dispatch on, and translate arguments/return to and from the Native + * TurboModule object. + */ + const schema = arguments.length === 2 ? arguments[1] : undefined; + const module = requireModule(name, schema); invariant( module != null, `TurboModuleRegistry.getEnforcing(...): '${name}' could not be found. ` + diff --git a/packages/react-native-codegen/src/parsers/flow/modules/schema.js b/packages/react-native-codegen/src/parsers/flow/modules/schema.js index 68b1d61c98..c1e4c80cfd 100644 --- a/packages/react-native-codegen/src/parsers/flow/modules/schema.js +++ b/packages/react-native-codegen/src/parsers/flow/modules/schema.js @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. * * @format - * @flow strict-local + * @flow strict */ 'use strict';