react-native-windows 0.72.0-preview.7 → 0.72.0-preview.8

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 (43) hide show
  1. package/Directory.Build.props +24 -19
  2. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +2 -4
  3. package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +2 -57
  4. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +22 -17
  5. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +0 -2
  6. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiLoader.cpp +16 -0
  7. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +41 -12
  8. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +17 -6
  9. package/Microsoft.ReactNative.Managed/packages.lock.json +6 -6
  10. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CSharpApp.targets +1 -1
  11. package/PropertySheets/External/Microsoft.ReactNative.Uwp.CppApp.targets +1 -1
  12. package/PropertySheets/External/Microsoft.ReactNative.WinAppSDK.CSharpApp.targets +1 -1
  13. package/PropertySheets/Generated/PackageVersion.g.props +2 -2
  14. package/PropertySheets/JSEngine.props +4 -4
  15. package/PropertySheets/Warnings.props +6 -0
  16. package/ReactCommon/ReactCommon.vcxproj +53 -1
  17. package/ReactCommon/cgmanifest.json +15 -0
  18. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +36 -0
  19. package/Shared/DevSupportManager.cpp +2 -9
  20. package/Shared/DevSupportManager.h +2 -6
  21. package/Shared/HermesRuntimeHolder.cpp +318 -81
  22. package/Shared/HermesRuntimeHolder.h +15 -19
  23. package/Shared/HermesSamplingProfiler.cpp +5 -6
  24. package/Shared/InspectorPackagerConnection.cpp +62 -108
  25. package/Shared/InspectorPackagerConnection.h +9 -21
  26. package/Shared/JSI/ScriptStore.h +18 -20
  27. package/Shared/JSI/V8RuntimeHolder.cpp +262 -0
  28. package/Shared/JSI/V8RuntimeHolder.h +37 -0
  29. package/Shared/OInstance.cpp +16 -36
  30. package/Shared/SafeLoadLibrary.cpp +41 -0
  31. package/Shared/SafeLoadLibrary.h +15 -0
  32. package/Shared/Shared.vcxitems +21 -10
  33. package/Shared/Shared.vcxitems.filters +23 -30
  34. package/package.json +2 -2
  35. package/template/cs-app-WinAppSDK/proj/ExperimentalFeatures.props +1 -1
  36. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.cpp +0 -2105
  37. package/Microsoft.ReactNative.Cxx/JSI/NodeApiJsiRuntime.h +0 -73
  38. package/Shared/HermesShim.cpp +0 -122
  39. package/Shared/HermesShim.h +0 -41
  40. package/Shared/JSI/NapiJsiV8RuntimeHolder.cpp +0 -209
  41. package/Shared/JSI/NapiJsiV8RuntimeHolder.h +0 -46
  42. package/Shared/V8JSIRuntimeHolder.cpp +0 -71
  43. package/Shared/V8JSIRuntimeHolder.h +0 -58
@@ -21,6 +21,30 @@
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>
26
+ </PropertyGroup>
27
+
28
+ <!--
29
+ IMPORTANT: Traversals left in a directory will break some tools like midl, but we also cannot call
30
+ [MSBuild]::NormalizeDirectory on relative paths since cwd is not always correct. This logic should prefer to operate
31
+ on full paths and avoid extra normalization.
32
+ -->
33
+ <PropertyGroup>
34
+ <ReactNativeWindowsDir Condition="'$(ReactNativeWindowsDir)' == ''">$(MSBuildThisFileDirectory)</ReactNativeWindowsDir>
35
+
36
+ <ReactNativeDir Condition="'$(ReactNativeDir)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'node_modules\react-native\package.json'))\node_modules\react-native\</ReactNativeDir>
37
+
38
+ <YogaDir Condition="'$(YogaDir)' == ''">$(ReactNativeDir)ReactCommon\yoga</YogaDir>
39
+
40
+ <FollyDir Condition="'$(FollyDir)' == '' AND Exists('$([MSBuild]::NormalizeDirectory($(ReactNativeDir)..\..\node_modules))')">$(ReactNativeDir)..\..\node_modules\.folly\folly-$(FollyVersion)</FollyDir>
41
+ <FollyDir>$([MSBuild]::NormalizeDirectory($(FollyDir)))</FollyDir>
42
+
43
+ <FmtDir Condition="'$(FmtDir)' == '' AND Exists('$([MSBuild]::NormalizeDirectory($(ReactNativeDir)..\..\node_modules))')">$(ReactNativeDir)..\..\node_modules\.fmt\fmt-$(FmtVersion)</FmtDir>
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>
24
48
  </PropertyGroup>
