react-native-windows 0.71.37 → 0.71.38

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 (47) hide show
  1. package/Directory.Build.props +5 -0
  2. package/Microsoft.ReactNative/IReactDispatcher.cpp +4 -0
  3. package/Microsoft.ReactNative/IReactDispatcher.h +1 -0
  4. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +2 -4
  5. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +30 -11
  6. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +0 -2
  7. package/Microsoft.ReactNative/Views/DevMenu.cpp +3 -3
  8. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiLoader.cpp +16 -0
  9. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +43 -12
  10. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +17 -6
  11. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CSharpApp.targets +1 -1
  12. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CppApp.targets +1 -1
  13. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.targets +1 -1
  14. package/PropertySheets/Generated/PackageVersion.g.props +3 -3
  15. package/PropertySheets/JSEngine.props +4 -4
  16. package/PropertySheets/React.Cpp.props +1 -0
  17. package/PropertySheets/Warnings.props +6 -0
  18. package/ReactCommon/ReactCommon.vcxproj +53 -1
  19. package/ReactCommon/cgmanifest.json +15 -0
  20. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +36 -0
  21. package/Shared/DevSupportManager.cpp +2 -9
  22. package/Shared/DevSupportManager.h +2 -6
  23. package/Shared/HermesRuntimeHolder.cpp +344 -84
  24. package/Shared/HermesRuntimeHolder.h +32 -21
  25. package/Shared/HermesSamplingProfiler.cpp +66 -14
  26. package/Shared/HermesSamplingProfiler.h +5 -3
  27. package/Shared/InspectorPackagerConnection.cpp +62 -108
  28. package/Shared/InspectorPackagerConnection.h +9 -21
  29. package/Shared/JSI/RuntimeHolder.h +2 -2
  30. package/Shared/JSI/ScriptStore.h +18 -20
  31. package/Shared/JSI/V8RuntimeHolder.cpp +260 -0
  32. package/Shared/JSI/V8RuntimeHolder.h +37 -0
  33. package/Shared/OInstance.cpp +16 -32
  34. package/Shared/SafeLoadLibrary.cpp +77 -0
  35. package/Shared/SafeLoadLibrary.h +19 -0
  36. package/Shared/Shared.vcxitems +19 -8
  37. package/Shared/Shared.vcxitems.filters +23 -30
  38. package/package.json +2 -2
  39. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +1 -1
  40. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +0 -2103
  41. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +0 -73
  42. package/Shared/HermesShim.cpp +0 -118
  43. package/Shared/HermesShim.h +0 -21
  44. package/Shared/JSI/NapiJsiV8RuntimeHolder.cpp +0 -209
  45. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +0 -44
  46. package/Shared/V8JSIRuntimeHolder.cpp +0 -70
  47. package/Shared/V8JSIRuntimeHolder.h +0 -53
@@ -21,6 +21,8 @@
21
21
  <!-- When bumping the fmt version, be sure to bump the git hash of that version's commit and build fmt.vcxproj (to update its cgmanifest.json) too. -->
22
22
  <FmtVersion>8.0.0</FmtVersion>
23
23
  <FmtCommitHash>9e8b86fd2d9806672cc73133d21780dd182bfd24</FmtCommitHash>
24
+ <!-- Commit hash for https://github.com/microsoft/node-api-jsi code. -->
25
+ <NodeApiJsiCommitHash>53b897b03c1c7e57c3372acc6234447a44e150d6</NodeApiJsiCommitHash>
24
26
  </PropertyGroup>
25
27
 
26
28
  <!--
@@ -40,6 +42,9 @@
40
42
 
41
43
  <FmtDir Condition="'$(FmtDir)' == '' AND Exists('$([MSBuild]::NormalizeDirectory($(ReactNativeDir)..\..\node_modules))')">$(ReactNativeDir)..\..\node_modules\.fmt\fmt-$(FmtVersion)</FmtDir>
42
44
  <FmtDir>$([MSBuild]::NormalizeDirectory($(FmtDir)))</FmtDir>
45
+
46
+ <NodeApiJsiDir Condition="'$(NodeApiJsiDir)' == '' AND Exists('$([MSBuild]::NormalizeDirectory($(ReactNativeDir)..\..\node_modules))')">$(ReactNativeDir)..\..\node_modules\.node-api-jsi\node-api-jsi-$(NodeApiJsiCommitHash)</NodeApiJsiDir>
47
+ <NodeApiJsiDir>$([MSBuild]::NormalizeDirectory($(NodeApiJsiDir)))</NodeApiJsiDir>
43
48
  </PropertyGroup>
44
49
 
45
50
  <PropertyGroup Label="Configuration">
@@ -124,6 +124,10 @@ void ReactDispatcher::InvokeElsePost(Mso::DispatchTask &&task) const noexcept {
124
124
  return jsThreadDispatcherProperty;
125
125
  }
126
126
 
