From 642695615f55e750af23eec1d9a4613fa882a527 Mon Sep 17 00:00:00 2001 From: "Andrew Coates (REDMOND)" Date: Mon, 30 Mar 2020 09:50:04 -0700 Subject: [PATCH 1/9] Start project to codegen NM2 from spec files --- .../MyNativeModule.js | 32 ++++ .../index.windows.js | 5 + .../SampleLibraryCPP/MyNativeModule.g.h | 31 ++++ .../windows/SampleLibraryCPP/MyNativeModule.h | 40 +++++ .../SampleLibraryCPP/ReactPackageProvider.cpp | 3 + .../react-native-windows-codegen/.gitignore | 2 + .../react-native-windows-codegen/README.md | 7 + packages/react-native-windows-codegen/bin.js | 12 ++ .../react-native-windows-codegen/just-task.js | 20 +++ .../react-native-windows-codegen/package.json | 34 ++++ .../react-native-windows-codegen/src/Cli.ts | 129 +++++++++++++++ .../src/generators/GenerateNM2.ts | 147 ++++++++++++++++++ .../tsconfig.json | 15 ++ yarn.lock | 18 ++- 14 files changed, 493 insertions(+), 2 deletions(-) create mode 100644 packages/microsoft-reactnative-sampleapps/MyNativeModule.js create mode 100644 packages/microsoft-reactnative-sampleapps/windows/SampleLibraryCPP/MyNativeModule.g.h create mode 100644 packages/microsoft-reactnative-sampleapps/windows/SampleLibraryCPP/MyNativeModule.h create mode 100644 packages/react-native-windows-codegen/.gitignore create mode 100644 packages/react-native-windows-codegen/README.md create mode 100644 packages/react-native-windows-codegen/bin.js create mode 100644 packages/react-native-windows-codegen/just-task.js create mode 100644 packages/react-native-windows-codegen/package.json create mode 100644 packages/react-native-windows-codegen/src/Cli.ts create mode 100644 packages/react-native-windows-codegen/src/generators/GenerateNM2.ts create mode 100644 packages/react-native-windows-codegen/tsconfig.json diff --git a/packages/microsoft-reactnative-sampleapps/MyNativeModule.js b/packages/microsoft-reactnative-sampleapps/MyNativeModule.js new file mode 100644 index 00000000000..eff7050bba2 --- /dev/null +++ b/packages/microsoft-reactnative-sampleapps/MyNativeModule.js @@ -0,0 +1,32 @@ +/** + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT License. + * + * @flow + * @format + */ + +'use strict'; + +import type {TurboModule} from 'react-native/Libraries/TurboModule/RCTExport'; +import * as TurboModuleRegistry from 'react-native/Libraries/TurboModule/TurboModuleRegistry'; + +export interface Spec extends TurboModule { + // Exported methods. + +getConstants: () => {| + const1: boolean, + const2: number, + const3: string, + |}; + +voidFunc: () => void; + +getBool: (arg: boolean) => boolean; + +getNumber: (arg: number) => number; + +getString: (arg: string) => string; + // +getArray: (arg: Array) => Array; + // +getObject: (arg: Object) => Object; + // +getValue: (x: number, y: string, z: Object) => Object; + // +getValueWithCallback: (callback: (value: string) => void) => void; + // +getValueWithPromise: (error: boolean) => Promise; +} + +export default (TurboModuleRegistry.getEnforcing('MyNativeModule'): Spec); diff --git a/packages/microsoft-reactnative-sampleapps/index.windows.js b/packages/microsoft-reactnative-sampleapps/index.windows.js index 8256f7c6253..5a271e0cc9b 100644 --- a/packages/microsoft-reactnative-sampleapps/index.windows.js +++ b/packages/microsoft-reactnative-sampleapps/index.windows.js @@ -14,12 +14,15 @@ import { UIManager, View, Linking, + Alert, } from 'react-native'; import { NativeModules, NativeEventEmitter } from 'react-native'; import {MyComp} from './myComp'; +import {default as MyNativeModule} from './MyNativeModule'; + // Creating event emitters const SampleModuleCSEmitter = new NativeEventEmitter(NativeModules.SampleModuleCS); const SampleModuleCppEmitter = new NativeEventEmitter(NativeModules.SampleModuleCpp); @@ -278,6 +281,8 @@ class SampleApp extends Component { This app consumes custom Native Modules and View Managers. +