25
49
 
26
50
  <PropertyGroup Label="Configuration">
@@ -46,25 +70,6 @@
46
70
  <OutputPath Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(OutDir)</OutputPath>
47
71
  </PropertyGroup>
48
72
 
49
- <!--
50
- IMPORTANT: Traversals left in a directory will break some tools like midl, but we also cannot call
51
- [MSBuild]::NormalizeDirectory on relative paths since cwd is not always correct. This logic should prefer to operate
52
- on full paths and avoid extra normalization.
53
- -->
54
- <PropertyGroup>
55
- <ReactNativeWindowsDir Condition="'$(ReactNativeWindowsDir)' == ''">$(MSBuildThisFileDirectory)</ReactNativeWindowsDir>
56
-
57
- <ReactNativeDir Condition="'$(ReactNativeDir)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), 'node_modules\react-native\package.json'))\node_modules\react-native\</ReactNativeDir>
58
-
59
- <YogaDir Condition="'$(YogaDir)' == ''">$(ReactNativeDir)ReactCommon\yoga</YogaDir>
60
-
61
- <FollyDir Condition="'$(FollyDir)' == '' AND Exists('$([MSBuild]::NormalizeDirectory($(ReactNativeDir)..\..\node_modules))')">$(ReactNativeDir)..\..\node_modules\.folly\folly-$(FollyVersion)</FollyDir>
62
- <FollyDir>$([MSBuild]::NormalizeDirectory($(FollyDir)))</FollyDir>
63
-
64
- <FmtDir Condition="'$(FmtDir)' == '' AND Exists('$([MSBuild]::NormalizeDirectory($(ReactNativeDir)..\..\node_modules))')">$(ReactNativeDir)..\..\node_modules\.fmt\fmt-$(FmtVersion)</FmtDir>
65
- <FmtDir>$([MSBuild]::NormalizeDirectory($(FmtDir)))</FmtDir>
66
- </PropertyGroup>
67
-
68
73
  <PropertyGroup Label="NuGet" Condition="'$(MSBuildProjectExtension)' == '.vcxproj'">
69
74
  <!-- See https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets#restore-target -->
70
75
  <!-- RestoreUseStaticGraphEvaluation broke in VS 17.6, see https://github.com/microsoft/react-native-windows/issues/11670 -->
@@ -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>
@@ -220,9 +221,6 @@
220
221
  <DependentUpon>IReactNotificationService.idl</DependentUpon>
221
222
  <SubType>Code</SubType>
222
223
  </ClInclude>
223
- <ClInclude Include="JsiApi.h">
224
- <DependentUpon>JsiApi.idl</DependentUpon>
225
- </ClInclude>
226
224
  <ClInclude Include="JsiReader.h">
227
225
  <DependentUpon>IJSValueReader.idl</DependentUpon>
228
226
  </ClInclude>
@@ -639,7 +637,7 @@
639
637
  <ItemGroup>
640
638
  <PackageReference Include="boost" Version="1.76.0.0" />
641
639
  <PackageReference Include="Microsoft.Windows.CppWinRT" Version="$(CppWinRTVersion)" PrivateAssets="all" />
642
- <PackageReference Include="ReactNative.Hermes.Windows" Version="$(HermesVersion)" />
640
+ <PackageReference Include="Microsoft.JavaScript.Hermes" Version="$(HermesVersion)" />
643
641
  <PackageReference Include="$(WinUIPackageName)" Version="$(WinUIPackageVersion)" Condition="'$(OverrideWinUIPackage)'!='true'" />
644
642
  <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22000.194" />
645
643
  <PackageReference Include="$(V8PackageName)" Version="$(V8Version)" Condition="'$(UseV8)' == 'true'" />