127
+ /*static*/ IReactDispatcher ReactDispatcher::GetJSDispatcher(IReactPropertyBag const &properties) noexcept {
128
+ return properties.Get(JSDispatcherProperty()).try_as<IReactDispatcher>();
129
+ }
130
+
127
131
  /*static*/ IReactPropertyName ReactDispatcher::JSDispatcherTaskStartingEventName() noexcept {
128
132
  static IReactPropertyName jsThreadDispatcherProperty{ReactPropertyBagHelper::GetName(
129
133
  ReactPropertyBagHelper::GetNamespace(L"ReactNative.Dispatcher"), L"JSDispatcherTaskStartingEventName")};
@@ -38,6 +38,7 @@ struct ReactDispatcher : implements<ReactDispatcher, IReactDispatcher, Mso::Reac
38
38
  static void SetUIThreadDispatcher(IReactPropertyBag const &properties) noexcept;
39
39
 
40
40
  static IReactPropertyName JSDispatcherProperty() noexcept;
41
+ static IReactDispatcher GetJSDispatcher(IReactPropertyBag const &properties) noexcept;
41
42
  static IReactPropertyName JSDispatcherTaskStartingEventName() noexcept;
42
43
  static IReactPropertyName JSDispatcherIdleWaitStartingEventName() noexcept;
43
44
  static IReactPropertyName JSDispatcherIdleWaitCompletedEventName() noexcept;
@@ -18,6 +18,7 @@
18
18
  <CppWinRTNamespaceMergeDepth>
19
19
  </CppWinRTNamespaceMergeDepth>
20
20
  <CppWinRTLibs>true</CppWinRTLibs>
21
+ <BuildMSRNCxxModule>false</BuildMSRNCxxModule>
21
22
  <BuildMSRNCxxReactCommon>false</BuildMSRNCxxReactCommon>
22
23
  <DesktopCompatible Condition="'$(UseWinUI3)'=='true'">true</DesktopCompatible>
23
24
  </PropertyGroup>
@@ -219,9 +220,6 @@
219
220
  <DependentUpon>IReactNotificationService.idl</DependentUpon>
220
221
  <SubType>Code</SubType>
221
222
  </ClInclude>
222
- <ClInclude Include="JsiApi.h">
223
- <DependentUpon>JsiApi.idl</DependentUpon>
224
- </ClInclude>
225
223
  <ClInclude Include="JsiReader.h">
226
224
  <DependentUpon>IJSValueReader.idl</DependentUpon>
227
225
  </ClInclude>
@@ -745,7 +743,7 @@
745
743
  <ItemGroup>
746
744
  <PackageReference Include="boost" Version="1.76.0.0" />
747
745
  <PackageReference Include="Microsoft.Windows.CppWinRT" Version="$(CppWinRTVersion)" PrivateAssets="all" />
748
- <PackageReference Include="ReactNative.Hermes.Windows" Version="$(HermesVersion)" />
746
+ <PackageReference Include="Microsoft.JavaScript.Hermes" Version="$(HermesVersion)" />
749
747
  <PackageReference Include="$(WinUIPackageName)" Version="$(WinUIPackageVersion)" Condition="'$(OverrideWinUIPackage)'!='true'" />
750
748
  <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22000.194" />
751
749
  </ItemGroup>
@@ -63,12 +63,12 @@
63
63
  #include <Utils/UwpScriptStore.h>
64
64
  #endif
65
65
 
66
+ #include "BaseScriptStoreImpl.h"
66
67
  #include "HermesRuntimeHolder.h"
67
68
 
68
69
  #if defined(USE_V8)
69
70
  #include <winrt/Windows.Storage.h>
70
- #include "BaseScriptStoreImpl.h"
71
- #include "V8JSIRuntimeHolder.h"
71
+ #include "JSI/V8RuntimeHolder.h"
72
72
  #endif // USE_V8
73
73
 
74
74
  #include "RedBox.h"
@@ -247,6 +247,7 @@ ReactInstanceWin::ReactInstanceWin(
247
247
  onDestroyed = m_options.OnInstanceDestroyed,
248
248
  reactContext = m_reactContext]() noexcept {
249
249
  whenLoaded.TryCancel(); // It only has an effect if whenLoaded was not set before
250
+ Microsoft::ReactNative::HermesRuntimeHolder::storeTo(ReactPropertyBag(reactContext->Properties()), nullptr);
250
251
  if (onDestroyed) {
251
252
  onDestroyed.Get()->Invoke(reactContext);
252
253
  }
@@ -470,10 +471,25 @@ void ReactInstanceWin::Initialize() noexcept {
470
471
  std::unique_ptr<facebook::jsi::PreparedScriptStore> preparedScriptStore = nullptr;
471
472
 
472
473
  switch (m_options.JsiEngine()) {
473
- case JSIEngine::Hermes:
474
- devSettings->jsiRuntimeHolder =
475
- std::make_shared<facebook::react::HermesRuntimeHolder>(devSettings, m_jsMessageThread.Load());
474
+ case JSIEngine::Hermes: {
475
+ if (Microsoft::ReactNative::HasPackageIdentity()) {
476
+ preparedScriptStore =
477
+ std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(getApplicationTempFolder());
478
+ } else {
479
+ wchar_t tempPath[MAX_PATH];
480
+ if (GetTempPathW(static_cast<DWORD>(std::size(tempPath)), tempPath)) {
481
+ preparedScriptStore =
482
+ std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(winrt::to_string(tempPath));
483
+ }
484
+ }
485
+
486
+ auto hermesRuntimeHolder = std::make_shared<Microsoft::ReactNative::HermesRuntimeHolder>(
487
+ devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore));
488
+ Microsoft::ReactNative::HermesRuntimeHolder::storeTo(
489
+ ReactPropertyBag(m_reactContext->Properties()), hermesRuntimeHolder);
490
+ devSettings->jsiRuntimeHolder = hermesRuntimeHolder;
476
491
  break;
492
+ }
477
493
  case JSIEngine::V8:
478
494
  #if defined(USE_V8)
479
495
  {
@@ -487,10 +503,16 @@ void ReactInstanceWin::Initialize() noexcept {
487
503
  std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(winrt::to_string(tempPath));
488
504
  }
489
505
  }
490
- }
491
- devSettings->jsiRuntimeHolder = std::make_shared<facebook::react::V8JSIRuntimeHolder>(
492
- devSettings, m_jsMessageThread.Load(), std::move(scriptStore), std::move(preparedScriptStore));
506
+
507
+ bool enableMultiThreadSupport{false};
508
+ #ifdef USE_FABRIC
509
+ enableMultiThreadSupport = Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties());
510
+ #endif // USE_FABRIC
511
+
512
+ devSettings->jsiRuntimeHolder = std::make_shared<Microsoft::ReactNative::V8RuntimeHolder>(
513
+ devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore), enableMultiThreadSupport);
493
514
  break;