@@ -7,44 +7,12 @@
7
7
  <ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
8
8
  <ClCompile Include="ABICxxModule.cpp" />
9
9
  <ClCompile Include="ABIViewManager.cpp" />
10
- <ClCompile Include="IReactDispatcher.cpp" />
11
- <ClCompile Include="IReactNotificationService.cpp" />
12
- <ClCompile Include="NativeModulesProvider.cpp" />
13
- <ClCompile Include="TurboModulesProvider.cpp" />
14
10
  <ClCompile Include="XamlLoadState.cpp" />
15
11
  <ClCompile Include="XamlView.cpp" />
16
12
  <ClCompile Include="Pch\pch.cpp">
17
13
  <Filter>Pch</Filter>
18
14
  </ClCompile>
19
- <ClCompile Include="ReactHost\AsyncActionQueue.cpp">
20
- <Filter>ReactHost</Filter>
21
- </ClCompile>
22
- <ClCompile Include="ReactHost\JSBundle.cpp">
23
- <Filter>ReactHost</Filter>
24
- </ClCompile>
25
- <ClCompile Include="ReactHost\JSBundle_Win32.cpp">
26
- <Filter>ReactHost</Filter>
27
- </ClCompile>
28
- <ClCompile Include="ReactHost\MsoUtils.cpp">
29
- <Filter>ReactHost</Filter>
30
- </ClCompile>
31
- <ClCompile Include="ReactHost\MsoReactContext.cpp">
32
- <Filter>ReactHost</Filter>
33
- </ClCompile>
34
- <ClCompile Include="ReactHost\ReactErrorProvider.cpp">
35
- <Filter>ReactHost</Filter>
36
- </ClCompile>
37
- <ClCompile Include="ReactHost\ReactHost.cpp">
38
- <Filter>ReactHost</Filter>
39
- </ClCompile>
40
- <ClCompile Include="ReactHost\ReactInstanceWin.cpp">
41
- <Filter>ReactHost</Filter>
42
- </ClCompile>
43
- <ClCompile Include="ReactHost\CrashManager.cpp">
44
- <Filter>ReactHost</Filter>
45
- </ClCompile>
46
15
  <ClCompile Include="ReactSupport.cpp" />
47
- <ClCompile Include="RedBox.cpp" />
48
16
  <ClCompile Include="TestHook.cpp" />
49
17
  <ClCompile Include="ViewManagersProvider.cpp" />
50
18
  <ClCompile Include="Base\CoreNativeModules.cpp">
@@ -143,9 +111,6 @@
143
111
  <ClCompile Include="Modules\DeviceInfoModule.cpp">
144
112
  <Filter>Modules</Filter>
145
113
  </ClCompile>
146
- <ClCompile Include="Modules\DevSettingsModule.cpp">
147
- <Filter>Modules</Filter>
148
- </ClCompile>
149
114
  <ClCompile Include="Modules\I18nManagerModule.cpp">
150
115
  <Filter>Modules</Filter>
151
116
  </ClCompile>
@@ -287,9 +252,6 @@
287
252
  <ClCompile Include="Utils\XamlIslandUtils.cpp">
288
253
  <Filter>Utils</Filter>
289
254
  </ClCompile>
290
- <ClCompile Include="JsiApi.cpp" />
291
- <ClCompile Include="RedBoxErrorInfo.cpp" />
292
- <ClCompile Include="RedBoxErrorFrameInfo.cpp" />
293
255
  <ClCompile Include="Modules\CreateModules.cpp">
294
256
  <Filter>Modules</Filter>
295
257
  </ClCompile>
@@ -302,9 +264,6 @@
302
264
  <ClCompile Include="Utils\BatchingEventEmitter.cpp">
303
265
  <Filter>Utils</Filter>
304
266
  </ClCompile>
305
- <ClCompile Include="ReactHost\JSCallInvokerScheduler.cpp">
306
- <Filter>ReactHost</Filter>
307
- </ClCompile>
308
267
  <ClCompile Include="Views\Text\TextHighlighterVisitor.cpp">
309
268
  <Filter>Views\Text</Filter>
310
269
  </ClCompile>
@@ -333,6 +292,7 @@
333
292
  <ClCompile Include="Views\FrameworkElementTransferProperties.cpp" />
334
293
  <ClCompile Include="Views\ReactViewInstance.cpp" />
335
294
  <ClCompile Include="CoreApp.cpp" />
295
+ <ClCompile Include="Utils\KeyboardUtils.cpp" />
336
296
  </ItemGroup>
337
297
  <ItemGroup>
338
298
  <ClInclude Include="ABICxxModule.h" />
@@ -735,25 +695,12 @@
735
695
  <ClInclude Include="ReactPointerEventArgs.h" />
736
696
  <ClInclude Include="Views\FrameworkElementTransferProperties.h" />
737
697
  <ClInclude Include="Views\ReactViewInstance.h" />
698
+ <ClInclude Include="Utils\KeyboardUtils.h" />
738
699
  </ItemGroup>
739
700
  <ItemGroup>
740
- <Midl Include="IJSValueReader.idl" />
741
- <Midl Include="IJSValueWriter.idl" />
742
- <Midl Include="IReactContext.idl" />
743
- <Midl Include="IReactDispatcher.idl" />
744
- <Midl Include="IReactModuleBuilder.idl" />
745
- <Midl Include="IReactNonAbiValue.idl" />
746
- <Midl Include="IReactNotificationService.idl" />
747
- <Midl Include="IReactPackageBuilder.idl" />
748
- <Midl Include="IReactPackageProvider.idl" />
749
- <Midl Include="IReactPropertyBag.idl" />
750
701
  <Midl Include="IViewManager.idl" />
751
702
  <Midl Include="ReactApplication.idl" />
752
- <Midl Include="ReactInstanceSettings.idl" />
753
- <Midl Include="ReactNativeHost.idl" />
754
703
  <Midl Include="ReactRootView.idl" />
755
- <Midl Include="RedBoxHandler.idl" />
756
- <Midl Include="QuirkSettings.idl" />
757
704
  <Midl Include="XamlHelper.idl" />
758
705
  <Midl Include="LayoutService.idl" />
759
706
  <Midl Include="XamlUIService.idl" />
@@ -770,11 +717,9 @@
770
717
  <Filter>Views\cppwinrt</Filter>
771
718
  </Midl>
772
719
  <Midl Include="IViewManagerCore.idl" />
773
- <Midl Include="JsiApi.idl" />
774
720
  <Midl Include="DocString.idl" />
775
721
  <Midl Include="DesktopWindowMessage.idl" />
776
722
  <Midl Include="ReactPointerEventArgs.idl" />
777
- <Midl Include="ReactCoreInjection.idl" />
778
723
  </ItemGroup>
779
724
  <ItemGroup>
780
725
  <None Include="microsoft.reactnative.def" />
@@ -73,12 +73,12 @@
73
73
  #include <Utils/UwpScriptStore.h>
74
74
  #endif
75
75
 
76
+ #include "BaseScriptStoreImpl.h"
76
77
  #include "HermesRuntimeHolder.h"
77
78
 
78
79
  #if defined(USE_V8)
79
80
  #include <winrt/Windows.Storage.h>
80
- #include "BaseScriptStoreImpl.h"
81
- #include "V8JSIRuntimeHolder.h"
81
+ #include "JSI/V8RuntimeHolder.h"
82
82
  #endif // USE_V8
83
83
 
84
84
  #include "RedBox.h"