515
+ }
494
516
  #endif // USE_V8
495
517
  case JSIEngine::Chakra:
496
518
  #ifndef CORE_ABI
@@ -1076,13 +1098,10 @@ Mso::CntPtr<IReactInstanceInternal> MakeReactInstance(
1076
1098
  reactHost, std::move(options), std::move(whenCreated), std::move(whenLoaded), std::move(updateUI));
1077
1099
  }
1078
1100
 
1079
- #if defined(USE_V8)
1080
1101
  std::string ReactInstanceWin::getApplicationTempFolder() {
1081
1102
  auto local = winrt::Windows::Storage::ApplicationData::Current().TemporaryFolder().Path();
1082
-
1083
1103
  return Microsoft::Common::Unicode::Utf16ToUtf8(local.c_str(), local.size()) + "\\";
1084
1104
  }
1085
- #endif
1086
1105
 
1087
1106
  bool ReactInstanceWin::UseWebDebugger() const noexcept {
1088
1107
  return m_useWebDebugger;
@@ -136,9 +136,7 @@ class ReactInstanceWin final : public Mso::ActiveObject<IReactInstanceInternal>
136
136
  folly::dynamic Args;
137
137
  };
138
138
 
139
- #if defined(USE_V8)
140
139
  static std::string getApplicationTempFolder();
141
- #endif
142
140
 
143
141
  private: // immutable fields
144
142
  const Mso::WeakPtr<IReactHost> m_weakReactHost;