@@ -255,7 +255,7 @@ ReactInstanceWin::ReactInstanceWin(
255
255
  onDestroyed = m_options.OnInstanceDestroyed,
256
256
  reactContext = m_reactContext]() noexcept {
257
257
  whenLoaded.TryCancel(); // It only has an effect if whenLoaded was not set before
258
- facebook::react::HermesRuntimeHolder::storeTo(ReactPropertyBag(reactContext->Properties()), nullptr);
258
+ Microsoft::ReactNative::HermesRuntimeHolder::storeTo(ReactPropertyBag(reactContext->Properties()), nullptr);
259
259
  if (onDestroyed) {
260
260
  onDestroyed.Get()->Invoke(reactContext);
261
261
  }
@@ -487,9 +487,21 @@ void ReactInstanceWin::Initialize() noexcept {
487
487
 
488
488
  switch (m_options.JsiEngine()) {
489
489
  case JSIEngine::Hermes: {
490
- auto hermesRuntimeHolder =
491
- std::make_shared<facebook::react::HermesRuntimeHolder>(devSettings, m_jsMessageThread.Load());
492
- facebook::react::HermesRuntimeHolder::storeTo(
490
+ // TODO: Should we use UwpPreparedScriptStore?
491
+ if (Microsoft::ReactNative::HasPackageIdentity()) {
492
+ preparedScriptStore =
493
+ std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(getApplicationTempFolder());
494
+ } else {
495
+ wchar_t tempPath[MAX_PATH];
496
+ if (GetTempPathW(static_cast<DWORD>(std::size(tempPath)), tempPath)) {
497
+ preparedScriptStore =
498
+ std::make_unique<facebook::react::BasePreparedScriptStoreImpl>(winrt::to_string(tempPath));
499
+ }
500
+ }
501
+
502
+ auto hermesRuntimeHolder = std::make_shared<Microsoft::ReactNative::HermesRuntimeHolder>(
503
+ devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore));
504
+ Microsoft::ReactNative::HermesRuntimeHolder::storeTo(
493
505
  ReactPropertyBag(m_reactContext->Properties()), hermesRuntimeHolder);
494
506
  devSettings->jsiRuntimeHolder = hermesRuntimeHolder;
495
507
  break;
@@ -513,14 +525,10 @@ void ReactInstanceWin::Initialize() noexcept {
513
525
  enableMultiThreadSupport = Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties());
514
526
  #endif // USE_FABRIC
515
527
 
516
- devSettings->jsiRuntimeHolder = std::make_shared<facebook::react::V8JSIRuntimeHolder>(
517
- devSettings,
518
- m_jsMessageThread.Load(),
519
- std::move(scriptStore),
520
- std::move(preparedScriptStore),
521
- enableMultiThreadSupport);
522
-
523
- } break;
528
+ devSettings->jsiRuntimeHolder = std::make_shared<Microsoft::ReactNative::V8RuntimeHolder>(
529
+ devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore), enableMultiThreadSupport);
530
+ break;
531
+ }
524
532
  #endif // USE_V8
525
533
  case JSIEngine::Chakra:
526
534
  #ifndef CORE_ABI
@@ -1104,13 +1112,10 @@ Mso::CntPtr<IReactInstanceInternal> MakeReactInstance(
1104
1112
  reactHost, std::move(options), std::move(whenCreated), std::move(whenLoaded), std::move(updateUI));
1105
1113
  }
1106
1114
 
1107
- #if defined(USE_V8)
1108
1115
  std::string ReactInstanceWin::getApplicationTempFolder() {
1109
1116
  auto local = winrt::Windows::Storage::ApplicationData::Current().TemporaryFolder().Path();
1110
-
1111
1117
  return Microsoft::Common::Unicode::Utf16ToUtf8(local.c_str(), local.size()) + "\\";
1112
1118
  }
1113
- #endif
1114
1119
 
1115
1120
  bool ReactInstanceWin::UseWebDebugger() const noexcept {
1116
1121
  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;
@@ -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
@@ -15,6 +15,14 @@
15
15
  <TurboModule_SourcePath Condition="'$(TurboModule_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\TurboModule.h')">$(MSBuildThisFileDirectory)</TurboModule_SourcePath>
16
16
  <Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND '$(ReactNativeDir)' != ''">$(ReactNativeDir)\ReactCommon\react\bridging</Bridging_SourcePath>
17
17
  <Bridging_SourcePath Condition="'$(Bridging_SourcePath)' == '' AND Exists('$(MSBuildThisFileDirectory)ReactCommon\CallbackWrapper.h')">$(MSBuildThisFileDirectory)ReactCommon</Bridging_SourcePath>
18
+
19
+ <NodeApiJsiCommitHash>53b897b03c1c7e57c3372acc6234447a44e150d6</NodeApiJsiCommitHash>
20
+ <NodeApiJsiLocal Condition="Exists('$(MSBuildThisFileDirectory)NodeApiJsiRuntime.cpp')">true</NodeApiJsiLocal>
21
+ <NodeApiJsiDir Condition="'$(NodeApiJsiDir)' == '' AND '$(NodeApiJsiLocal)' == 'true'">$(MSBuildThisFileDirectory)</NodeApiJsiDir>
22
+ <NodeApiJsiDir Condition="'$(NodeApiJsiDir)' == '' AND '$(ReactNativeDir)' != ''">$(ReactNativeDir)\..\..\node_modules\.node-api-jsi\node-api-jsi-$(NodeApiJsiCommitHash)\</NodeApiJsiDir>
23
+ <NodeApiJsiSrcDir Condition="'$(NodeApiJsiSrcDir)' == '' AND '$(NodeApiJsiLocal)' != 'true'">$(NodeApiJsiDir)src\</NodeApiJsiSrcDir>
24
+ <NodeApiJsiSrcDir Condition="'$(NodeApiJsiSrcDir)' == ''">$(MSBuildThisFileDirectory)</NodeApiJsiSrcDir>
25
+ <NodeApiDir Condition="'$(NodeApiDir)' == ''">$(NodeApiJsiDir)node-api\</NodeApiDir>
18
26
  </PropertyGroup>
19
27
  <ItemDefinitionGroup>
20
28
  <ClCompile>
@@ -24,6 +32,8 @@
24
32
  $(CallInvoker_SourcePath);
25
33
  $(TurboModule_SourcePath);
26
34
  $(Bridging_SourcePath);
35
+ $(NodeApiDir);
36
+ $(NodeApiJsiSrcDir);
27
37
  %(AdditionalIncludeDirectories)
28
38
  </AdditionalIncludeDirectories>
29
39
  </ClCompile>
@@ -41,7 +51,6 @@
41
51
  <ClInclude Include="$(MSBuildThisFileDirectory)CoreApp.h" />
42
52
  <ClInclude Include="$(MSBuildThisFileDirectory)DesktopWindowBridge.h" />
43
53
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\LongLivedJsiValue.h" />
44
- <ClInclude Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.h" />
45
54
  <ClInclude Include="$(MSBuildThisFileDirectory)TurboModuleProvider.h" />
46
55
  <ClInclude Include="$(CallInvoker_SourcePath)\ReactCommon\CallInvoker.h" />
47
56
  <ClInclude Include="$(CallInvoker_SourcePath)\ReactCommon\SchedulerPriority.h" />
@@ -92,6 +101,14 @@
92
101
  <ClInclude Include="$(MSBuildThisFileDirectory)UI.Xaml.Media.Media3D.h" />
93
102
  <ClInclude Include="$(MSBuildThisFileDirectory)UI.Xaml.Navigation.h" />
94
103
  <ClInclude Include="$(MSBuildThisFileDirectory)UI.Xaml.Shapes.h" />
104
+ <ClInclude Include="$(NodeApiDir)js_native_api.h" />
105
+ <ClInclude Include="$(NodeApiDir)js_native_api_types.h" />
106
+ <ClInclude Include="$(NodeApiDir)js_runtime_api.h" />
107
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.h" />
108
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.inc" />
109
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.h" />
110
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.inc" />
111
+ <ClInclude Include="$(NodeApiJsiSrcDir)NodeApiJsiRuntime.h" />
95
112
  </ItemGroup>
96
113
  <ItemGroup Condition="'$(BuildMSRNCxx)' != 'false'">
97
114
  <ClCompile Include="$(MSBuildThisFileDirectory)JSI\JsiAbiApi.cpp" />
@@ -104,16 +121,18 @@
104
121
  <ClCompile Include="$(MSBuildThisFileDirectory)ReactPromise.cpp" />
105
122
  <ClCompile Include="$(MSBuildThisFileDirectory)TurboModuleProvider.cpp" />
106
123
  </ItemGroup>
107
- <ItemGroup Condition="'$(BuildMSRNCxx)' != 'false' and '$(BuildMSRNCxxReactCommon)' != 'false'">
108
- <!--
109
- Make sure all FB code uses the same flags to improve build parallelism.
110
- This is because msbuild has to invoke different cl.exe invocations for each
111
- set of flags and msbuild inside a project is single threaded.
112
- -->
124
+ <ItemGroup Condition="'$(BuildMSRNCxxJsi)' != 'false'">
113
125
  <ClCompile Include="$(JSI_SourcePath)\jsi\jsi.cpp">
114
126
  <PrecompiledHeader>NotUsing</PrecompiledHeader>
115
127
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
116
128
  </ClCompile>
129
+ </ItemGroup>
130
+ <ItemGroup Condition="'$(BuildMSRNCxxReactCommon)' != 'false'">
131
+ <!--
132
+ Make sure all Meta code uses the same flags to improve build parallelism.
133
+ This is because msbuild has to invoke different cl.exe invocations for each
134
+ set of flags and msbuild inside a project is single threaded.
135
+ -->
117
136
  <ClCompile Include="$(Bridging_SourcePath)\LongLivedObject.cpp">
118
137
  <PrecompiledHeader>NotUsing</PrecompiledHeader>
119
138
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
@@ -127,13 +146,23 @@
127
146
  <DisableSpecificWarnings>%(DisableSpecificWarnings);4100</DisableSpecificWarnings>
128
147
  </ClCompile>
129
148
  </ItemGroup>
130
- <ItemGroup>
131
- <None Include="$(MSBuildThisFileDirectory)README.md" />
149
+ <ItemGroup Condition="'$(BuildMSRNCxxNodeApiJsi)' != 'false'">
150
+ <ClCompile Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.cpp">
151
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
152
+ </ClCompile>
153
+ <ClCompile Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.cpp">
154
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
155
+ </ClCompile>
156
+ <ClCompile Include="$(NodeApiJsiSrcDir)NodeApiJsiRuntime.cpp">
157
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
158
+ </ClCompile>
132
159
  </ItemGroup>
133
- <ItemGroup Condition="'$(BuildMSRNCxx)' != 'false' and '$(RNExternalReferences)' != 'true'">
134
- <ClCompile Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.cpp">
160
+ <ItemGroup Condition="'$(BuildMSRNCxxNodeApiJsiLoader)' != 'false'">
161
+ <ClCompile Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiLoader.cpp">
135
162
  <PrecompiledHeader>NotUsing</PrecompiledHeader>
136
- <ExcludedFromBuild Condition="'$(UseV8)' != 'true'">true</ExcludedFromBuild>
137
163
  </ClCompile>
138
164
  </ItemGroup>
165
+ <ItemGroup>
166
+ <None Include="$(MSBuildThisFileDirectory)README.md" />
167
+ </ItemGroup>
139
168
  </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" />
@@ -156,14 +159,19 @@
156
159
  <ClInclude Include="$(MSBuildThisFileDirectory)XamlUtils.h">
157
160
  <Filter>UI</Filter>
158
161
  </ClInclude>
159
- <ClInclude Include="$(MSBuildThisFileDirectory)JSI\NodeApiJsiRuntime.h">
160
- <Filter>JSI</Filter>
161
- </ClInclude>
162
162
  <ClInclude Include="$(Bridging_SourcePath)\CallbackWrapper.h" />
163
163
  <ClInclude Include="$(MSBuildThisFileDirectory)CoreApp.h" />
164
164
  <ClInclude Include="$(MSBuildThisFileDirectory)JSI\LongLivedJsiValue.h">
165
165
  <Filter>TurboModule</Filter>
166
166
  </ClInclude>
167
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.h" />
168
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\NodeApi.inc" />
169
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.h" />
170
+ <ClInclude Include="$(NodeApiJsiSrcDir)ApiLoaders\JSRuntimeApi.inc" />
171
+ <ClInclude Include="$(NodeApiJsiSrcDir)NodeApiJsiRuntime.h" />
172
+ <ClInclude Include="$(NodeApiDir)js_native_api.h" />
173
+ <ClInclude Include="$(NodeApiDir)js_native_api_types.h" />
174
+ <ClInclude Include="$(NodeApiDir)js_runtime_api.h" />
167
175
  </ItemGroup>
168
176
  <ItemGroup>
169
177
  <Filter Include="JSI">
@@ -175,6 +183,9 @@
175
183
  <Filter Include="TurboModule">
176
184
  <UniqueIdentifier>{b5c0294c-d72f-44fa-8509-369f7d3e4a56}</UniqueIdentifier>
177
185
  </Filter>
186
+ <Filter Include="NodeApiJsi">
187
+ <UniqueIdentifier>{a34cd50a-190c-4cbb-8fe1-6ff1e16fe389}</UniqueIdentifier>
188
+ </Filter>
178
189
  </ItemGroup>
179
190
  <ItemGroup>
180
191
  <None Include="$(MSBuildThisFileDirectory)README.md" />
@@ -34,6 +34,11 @@
34
34
  "resolved": "1.0.0",
35
35
  "contentHash": "z2fpmmt+1Jfl+ZnBki9nSP08S1/tbEOxFdsK1rSR+LBehIJz1Xv9/6qOOoGNqlwnAGGVGis1Oj6S8Kt9COEYlQ=="
36
36
  },