@@ -119,7 +119,7 @@ void DevMenuManager::CreateAndShowUI() noexcept {
119
119
 
120
120
  std::ostringstream os;
121
121
  if (Microsoft::ReactNative::HermesSamplingProfiler::IsStarted()) {
122
- os << "Hermes Sampling profiler is running.. !";
122
+ os << "Hermes Sampling profiler is running!";
123
123
  } else {
124
124
  os << "Click to start.";
125
125
  }
@@ -210,9 +210,9 @@ void DevMenuManager::CreateAndShowUI() noexcept {
210
210
  if (auto strongThis = wkThis.lock()) {
211
211
  strongThis->Hide();
212
212
  if (!Microsoft::ReactNative::HermesSamplingProfiler::IsStarted()) {
213
- Microsoft::ReactNative::HermesSamplingProfiler::Start();
213
+ Microsoft::ReactNative::HermesSamplingProfiler::Start(strongThis->m_context);
214
214
  } else {
215
- auto traceFilePath = co_await Microsoft::ReactNative::HermesSamplingProfiler::Stop();
215
+ auto traceFilePath = co_await Microsoft::ReactNative::HermesSamplingProfiler::Stop(strongThis->m_context);
216
216
  auto uiDispatcher =
217
217
  React::implementation::ReactDispatcher::GetUIDispatcher(strongThis->m_context->Properties());
218
218
  uiDispatcher.Post([traceFilePath]() {
@@ -0,0 +1,16 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ #include "ApiLoaders/NodeApi.h"
5
+
6
+ namespace Microsoft::NodeApiJsi {
7
+
8
+ LibHandle LibLoader::loadLib(const char * /*libName*/) {
9
+ return reinterpret_cast<LibHandle>(0);
10
+ }
11
+
12
+ FuncPtr LibLoader::getFuncPtr(LibHandle /*libHandle*/, const char * /*funcName*/) {
13
+ return reinterpret_cast<FuncPtr>(0);
14
+ }
15
+
16
+ } // namespace Microsoft::NodeApiJsi
@@ -14,6 +14,14 @@
14
14
  <TurboModule_SourcePath Condition="'$(TurboModule_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\TurboModule.h')">$(MSBuildThisFileDirectory)</TurboModule_SourcePath>
15
15
  <Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND '$(ReactNativeDir)' != ''">$(ReactNativeDir)\ReactCommon\react\bridging</Bridging_SourcePath>
16
16
  <Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\CallbackWrapper.h')">$(MSBuildThisFileDirectory)ReactCommon</Bridging_SourcePath>
17
+
18
+ <NodeApiJsiCommitHash>53b897b03c1c7e57c3372acc6234447a44e150d6</NodeApiJsiCommitHash>
19
+ <NodeApiJsiLocal Condition="Exists('$(MSBuildThisFileDirectory)NodeApiJsiRuntime.cpp')">true</NodeApiJsiLocal>
20
+ <NodeApiJsiDir Condition="'$(NodeApiJsiDir)' == '' AND '$(NodeApiJsiLocal)' == 'true'">$(MSBuildThisFileDirectory)</NodeApiJsiDir>
21
+ <NodeApiJsiDir Condition="'$(NodeApiJsiDir)' == '' AND '$(ReactNativeDir)' != ''">$(ReactNativeDir)\..\..\node_modules\.node-api-jsi\node-api-jsi-$(NodeApiJsiCommitHash)\</NodeApiJsiDir>
22
+ <NodeApiJsiSrcDir Condition="'$(NodeApiJsiSrcDir)' == '' AND '$(NodeApiJsiLocal)' != 'true'">$(NodeApiJsiDir)src\</NodeApiJsiSrcDir>
23
+ <NodeApiJsiSrcDir Condition="'$(NodeApiJsiSrcDir)' == ''">$(MSBuildThisFileDirectory)</NodeApiJsiSrcDir>
24
+ <NodeApiDir Condition="'$(NodeApiDir)' == ''">$(NodeApiJsiDir)node-api\</NodeApiDir>
17
25
  </PropertyGroup>
18
26
  <ItemDefinitionGroup>
19
27
  <ClCompile>
@@ -23,8 +31,11 @@
23
31
  $(CallInvoker_SourcePath);
24
32
  $(TurboModule_SourcePath);
25
33
  $(Bridging_SourcePath);
34
+ $(NodeApiDir);
35
+ $(NodeApiJsiSrcDir);
26
36
  %(AdditionalIncludeDirectories)
27
37
  </AdditionalIncludeDirectories>
38
+ <PreprocessorDefinitions>JSI_VERSION=9;%(PreprocessorDefinitions)</PreprocessorDefinitions>
28
39
  </ClCompile>
29
40
  <Midl>
30
41
  <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -40,7 +51,6 @@
40
51
  <ClInclude Include="$(MSBuildThisFileDirectory)CoreApp.h" />
41
52
  <ClInclude Include="$(MSBuildThisFileDirectory)DesktopWindowBridge.h" />
42
53
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\LongLivedJsiValue.h" />
43
- <ClInclude Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.h" />
44
54
  <ClInclude Include="$(MSBuildThisFileDirectory)TurboModuleProvider.h" />
45
55
  <ClInclude Include="$(CallInvoker_SourcePath)\ReactCommon\CallInvoker.h" />
46
56
  <ClInclude Include="$(MSBuildThisFileDirectory)XamlUtils.h" />
@@ -90,6 +100,14 @@
90
100
  <ClInclude Include="$(MSBuildThisFileDirectory)UI.Xaml.Media.Media3D.h" />
91
101
  <ClInclude Include="$(MSBuildThisFileDirectory)UI.Xaml.Navigation.h" />
92
102
  <ClInclude Include="$(MSBuildThisFileDirectory)UI.Xaml.Shapes.h" />
103
+ <ClInclude Include="$(NodeApiDir)js_native_api.h" />
104
+ <ClInclude Include="$(NodeApiDir)js_native_api_types.h" />
105
+ <ClInclude Include="$(NodeApiDir)js_runtime_api.h" />
106
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.h" />
107
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.inc" />
108
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.h" />
109
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.inc" />
110
+ <ClInclude Include="$(NodeApiJsiSrcDir)NodeApiJsiRuntime.h" />
93
111
  </ItemGroup>
94
112
  <ItemGroup Condition="'$(BuildMSRNCxx)' != 'false'">
95
113
  <ClCompile Include="$(MSBuildThisFileDirectory)JSI\JsiAbiApi.cpp" />
@@ -102,16 +120,18 @@
102
120
  <ClCompile Include="$(MSBuildThisFileDirectory)ReactPromise.cpp" />
103
121
  <ClCompile Include="$(MSBuildThisFileDirectory)TurboModuleProvider.cpp" />
104
122
  </ItemGroup>
105
- <ItemGroup Condition="'$(BuildMSRNCxx)' != 'false' and '$(BuildMSRNCxxReactCommon)' != 'false'">
106
- <!--
107
- Make sure all FB code uses the same flags to improve build parallelism.
108
- This is because msbuild has to invoke different cl.exe invocations for each
109
- set of flags and msbuild inside a project is single threaded.
110
- -->
123
+ <ItemGroup Condition="'$(BuildMSRNCxxJsi)' != 'false'">
111
124
  <ClCompile Include="$(JSI_SourcePath)\jsi\jsi.cpp">
112
125
  <PrecompiledHeader>NotUsing</PrecompiledHeader>
113
126
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
114
127
  </ClCompile>
128
+ </ItemGroup>
129
+ <ItemGroup Condition="'$(BuildMSRNCxxReactCommon)' != 'false'">
130
+ <!--
131
+ Make sure all Meta code uses the same flags to improve build parallelism.
132
+ This is because msbuild has to invoke different cl.exe invocations for each
133
+ set of flags and msbuild inside a project is single threaded.
134
+ -->
115
135
  <ClCompile Include="$(Bridging_SourcePath)\LongLivedObject.cpp">
116
136
  <PrecompiledHeader>NotUsing</PrecompiledHeader>
117
137
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
@@ -125,12 +145,23 @@
125
145
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
126
146
  </ClCompile>
127
147
  </ItemGroup>
128
- <ItemGroup>
129
- <None Include="$(MSBuildThisFileDirectory)README.md" />
148
+ <ItemGroup Condition="'$(BuildMSRNCxxNodeApiJsi)' != 'false'">
149
+ <ClCompile Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.cpp">
150
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
151
+ </ClCompile>
152
+ <ClCompile Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.cpp">
153
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
154
+ </ClCompile>
155
+ <ClCompile Include="$(NodeApiJsiSrcDir)NodeApiJsiRuntime.cpp">
156
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
157
+ </ClCompile>
130
158
  </ItemGroup>
131
- <ItemGroup>
132
- <ClCompile Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.cpp">
133
- <ExcludedFromBuild Condition="'$(UseV8)' != 'true'">true</ExcludedFromBuild>
159
+ <ItemGroup Condition="'$(BuildMSRNCxxNodeApiJsiLoader)' != 'false'">
160
+ <ClCompile Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiLoader.cpp">
161
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
134
162
  </ClCompile>
135
163
  </ItemGroup>
164
+ <ItemGroup>
165
+ <None Include="$(MSBuildThisFileDirectory)README.md" />
166
+ </ItemGroup>
136
167
  </Project>
@@ -27,10 +27,13 @@
27
27
  <ClCompile Include="$(MSBuildThisFileDirectory)JSI\JsiApiContext.cpp">
28
28
  <Filter>JSI</Filter>
29
29
  </ClCompile>
30
- <ClCompile Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.cpp">
31
- <Filter>JSI</Filter>
32
- </ClCompile>
33
30
  <ClCompile Include="$(Bridging_SourcePath)\LongLivedObject.cpp" />
31
+ <ClCompile Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiLoader.cpp">
32
+ <Filter>NodeApiJsi</Filter>
33
+ </ClCompile>
34
+ <ClCompile Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.cpp" />
35
+ <ClCompile Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.cpp" />
36
+ <ClCompile Include="$(NodeApiJsiSrcDir)NodeApiJsiRuntime.cpp" />
34
37
  </ItemGroup>
35
38
  <ItemGroup>
36
39
  <ClInclude Include="$(MSBuildThisFileDirectory)Crash.h" />
@@ -153,14 +156,19 @@
153
156
  <ClInclude Include="$(MSBuildThisFileDirectory)XamlUtils.h">
154
157
  <Filter>UI</Filter>
155
158
  </ClInclude>
156
- <ClInclude Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.h">
157
- <Filter>JSI</Filter>
158
- </ClInclude>
159
159
  <ClInclude Include="$(Bridging_SourcePath)\CallbackWrapper.h" />
160
160
  <ClInclude Include="$(MSBuildThisFileDirectory)CoreApp.h" />
161
161
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\LongLivedJsiValue.h">
162
162
  <Filter>TurboModule</Filter>
163
163
  </ClInclude>
164
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.h" />
165
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.inc" />
166
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.h" />
167
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.inc" />
168
+ <ClInclude Include="$(NodeApiJsiSrcDir)NodeApiJsiRuntime.h" />
169
+ <ClInclude Include="$(NodeApiDir)js_native_api.h" />
170
+ <ClInclude Include="$(NodeApiDir)js_native_api_types.h" />
171
+ <ClInclude Include="$(NodeApiDir)js_runtime_api.h" />
164
172
  </ItemGroup>
165
173
  <ItemGroup>
166
174
  <Filter Include="JSI">
@@ -172,6 +180,9 @@
172
180
  <Filter Include="TurboModule">
173
181
  <UniqueIdentifier>{b5c0294c-d72f-44fa-8509-369f7d3e4a56}</UniqueIdentifier>
174
182
  </Filter>
183
+ <Filter Include="NodeApiJsi">
184
+ <UniqueIdentifier>{a34cd50a-190c-4cbb-8fe1-6ff1e16fe389}</UniqueIdentifier>
185
+ </Filter>
175
186
  </ItemGroup>
176
187
  <ItemGroup>
177
188
  <None Include="$(MSBuildThisFileDirectory)README.md" />
@@ -19,7 +19,7 @@
19
19
  <!-- WinUI package name and version are set by WinUI.props -->
20
20
  <PackageReference Include="$(WinUIPackageName)" Version="$(WinUIPackageVersion)" Condition="'$(OverrideWinUIPackage)'!='true'" />
21
21
  <!-- Hermes version is set by JSEngine.props -->
22
- <PackageReference Include="ReactNative.Hermes.Windows" Version="$(HermesVersion)" Condition="$(UseHermes)" />
22
+ <PackageReference Include="Microsoft.JavaScript.Hermes" Version="$(HermesVersion)" Condition="$(UseHermes)" />
23
23
  </ItemGroup>
24
24
 
25
25
  <Import Project="$(ReactNativeWindowsDir)PropertySheets\ManagedCodeGen\Microsoft.ReactNative.Managed.CodeGen.targets"
@@ -19,7 +19,7 @@
19
19
  <!-- WinUI package name and version are set by WinUI.props -->
20
20
  <PackageReference Include="$(WinUIPackageName)" Version="$(WinUIPackageVersion)" Condition="'$(OverrideWinUIPackage)'!='true'" />
21
21
  <!-- Hermes version is set by JSEngine.props -->
22
- <PackageReference Include="ReactNative.Hermes.Windows" Version="$(HermesVersion)" Condition="$(UseHermes)" />
22
+ <PackageReference Include="Microsoft.JavaScript.Hermes" Version="$(HermesVersion)" Condition="$(UseHermes)" />
23
23
  </ItemGroup>
24
24
 
25
25
  <!-- The props file for bundling is not set up to be just defaults, it assumes to be run at the end of the project. -->
@@ -24,7 +24,7 @@
24
24
  <!-- WinUI package name and version are set by WinUI.props -->
25
25
  <PackageReference Include="$(WinUIPackageName)" Version="$(WinUIPackageVersion)" Condition="'$(OverrideWinUIPackage)'!='true'" />
26
26
  <!-- Hermes version is set by JSEngine.props -->
27
- <PackageReference Include="ReactNative.Hermes.Windows" Version="$(HermesVersion)" Condition="$(UseHermes)" />
27
+ <PackageReference Include="Microsoft.JavaScript.Hermes" Version="$(HermesVersion)" Condition="$(UseHermes)" />
28
28
  </ItemGroup>
29
29
 
30
30
  <!-- Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
@@ -10,11 +10,11 @@
10
10
  -->
11
11
  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12
12
  <PropertyGroup>
13
- <ReactNativeWindowsVersion>0.71.37</ReactNativeWindowsVersion>
13
+ <ReactNativeWindowsVersion>0.71.38</ReactNativeWindowsVersion>
14
14
  <ReactNativeWindowsMajor>0</ReactNativeWindowsMajor>
15
15
  <ReactNativeWindowsMinor>71</ReactNativeWindowsMinor>
16
- <ReactNativeWindowsPatch>37</ReactNativeWindowsPatch>
16
+ <ReactNativeWindowsPatch>38</ReactNativeWindowsPatch>
17
17
  <ReactNativeWindowsCanary>false</ReactNativeWindowsCanary>
18
- <ReactNativeWindowsCommitId>128d9f0ba8221d29a3d9aa1030d2bde04a42a85e</ReactNativeWindowsCommitId>
18
+ <ReactNativeWindowsCommitId>93bf07fbdd1a632214530d881c82c75ff985d5a8</ReactNativeWindowsCommitId>
19
19
  </PropertyGroup>
20
20
  </Project>
@@ -14,9 +14,9 @@
14
14
  <!-- Enabling this will (1) Include hermes glues in the Microsoft.ReactNative binaries AND (2) Make hermes the default engine -->
15
15
  <UseHermes Condition="'$(UseHermes)' == ''">false</UseHermes>
16
16
  <!-- This will be true if (1) the client want to use hermes by setting UseHermes to true OR (2) We are building for UWP where dynamic switching is enabled -->
17
- <HermesVersion Condition="'$(HermesVersion)' == ''">0.71.1</HermesVersion>
18
- <HermesPackage Condition="'$(HermesPackage)' == '' And Exists('$(PkgReactNative_Hermes_Windows)')">$(PkgReactNative_Hermes_Windows)</HermesPackage>
19
- <HermesPackage Condition="'$(HermesPackage)' == ''">$(NuGetPackageRoot)\ReactNative.Hermes.Windows\$(HermesVersion)</HermesPackage>
17
+ <HermesVersion Condition="'$(HermesVersion)' == ''">0.1.15</HermesVersion>
18
+ <HermesPackage Condition="'$(HermesPackage)' == '' And Exists('$(PkgMicrosoft_JavaScript_Hermes)')">$(PkgMicrosoft_JavaScript_Hermes)</HermesPackage>
19
+ <HermesPackage Condition="'$(HermesPackage)' == ''">$(NuGetPackageRoot)\Microsoft.JavaScript.Hermes\$(HermesVersion)</HermesPackage>
20
20
  <EnableHermesInspectorInReleaseFlavor Condition="'$(EnableHermesInspectorInReleaseFlavor)' == ''">false</EnableHermesInspectorInReleaseFlavor>
21
21
  <!-- Disable linking Hermes into the output in cases where we need to fully rely on HermesShim -->
22
22
  <HermesNoLink Condition="'$(HermesNoLink)' == '' and '$(Configuration)' == 'Release' and '$(EnableHermesInspectorInReleaseFlavor)' != 'true'">true</HermesNoLink>
@@ -24,7 +24,7 @@
24
24
  <EnableDevServerHBCBundles Condition="'$(EnableDevServerHBCBundles)' == ''">false</EnableDevServerHBCBundles>
25
25
 
26
26
  <UseV8 Condition="'$(UseV8)' == ''">false</UseV8>
27
- <V8Version Condition="'$(V8Version)' == ''">0.71.3</V8Version>
27
+ <V8Version Condition="'$(V8Version)' == ''">0.71.8</V8Version>
28
28
  <V8PackageName>ReactNative.V8Jsi.Windows</V8PackageName>
29
29
  <V8PackageName Condition="'$(V8AppPlatform)' != 'win32'">$(V8PackageName).UWP</V8PackageName>
30
30
  <V8Package>$(NuGetPackageRoot)\$(V8PackageName).$(V8Version)</V8Package>
@@ -56,6 +56,7 @@
56
56
  <PreprocessorDefinitions Condition="'$(EnableDevServerHBCBundles)'=='true'">ENABLE_DEVSERVER_HBCBUNDLES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
57
57
  <PreprocessorDefinitions Condition="'$(UseV8)'=='true'">USE_V8;%(PreprocessorDefinitions)</PreprocessorDefinitions>
58
58
  <PreprocessorDefinitions Condition="'$(UseFabric)'=='true'">USE_FABRIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
59
+ <PreprocessorDefinitions>JSI_VERSION=9;%(PreprocessorDefinitions)</PreprocessorDefinitions>
59
60
  </ClCompile>
60
61
  </ItemDefinitionGroup>
61
62
 
@@ -34,6 +34,12 @@
34
34
  <TreatWarningAsError>true</TreatWarningAsError>
35
35
  <WarningLevel>Level4</WarningLevel>
36
36
  </ClCompile>
37
+ <Link>
38
+ <!--
39
+ LNK4199: /DELAYLOAD:v8jsi.dll ignored; no imports found from v8jsi.dll
40
+ -->
41
+ <AdditionalOptions>/ignore:4199 %(AdditionalOptions)</AdditionalOptions>
42
+ </Link>
37
43
  </ItemDefinitionGroup>
38
44
 
39
45
  </Project>
@@ -106,6 +106,7 @@
106
106
  <ClInclude Include="$(ReactNativeDir)\ReactCommon\cxxreact\SystraceSection.h" />
107
107
  <ClInclude Include="$(ReactNativeDir)\ReactCommon\jsiexecutor\jsireact\JSIExecutor.h" />
108
108
  <ClInclude Include="$(ReactNativeDir)\ReactCommon\jsiexecutor\jsireact\JSINativeModules.h" />
109
+ <ClInclude Include="$(ReactNativeDir)\ReactCommon\jsinspector\InspectorInterfaces.h" />
109
110
  <ClInclude Include="$(ReactNativeDir)\ReactCommon\logger\react_native_log.h" />
110
111
  <ClInclude Include="$(YogaDir)\yoga\YGEnums.h" />
111
112
  <ClInclude Include="$(YogaDir)\yoga\YGMacros.h" />
@@ -127,6 +128,7 @@
127
128
  <ClCompile Include="$(ReactNativeDir)\ReactCommon\jsi\jsi\JSIDynamic.cpp" />
128
129
  <ClCompile Include="$(ReactNativeDir)\ReactCommon\jsiexecutor\jsireact\JSIExecutor.cpp" />
129
130
  <ClCompile Include="$(ReactNativeDir)\ReactCommon\jsiexecutor\jsireact\JSINativeModules.cpp" />
131
+ <ClCompile Include="$(ReactNativeDir)\ReactCommon\jsinspector\InspectorInterfaces.cpp" />
130
132
  <ClCompile Include="$(ReactNativeDir)\ReactCommon\logger\react_native_log.cpp" />
131
133
  <CLCompile Include="$(ReactNativeDir)\ReactCommon\reactperflogger\reactperflogger\BridgeNativeModulePerfLogger.cpp" />
132
134
  <ClCompile Include="$(YogaDir)\yoga\log.cpp" />
@@ -178,6 +180,52 @@
178
180
  <ItemGroup>
179
181
  <PackageReference Include="boost" Version="1.76.0.0" />
180
182
  </ItemGroup>
183
+ <PropertyGroup>
184
+ <NodeApiJsiZipDir>$(NodeApiJsiDir)..\.node-api-jsi-zip</NodeApiJsiZipDir>
185
+ <NodeApiJsiZipFile>$(NodeApiJsiZipDir)\node-api-jsi-$(NodeApiJsiCommitHash).zip</NodeApiJsiZipFile>
186
+ <CGManifestFile>$(MSBuildThisFileDirectory)cgmanifest.json</CGManifestFile>
187
+ </PropertyGroup>
188
+ <Target Name="DownloadNodeApiJsi" BeforeTargets="PrepareForBuild" Inputs="$(NodeApiJsiZipFile)" Outputs="$(NodeApiJsiZipFile)">
189
+ <Message Text="Downloading node-api-jsi..." Importance="High" />
190
+ <DownloadFile
191
+ SourceUrl="https://github.com/microsoft/node-api-jsi/archive/$(NodeApiJsiCommitHash).zip"
192
+ DestinationFileName="$(NodeApiJsiZipFile)"
193
+ DestinationFolder="$(NodeApiJsiZipDir)"
194
+ Retries="10" />
195
+ </Target>
196
+ <Target Name="UnzipNodeApiJsi" BeforeTargets="PrepareForBuild" DependsOnTargets="DownloadNodeApiJsi">
197
+ <Message Text="Unzipping node-api-jsi to $([MSBuild]::NormalizePath($(NodeApiJsiDir)..))." Importance="High"
198
+ Condition="!Exists('$(NodeApiJsiDir)src\NodeApiJsiRuntime.h')" />
199
+ <Unzip
200
+ Condition="!Exists('$(NodeApiJsiDir)src\NodeApiJsiRuntime.h')"
201
+ SourceFiles="$(NodeApiJsiZipFile)"
202
+ DestinationFolder="$([MSBuild]::NormalizePath($(NodeApiJsiDir)..))"
203
+ OverwriteReadOnlyFiles="true" />
204
+ </Target>
205
+ <Target Name="WriteCGManifest" BeforeTargets="PrepareForBuild" DependsOnTargets="DownloadNodeApiJsi" Inputs="$(NodeApiJsiZipFile)" Outputs="$(CGManifestFile)">
206
+ <PropertyGroup>
207
+ <CGManifestText>{
208
+ "$schema": "https://json.schemastore.org/component-detection-manifest.json",
209
+ "Registrations": [
210
+ {
211
+ "Component": {
212
+ "Type": "git",
213
+ "Git": {
214
+ "RepositoryUrl": "https://github.com/microsoft/node-api-jsi",
215
+ "CommitHash": "$(NodeApiJsiCommitHash)"
216
+ }
217
+ },
218
+ "DevelopmentDependency": false
219
+ }
220
+ ]
221
+ }</CGManifestText>
222
+ </PropertyGroup>
223
+ <Message Text="Generating $(CGManifestFile)." Importance="High" />
224
+ <WriteLinesToFile
225
+ File="$(CGManifestFile)"
226
+ Overwrite="true"
227
+ Lines="$(CGManifestText)" />
228
+ </Target>
181
229
  <Target Name="EnsureNodeModuleBuildImports" BeforeTargets="PrepareForBuild">
182
230
  <Error Condition="!Exists('$(ReactNativeDir)')" Text="This project references code in the node_modules folder that is missing on this computer. Use `yarn install` to download them." />
183
231
  <Error Condition="!Exists('$(YogaDir)')" Text="This project references code in the node_modules folder that is missing on this computer. Use `yarn install` to download them." />
@@ -187,7 +235,11 @@
187
235
  </ItemGroup>
188
236
  <Target Name="Deploy" />
189
237
  <!-- Reenable this task if we need to temporarily replace any folly files for fixes, while we wait for PRs to land in folly -->
190
- <Target Name="ApplyReactCommonTemporaryPatch" BeforeTargets="PrepareForBuild">
238
+ <Target Name="ApplyReactCommonTemporaryPatch" BeforeTargets="PrepareForBuild" DependsOnTargets="UnzipNodeApiJsi">
239
+ <ItemGroup>
240
+ <NodeApiJsiFiles Include="$([MSBuild]::NormalizePath($(NodeApiJsiDir)))\jsi\**\*.*" />
241
+ </ItemGroup>
242
+ <Copy DestinationFiles="@(NodeApiJsiFiles->'$(ReactNativeDir)\ReactCommon\jsi\%(RecursiveDir)%(Filename)%(Extension)')" SourceFiles="@(NodeApiJsiFiles)" />
191
243
  <Copy DestinationFiles="@(TemporaryReactCommonPatchFiles->'$(ReactNativeDir)\ReactCommon\%(RecursiveDir)%(Filename)%(Extension)')" SourceFiles="@(TemporaryReactCommonPatchFiles)" />
192
244
  </Target>
193
245
  </Project>
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/component-detection-manifest.json",
3
+ "Registrations": [
4
+ {
5
+ "Component": {
6
+ "Type": "git",
7
+ "Git": {
8
+ "RepositoryUrl": "https://github.com/microsoft/node-api-jsi",
9
+ "CommitHash": "53b897b03c1c7e57c3372acc6234447a44e150d6"
10
+ }
11
+ },
12
+ "DevelopmentDependency": false
13
+ }
14
+ ]
15
+ }
@@ -15,6 +15,23 @@ Write-Host "Destination root: [$TargetRoot]"
15
15
  Write-Host "React Native root: [$ReactNativeRoot]"
16
16
  Write-Host "ReactCommon Override root: [$ReactCommonOverrideRoot]"
17
17
 
18
+ [xml]$props = gc $PSScriptRoot\..\..\Directory.Build.props
19
+ [string] $NodeApiJsiCommitHash = $props.Project.PropertyGroup.NodeApiJsiCommitHash;
20
+ $NodeApiJsiCommitHash = $NodeApiJsiCommitHash.Trim()
21
+ $NodeApiJsiRoot = "$SourceRoot\node_modules\.node-api-jsi\node-api-jsi-${NodeApiJsiCommitHash}";
22
+ Write-Host "Node-API JSI root: [$NodeApiJsiRoot]"
23
+
24
+ # Download Node-API JSI if running on a machine which hasn't run native build logic to acquire it
25
+ if (!(Test-Path $NodeApiJsiRoot)) {
26
+ Write-Host "Downloading Node-API JSI $NodeApiJsiCommitHash"
27
+ $NodeApiJsiZip = "$SourceRoot\node_modules\.node-api-jsi\node-api-jsi-${NodeApiJsiCommitHash}.zip"
28
+ $NodeApiJsiDest = "$SourceRoot\node_modules\.node-api-jsi"
29
+
30
+ New-Item $NodeApiJsiRoot -ItemType Directory
31
+ Invoke-RestMethod -Uri "https://github.com/microsoft/node-api-jsi/archive/${NodeApiJsiCommitHash}.zip" -OutFile $NodeApiJsiZip
32
+ Expand-Archive -LiteralPath $NodeApiJsiZip -DestinationPath $NodeApiJsiDest
33
+ }
34
+
18
35
  md -Force $TargetRoot
19
36
 
20
37
  $patterns = $Extensions| ForEach-Object {"*.$_"}
@@ -39,6 +56,25 @@ Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\jsi\jsi\jsi.h -Destination $
39
56
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\jsi\jsi\jsi-inl.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\jsi\
40
57
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\jsi\jsi\threadsafe.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\jsi\
41
58
 
59
+ # Microsoft.ReactNative.CXX project Node-API files
60
+ New-Item $TargetRoot\Microsoft.ReactNative.Cxx\node-api -ItemType Directory -Force
61
+ Copy-Item -Force -Path $NodeApiJsiRoot\node-api\js_native_api.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\node-api\
62
+ Copy-Item -Force -Path $NodeApiJsiRoot\node-api\js_native_api_types.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\node-api\
63
+ Copy-Item -Force -Path $NodeApiJsiRoot\node-api\js_runtime_api.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\node-api\
64
+
65
+ # Microsoft.ReactNative.CXX project Node-API JSI files
66
+ New-Item $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders -ItemType Directory -Force
67
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\JSRuntimeApi.cpp -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
68
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\JSRuntimeApi.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
69
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\JSRuntimeApi.inc -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
70
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\NodeApi.cpp -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
71
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\NodeApi.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
72
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\NodeApi.inc -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
73
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\NodeApi_posix.cpp -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
74
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\ApiLoaders\NodeApi_win.cpp -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ApiLoaders\
75
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\NodeApiJsiRuntime.cpp -Destination $TargetRoot\Microsoft.ReactNative.Cxx\
76
+ Copy-Item -Force -Path $NodeApiJsiRoot\src\NodeApiJsiRuntime.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\
77
+
42
78
  # Microsoft.ReactNative.CXX project TurboModule files
43
79
  New-Item -ItemType Directory -Path $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon -Force
44
80
  Copy-Item -Force -Path $ReactNativeRoot\ReactCommon\callinvoker\ReactCommon\CallInvoker.h -Destination $TargetRoot\Microsoft.ReactNative.Cxx\ReactCommon\