37
+ "Microsoft.JavaScript.Hermes": {
38
+ "type": "Transitive",
39
+ "resolved": "0.1.15",
40
+ "contentHash": "My/u5RvxoymtwWokoweU6iVpuP79w271UjadcmSNqnQ9ESIv00tlVP4sHnIiN3t2lJNDeciyE1EVF4swGPECKQ=="
41
+ },
37
42
  "Microsoft.Net.Native.Compiler": {
38
43
  "type": "Transitive",
39
44
  "resolved": "2.2.7-rel-27913-00",
@@ -91,11 +96,6 @@
91
96
  "Microsoft.NETCore.Platforms": "1.1.0"
92
97
  }
93
98
  },
94
- "ReactNative.Hermes.Windows": {
95
- "type": "Transitive",
96
- "resolved": "0.0.0-2302.1001-19052299",
97
- "contentHash": "XL7czD9ZzeuXq+t/1vmbOSC3GYkdhxAAKmfiFuH1NdxLvwtJKOBeN7ep9ihA7n1K/cZubCBYmiuSAJByP/BY7g=="
98
- },
99
99
  "runtime.win10-arm.Microsoft.Net.Native.Compiler": {
100
100
  "type": "Transitive",
101
101
  "resolved": "2.2.7-rel-27913-00",
@@ -181,10 +181,10 @@
181
181
  "dependencies": {
182
182
  "Common": "[1.0.0, )",
183
183
  "Folly": "[1.0.0, )",
184
+ "Microsoft.JavaScript.Hermes": "[0.1.15, )",
184
185
  "Microsoft.UI.Xaml": "[2.8.0, )",
185
186
  "Microsoft.Windows.SDK.BuildTools": "[10.0.22000.194, )",
186
187
  "ReactCommon": "[1.0.0, )",
187
- "ReactNative.Hermes.Windows": "[0.0.0-2302.1001-19052299, )",
188
188
  "boost": "[1.76.0, )"
189
189
  }
190
190
  },
@@ -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.72.0-preview.7</ReactNativeWindowsVersion>
13
+ <ReactNativeWindowsVersion>0.72.0-preview.8</ReactNativeWindowsVersion>
14
14
  <ReactNativeWindowsMajor>0</ReactNativeWindowsMajor>
15
15
  <ReactNativeWindowsMinor>72</ReactNativeWindowsMinor>
16
16
  <ReactNativeWindowsPatch>0</ReactNativeWindowsPatch>
17
17
  <ReactNativeWindowsCanary>false</ReactNativeWindowsCanary>
18
- <ReactNativeWindowsCommitId>56e59fa610772e15646fa444a1fe246ed14ebfd3</ReactNativeWindowsCommitId>
18
+ <ReactNativeWindowsCommitId>258dc53b8d2868b1889441ddff63f7238de5f7dc</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.0.0-2302.1002-2d4bf1df</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.5</V8Version>
28
28
  <V8PackageName>ReactNative.V8Jsi.Windows</V8PackageName>
29
29
  <V8PackageName Condition="'$(V8AppPlatform)' != 'win32'">$(V8PackageName).UWP</V8PackageName>
30
30
  </PropertyGroup>
@@ -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>