From d45a1f4d420025b1bb4b16a7e34be757e863ba49 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Thu, 1 May 2025 15:22:46 -0700 Subject: [PATCH 01/19] Bump hermes version --- .../packages.chakra.lock.json | 6 +- .../AutomationChannel/packages.lock.json | 6 +- .../packages.newarch.lock.json | 6 +- .../packages.lock.json | 8 +- .../RNTesterApp-Fabric/packages.lock.json | 8 +- .../RNTesterApp/packages.chakra.lock.json | 6 +- .../windows/RNTesterApp/packages.lock.json | 8 +- .../packages.chakra.lock.json | 6 +- .../InteropTestModuleCS/packages.lock.json | 6 +- .../integrationtest/packages.chakra.lock.json | 6 +- .../integrationtest/packages.lock.json | 8 +- .../packages.lock.json | 6 +- .../packages.experimentalwinui3.lock.json | 8 +- .../packages.lock.json | 233 +----------------- .../packages.experimentalwinui3.lock.json | 8 +- .../playground-composition/packages.lock.json | 8 +- .../windows/playground/packages.lock.json | 8 +- .../packages.lock.json | 8 +- .../SampleAppFabric/packages.lock.json | 8 +- .../windows/SampleAppCPP/packages.lock.json | 8 +- .../windows/SampleAppCS/packages.lock.json | 8 +- .../SampleLibraryCPP/packages.lock.json | 6 +- .../SampleLibraryCS/packages.lock.json | 6 +- .../packages.experimentalwinui3.lock.json | 6 +- .../SampleCustomComponent/packages.lock.json | 6 +- .../packages.experimentalwinui3.lock.json | 8 +- vnext/Desktop.ABITests/packages.lock.json | 8 +- .../packages.experimentalwinui3.lock.json | 8 +- vnext/Desktop.DLL/packages.lock.json | 8 +- .../packages.experimentalwinui3.lock.json | 8 +- .../packages.lock.json | 8 +- .../packages.experimentalwinui3.lock.json | 6 +- vnext/Desktop.UnitTests/packages.lock.json | 6 +- .../packages.experimentalwinui3.lock.json | 6 +- vnext/Desktop/packages.lock.json | 6 +- vnext/Directory.Build.props | 2 +- .../packages.experimentalwinui3.lock.json | 6 +- .../packages.lock.json | 6 +- .../Microsoft.ReactNative.Cxx.vcxitems | 2 +- .../packages.experimentalwinui3.lock.json | 6 +- .../packages.lock.json | 6 +- ...kages.newarch.experimentalwinui3.lock.json | 6 +- .../packages.newarch.lock.json | 6 +- .../packages.lock.json | 6 +- .../packages.lock.json | 6 +- .../packages.lock.json | 6 +- .../packages.chakra.lock.json | 6 +- .../packages.experimentalwinui3.lock.json | 6 +- .../Microsoft.ReactNative/packages.lock.json | 6 +- ...kages.newarch.experimentalwinui3.lock.json | 6 +- .../packages.newarch.lock.json | 6 +- vnext/PropertySheets/JSEngine.props | 2 +- .../packages.experimentalwinui3.lock.json | 6 +- .../ReactCommon.UnitTests/packages.lock.json | 6 +- vnext/ReactCommon/cgmanifest.json | 2 +- vnext/fmt/packages.lock.json | 13 + 56 files changed, 197 insertions(+), 393 deletions(-) create mode 100644 vnext/fmt/packages.lock.json diff --git a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json index 79233b0d618..c7a92f44661 100644 --- a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json +++ b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json index 79233b0d618..c7a92f44661 100644 --- a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json +++ b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json index 68a4a76039b..27ad5d3a856 100644 --- a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json +++ b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json @@ -37,8 +37,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json index 810b9b8d5a0..668f3c60d98 100644 --- a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json +++ b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json @@ -14,8 +14,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", @@ -103,7 +103,7 @@ "type": "Project", "dependencies": { "AutomationChannel": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json index 0ba91539bf4..d5f629271b9 100644 --- a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json +++ b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -95,7 +95,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json b/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json index a4c7e7c1fbb..923c6bfc4b1 100644 --- a/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json +++ b/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json @@ -46,8 +46,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -197,7 +197,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json b/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json index 96a3b4de2ae..580f2b7449b 100644 --- a/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json +++ b/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json @@ -4,9 +4,9 @@ "UAP,Version=v10.0.17763": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.NETCore.UniversalWindowsPlatform": { "type": "Direct", @@ -198,7 +198,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json b/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json index 7db992de4d8..3506313d3a8 100644 --- a/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json +++ b/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json @@ -26,8 +26,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -178,7 +178,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json b/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json index 7db992de4d8..3506313d3a8 100644 --- a/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json +++ b/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json @@ -26,8 +26,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -178,7 +178,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json b/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json index 96844d4f844..530fbfee70d 100644 --- a/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json +++ b/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -199,7 +199,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/integrationtest/packages.lock.json b/packages/integration-test-app/windows/integrationtest/packages.lock.json index 3c458061d17..8dc30e2a8b8 100644 --- a/packages/integration-test-app/windows/integrationtest/packages.lock.json +++ b/packages/integration-test-app/windows/integrationtest/packages.lock.json @@ -4,9 +4,9 @@ "native,Version=v0.0": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.UI.Xaml": { "type": "Direct", @@ -200,7 +200,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/PlaygroundNativeModules/packages.lock.json b/packages/playground/windows/PlaygroundNativeModules/packages.lock.json index 79233b0d618..c7a92f44661 100644 --- a/packages/playground/windows/PlaygroundNativeModules/packages.lock.json +++ b/packages/playground/windows/PlaygroundNativeModules/packages.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json b/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json index a3d48565824..f0c30f82fd8 100644 --- a/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json +++ b/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json @@ -14,8 +14,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -76,7 +76,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", @@ -86,7 +86,7 @@ "playground-composition": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/packages/playground/windows/playground-composition.Package/packages.lock.json b/packages/playground/windows/playground-composition.Package/packages.lock.json index 7514f1a0d37..99870dd293c 100644 --- a/packages/playground/windows/playground-composition.Package/packages.lock.json +++ b/packages/playground/windows/playground-composition.Package/packages.lock.json @@ -2,64 +2,8 @@ "version": 1, "dependencies": { "UAP,Version=v10.0.17763": { - "boost": { - "type": "Transitive", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "Microsoft.Build.Tasks.Git": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" - }, - "Microsoft.JavaScript.Hermes": { - "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" - }, - "Microsoft.SourceLink.Common": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" - }, - "Microsoft.SourceLink.GitHub": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", - "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" - } - }, - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.Windows.SDK.BuildTools": { - "type": "Transitive", - "resolved": "10.0.22621.756", - "contentHash": "7ZL2sFSioYm1Ry067Kw1hg0SCcW5kuVezC2SwjGbcPE61Nn+gTbH86T73G3LcEOVj0S3IZzNuE/29gZvOLS7VA==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - }, "common": { - "type": "Project", - "dependencies": { - "boost": "[1.83.0, )" - } + "type": "Project" }, "fmt": { "type": "Project" @@ -67,7 +11,6 @@ "folly": { "type": "Project", "dependencies": { - "boost": "[1.83.0, )", "fmt": "[1.0.0, )" } }, @@ -76,187 +19,35 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", - "Microsoft.SourceLink.GitHub": "[1.1.1, )", - "Microsoft.WindowsAppSDK": "[1.7.250401001, )", - "ReactCommon": "[1.0.0, )", - "boost": "[1.83.0, )" + "ReactCommon": "[1.0.0, )" } }, "playground-composition": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", "Microsoft.ReactNative": "[1.0.0, )", - "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", - "Microsoft.WindowsAppSDK": "[1.7.250401001, )", - "SampleCustomComponent": "[1.0.0, )", - "boost": "[1.83.0, )" + "SampleCustomComponent": "[1.0.0, )" } }, "reactcommon": { "type": "Project", "dependencies": { - "Folly": "[1.0.0, )", - "boost": "[1.83.0, )" + "Folly": "[1.0.0, )" } }, "samplecustomcomponent": { "type": "Project", "dependencies": { - "Microsoft.ReactNative": "[1.0.0, )", - "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", - "Microsoft.WindowsAppSDK": "[1.7.250401001, )", - "boost": "[1.83.0, )" - } - } - }, - "UAP,Version=v10.0.17763/win10-arm": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-arm-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-arm64-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-x64": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-x64-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + "Microsoft.ReactNative": "[1.0.0, )" } } }, - "UAP,Version=v10.0.17763/win10-x86": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - }, - "UAP,Version=v10.0.17763/win10-x86-aot": { - "Microsoft.VCRTForwarders.140": { - "type": "Transitive", - "resolved": "1.0.2-rc", - "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" - }, - "Microsoft.Web.WebView2": { - "type": "Transitive", - "resolved": "1.0.2903.40", - "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" - }, - "Microsoft.WindowsAppSDK": { - "type": "Transitive", - "resolved": "1.7.250401001", - "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", - "dependencies": { - "Microsoft.Web.WebView2": "1.0.2903.40", - "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" - } - } - } + "UAP,Version=v10.0.17763/win10-arm": {}, + "UAP,Version=v10.0.17763/win10-arm-aot": {}, + "UAP,Version=v10.0.17763/win10-arm64-aot": {}, + "UAP,Version=v10.0.17763/win10-x64": {}, + "UAP,Version=v10.0.17763/win10-x64-aot": {}, + "UAP,Version=v10.0.17763/win10-x86": {}, + "UAP,Version=v10.0.17763/win10-x86-aot": {} } } \ No newline at end of file diff --git a/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json b/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json index 7df97b14216..0eae5cb8aaa 100644 --- a/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json +++ b/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -86,7 +86,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/playground-composition/packages.lock.json b/packages/playground/windows/playground-composition/packages.lock.json index 51fc9932c39..29179fcf0ab 100644 --- a/packages/playground/windows/playground-composition/packages.lock.json +++ b/packages/playground/windows/playground-composition/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -86,7 +86,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/playground/packages.lock.json b/packages/playground/windows/playground/packages.lock.json index 6694b7d65af..a00de473e9c 100644 --- a/packages/playground/windows/playground/packages.lock.json +++ b/packages/playground/windows/playground/packages.lock.json @@ -4,9 +4,9 @@ "native,Version=v0.0": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.UI.Xaml": { "type": "Direct", @@ -73,7 +73,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json b/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json index 3b4906637dc..de61dc42a65 100644 --- a/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json +++ b/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json @@ -14,8 +14,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -76,7 +76,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", @@ -93,7 +93,7 @@ "sampleappfabric": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json b/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json index 79c2791d21f..627958ace96 100644 --- a/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json +++ b/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -86,7 +86,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleAppCPP/packages.lock.json b/packages/sample-apps/windows/SampleAppCPP/packages.lock.json index 08b2d7a832e..877bd534bc6 100644 --- a/packages/sample-apps/windows/SampleAppCPP/packages.lock.json +++ b/packages/sample-apps/windows/SampleAppCPP/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.UI.Xaml": { "type": "Direct", @@ -186,7 +186,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleAppCS/packages.lock.json b/packages/sample-apps/windows/SampleAppCS/packages.lock.json index 7a5e0554700..a0e7f551b81 100644 --- a/packages/sample-apps/windows/SampleAppCS/packages.lock.json +++ b/packages/sample-apps/windows/SampleAppCS/packages.lock.json @@ -4,9 +4,9 @@ "UAP,Version=v10.0.17763": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.NETCore.UniversalWindowsPlatform": { "type": "Direct", @@ -180,7 +180,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json b/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json index 79233b0d618..c7a92f44661 100644 --- a/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json +++ b/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json b/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json index 7db992de4d8..3506313d3a8 100644 --- a/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json +++ b/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json @@ -26,8 +26,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -178,7 +178,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json b/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json index 4f10b427538..9f7d75fe92c 100644 --- a/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json +++ b/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json @@ -37,8 +37,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json b/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json index 5ae7458c8c1..00a5a5a01ea 100644 --- a/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json +++ b/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json @@ -37,8 +37,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json b/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json index 4cca37ed212..4cc0622f73e 100644 --- a/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json @@ -32,8 +32,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", @@ -108,7 +108,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.ABITests/packages.lock.json b/vnext/Desktop.ABITests/packages.lock.json index ad244a8c050..31a607428d1 100644 --- a/vnext/Desktop.ABITests/packages.lock.json +++ b/vnext/Desktop.ABITests/packages.lock.json @@ -32,8 +32,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", @@ -108,7 +108,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json b/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json index 19258acac63..c99a00cd3fb 100644 --- a/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -87,7 +87,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/vnext/Desktop.DLL/packages.lock.json b/vnext/Desktop.DLL/packages.lock.json index 69dc32b331e..359ffad50ba 100644 --- a/vnext/Desktop.DLL/packages.lock.json +++ b/vnext/Desktop.DLL/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -87,7 +87,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json b/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json index 0347aafde66..4393b1cfca2 100644 --- a/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json @@ -39,8 +39,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -98,7 +98,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", @@ -110,7 +110,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.IntegrationTests/packages.lock.json b/vnext/Desktop.IntegrationTests/packages.lock.json index b66afebb101..39426936f7f 100644 --- a/vnext/Desktop.IntegrationTests/packages.lock.json +++ b/vnext/Desktop.IntegrationTests/packages.lock.json @@ -39,8 +39,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -98,7 +98,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", @@ -110,7 +110,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json b/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json index ab687db59c6..8a1b85da1b1 100644 --- a/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/vnext/Desktop.UnitTests/packages.lock.json b/vnext/Desktop.UnitTests/packages.lock.json index 75af0bc49ae..d19f7bea83b 100644 --- a/vnext/Desktop.UnitTests/packages.lock.json +++ b/vnext/Desktop.UnitTests/packages.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/vnext/Desktop/packages.experimentalwinui3.lock.json b/vnext/Desktop/packages.experimentalwinui3.lock.json index 958553aaf0e..034c6316d81 100644 --- a/vnext/Desktop/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Desktop/packages.lock.json b/vnext/Desktop/packages.lock.json index d286f191eb9..6b4d74e452a 100644 --- a/vnext/Desktop/packages.lock.json +++ b/vnext/Desktop/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Directory.Build.props b/vnext/Directory.Build.props index 51977c2e25c..e5f32175e9f 100644 --- a/vnext/Directory.Build.props +++ b/vnext/Directory.Build.props @@ -26,7 +26,7 @@ 10.1.0 ca2e3685b160617d3d95fcd9e789c4e06ca88 - 83cfef428a97627c9185c73da097e42742de56eb + c961df09276263f52b36abe172d9664425d935f5 $(MSBuildThisFileDirectory)stubs - 83cfef428a97627c9185c73da097e42742de56eb + c961df09276263f52b36abe172d9664425d935f5 true $(MSBuildThisFileDirectory) $(ReactNativeDir)\..\..\node_modules\.node-api-jsi\node-api-jsi-$(NodeApiJsiCommitHash)\ diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json index 9b88db405e1..a5bfb8e3a68 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json @@ -33,8 +33,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -84,7 +84,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json index 9b88db405e1..a5bfb8e3a68 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json @@ -33,8 +33,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -84,7 +84,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json index 45c1c72fd66..df41571bab0 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json @@ -43,8 +43,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json index e0f1b11c6c9..ed5a336d78b 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json @@ -43,8 +43,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json index 75561d61ccd..313b6ccb976 100644 --- a/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json +++ b/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json @@ -56,8 +56,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -332,7 +332,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json b/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json index 75561d61ccd..313b6ccb976 100644 --- a/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json +++ b/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json @@ -56,8 +56,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -332,7 +332,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.Managed/packages.lock.json b/vnext/Microsoft.ReactNative.Managed/packages.lock.json index 0d7d0738511..8c85ccdc607 100644 --- a/vnext/Microsoft.ReactNative.Managed/packages.lock.json +++ b/vnext/Microsoft.ReactNative.Managed/packages.lock.json @@ -36,8 +36,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -179,7 +179,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative/packages.chakra.lock.json b/vnext/Microsoft.ReactNative/packages.chakra.lock.json index b6159122ee8..054bc68d752 100644 --- a/vnext/Microsoft.ReactNative/packages.chakra.lock.json +++ b/vnext/Microsoft.ReactNative/packages.chakra.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json index b6159122ee8..054bc68d752 100644 --- a/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.lock.json b/vnext/Microsoft.ReactNative/packages.lock.json index b6159122ee8..054bc68d752 100644 --- a/vnext/Microsoft.ReactNative/packages.lock.json +++ b/vnext/Microsoft.ReactNative/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json index 98329c8dc97..f9c4e8f9015 100644 --- a/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.newarch.lock.json b/vnext/Microsoft.ReactNative/packages.newarch.lock.json index e39417ee9c7..77c291cb8e1 100644 --- a/vnext/Microsoft.ReactNative/packages.newarch.lock.json +++ b/vnext/Microsoft.ReactNative/packages.newarch.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.1.23, )", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "requested": "[0.0.0-2505.1001-6aa014c6, )", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/PropertySheets/JSEngine.props b/vnext/PropertySheets/JSEngine.props index 23f6e818172..60589e46070 100644 --- a/vnext/PropertySheets/JSEngine.props +++ b/vnext/PropertySheets/JSEngine.props @@ -6,7 +6,7 @@ true - 0.1.23 + 0.0.0-2505.1001-6aa014c6 $(PkgMicrosoft_JavaScript_Hermes) $(NuGetPackageRoot)\Microsoft.JavaScript.Hermes\$(HermesVersion) false diff --git a/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json b/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json index d26c6a6a010..53ddab47559 100644 --- a/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json +++ b/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/vnext/ReactCommon.UnitTests/packages.lock.json b/vnext/ReactCommon.UnitTests/packages.lock.json index ed138fa3983..8c37a0fe472 100644 --- a/vnext/ReactCommon.UnitTests/packages.lock.json +++ b/vnext/ReactCommon.UnitTests/packages.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.1.23", - "contentHash": "cA9t1GjY4Yo0JD1AfA//e1lOwk48hLANfuX6GXrikmEBNZVr2TIX5ONJt5tqCnpZyLz6xGiPDgTfFNKbSfb21g==" + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.1.23, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/vnext/ReactCommon/cgmanifest.json b/vnext/ReactCommon/cgmanifest.json index f239d3f7e39..5caad665df6 100644 --- a/vnext/ReactCommon/cgmanifest.json +++ b/vnext/ReactCommon/cgmanifest.json @@ -6,7 +6,7 @@ "Type": "git", "Git": { "RepositoryUrl": "https://github.com/microsoft/node-api-jsi", - "CommitHash": "83cfef428a97627c9185c73da097e42742de56eb" + "CommitHash": "c961df09276263f52b36abe172d9664425d935f5" } }, "DevelopmentDependency": false diff --git a/vnext/fmt/packages.lock.json b/vnext/fmt/packages.lock.json new file mode 100644 index 00000000000..a31237b580e --- /dev/null +++ b/vnext/fmt/packages.lock.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "dependencies": { + "native,Version=v0.0": {}, + "native,Version=v0.0/win10-arm": {}, + "native,Version=v0.0/win10-arm-aot": {}, + "native,Version=v0.0/win10-arm64-aot": {}, + "native,Version=v0.0/win10-x64": {}, + "native,Version=v0.0/win10-x64-aot": {}, + "native,Version=v0.0/win10-x86": {}, + "native,Version=v0.0/win10-x86-aot": {} + } +} \ No newline at end of file From fa40fe3c61d0a6d53a100bf433a9ac67d21f9be4 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Thu, 1 May 2025 15:29:29 -0700 Subject: [PATCH 02/19] Change files --- ...ation-channel-d0040355-b94f-4fac-9911-745c539e8a49.json | 7 +++++++ ...ative-windows-053f82df-fcf3-455d-9ce1-3d083a7017f7.json | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 change/@react-native-windows-automation-channel-d0040355-b94f-4fac-9911-745c539e8a49.json create mode 100644 change/react-native-windows-053f82df-fcf3-455d-9ce1-3d083a7017f7.json diff --git a/change/@react-native-windows-automation-channel-d0040355-b94f-4fac-9911-745c539e8a49.json b/change/@react-native-windows-automation-channel-d0040355-b94f-4fac-9911-745c539e8a49.json new file mode 100644 index 00000000000..68782f43fc5 --- /dev/null +++ b/change/@react-native-windows-automation-channel-d0040355-b94f-4fac-9911-745c539e8a49.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Bump hermes version", + "packageName": "@react-native-windows/automation-channel", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-053f82df-fcf3-455d-9ce1-3d083a7017f7.json b/change/react-native-windows-053f82df-fcf3-455d-9ce1-3d083a7017f7.json new file mode 100644 index 00000000000..4eb06d6f745 --- /dev/null +++ b/change/react-native-windows-053f82df-fcf3-455d-9ce1-3d083a7017f7.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Bump hermes version", + "packageName": "react-native-windows", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} From a9f73c0a55ff0511bbbd060cd7b738b0844c576c Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Thu, 1 May 2025 16:14:24 -0700 Subject: [PATCH 03/19] Bump JSI_VERSION to 19 --- .../JSI/JsiAbiApi.cpp | 19 +++++++++++++------ .../Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h | 13 +++++++------ .../Microsoft.ReactNative.Cxx.vcxitems | 2 +- vnext/Microsoft.ReactNative/JsiApi.cpp | 8 ++++++++ vnext/Microsoft.ReactNative/JsiApi.h | 1 + vnext/Microsoft.ReactNative/JsiApi.idl | 1 + vnext/PropertySheets/React.Cpp.props | 2 +- vnext/Shared/HermesRuntimeHolder.cpp | 6 ++++++ vnext/Shared/JSI/ChakraRuntime.cpp | 4 ++++ vnext/Shared/JSI/ChakraRuntime.h | 2 ++ vnext/Shared/Shared.vcxitems | 3 +-- vnext/Shared/TurboModuleManager.cpp | 15 --------------- 12 files changed, 45 insertions(+), 31 deletions(-) diff --git a/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp b/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp index fd0a01611f2..7bdafe878cd 100644 --- a/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp +++ b/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.cpp @@ -233,6 +233,13 @@ bool JsiAbiRuntime::drainMicrotasks(int maxMicrotasksHint) try { throw; } +void JsiAbiRuntime::queueMicrotask(const facebook::jsi::Function &callback) try { + return m_runtime.QueueMicrotask(AsJsiObjectRef(callback)); +} catch (hresult_error const &) { + RethrowJsiError(); + throw; +} + Object JsiAbiRuntime::global() try { return MakeObject(m_runtime.Global()); } catch (hresult_error const &) { RethrowJsiError(); throw; @@ -956,7 +963,7 @@ JsiAbiRuntime::DataPointerValue::DataPointerValue(winrt::weak_ref && JsiAbiRuntime::DataPointerValue::DataPointerValue(uint64_t data) noexcept : m_data{data} {} -void JsiAbiRuntime::DataPointerValue::invalidate() {} +void JsiAbiRuntime::DataPointerValue::invalidate() noexcept {} //=========================================================================== // JsiAbiRuntime::SymbolPointerValue implementation @@ -967,7 +974,7 @@ JsiAbiRuntime::SymbolPointerValue::SymbolPointerValue( JsiSymbolRef &&symbol) noexcept : DataPointerValue{std::move(weakRuntime), std::exchange(symbol.Data, 0)} {} -void JsiAbiRuntime::SymbolPointerValue::invalidate() { +void JsiAbiRuntime::SymbolPointerValue::invalidate() noexcept { if (m_data) { if (auto runtime = m_weakRuntime.get()) { m_weakRuntime = nullptr; @@ -993,7 +1000,7 @@ JsiAbiRuntime::BigIntPointerValue::BigIntPointerValue( JsiBigIntRef &&bigInt) noexcept : DataPointerValue{std::move(weakRuntime), std::exchange(bigInt.Data, 0)} {} -void JsiAbiRuntime::BigIntPointerValue::invalidate() { +void JsiAbiRuntime::BigIntPointerValue::invalidate() noexcept { if (m_data) { if (auto runtime = m_weakRuntime.get()) { m_weakRuntime = nullptr; @@ -1019,7 +1026,7 @@ JsiAbiRuntime::StringPointerValue::StringPointerValue( JsiStringRef &&str) noexcept : DataPointerValue{std::move(weakRuntime), std::exchange(str.Data, 0)} {} -void JsiAbiRuntime::StringPointerValue::invalidate() { +void JsiAbiRuntime::StringPointerValue::invalidate() noexcept { if (m_data) { if (auto runtime = m_weakRuntime.get()) { m_weakRuntime = nullptr; @@ -1047,7 +1054,7 @@ JsiAbiRuntime::ObjectPointerValue::ObjectPointerValue( JsiObjectRef &&obj) noexcept : DataPointerValue{std::move(weakRuntime), std::exchange(obj.Data, 0)} {} -void JsiAbiRuntime::ObjectPointerValue::invalidate() { +void JsiAbiRuntime::ObjectPointerValue::invalidate() noexcept { if (m_data) { if (auto runtime = m_weakRuntime.get()) { m_weakRuntime = nullptr; @@ -1075,7 +1082,7 @@ JsiAbiRuntime::PropNameIDPointerValue::PropNameIDPointerValue( JsiPropertyIdRef &&propertyId) noexcept : DataPointerValue{std::move(weakRuntime), std::exchange(propertyId.Data, 0)} {} -void JsiAbiRuntime::PropNameIDPointerValue::invalidate() { +void JsiAbiRuntime::PropNameIDPointerValue::invalidate() noexcept { if (m_data) { if (auto runtime = m_weakRuntime.get()) { m_weakRuntime = nullptr; diff --git a/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h b/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h index 2c13f2de70f..314bb0f3807 100644 --- a/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h +++ b/vnext/Microsoft.ReactNative.Cxx/JSI/JsiAbiApi.h @@ -85,6 +85,7 @@ struct JsiAbiRuntime : facebook::jsi::Runtime { facebook::jsi::Value evaluatePreparedJavaScript( const std::shared_ptr &js) override; bool drainMicrotasks(int maxMicrotasksHint = -1) override; + void queueMicrotask(const facebook::jsi::Function &callback) override; facebook::jsi::Object global() override; std::string description() override; bool isInspectable() override; @@ -233,7 +234,7 @@ struct JsiAbiRuntime : facebook::jsi::Runtime { struct DataPointerValue : PointerValue { DataPointerValue(winrt::weak_ref &&weakRuntime, uint64_t data) noexcept; DataPointerValue(uint64_t data) noexcept; - void invalidate() override; + void invalidate() noexcept override; uint64_t m_data; winrt::weak_ref m_weakRuntime; @@ -241,35 +242,35 @@ struct JsiAbiRuntime : facebook::jsi::Runtime { struct SymbolPointerValue : DataPointerValue { SymbolPointerValue(winrt::weak_ref &&weakRuntime, JsiSymbolRef &&symbol) noexcept; - void invalidate() override; + void invalidate() noexcept override; static JsiSymbolRef const &GetData(PointerValue const *pv) noexcept; static JsiSymbolRef Detach(PointerValue const *pv) noexcept; }; struct BigIntPointerValue : DataPointerValue { BigIntPointerValue(winrt::weak_ref &&weakRuntime, JsiBigIntRef &&bigInt) noexcept; - void invalidate() override; + void invalidate() noexcept override; static JsiBigIntRef const &GetData(PointerValue const *pv) noexcept; static JsiBigIntRef Detach(PointerValue const *pv) noexcept; }; struct StringPointerValue : DataPointerValue { StringPointerValue(winrt::weak_ref &&weakRuntime, JsiStringRef &&str) noexcept; - void invalidate() override; + void invalidate() noexcept override; static JsiStringRef const &GetData(PointerValue const *pv) noexcept; static JsiStringRef Detach(PointerValue const *pv) noexcept; }; struct ObjectPointerValue : DataPointerValue { ObjectPointerValue(winrt::weak_ref &&weakRuntime, JsiObjectRef &&obj) noexcept; - void invalidate() override; + void invalidate() noexcept override; static JsiObjectRef const &GetData(PointerValue const *pv) noexcept; static JsiObjectRef Detach(PointerValue const *pv) noexcept; }; struct PropNameIDPointerValue : DataPointerValue { PropNameIDPointerValue(winrt::weak_ref &&weakRuntime, JsiPropertyIdRef &&propertyId) noexcept; - void invalidate() override; + void invalidate() noexcept override; static JsiPropertyIdRef const &GetData(PointerValue const *pv) noexcept; static JsiPropertyIdRef Detach(PointerValue const *pv) noexcept; }; diff --git a/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems b/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems index 6c0504d1ff9..ad69cdec731 100644 --- a/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +++ b/vnext/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems @@ -35,7 +35,7 @@ $(NodeApiJsiSrcDir); %(AdditionalIncludeDirectories) - JSI_VERSION=11;%(PreprocessorDefinitions) + JSI_VERSION=19;%(PreprocessorDefinitions) $(MSBuildThisFileDirectory);%(AdditionalIncludeDirectories) diff --git a/vnext/Microsoft.ReactNative/JsiApi.cpp b/vnext/Microsoft.ReactNative/JsiApi.cpp index 10662d7e974..eee8ea21a28 100644 --- a/vnext/Microsoft.ReactNative/JsiApi.cpp +++ b/vnext/Microsoft.ReactNative/JsiApi.cpp @@ -553,6 +553,14 @@ bool JsiRuntime::DrainMicrotasks(int32_t maxMicrotasksHint) try { throw; } +void JsiRuntime::QueueMicrotask(JsiObjectRef callback) try { + auto funcPtr = RuntimeAccessor::AsPointerValue(callback); + auto const &jsiFunc = RuntimeAccessor::AsFunction(&funcPtr); + m_runtimeAccessor->queueMicrotask(jsiFunc); +} catch (JSI_SET_ERROR) { + throw; +} + JsiObjectRef JsiRuntime::Global() try { return PointerAccessor::MakeJsiObjectData(m_runtimeAccessor->global()); } catch (JSI_SET_ERROR) { diff --git a/vnext/Microsoft.ReactNative/JsiApi.h b/vnext/Microsoft.ReactNative/JsiApi.h index 193075c01a1..3f080e04852 100644 --- a/vnext/Microsoft.ReactNative/JsiApi.h +++ b/vnext/Microsoft.ReactNative/JsiApi.h @@ -77,6 +77,7 @@ struct JsiRuntime : JsiRuntimeT { ReactNative::JsiPreparedJavaScript PrepareJavaScript(IJsiByteBuffer const &buffer, hstring const &sourceUrl); JsiValueRef EvaluatePreparedJavaScript(ReactNative::JsiPreparedJavaScript const &js); bool DrainMicrotasks(int32_t maxMicrotasksHint); + void QueueMicrotask(JsiObjectRef callback); JsiObjectRef Global(); hstring Description(); bool IsInspectable(); diff --git a/vnext/Microsoft.ReactNative/JsiApi.idl b/vnext/Microsoft.ReactNative/JsiApi.idl index d3418b48c35..e3a1f3db42c 100644 --- a/vnext/Microsoft.ReactNative/JsiApi.idl +++ b/vnext/Microsoft.ReactNative/JsiApi.idl @@ -249,6 +249,7 @@ namespace Microsoft.ReactNative JsiPreparedJavaScript PrepareJavaScript(IJsiByteBuffer buffer, String sourceUrl); JsiValueRef EvaluatePreparedJavaScript(JsiPreparedJavaScript js); Boolean DrainMicrotasks(Int32 maxMicrotasksHint); + void QueueMicrotask(JsiObjectRef callback); JsiObjectRef Global { get; }; String Description { get; }; Boolean IsInspectable { get; }; diff --git a/vnext/PropertySheets/React.Cpp.props b/vnext/PropertySheets/React.Cpp.props index 0fdd907d912..fe6b132e839 100644 --- a/vnext/PropertySheets/React.Cpp.props +++ b/vnext/PropertySheets/React.Cpp.props @@ -65,7 +65,7 @@ ENABLE_DEVSERVER_HBCBUNDLES;%(PreprocessorDefinitions) USE_V8;%(PreprocessorDefinitions) USE_FABRIC;%(PreprocessorDefinitions) - JSI_VERSION=11;%(PreprocessorDefinitions) + JSI_VERSION=19;%(PreprocessorDefinitions) - + diff --git a/vnext/Shared/TurboModuleManager.cpp b/vnext/Shared/TurboModuleManager.cpp index f54debd48bc..64b45f2b04f 100644 --- a/vnext/Shared/TurboModuleManager.cpp +++ b/vnext/Shared/TurboModuleManager.cpp @@ -11,21 +11,6 @@ namespace facebook::react { -#ifdef USE_FABRIC - -NativeMicrotasks::NativeMicrotasks(std::shared_ptr jsInvoker) - : NativeMicrotasksCxxSpec(std::move(jsInvoker)) {} - -void NativeMicrotasks::queueMicrotask(jsi::Runtime &runtime, jsi::Function callback) { - assert(false); - // Currently using a version of hermes/jsi without queueMicrotask - // When we update JSI we can remove all the Microtask code from here, and just rely on the implementation of - // the NativeMicrotasks TurboModule from the core NativeMicrotasks.cpp file - // runtime.queueMicrotask(callback); -} - -#endif - TurboModuleManager::TurboModuleManager( std::shared_ptr turboModuleRegistry, std::shared_ptr callInvoker) From 88e06e517935857fd26d733265f2b044c3736a16 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Thu, 1 May 2025 16:26:27 -0700 Subject: [PATCH 04/19] Opt into microtasks --- vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp b/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp index cdaa7999813..522dd6de701 100644 --- a/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp +++ b/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp @@ -283,7 +283,15 @@ bool ReactOptions::EnableDefaultCrashHandler() const noexcept { class ReactNativeWindowsFeatureFlags : public facebook::react::ReactNativeFeatureFlagsDefaults { public: bool disableEventLoopOnBridgeless() override { - return true; // Disable event loop until we are on a JSI version that supports microtasks + return GetRuntimeOptionBool("ReactFeatureFlag.enableEventLoopOnBridgeless"); + } + + bool enableBridgelessArchitecture() override { +#ifdef USE_FABRIC + return true; +#else + return false; +#endif } bool enableCppPropsIteratorSetter() override { From c9965afd8df1e505f2983a1cbebf1f167a9b9b83 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Thu, 1 May 2025 16:29:55 -0700 Subject: [PATCH 05/19] buidl fix --- vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp b/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp index 522dd6de701..4b9d6cbf082 100644 --- a/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp +++ b/vnext/Microsoft.ReactNative/ReactHost/ReactHost.cpp @@ -6,6 +6,8 @@ #include #include +#include + #include #include @@ -283,7 +285,7 @@ bool ReactOptions::EnableDefaultCrashHandler() const noexcept { class ReactNativeWindowsFeatureFlags : public facebook::react::ReactNativeFeatureFlagsDefaults { public: bool disableEventLoopOnBridgeless() override { - return GetRuntimeOptionBool("ReactFeatureFlag.enableEventLoopOnBridgeless"); + return Microsoft::React::GetRuntimeOptionBool("ReactFeatureFlag.enableEventLoopOnBridgeless"); } bool enableBridgelessArchitecture() override { From f10dc51d4b96ea569a3f370a161adc60d8216672 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Thu, 1 May 2025 16:55:33 -0700 Subject: [PATCH 06/19] update playground packages.lock with the script --- .../packages.lock.json | 233 +++++++++++++++++- 1 file changed, 221 insertions(+), 12 deletions(-) diff --git a/packages/playground/windows/playground-composition.Package/packages.lock.json b/packages/playground/windows/playground-composition.Package/packages.lock.json index 99870dd293c..a15cca59807 100644 --- a/packages/playground/windows/playground-composition.Package/packages.lock.json +++ b/packages/playground/windows/playground-composition.Package/packages.lock.json @@ -2,8 +2,64 @@ "version": 1, "dependencies": { "UAP,Version=v10.0.17763": { + "boost": { + "type": "Transitive", + "resolved": "1.83.0", + "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" + }, + "Microsoft.JavaScript.Hermes": { + "type": "Transitive", + "resolved": "0.0.0-2505.1001-6aa014c6", + "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" + }, + "Microsoft.SourceLink.GitHub": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "1.1.1", + "Microsoft.SourceLink.Common": "1.1.1" + } + }, + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.Windows.SDK.BuildTools": { + "type": "Transitive", + "resolved": "10.0.22621.756", + "contentHash": "7ZL2sFSioYm1Ry067Kw1hg0SCcW5kuVezC2SwjGbcPE61Nn+gTbH86T73G3LcEOVj0S3IZzNuE/29gZvOLS7VA==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + }, "common": { - "type": "Project" + "type": "Project", + "dependencies": { + "boost": "[1.83.0, )" + } }, "fmt": { "type": "Project" @@ -11,6 +67,7 @@ "folly": { "type": "Project", "dependencies": { + "boost": "[1.83.0, )", "fmt": "[1.0.0, )" } }, @@ -19,35 +76,187 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "ReactCommon": "[1.0.0, )" + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.SourceLink.GitHub": "[1.1.1, )", + "Microsoft.WindowsAppSDK": "[1.7.250401001, )", + "ReactCommon": "[1.0.0, )", + "boost": "[1.83.0, )" } }, "playground-composition": { "type": "Project", "dependencies": { + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", "Microsoft.ReactNative": "[1.0.0, )", - "SampleCustomComponent": "[1.0.0, )" + "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", + "Microsoft.WindowsAppSDK": "[1.7.250401001, )", + "SampleCustomComponent": "[1.0.0, )", + "boost": "[1.83.0, )" } }, "reactcommon": { "type": "Project", "dependencies": { - "Folly": "[1.0.0, )" + "Folly": "[1.0.0, )", + "boost": "[1.83.0, )" } }, "samplecustomcomponent": { "type": "Project", "dependencies": { - "Microsoft.ReactNative": "[1.0.0, )" + "Microsoft.ReactNative": "[1.0.0, )", + "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", + "Microsoft.WindowsAppSDK": "[1.7.250401001, )", + "boost": "[1.83.0, )" + } + } + }, + "UAP,Version=v10.0.17763/win10-arm": { + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + } + }, + "UAP,Version=v10.0.17763/win10-arm-aot": { + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + } + }, + "UAP,Version=v10.0.17763/win10-arm64-aot": { + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + } + }, + "UAP,Version=v10.0.17763/win10-x64": { + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + } + }, + "UAP,Version=v10.0.17763/win10-x64-aot": { + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" } } }, - "UAP,Version=v10.0.17763/win10-arm": {}, - "UAP,Version=v10.0.17763/win10-arm-aot": {}, - "UAP,Version=v10.0.17763/win10-arm64-aot": {}, - "UAP,Version=v10.0.17763/win10-x64": {}, - "UAP,Version=v10.0.17763/win10-x64-aot": {}, - "UAP,Version=v10.0.17763/win10-x86": {}, - "UAP,Version=v10.0.17763/win10-x86-aot": {} + "UAP,Version=v10.0.17763/win10-x86": { + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + } + }, + "UAP,Version=v10.0.17763/win10-x86-aot": { + "Microsoft.VCRTForwarders.140": { + "type": "Transitive", + "resolved": "1.0.2-rc", + "contentHash": "/r+sjtEeCIGyDhobIZ5hSmYhC/dSyGZxf1SxYJpElUhB0LMCktOMFs9gXrauXypIFECpVynNyVjAmJt6hjJ5oQ==" + }, + "Microsoft.Web.WebView2": { + "type": "Transitive", + "resolved": "1.0.2903.40", + "contentHash": "THrzYAnJgE3+cNH+9Epr44XjoZoRELdVpXlWGPs6K9C9G6TqyDfVCeVAR/Er8ljLitIUX5gaSkPsy9wRhD1sgQ==" + }, + "Microsoft.WindowsAppSDK": { + "type": "Transitive", + "resolved": "1.7.250401001", + "contentHash": "kPsJ2LZoo3Xs/6FtIWMZRGnQ2ZMx9zDa0ZpqRGz1qwZr0gwwlXZJTmngaA1Ym2AHmIa05NtX2jEE2He8CzfhTg==", + "dependencies": { + "Microsoft.Web.WebView2": "1.0.2903.40", + "Microsoft.Windows.SDK.BuildTools": "10.0.22621.756" + } + } + } } } \ No newline at end of file From 50c64683add6f791a196de0be36be5c85ba462b0 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Thu, 1 May 2025 21:00:15 -0700 Subject: [PATCH 07/19] temp: gather crash dmp --- .ado/templates/upload-build-logs.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.ado/templates/upload-build-logs.yml b/.ado/templates/upload-build-logs.yml index cf2d04737ab..02599e3f10d 100644 --- a/.ado/templates/upload-build-logs.yml +++ b/.ado/templates/upload-build-logs.yml @@ -45,10 +45,9 @@ steps: $HasCrashDumps = (Get-ChildItem -Path $(CrashDumpRootPath) -File -Recurse | Measure-Object).Count -gt 0; Write-Host "##vso[task.setvariable variable=HasCrashDumps]$HasCrashDumps"; - - ${{ if not(parameters.oneESMode) }}: - - task: PublishBuildArtifacts@1 - displayName: Upload crash dumps - condition: and(succeededOrFailed(), ${{ parameters.uploadCrashDumps }}, eq(variables.HasCrashDumps, 'True'), not(parameters.oneESMode)) - inputs: - pathtoPublish: '$(CrashDumpRootPath)' - artifactName: 'Crash dumps - ${{ parameters.artifactName }}' + - task: PublishBuildArtifacts@1 + displayName: Upload crash dumps + condition: succeededOrFailed() + inputs: + pathtoPublish: '$(CrashDumpRootPath)' + artifactName: 'Crash dumps - ${{ parameters.artifactName }}' From 8c2fe3376c6fef9326261e3f3f88071f6713fdfb Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Fri, 2 May 2025 08:44:48 -0700 Subject: [PATCH 08/19] try larger machine --- .ado/jobs/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index aae1bd54e31..88bafb648b2 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -160,7 +160,7 @@ jobs: displayName: E2E Test App Fabric ${{ matrix.Name }} variables: [template: ../variables/windows.yml] - pool: ${{ parameters.AgentPool.Medium }} + pool: ${{ parameters.AgentPool.Large }} timeoutInMinutes: 60 # how long to run the job before automatically cancelling cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them From 20a57269b370a398d7fc05db1781570ff3a35b51 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Fri, 2 May 2025 10:26:38 -0700 Subject: [PATCH 09/19] Pickup https://github.com/microsoft/node-api-jsi/pull/13 --- vnext/Directory.Build.props | 2 +- .../Microsoft.ReactNative.Cxx.vcxitems | 2 +- vnext/ReactCommon/cgmanifest.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vnext/Directory.Build.props b/vnext/Directory.Build.props index e5f32175e9f..373ea4d5bdb 100644 --- a/vnext/Directory.Build.props +++ b/vnext/Directory.Build.props @@ -26,7 +26,7 @@ 10.1.0 ca2e3685b160617d3d95fcd9e789c4e06ca88 - c961df09276263f52b36abe172d9664425d935f5 + 980cb60d7911237d0f647fc566543ef627adac70 $(MSBuildThisFileDirectory)stubs - c961df09276263f52b36abe172d9664425d935f5 + 980cb60d7911237d0f647fc566543ef627adac70 true $(MSBuildThisFileDirectory) $(ReactNativeDir)\..\..\node_modules\.node-api-jsi\node-api-jsi-$(NodeApiJsiCommitHash)\ diff --git a/vnext/ReactCommon/cgmanifest.json b/vnext/ReactCommon/cgmanifest.json index 5caad665df6..7644e64a4d1 100644 --- a/vnext/ReactCommon/cgmanifest.json +++ b/vnext/ReactCommon/cgmanifest.json @@ -6,7 +6,7 @@ "Type": "git", "Git": { "RepositoryUrl": "https://github.com/microsoft/node-api-jsi", - "CommitHash": "c961df09276263f52b36abe172d9664425d935f5" + "CommitHash": "980cb60d7911237d0f647fc566543ef627adac70" } }, "DevelopmentDependency": false From 6f6bce2cc1490b67569ac4a48b6781754810aaae Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Fri, 2 May 2025 11:05:29 -0700 Subject: [PATCH 10/19] Update hermes with uap nuget fix --- .ado/templates/upload-build-logs.yml | 13 +++++++------ .../AutomationChannel/packages.chakra.lock.json | 6 +++--- .../windows/AutomationChannel/packages.lock.json | 6 +++--- .../AutomationChannel/packages.newarch.lock.json | 6 +++--- .../test/__snapshots__/HomeUIADump.test.ts.snap | 8 ++++---- .../RNTesterApp-Fabric.Package/packages.lock.json | 8 ++++---- .../windows/RNTesterApp-Fabric/packages.lock.json | 8 ++++---- .../windows/RNTesterApp/packages.chakra.lock.json | 6 +++--- .../windows/RNTesterApp/packages.lock.json | 8 ++++---- .../InteropTestModuleCS/packages.chakra.lock.json | 6 +++--- .../windows/InteropTestModuleCS/packages.lock.json | 6 +++--- .../integrationtest/packages.chakra.lock.json | 6 +++--- .../windows/integrationtest/packages.lock.json | 8 ++++---- .../PlaygroundNativeModules/packages.lock.json | 6 +++--- .../packages.experimentalwinui3.lock.json | 8 ++++---- .../packages.lock.json | 8 ++++---- .../packages.experimentalwinui3.lock.json | 8 ++++---- .../playground-composition/packages.lock.json | 8 ++++---- .../windows/playground/packages.lock.json | 8 ++++---- .../SampleAppFabric.Package/packages.lock.json | 8 ++++---- .../windows/SampleAppFabric/packages.lock.json | 8 ++++---- .../windows/SampleAppCPP/packages.lock.json | 8 ++++---- .../windows/SampleAppCS/packages.lock.json | 8 ++++---- .../windows/SampleLibraryCPP/packages.lock.json | 6 +++--- .../windows/SampleLibraryCS/packages.lock.json | 6 +++--- .../packages.experimentalwinui3.lock.json | 6 +++--- .../SampleCustomComponent/packages.lock.json | 6 +++--- .../packages.experimentalwinui3.lock.json | 8 ++++---- vnext/Desktop.ABITests/packages.lock.json | 8 ++++---- .../packages.experimentalwinui3.lock.json | 8 ++++---- vnext/Desktop.DLL/packages.lock.json | 8 ++++---- .../packages.experimentalwinui3.lock.json | 8 ++++---- vnext/Desktop.IntegrationTests/packages.lock.json | 8 ++++---- .../packages.experimentalwinui3.lock.json | 6 +++--- vnext/Desktop.UnitTests/packages.lock.json | 6 +++--- vnext/Desktop/packages.experimentalwinui3.lock.json | 6 +++--- vnext/Desktop/packages.lock.json | 6 +++--- .../packages.experimentalwinui3.lock.json | 6 +++--- .../packages.lock.json | 6 +++--- .../packages.experimentalwinui3.lock.json | 6 +++--- .../packages.lock.json | 6 +++--- .../packages.newarch.experimentalwinui3.lock.json | 6 +++--- .../packages.newarch.lock.json | 6 +++--- .../packages.lock.json | 6 +++--- .../packages.lock.json | 6 +++--- .../packages.lock.json | 6 +++--- .../Microsoft.ReactNative/packages.chakra.lock.json | 6 +++--- .../packages.experimentalwinui3.lock.json | 6 +++--- vnext/Microsoft.ReactNative/packages.lock.json | 6 +++--- .../packages.newarch.experimentalwinui3.lock.json | 6 +++--- .../packages.newarch.lock.json | 6 +++--- vnext/PropertySheets/JSEngine.props | 2 +- .../packages.experimentalwinui3.lock.json | 6 +++--- vnext/ReactCommon.UnitTests/packages.lock.json | 6 +++--- 54 files changed, 184 insertions(+), 183 deletions(-) diff --git a/.ado/templates/upload-build-logs.yml b/.ado/templates/upload-build-logs.yml index 02599e3f10d..cf2d04737ab 100644 --- a/.ado/templates/upload-build-logs.yml +++ b/.ado/templates/upload-build-logs.yml @@ -45,9 +45,10 @@ steps: $HasCrashDumps = (Get-ChildItem -Path $(CrashDumpRootPath) -File -Recurse | Measure-Object).Count -gt 0; Write-Host "##vso[task.setvariable variable=HasCrashDumps]$HasCrashDumps"; - - task: PublishBuildArtifacts@1 - displayName: Upload crash dumps - condition: succeededOrFailed() - inputs: - pathtoPublish: '$(CrashDumpRootPath)' - artifactName: 'Crash dumps - ${{ parameters.artifactName }}' + - ${{ if not(parameters.oneESMode) }}: + - task: PublishBuildArtifacts@1 + displayName: Upload crash dumps + condition: and(succeededOrFailed(), ${{ parameters.uploadCrashDumps }}, eq(variables.HasCrashDumps, 'True'), not(parameters.oneESMode)) + inputs: + pathtoPublish: '$(CrashDumpRootPath)' + artifactName: 'Crash dumps - ${{ parameters.artifactName }}' diff --git a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json index c7a92f44661..091352742c4 100644 --- a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json +++ b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.chakra.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json index c7a92f44661..091352742c4 100644 --- a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json +++ b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json index 27ad5d3a856..88a18eb0b26 100644 --- a/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json +++ b/packages/@react-native-windows/automation-channel/windows/AutomationChannel/packages.newarch.lock.json @@ -37,8 +37,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap index 9861f83e39e..204104d7ef8 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/HomeUIADump.test.ts.snap @@ -721,12 +721,12 @@ exports[`Home UIA Tree Dump AppState 1`] = ` "__Children": [ { "Offset": "16, 16, 0", - "Size": "73, 25", + "Size": "73, 24", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "73, 25", + "Size": "73, 24", "Visual Type": "SpriteVisual", }, ], @@ -802,12 +802,12 @@ exports[`Home UIA Tree Dump Appearance 1`] = ` "__Children": [ { "Offset": "16, 16, 0", - "Size": "95, 24", + "Size": "95, 25", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "95, 24", + "Size": "95, 25", "Visual Type": "SpriteVisual", }, ], diff --git a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json index 668f3c60d98..e75dd28fcc9 100644 --- a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json +++ b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric.Package/packages.lock.json @@ -14,8 +14,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", @@ -103,7 +103,7 @@ "type": "Project", "dependencies": { "AutomationChannel": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json index d5f629271b9..72ce10d311b 100644 --- a/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json +++ b/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -95,7 +95,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json b/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json index 923c6bfc4b1..1298ee91e66 100644 --- a/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json +++ b/packages/e2e-test-app/windows/RNTesterApp/packages.chakra.lock.json @@ -46,8 +46,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -197,7 +197,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json b/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json index 580f2b7449b..4dac7070481 100644 --- a/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json +++ b/packages/e2e-test-app/windows/RNTesterApp/packages.lock.json @@ -4,9 +4,9 @@ "UAP,Version=v10.0.17763": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.NETCore.UniversalWindowsPlatform": { "type": "Direct", @@ -198,7 +198,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json b/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json index 3506313d3a8..98062fb9eed 100644 --- a/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json +++ b/packages/integration-test-app/windows/InteropTestModuleCS/packages.chakra.lock.json @@ -26,8 +26,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -178,7 +178,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json b/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json index 3506313d3a8..98062fb9eed 100644 --- a/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json +++ b/packages/integration-test-app/windows/InteropTestModuleCS/packages.lock.json @@ -26,8 +26,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -178,7 +178,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json b/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json index 530fbfee70d..828eabed2c8 100644 --- a/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json +++ b/packages/integration-test-app/windows/integrationtest/packages.chakra.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -199,7 +199,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/integration-test-app/windows/integrationtest/packages.lock.json b/packages/integration-test-app/windows/integrationtest/packages.lock.json index 8dc30e2a8b8..c885f8e587a 100644 --- a/packages/integration-test-app/windows/integrationtest/packages.lock.json +++ b/packages/integration-test-app/windows/integrationtest/packages.lock.json @@ -4,9 +4,9 @@ "native,Version=v0.0": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.UI.Xaml": { "type": "Direct", @@ -200,7 +200,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/PlaygroundNativeModules/packages.lock.json b/packages/playground/windows/PlaygroundNativeModules/packages.lock.json index c7a92f44661..091352742c4 100644 --- a/packages/playground/windows/PlaygroundNativeModules/packages.lock.json +++ b/packages/playground/windows/PlaygroundNativeModules/packages.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json b/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json index f0c30f82fd8..54a47aafc49 100644 --- a/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json +++ b/packages/playground/windows/playground-composition.Package/packages.experimentalwinui3.lock.json @@ -14,8 +14,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -76,7 +76,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", @@ -86,7 +86,7 @@ "playground-composition": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/packages/playground/windows/playground-composition.Package/packages.lock.json b/packages/playground/windows/playground-composition.Package/packages.lock.json index a15cca59807..a23f348d7fa 100644 --- a/packages/playground/windows/playground-composition.Package/packages.lock.json +++ b/packages/playground/windows/playground-composition.Package/packages.lock.json @@ -14,8 +14,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -76,7 +76,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", @@ -86,7 +86,7 @@ "playground-composition": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json b/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json index 0eae5cb8aaa..143b98b49da 100644 --- a/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json +++ b/packages/playground/windows/playground-composition/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -86,7 +86,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/playground-composition/packages.lock.json b/packages/playground/windows/playground-composition/packages.lock.json index 29179fcf0ab..df9b70406dd 100644 --- a/packages/playground/windows/playground-composition/packages.lock.json +++ b/packages/playground/windows/playground-composition/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -86,7 +86,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/playground/windows/playground/packages.lock.json b/packages/playground/windows/playground/packages.lock.json index a00de473e9c..5c69020f59f 100644 --- a/packages/playground/windows/playground/packages.lock.json +++ b/packages/playground/windows/playground/packages.lock.json @@ -4,9 +4,9 @@ "native,Version=v0.0": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.UI.Xaml": { "type": "Direct", @@ -73,7 +73,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json b/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json index de61dc42a65..7d84a365b4f 100644 --- a/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json +++ b/packages/sample-app-fabric/windows/SampleAppFabric.Package/packages.lock.json @@ -14,8 +14,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -76,7 +76,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", @@ -93,7 +93,7 @@ "sampleappfabric": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.VCRTForwarders.140": "[1.0.2-rc, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json b/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json index 627958ace96..48426cb9ce0 100644 --- a/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json +++ b/packages/sample-app-fabric/windows/SampleAppFabric/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.VCRTForwarders.140": { "type": "Direct", @@ -86,7 +86,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleAppCPP/packages.lock.json b/packages/sample-apps/windows/SampleAppCPP/packages.lock.json index 877bd534bc6..b630317fbe8 100644 --- a/packages/sample-apps/windows/SampleAppCPP/packages.lock.json +++ b/packages/sample-apps/windows/SampleAppCPP/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.UI.Xaml": { "type": "Direct", @@ -186,7 +186,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleAppCS/packages.lock.json b/packages/sample-apps/windows/SampleAppCS/packages.lock.json index a0e7f551b81..556fb03525f 100644 --- a/packages/sample-apps/windows/SampleAppCS/packages.lock.json +++ b/packages/sample-apps/windows/SampleAppCS/packages.lock.json @@ -4,9 +4,9 @@ "UAP,Version=v10.0.17763": { "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.NETCore.UniversalWindowsPlatform": { "type": "Direct", @@ -180,7 +180,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json b/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json index c7a92f44661..091352742c4 100644 --- a/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json +++ b/packages/sample-apps/windows/SampleLibraryCPP/packages.lock.json @@ -29,8 +29,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -72,7 +72,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json b/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json index 3506313d3a8..98062fb9eed 100644 --- a/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json +++ b/packages/sample-apps/windows/SampleLibraryCS/packages.lock.json @@ -26,8 +26,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -178,7 +178,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json b/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json index 9f7d75fe92c..b868a531010 100644 --- a/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json +++ b/packages/sample-custom-component/windows/SampleCustomComponent/packages.experimentalwinui3.lock.json @@ -37,8 +37,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", diff --git a/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json b/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json index 00a5a5a01ea..29fbc28aeda 100644 --- a/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json +++ b/packages/sample-custom-component/windows/SampleCustomComponent/packages.lock.json @@ -37,8 +37,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -85,7 +85,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json b/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json index 4cc0622f73e..e0c1749a3d9 100644 --- a/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.ABITests/packages.experimentalwinui3.lock.json @@ -32,8 +32,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", @@ -108,7 +108,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.ABITests/packages.lock.json b/vnext/Desktop.ABITests/packages.lock.json index 31a607428d1..60d4d8a65eb 100644 --- a/vnext/Desktop.ABITests/packages.lock.json +++ b/vnext/Desktop.ABITests/packages.lock.json @@ -32,8 +32,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", @@ -108,7 +108,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json b/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json index c99a00cd3fb..0d149f18d17 100644 --- a/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.DLL/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -87,7 +87,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/vnext/Desktop.DLL/packages.lock.json b/vnext/Desktop.DLL/packages.lock.json index 359ffad50ba..cf3655879d1 100644 --- a/vnext/Desktop.DLL/packages.lock.json +++ b/vnext/Desktop.DLL/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", @@ -87,7 +87,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json b/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json index 4393b1cfca2..28010434691 100644 --- a/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json @@ -39,8 +39,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -98,7 +98,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", @@ -110,7 +110,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.IntegrationTests/packages.lock.json b/vnext/Desktop.IntegrationTests/packages.lock.json index 39426936f7f..8da4fb3d4d8 100644 --- a/vnext/Desktop.IntegrationTests/packages.lock.json +++ b/vnext/Desktop.IntegrationTests/packages.lock.json @@ -39,8 +39,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -98,7 +98,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", @@ -110,7 +110,7 @@ "react.windows.desktop.dll": { "type": "Project", "dependencies": { - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "React.Windows.Desktop": "[1.0.0, )", "ReactNative.V8Jsi.Windows": "[0.71.8, )", diff --git a/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json b/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json index 8a1b85da1b1..c0f2dc1e163 100644 --- a/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/vnext/Desktop.UnitTests/packages.lock.json b/vnext/Desktop.UnitTests/packages.lock.json index d19f7bea83b..62ab93c2809 100644 --- a/vnext/Desktop.UnitTests/packages.lock.json +++ b/vnext/Desktop.UnitTests/packages.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -96,7 +96,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", diff --git a/vnext/Desktop/packages.experimentalwinui3.lock.json b/vnext/Desktop/packages.experimentalwinui3.lock.json index 034c6316d81..489cd101365 100644 --- a/vnext/Desktop/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Desktop/packages.lock.json b/vnext/Desktop/packages.lock.json index 6b4d74e452a..55d4a1196bd 100644 --- a/vnext/Desktop/packages.lock.json +++ b/vnext/Desktop/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative.CsWinRT/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.CsWinRT/packages.experimentalwinui3.lock.json index 8b3f79fc4ee..b2c05098350 100644 --- a/vnext/Microsoft.ReactNative.CsWinRT/packages.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative.CsWinRT/packages.experimentalwinui3.lock.json @@ -30,8 +30,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -78,7 +78,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.CsWinRT/packages.lock.json b/vnext/Microsoft.ReactNative.CsWinRT/packages.lock.json index 7151eec090a..724b8d612fe 100644 --- a/vnext/Microsoft.ReactNative.CsWinRT/packages.lock.json +++ b/vnext/Microsoft.ReactNative.CsWinRT/packages.lock.json @@ -30,8 +30,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -78,7 +78,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json index a5bfb8e3a68..88e3b3b8302 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.experimentalwinui3.lock.json @@ -33,8 +33,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -84,7 +84,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json index a5bfb8e3a68..88e3b3b8302 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.lock.json @@ -33,8 +33,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -84,7 +84,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json index df41571bab0..ada7ad87276 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.experimentalwinui3.lock.json @@ -43,8 +43,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json index ed5a336d78b..599f7fe352e 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json +++ b/vnext/Microsoft.ReactNative.IntegrationTests/packages.newarch.lock.json @@ -43,8 +43,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json b/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json index 313b6ccb976..e9032e277e4 100644 --- a/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json +++ b/vnext/Microsoft.ReactNative.Managed.IntegrationTests/packages.lock.json @@ -56,8 +56,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -332,7 +332,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json b/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json index 313b6ccb976..e9032e277e4 100644 --- a/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json +++ b/vnext/Microsoft.ReactNative.Managed.UnitTests/packages.lock.json @@ -56,8 +56,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -332,7 +332,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative.Managed/packages.lock.json b/vnext/Microsoft.ReactNative.Managed/packages.lock.json index 8c85ccdc607..97fba5a88fa 100644 --- a/vnext/Microsoft.ReactNative.Managed/packages.lock.json +++ b/vnext/Microsoft.ReactNative.Managed/packages.lock.json @@ -36,8 +36,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.Net.Native.Compiler": { "type": "Transitive", @@ -179,7 +179,7 @@ "dependencies": { "Common": "[1.0.0, )", "Folly": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.UI.Xaml": "[2.8.0, )", "ReactCommon": "[1.0.0, )", diff --git a/vnext/Microsoft.ReactNative/packages.chakra.lock.json b/vnext/Microsoft.ReactNative/packages.chakra.lock.json index 054bc68d752..bd23518b301 100644 --- a/vnext/Microsoft.ReactNative/packages.chakra.lock.json +++ b/vnext/Microsoft.ReactNative/packages.chakra.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json index 054bc68d752..bd23518b301 100644 --- a/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative/packages.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.lock.json b/vnext/Microsoft.ReactNative/packages.lock.json index 054bc68d752..bd23518b301 100644 --- a/vnext/Microsoft.ReactNative/packages.lock.json +++ b/vnext/Microsoft.ReactNative/packages.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json b/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json index f9c4e8f9015..e6e852aff5c 100644 --- a/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json +++ b/vnext/Microsoft.ReactNative/packages.newarch.experimentalwinui3.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/Microsoft.ReactNative/packages.newarch.lock.json b/vnext/Microsoft.ReactNative/packages.newarch.lock.json index 77c291cb8e1..24cffe8d1be 100644 --- a/vnext/Microsoft.ReactNative/packages.newarch.lock.json +++ b/vnext/Microsoft.ReactNative/packages.newarch.lock.json @@ -10,9 +10,9 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Direct", - "requested": "[0.0.0-2505.1001-6aa014c6, )", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "requested": "[0.0.0-2505.2001-0e4bc3b9, )", + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.GitHub": { "type": "Direct", diff --git a/vnext/PropertySheets/JSEngine.props b/vnext/PropertySheets/JSEngine.props index 60589e46070..a784057f813 100644 --- a/vnext/PropertySheets/JSEngine.props +++ b/vnext/PropertySheets/JSEngine.props @@ -6,7 +6,7 @@ true - 0.0.0-2505.1001-6aa014c6 + 0.0.0-2505.2001-0e4bc3b9 $(PkgMicrosoft_JavaScript_Hermes) $(NuGetPackageRoot)\Microsoft.JavaScript.Hermes\$(HermesVersion) false diff --git a/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json b/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json index 53ddab47559..83d625ce1fd 100644 --- a/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json +++ b/vnext/ReactCommon.UnitTests/packages.experimentalwinui3.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250127003-experimental3, )", diff --git a/vnext/ReactCommon.UnitTests/packages.lock.json b/vnext/ReactCommon.UnitTests/packages.lock.json index 8c37a0fe472..e2b3300fe1e 100644 --- a/vnext/ReactCommon.UnitTests/packages.lock.json +++ b/vnext/ReactCommon.UnitTests/packages.lock.json @@ -27,8 +27,8 @@ }, "Microsoft.JavaScript.Hermes": { "type": "Transitive", - "resolved": "0.0.0-2505.1001-6aa014c6", - "contentHash": "Xjp1BKHzPvZLYtlx8wSYhixnl7yujq2rvTzNMFx8UcgZnPUSaxQXsyKgcQ9Wc8pVpsORpUQxAKuSLywkXSwRyg==" + "resolved": "0.0.0-2505.2001-0e4bc3b9", + "contentHash": "VNSUBgaGzJ/KkK3Br0b9FORkCgKqke54hi48vG42xRACIlxN+uLFMz0hRo+KHogz+Fsn+ltXicGwQsDVpmaCMg==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", @@ -91,7 +91,7 @@ "Common": "[1.0.0, )", "Folly": "[1.0.0, )", "FollyWin32": "[1.0.0, )", - "Microsoft.JavaScript.Hermes": "[0.0.0-2505.1001-6aa014c6, )", + "Microsoft.JavaScript.Hermes": "[0.0.0-2505.2001-0e4bc3b9, )", "Microsoft.SourceLink.GitHub": "[1.1.1, )", "Microsoft.Web.WebView2": "[1.0.2903.40, )", "Microsoft.WindowsAppSDK": "[1.7.250401001, )", From b98a2961ea403770eb6fb4f9f08e691834508a9c Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Fri, 2 May 2025 14:28:28 -0700 Subject: [PATCH 11/19] Remove bridgeless property, and enable fabric in fabric integration tests --- .../TestReactNativeHostHolder.cpp | 13 +++++++++++++ .../Fabric/Composition/CompositionUIService.cpp | 2 -- vnext/Microsoft.ReactNative/QuirkSettings.cpp | 16 ---------------- vnext/Microsoft.ReactNative/QuirkSettings.h | 3 --- .../ReactHost/ReactInstanceWin.cpp | 17 +++++------------ .../ReactHost/ReactInstanceWin.h | 1 - 6 files changed, 18 insertions(+), 34 deletions(-) diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp b/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp index 17eb4bf6e3f..af692834527 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp +++ b/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp @@ -5,6 +5,7 @@ #include "TestReactNativeHostHolder.h" #include "..\codegen\NativeDeviceInfoSpec.g.h" #include +#include namespace ReactNativeIntegrationTests { @@ -73,6 +74,18 @@ TestReactNativeHostHolder::TestReactNativeHostHolder( m_host.InstanceSettings().EnableDeveloperMenu(false); m_host.PackageProviders().Append(winrt::make()); +#if USE_FABRIC + // To properly enable fabric you need to set a compositor. + // Since the UTs are ui-less we can force fabric by setting a CompositionContext with a null compositor + winrt::Microsoft::ReactNative::ReactPropertyBag(m_host.InstanceSettings().Properties()) + .Set( + winrt::Microsoft::ReactNative::ReactPropertyId< + winrt::Microsoft::ReactNative::Composition::Experimental::ICompositionContext>{ + L"ReactNative.Composition", L"CompositionContext"}, + winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::CreateContext( + nullptr)); +#endif + hostInitializer(m_host); if (options.LoadInstance) { diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp index 85df028d0f2..41310f42c71 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionUIService.cpp @@ -25,8 +25,6 @@ void CompositionUIService::SetCompositor( CompositionContextPropertyId(), winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::CreateContext( compositor)); - // Default to using Bridgeless mode when using fabric - winrt::Microsoft::ReactNative::implementation::QuirkSettings::SetIsBridgeless(properties, !!compositor); } winrt::Microsoft::UI::Composition::Compositor CompositionUIService::GetCompositor( diff --git a/vnext/Microsoft.ReactNative/QuirkSettings.cpp b/vnext/Microsoft.ReactNative/QuirkSettings.cpp index 81dddc80a82..2ceca4b8a8a 100644 --- a/vnext/Microsoft.ReactNative/QuirkSettings.cpp +++ b/vnext/Microsoft.ReactNative/QuirkSettings.cpp @@ -77,22 +77,6 @@ winrt::Microsoft::ReactNative::ReactPropertyId UseRuntimeSchedulerProperty return propId; } -winrt::Microsoft::ReactNative::ReactPropertyId IsBridgelessProperty() noexcept { - winrt::Microsoft::ReactNative::ReactPropertyId propId{L"ReactNative", L"IsBridgeless"}; - - return propId; -} - -/*static*/ bool QuirkSettings::GetIsBridgeless(winrt::Microsoft::ReactNative::ReactPropertyBag properties) noexcept { - return properties.Get(IsBridgelessProperty()).value_or(false); -} - -/*static*/ void QuirkSettings::SetIsBridgeless( - const winrt::Microsoft::ReactNative::ReactPropertyBag &properties, - bool value) noexcept { - properties.Set(IsBridgelessProperty(), value); -} - #pragma region IDL interface /*static*/ void QuirkSettings::SetMatchAndroidAndIOSStretchBehavior( diff --git a/vnext/Microsoft.ReactNative/QuirkSettings.h b/vnext/Microsoft.ReactNative/QuirkSettings.h index 0c5d73e94e4..507c755c0d2 100644 --- a/vnext/Microsoft.ReactNative/QuirkSettings.h +++ b/vnext/Microsoft.ReactNative/QuirkSettings.h @@ -39,9 +39,6 @@ struct QuirkSettings : QuirkSettingsT { static bool GetMapWindowDeactivatedToAppStateInactive( winrt::Microsoft::ReactNative::ReactPropertyBag properties) noexcept; - static bool GetIsBridgeless(winrt::Microsoft::ReactNative::ReactPropertyBag properties) noexcept; - static void SetIsBridgeless(const winrt::Microsoft::ReactNative::ReactPropertyBag &properties, bool value) noexcept; - #pragma region Public API - part of IDL interface static void SetMatchAndroidAndIOSStretchBehavior( winrt::Microsoft::ReactNative::ReactInstanceSettings settings, diff --git a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp index ead0aed2ad8..e913751e8fe 100644 --- a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +++ b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp @@ -350,12 +350,10 @@ void ReactInstanceWin::LoadModules( #endif #if !defined(CORE_ABI) && !defined(USE_FABRIC) - if (!IsBridgeless()) { - registerTurboModule( - L"UIManager", - // TODO: Use MakeTurboModuleProvider after it satisfies ReactNativeSpecs::UIManagerSpec - winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::UIManager>()); - } + registerTurboModule( + L"UIManager", + // TODO: Use MakeTurboModuleProvider after it satisfies ReactNativeSpecs::UIManagerSpec + winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::UIManager>()); #endif #ifndef CORE_ABI @@ -489,7 +487,7 @@ void ReactInstanceWin::LoadModules( //! Initialize() is called from the native queue. void ReactInstanceWin::Initialize() noexcept { #ifdef USE_FABRIC - if (IsBridgeless()) { + if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { InitializeBridgeless(); } else #endif @@ -1161,11 +1159,6 @@ void ReactInstanceWin::InitUIMessageThread() noexcept { }); } -bool ReactInstanceWin::IsBridgeless() noexcept { - return winrt::Microsoft::ReactNative::implementation::QuirkSettings::GetIsBridgeless( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties())); -} - #if !defined(CORE_ABI) && !defined(USE_FABRIC) void ReactInstanceWin::InitUIManager() noexcept { std::vector> viewManagers; diff --git a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h index f098dcf6845..69a00df3de5 100644 --- a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +++ b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h @@ -136,7 +136,6 @@ class ReactInstanceWin final : public Mso::ActiveObject std::shared_ptr GetRedBoxHandler() noexcept; std::function GetWaitingForDebuggerCallback() noexcept; std::function GetDebuggerAttachCallback() noexcept; - bool IsBridgeless() noexcept; void OnError(const Mso::ErrorCode &errorcode) noexcept; void OnErrorWithMessage(const std::string &errorMessage) noexcept; From b39a983bea45bb1bc57b7f4aedfa18d79c0a47a3 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Fri, 2 May 2025 14:29:24 -0700 Subject: [PATCH 12/19] Put back e2e test machine size --- .ado/jobs/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index 88bafb648b2..aae1bd54e31 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -160,7 +160,7 @@ jobs: displayName: E2E Test App Fabric ${{ matrix.Name }} variables: [template: ../variables/windows.yml] - pool: ${{ parameters.AgentPool.Large }} + pool: ${{ parameters.AgentPool.Medium }} timeoutInMinutes: 60 # how long to run the job before automatically cancelling cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them From 4710f0c8c560a5891bb9b79071ef854ea78757a1 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Fri, 2 May 2025 14:54:12 -0700 Subject: [PATCH 13/19] build fix --- .../TestReactNativeHostHolder.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp b/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp index af692834527..e598b29ddf9 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp +++ b/vnext/Microsoft.ReactNative.IntegrationTests/TestReactNativeHostHolder.cpp @@ -5,7 +5,10 @@ #include "TestReactNativeHostHolder.h" #include "..\codegen\NativeDeviceInfoSpec.g.h" #include + +#ifdef USE_FABRIC #include +#endif namespace ReactNativeIntegrationTests { From c0339421191641e0b95eb6660c9fc4a70cebf73c Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Mon, 5 May 2025 20:11:01 -0700 Subject: [PATCH 14/19] Fix most UTs. - Disable one in fabric for now --- .../ExecuteJsiTests.cpp | 2 +- .../ReactNativeHostTests.cpp | 2 +- .../ReactNativeHostTests.js | 7 +- .../ReactNotificationServiceTests.cpp | 2 +- .../TurboModuleTests.cpp | 2 + .../AsynchronousEventBeat.cpp | 32 +- .../AsynchronousEventBeat.h | 3 - .../Fabric/FabricUIManagerModule.cpp | 1 - .../ReactHost/ReactInstanceWin.cpp | 110 +- .../SynchronousEventBeat.cpp | 51 - .../SynchronousEventBeat.h | 31 - .../Utils/LocalBundleReader.cpp | 69 +- vnext/Shared/Shared.vcxitems | 3 - vnext/Shared/Shared.vcxitems.filters | 1 - .../ReactInstanceWin.cpp | 1593 +++++++++++++++++ vnext/src-win/index.windows.js | 6 +- 16 files changed, 1710 insertions(+), 205 deletions(-) delete mode 100644 vnext/Microsoft.ReactNative/SynchronousEventBeat.cpp delete mode 100644 vnext/Microsoft.ReactNative/SynchronousEventBeat.h create mode 100644 vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/ExecuteJsiTests.cpp b/vnext/Microsoft.ReactNative.IntegrationTests/ExecuteJsiTests.cpp index 55388eef2f8..e58a23de143 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/ExecuteJsiTests.cpp +++ b/vnext/Microsoft.ReactNative.IntegrationTests/ExecuteJsiTests.cpp @@ -109,7 +109,7 @@ struct TestExecuteJsiModule { struct TestPackageProvider : winrt::implements { void CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept { - TryAddAttributedModule(packageBuilder, L"TestExecuteJsiModule"); + TryAddAttributedModule(packageBuilder, L"TestExecuteJsiModule", true); } }; diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.cpp b/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.cpp index af162dcd852..2e5b0b9a7b9 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.cpp +++ b/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.cpp @@ -41,7 +41,7 @@ struct TestHostModule { struct TestPackageProvider : winrt::implements { void CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept { - TryAddAttributedModule(packageBuilder, L"TestHostModule"); + TryAddAttributedModule(packageBuilder, L"TestHostModule", true); } }; diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.js b/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.js index 0318e2012be..255a67a0e3b 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.js +++ b/vnext/Microsoft.ReactNative.IntegrationTests/ReactNativeHostTests.js @@ -1,14 +1,13 @@ -import { TurboModuleRegistry } from 'react-native'; +import { TurboModuleRegistry, registerCallableModule } from 'react-native'; -class TestHostModuleFunctions { +const TestHostModuleFunctions = { addValues(a, b) { TurboModuleRegistry.get('TestHostModule').returnResult(a + b); } } -// Accessing TestHostModule has a side effect of initializing global.__fbBatchedBridge if (TurboModuleRegistry.get('TestHostModule')) { - global.__fbBatchedBridge.registerLazyCallableModule('TestHostModuleFunctions', () => new TestHostModuleFunctions()); + registerCallableModule('TestHostModuleFunctions', TestHostModuleFunctions); // Start running tests. TurboModuleRegistry.get('TestHostModule').startTests(); diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/ReactNotificationServiceTests.cpp b/vnext/Microsoft.ReactNative.IntegrationTests/ReactNotificationServiceTests.cpp index c774aa15e09..6df1e2ebf0e 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/ReactNotificationServiceTests.cpp +++ b/vnext/Microsoft.ReactNative.IntegrationTests/ReactNotificationServiceTests.cpp @@ -65,7 +65,7 @@ struct NotificationTestModule { struct NotificationTestPackageProvider : winrt::implements { void CreatePackage(IReactPackageBuilder const &packageBuilder) noexcept { - TryAddAttributedModule(packageBuilder, L"NotificationTestModule"); + TryAddAttributedModule(packageBuilder, L"NotificationTestModule", true); } }; diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp b/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp index 2486e8fdba1..72516e910f4 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp +++ b/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp @@ -570,6 +570,7 @@ TEST_CLASS (TurboModuleTests) { TestCheck(!registered); } + #if !USE_FABRIC TEST_METHOD(ExecuteSampleTurboModule) { TestEventService::Initialize(); @@ -645,6 +646,7 @@ TEST_CLASS (TurboModuleTests) { TestEvent{"sayHelloSync", "Hello"}, }); } + #endif TEST_METHOD(JSDispatcherAfterInstanceUnload) { TestEventService::Initialize(); diff --git a/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp b/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp index b2c47988c99..154a21c8193 100644 --- a/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp +++ b/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp @@ -6,37 +6,17 @@ AsynchronousEventBeat::AsynchronousEventBeat( std::shared_ptr const ownerBox, const winrt::Microsoft::ReactNative::ReactContext &context, std::shared_ptr runtimeScheduler) - : EventBeat(ownerBox, *runtimeScheduler), m_context(context), m_runtimeScheduler(std::move(runtimeScheduler)) {} - -void AsynchronousEventBeat::induce() const { - if (!isEventBeatRequested_ || m_isBeatCallbackScheduled) { - isEventBeatRequested_ = false; - return; - } - isEventBeatRequested_ = false; - m_isBeatCallbackScheduled = true; - - facebook::react::RuntimeScheduler &schedulerRef = *m_runtimeScheduler.get(); - schedulerRef.scheduleWork([this, ownerBox = ownerBox_](facebook::jsi::Runtime &runtime) { - auto owner = ownerBox->owner.lock(); - if (!owner) { - return; - } - - m_isBeatCallbackScheduled = false; - if (beatCallback_) { - beatCallback_(runtime); - } - }); -} + : EventBeat(ownerBox, *runtimeScheduler), m_context(context) {} void AsynchronousEventBeat::request() const { - bool alreadyRequested = isEventBeatRequested_.exchange(true); + bool alreadyRequested = isEventBeatRequested_; + EventBeat::request(); if (!alreadyRequested) { - if (m_context.UIDispatcher().HasThreadAccess()) { + auto uiDispatcher = m_context.UIDispatcher(); + if (uiDispatcher.HasThreadAccess()) { induce(); } else { - m_context.UIDispatcher().Post([this, ownerBox = ownerBox_]() { + uiDispatcher.Post([this, ownerBox = ownerBox_]() { auto owner = ownerBox->owner.lock(); if (!owner) { return; diff --git a/vnext/Microsoft.ReactNative/AsynchronousEventBeat.h b/vnext/Microsoft.ReactNative/AsynchronousEventBeat.h index 5466db7e56a..62ed3229937 100644 --- a/vnext/Microsoft.ReactNative/AsynchronousEventBeat.h +++ b/vnext/Microsoft.ReactNative/AsynchronousEventBeat.h @@ -11,13 +11,10 @@ class AsynchronousEventBeat final : public facebook::react::EventBeat { const winrt::Microsoft::ReactNative::ReactContext &context, std::shared_ptr runtimeScheduler); - void induce() const; void request() const override; private: - mutable std::atomic m_isBeatCallbackScheduled{false}; winrt::Microsoft::ReactNative::ReactContext m_context; - std::shared_ptr m_runtimeScheduler; }; } // namespace Microsoft::ReactNative diff --git a/vnext/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp b/vnext/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp index 39361b0f09e..586926a0621 100644 --- a/vnext/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include diff --git a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp index e913751e8fe..057beb22bbe 100644 --- a/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +++ b/vnext/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp @@ -647,9 +647,9 @@ void ReactInstanceWin::InitializeBridgeless() noexcept { winrt::make(Mso::Copy(jsDispatchQueue)); m_options.Properties.Set(ReactDispatcherHelper::JSDispatcherProperty(), jsDispatcher); m_jsMessageThread.Exchange(std::make_shared( - jsDispatchQueue, - Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError), - Mso::Copy(m_whenDestroyed))); + jsDispatchQueue, Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); + + m_jsDispatchQueue.Exchange(std::move(jsDispatchQueue)); m_jsMessageThread.Load()->runOnQueueSync([&]() { SetJSThreadDescription(); @@ -686,54 +686,62 @@ void ReactInstanceWin::InitializeBridgeless() noexcept { m_bridgelessReactInstance->getRuntimeScheduler()); }); - facebook::react::ReactInstance::JSRuntimeFlags options; - m_bridgelessReactInstance->initializeRuntime(options, [=](facebook::jsi::Runtime &runtime) { - auto logger = [loggingHook = GetLoggingCallback()](const std::string &message, unsigned int logLevel) { - if (loggingHook) - loggingHook(static_cast(logLevel), message.c_str()); - }; - facebook::react::bindNativeLogger(runtime, logger); - - auto turboModuleManager = std::make_shared( - m_options.TurboModuleProvider, - std::make_shared( - m_bridgelessReactInstance->getRuntimeScheduler())); - - auto binding = - [turboModuleManager](const std::string &name) -> std::shared_ptr { - return turboModuleManager->getModule(name); - }; - - // Use a legacy native module binding that always returns null - // This means that calls to NativeModules.XXX will always return null, rather than crashing on access - auto legacyNativeModuleBinding = - [](const std::string & /*name*/) -> std::shared_ptr { return nullptr; }; - - facebook::react::TurboModuleBinding::install( - runtime, - std::function(binding), - std::function(legacyNativeModuleBinding), - m_options.TurboModuleProvider->LongLivedObjectCollection()); - - auto componentDescriptorRegistry = - Microsoft::ReactNative::WindowsComponentDescriptorRegistry::FromProperties( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_options.Properties)); - auto hasComponentProvider = [componentDescriptorRegistry](const std::string &name) -> bool { - return componentDescriptorRegistry->hasComponentProvider( - facebook::react::componentNameByReactViewName(name)); - }; - facebook::react::bindHasComponentProvider(runtime, std::move(hasComponentProvider)); - - // init TurboModule - for (const auto &moduleName : turboModuleManager->getEagerInitModuleNames()) { - turboModuleManager->getModule(moduleName); - } - }); - m_options.TurboModuleProvider->SetReactContext( winrt::make(Mso::Copy(m_reactContext))); - FireInstanceCreatedCallback(); + facebook::react::ReactInstance::JSRuntimeFlags options; + m_bridgelessReactInstance->initializeRuntime( + options, + [=, onCreated = m_options.OnInstanceCreated, reactContext = m_reactContext]( + facebook::jsi::Runtime &runtime) { + auto logger = [loggingHook = GetLoggingCallback()]( + const std::string &message, unsigned int logLevel) { + if (loggingHook) + loggingHook(static_cast(logLevel), message.c_str()); + }; + facebook::react::bindNativeLogger(runtime, logger); + + auto turboModuleManager = std::make_shared( + m_options.TurboModuleProvider, + std::make_shared( + m_bridgelessReactInstance->getRuntimeScheduler())); + + auto binding = + [turboModuleManager](const std::string &name) -> std::shared_ptr { + return turboModuleManager->getModule(name); + }; + + // Use a legacy native module binding that always returns null + // This means that calls to NativeModules.XXX will always return null, rather than crashing on access + auto legacyNativeModuleBinding = + [](const std::string & /*name*/) -> std::shared_ptr { + return nullptr; + }; + + facebook::react::TurboModuleBinding::install( + runtime, + std::function(binding), + std::function(legacyNativeModuleBinding), + m_options.TurboModuleProvider->LongLivedObjectCollection()); + + auto componentDescriptorRegistry = + Microsoft::ReactNative::WindowsComponentDescriptorRegistry::FromProperties( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_options.Properties)); + auto hasComponentProvider = [componentDescriptorRegistry](const std::string &name) -> bool { + return componentDescriptorRegistry->hasComponentProvider( + facebook::react::componentNameByReactViewName(name)); + }; + facebook::react::bindHasComponentProvider(runtime, std::move(hasComponentProvider)); + + // init TurboModule + for (const auto &moduleName : turboModuleManager->getEagerInitModuleNames()) { + turboModuleManager->getModule(moduleName); + } + + if (onCreated) { + onCreated.Get()->Invoke(reactContext); + } + }); LoadJSBundlesBridgeless(devSettings); SetupHMRClient(); @@ -1079,6 +1087,7 @@ Mso::Future ReactInstanceWin::Destroy() noexcept { #ifdef USE_FABRIC if (m_bridgelessReactInstance) { + auto jsDispatchQueue = m_jsDispatchQueue.Exchange(nullptr); if (auto jsMessageThread = m_jsMessageThread.Exchange(nullptr)) { jsMessageThread->runOnQueueSync([&]() noexcept { { @@ -1090,9 +1099,12 @@ Mso::Future ReactInstanceWin::Destroy() noexcept { } this->m_bridgelessReactInstance = nullptr; jsMessageThread->quitSynchronous(); + if (jsDispatchQueue) { + jsDispatchQueue.Shutdown(PendingTaskAction::Complete); + } + m_whenDestroyed.SetValue(); }); } - m_jsDispatchQueue.Exchange(nullptr); } #endif diff --git a/vnext/Microsoft.ReactNative/SynchronousEventBeat.cpp b/vnext/Microsoft.ReactNative/SynchronousEventBeat.cpp deleted file mode 100644 index f00e05975f1..00000000000 --- a/vnext/Microsoft.ReactNative/SynchronousEventBeat.cpp +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include "SynchronousEventBeat.h" - -namespace Microsoft::ReactNative { - -SynchronousEventBeat::SynchronousEventBeat( - std::shared_ptr const ownerBox, - const winrt::Microsoft::ReactNative::ReactContext &context, - facebook::react::RuntimeExecutor runtimeExecutor, - std::shared_ptr runtimeScheduler) - : EventBeat(ownerBox, *runtimeScheduler), - m_context(context), - m_runtimeExecutor(runtimeExecutor), - m_runtimeScheduler(std::move(runtimeScheduler)) {} - -void SynchronousEventBeat::beat(facebook::jsi::Runtime &runtime) const { - if (!this->isEventBeatRequested_) { - return; - } - isEventBeatRequested_ = false; - if (beatCallback_) { - beatCallback_(runtime); - } -} - -void SynchronousEventBeat::induce() const { - if (!isEventBeatRequested_) { - return; - } - - if (m_context.JSDispatcher().HasThreadAccess()) { - lockExecutorAndBeat(); - } -} - -void SynchronousEventBeat::lockExecutorAndBeat() const { - if (!this->isEventBeatRequested_) { - return; - } - - if (m_runtimeScheduler) { - m_runtimeScheduler->executeNowOnTheSameThread([this](facebook::jsi::Runtime &runtime) { beat(runtime); }); - } else { - facebook::react::executeSynchronouslyOnSameThread_CAN_DEADLOCK( - m_runtimeExecutor, [this](facebook::jsi::Runtime &runtime) { beat(runtime); }); - } -} - -} // namespace Microsoft::ReactNative diff --git a/vnext/Microsoft.ReactNative/SynchronousEventBeat.h b/vnext/Microsoft.ReactNative/SynchronousEventBeat.h deleted file mode 100644 index a34620b80bb..00000000000 --- a/vnext/Microsoft.ReactNative/SynchronousEventBeat.h +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include -#include -#include -#include - -namespace Microsoft::ReactNative { - -class SynchronousEventBeat final : public facebook::react::EventBeat { - public: - SynchronousEventBeat( - std::shared_ptr const ownerBox, - const winrt::Microsoft::ReactNative::ReactContext &context, - facebook::react::RuntimeExecutor runtimeExecutor, - std::shared_ptr runtimeScheduler); - - void beat(facebook::jsi::Runtime &runtime) const; - - void induce() const; - - void lockExecutorAndBeat() const; - - private: - winrt::Microsoft::ReactNative::ReactContext m_context; - facebook::react::RuntimeExecutor m_runtimeExecutor; - std::shared_ptr m_runtimeScheduler; -}; - -} // namespace Microsoft::ReactNative diff --git a/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp b/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp index b45e48f87ea..acc9939159e 100644 --- a/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +++ b/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp @@ -54,38 +54,45 @@ std::string GetBundleFromEmbeddedResource(const winrt::Windows::Foundation::Uri } std::future LocalBundleReader::LoadBundleAsync(const std::wstring bundleUri) { - co_await winrt::resume_background(); - - winrt::Windows::Storage::StorageFile file{nullptr}; - - // Supports "ms-appx://" or "ms-appdata://" - if (bundleUri.starts_with(L"ms-app")) { - winrt::Windows::Foundation::Uri uri(bundleUri); - file = co_await winrt::Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(uri); - } else if (bundleUri.starts_with(L"resource://")) { - winrt::Windows::Foundation::Uri uri(bundleUri); - co_return GetBundleFromEmbeddedResource(uri); - } else { - file = co_await winrt::Windows::Storage::StorageFile::GetFileFromPathAsync(bundleUri); + try { + co_await winrt::resume_background(); + + winrt::Windows::Storage::StorageFile file{nullptr}; + + // Supports "ms-appx://" or "ms-appdata://" + if (bundleUri.starts_with(L"ms-app")) { + winrt::Windows::Foundation::Uri uri(bundleUri); + file = co_await winrt::Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(uri); + } else if (bundleUri.starts_with(L"resource://")) { + winrt::Windows::Foundation::Uri uri(bundleUri); + co_return GetBundleFromEmbeddedResource(uri); + } else { + file = co_await winrt::Windows::Storage::StorageFile::GetFileFromPathAsync(bundleUri); + } + + // Read the buffer manually to avoid a Utf8 -> Utf16 -> Utf8 encoding + // roundtrip. + auto fileBuffer{co_await winrt::Windows::Storage::FileIO::ReadBufferAsync(file)}; + auto dataReader{winrt::Windows::Storage::Streams::DataReader::FromBuffer(fileBuffer)}; + + // No need to use length + 1, STL guarantees that string storage is null-terminated. + std::string script(fileBuffer.Length(), '\0'); + + // Construct the array_view to slice into the first fileBuffer.Length bytes. + // DataReader.ReadBytes will read as many bytes as are present in the + // array_view. The backing string has fileBuffer.Length() + 1 bytes, without + // an explicit end it will read 1 byte to many and throw. + dataReader.ReadBytes(winrt::array_view{ + reinterpret_cast(&script[0]), reinterpret_cast(&script[script.length()])}); + dataReader.Close(); + + co_return script; + } + // RuntimeScheduler only handles std::exception or jsi::JSError + catch (winrt::hresult_error const& e) + { + throw std::exception(winrt::to_string(e.message()).c_str()); } - - // Read the buffer manually to avoid a Utf8 -> Utf16 -> Utf8 encoding - // roundtrip. - auto fileBuffer{co_await winrt::Windows::Storage::FileIO::ReadBufferAsync(file)}; - auto dataReader{winrt::Windows::Storage::Streams::DataReader::FromBuffer(fileBuffer)}; - - // No need to use length + 1, STL guarantees that string storage is null-terminated. - std::string script(fileBuffer.Length(), '\0'); - - // Construct the array_view to slice into the first fileBuffer.Length bytes. - // DataReader.ReadBytes will read as many bytes as are present in the - // array_view. The backing string has fileBuffer.Length() + 1 bytes, without - // an explicit end it will read 1 byte to many and throw. - dataReader.ReadBytes(winrt::array_view{ - reinterpret_cast(&script[0]), reinterpret_cast(&script[script.length()])}); - dataReader.Close(); - - co_return script; } std::string LocalBundleReader::LoadBundle(const std::wstring &bundlePath) { diff --git a/vnext/Shared/Shared.vcxitems b/vnext/Shared/Shared.vcxitems index 5641b959908..3107d11bd4f 100644 --- a/vnext/Shared/Shared.vcxitems +++ b/vnext/Shared/Shared.vcxitems @@ -228,9 +228,6 @@ true - - - true true diff --git a/vnext/Shared/Shared.vcxitems.filters b/vnext/Shared/Shared.vcxitems.filters index 268f2b929ed..9430e0891be 100644 --- a/vnext/Shared/Shared.vcxitems.filters +++ b/vnext/Shared/Shared.vcxitems.filters @@ -283,7 +283,6 @@ Source Files\Modules - diff --git a/vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp b/vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp new file mode 100644 index 00000000000..057beb22bbe --- /dev/null +++ b/vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp @@ -0,0 +1,1593 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +#include "ReactInstanceWin.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "BaseScriptStoreImpl.h" +#include "ChakraRuntimeHolder.h" +#include "CrashManager.h" +#include "DevMenu.h" +#include "DynamicWriter.h" +#include "HermesRuntimeHolder.h" +#include "IReactContext.h" +#include "IReactDispatcher.h" +#include "IReactNotificationService.h" +#include "JSI/JSExecutorFactorySettings.h" +#include "JsiApi.h" +#include "Modules/DevSettingsModule.h" +#include "Modules/ExceptionsManager.h" +#include "Modules/PlatformConstantsWinModule.h" +#include "Modules/ReactRootViewTagGenerator.h" +#include "Modules/SampleTurboModule.h" +#include "Modules/SourceCode.h" +#include "Modules/StatusBarManager.h" +#include "Modules/Timing.h" +#include "MoveOnCopy.h" +#include "MsoUtils.h" +#include "NativeModules.h" +#include "NativeModulesProvider.h" +#include "ReactCoreInjection.h" +#include "ReactErrorProvider.h" +#include "RedBox.h" +#include "Unicode.h" + +#ifdef USE_FABRIC +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if !defined(CORE_ABI) && !defined(USE_FABRIC) +#include +#include +#include "Modules/NativeUIManager.h" +#include "Modules/PaperUIManagerModule.h" +#endif + +#ifndef CORE_ABI +#include +#include +#include "ConfigureBundlerDlg.h" +#include "Modules/AccessibilityInfoModule.h" +#include "Modules/AlertModule.h" +#include "Modules/AppStateModule.h" +#include "Modules/AppThemeModuleUwp.h" +#include "Modules/ClipboardModule.h" +#include "Modules/DeviceInfoModule.h" +#include "Modules/I18nManagerModule.h" +#include "Modules/LinkingManagerModule.h" +#include "Modules/LogBoxModule.h" +#else +#include "Modules/DesktopTimingModule.h" +#endif +#include "Modules/ExceptionsManager.h" +#include "Modules/PlatformConstantsWinModule.h" +#include "Modules/ReactRootViewTagGenerator.h" +#include "Modules/SourceCode.h" +#include "Modules/StatusBarManager.h" + +#if !defined(CORE_ABI) || defined(USE_FABRIC) +#include +#include "Modules/Animated/NativeAnimatedModule.h" +#endif + +#if defined(USE_V8) +#include "JSI/V8RuntimeHolder.h" +#include "V8JSIRuntimeHolder.h" +#endif // USE_V8 + +namespace Microsoft::ReactNative { + +void AddStandardViewManagers( + std::vector> &viewManagers, + const Mso::React::IReactContext &context) noexcept; + +std::shared_ptr CreateUIManager2( + Mso::React::IReactContext *context, + std::vector &&viewManagers) noexcept; + +} // namespace Microsoft::ReactNative + +using namespace winrt::Microsoft::ReactNative; + +namespace Mso::React { + +//============================================================================================= +// LoadedCallbackGuard ensures that the OnReactInstanceLoaded is always called. +// It calls OnReactInstanceLoaded in destructor with a cancellation error. +// If loading was previously succeeded this call with an error code is ignored. +//============================================================================================= + +struct LoadedCallbackGuard { + LoadedCallbackGuard(ReactInstanceWin &reactInstance) noexcept : m_reactInstance{&reactInstance} {} + + LoadedCallbackGuard(const LoadedCallbackGuard &other) = delete; + LoadedCallbackGuard &operator=(const LoadedCallbackGuard &other) = delete; + + LoadedCallbackGuard(LoadedCallbackGuard &&other) = default; + LoadedCallbackGuard &operator=(LoadedCallbackGuard &&other) = default; + + ~LoadedCallbackGuard() noexcept { + if (m_reactInstance) { + m_reactInstance->OnReactInstanceLoaded(Mso::CancellationErrorProvider().MakeErrorCode(true)); + } + } + + private: + Mso::CntPtr m_reactInstance; +}; + +struct BridgeUIBatchInstanceCallback final : public facebook::react::InstanceCallback { + BridgeUIBatchInstanceCallback(Mso::WeakPtr wkInstance) : m_wkInstance(wkInstance) {} + virtual ~BridgeUIBatchInstanceCallback() = default; + void onBatchComplete() override { + if (auto instance = m_wkInstance.GetStrongPtr()) { + auto state = instance->State(); + if (state != ReactInstanceState::HasError && state != ReactInstanceState::Unloaded) { + if (instance->UseWebDebugger()) { + // While using a CxxModule for UIManager (which we do when running under webdebugger) + // We need to post the batch complete to the NativeQueue to ensure that the UIManager + // has posted everything from this batch into its queue before we complete the batch. + instance->m_jsDispatchQueue.Load().Post([wkInstance = m_wkInstance]() { + if (auto instance = wkInstance.GetStrongPtr()) { + instance->m_batchingUIThread->runOnQueue([wkInstance]() { + if (auto instance = wkInstance.GetStrongPtr()) { + auto propBag = ReactPropertyBag(instance->m_reactContext->Properties()); + if (auto callback = propBag.Get(winrt::Microsoft::ReactNative::implementation::ReactCoreInjection:: + UIBatchCompleteCallbackProperty())) { + (*callback)(instance->m_reactContext->Properties()); + } +#if !defined(CORE_ABI) && !defined(USE_FABRIC) + if (auto uiManager = Microsoft::ReactNative::GetNativeUIManager(*instance->m_reactContext).lock()) { + uiManager->onBatchComplete(); + } +#endif + } + }); + + // For UWP we use a batching message queue to optimize the usage + // of the CoreDispatcher. Win32 already has an optimized queue. + facebook::react::BatchingMessageQueueThread *batchingUIThread = + static_cast(instance->m_batchingUIThread.get()); + if (batchingUIThread != nullptr) { + batchingUIThread->onBatchComplete(); + } + } + }); + } else { + instance->m_batchingUIThread->runOnQueue([wkInstance = m_wkInstance]() { + if (auto instance = wkInstance.GetStrongPtr()) { + auto propBag = ReactPropertyBag(instance->m_reactContext->Properties()); + if (auto callback = propBag.Get(winrt::Microsoft::ReactNative::implementation::ReactCoreInjection:: + UIBatchCompleteCallbackProperty())) { + (*callback)(instance->m_reactContext->Properties()); + } +#if !defined(CORE_ABI) && !defined(USE_FABRIC) + if (auto uiManager = Microsoft::ReactNative::GetNativeUIManager(*instance->m_reactContext).lock()) { + uiManager->onBatchComplete(); + } +#endif + } + }); + // For UWP we use a batching message queue to optimize the usage + // of the CoreDispatcher. Win32 already has an optimized queue. + facebook::react::BatchingMessageQueueThread *batchingUIThread = + static_cast(instance->m_batchingUIThread.get()); + if (batchingUIThread != nullptr) { + batchingUIThread->onBatchComplete(); + } + } + } + } + } + void incrementPendingJSCalls() override {} + void decrementPendingJSCalls() override {} + + Mso::WeakPtr m_wkInstance; + Mso::CntPtr m_context; + std::weak_ptr m_uiThread; +}; + +//============================================================================================= +// ReactInstanceWin implementation +//============================================================================================= + +/*static*/ std::mutex ReactInstanceWin::s_registryMutex; +/*static*/ std::vector ReactInstanceWin::s_instanceRegistry; + +ReactInstanceWin::ReactInstanceWin( + IReactHost &reactHost, + ReactOptions const &options, + Mso::Promise &&whenCreated, + Mso::Promise &&whenLoaded, + Mso::VoidFunctor &&updateUI) noexcept + : Super{reactHost.NativeQueue()}, + m_weakReactHost{&reactHost}, + m_options{options}, + m_whenCreated{std::move(whenCreated)}, + m_isFastReloadEnabled(options.UseFastRefresh()), + m_isLiveReloadEnabled(options.UseLiveReload()), + m_updateUI{std::move(updateUI)}, + m_useWebDebugger(options.UseWebDebugger()), + m_useDirectDebugger(options.UseDirectDebugger()), + m_debuggerBreakOnNextLine(options.DebuggerBreakOnNextLine()), + m_reactContext{Mso::Make( + this, + options.Properties, + winrt::make(options.Notifications))} { + // As soon as the bundle is loaded or failed to load, we set the m_whenLoaded promise value in JS queue. + // It then synchronously raises the OnInstanceLoaded event in the JS queue. + // Then, we notify the ReactHost about the load event in the internal queue. + m_whenLoaded.AsFuture() + .Then( + [onLoaded = m_options.OnInstanceLoaded, reactContext = m_reactContext](Mso::Maybe &&value) noexcept { + auto errCode = value.IsError() ? value.TakeError() : Mso::ErrorCode(); + if (onLoaded) { + onLoaded.Get()->Invoke(reactContext, errCode); + } + return Mso::Maybe(errCode); + }) + .Then(Queue(), [whenLoaded = std::move(whenLoaded)](Mso::Maybe &&value) noexcept { + whenLoaded.SetValue(std::move(value)); + }); + + // When the JS queue is shutdown, we set the m_whenDestroyed promise value as the last work item in the JS queue. + // No JS queue work can be done after that for the instance. + // The promise continuation synchronously calls the OnInstanceDestroyed event. + // Then, the Destroy() method returns the m_whenDestroyedResult future to ReactHost to handle instance destruction. + m_whenDestroyedResult = + m_whenDestroyed.AsFuture().Then([whenLoaded = m_whenLoaded, + onDestroyed = m_options.OnInstanceDestroyed, + // If the ReactHost has been released, this + // instance might be the only thing keeping + // the propertyBag alive. + // We want it to remain alive for the + // InstanceDestroyed callbacks + propBag = m_options.Properties, + reactContext = m_reactContext]() noexcept { + whenLoaded.TryCancel(); // It only has an effect if whenLoaded was not set before + Microsoft::ReactNative::HermesRuntimeHolder::storeTo(ReactPropertyBag(reactContext->Properties()), nullptr); + if (onDestroyed) { + onDestroyed.Get()->Invoke(reactContext); + } + }); + + // We notify the ReactHost immediately that the instance is created, but the + // OnInstanceCreated event is raised only after the internal react-native instance is ready and + // it starts handling JS queue work items. + m_whenCreated.SetValue(); + + if (m_options.EnableDefaultCrashHandler()) { + CrashManager::RegisterCustomHandler(); + } + + { + std::scoped_lock lock{s_registryMutex}; + s_instanceRegistry.push_back(this); + } +} + +ReactInstanceWin::~ReactInstanceWin() noexcept { + std::scoped_lock lock{s_registryMutex}; + auto it = std::find(s_instanceRegistry.begin(), s_instanceRegistry.end(), this); + if (it != s_instanceRegistry.end()) { + s_instanceRegistry.erase(it); + } + + if (m_options.EnableDefaultCrashHandler()) { + CrashManager::UnregisterCustomHandler(); + } +} + +void ReactInstanceWin::InstanceCrashHandler(int fileDescriptor) noexcept { + if (!m_options.EnableDefaultCrashHandler()) { + return; + } + + if (m_jsiRuntimeHolder) { + m_jsiRuntimeHolder->crashHandler(fileDescriptor); + } + + // record additional information that could be useful for debugging crash dumps here + // (perhaps properties and settings or clues about the react tree) +} + +/*static*/ void ReactInstanceWin::CrashHandler(int fileDescriptor) noexcept { + std::scoped_lock lock{s_registryMutex}; + for (auto &entry : s_instanceRegistry) { + entry->InstanceCrashHandler(fileDescriptor); + } +} + +void ReactInstanceWin::LoadModules( + const std::shared_ptr &devSettings, + const std::shared_ptr &nativeModulesProvider, + const std::shared_ptr &turboModulesProvider) noexcept { + auto registerTurboModule = [this, &nativeModulesProvider, &turboModulesProvider]( + const wchar_t *name, const ReactModuleProvider &provider) noexcept { + if (m_options.UseWebDebugger()) { + nativeModulesProvider->AddModuleProvider(name, provider); + } else { + turboModulesProvider->AddModuleProvider(name, provider, false); + } + }; + +#ifdef USE_FABRIC + if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { + registerTurboModule( + L"FabricUIManagerBinding", + winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::FabricUIManager>()); + } +#endif + +#if !defined(CORE_ABI) && !defined(USE_FABRIC) + registerTurboModule( + L"UIManager", + // TODO: Use MakeTurboModuleProvider after it satisfies ReactNativeSpecs::UIManagerSpec + winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::UIManager>()); +#endif + +#ifndef CORE_ABI + registerTurboModule( + L"AccessibilityInfo", + winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::AccessibilityInfo>()); + + registerTurboModule( + L"Alert", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::Alert>()); + + registerTurboModule( + L"Appearance", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::Appearance>()); + + registerTurboModule( + L"AppState", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::AppState>()); + + registerTurboModule( + L"AppTheme", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::AppTheme>()); + + registerTurboModule( + L"LogBox", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::LogBox>()); + + registerTurboModule( + L"Clipboard", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::Clipboard>()); + + registerTurboModule( + L"DeviceInfo", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::DeviceInfo>()); + + registerTurboModule( + L"ImageLoader", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ImageLoader>()); + + registerTurboModule( + L"NativeAnimatedModule", + winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::NativeAnimatedModule>()); + +#elif defined(CORE_ABI) && defined(USE_FABRIC) + if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { + registerTurboModule( + L"ImageLoader", + winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ImageLoader>()); + + registerTurboModule( + L"NativeAnimatedModule", + winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::NativeAnimatedModule>()); + } +#endif + + if (!m_options.UseWebDebugger()) { + turboModulesProvider->AddModuleProvider( + L"SampleTurboModule", + winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::SampleTurboModule>(), + false); + } + + if (devSettings->useTurboModulesOnly) { + ::Microsoft::ReactNative::ExceptionsManager::SetRedBoxHander( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), m_redboxHandler); + registerTurboModule( + L"ExceptionsManager", + winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ExceptionsManager>()); + + registerTurboModule( + L"StatusBarManager", + winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::StatusBarManager>()); + + registerTurboModule( + L"PlatformConstants", + winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::PlatformConstants>()); + uint32_t hermesBytecodeVersion = 0; +#if defined(USE_HERMES) && defined(ENABLE_DEVSERVER_HBCBUNDLES) + hermesBytecodeVersion = ::hermes::hbc::BYTECODE_VERSION; +#endif + + std::string bundleUrl = (devSettings->useWebDebugger || devSettings->liveReloadCallback) + ? facebook::react::DevServerHelper::get_BundleUrl( + devSettings->sourceBundleHost, + devSettings->sourceBundlePort, + devSettings->debugBundlePath, + devSettings->platformName, + devSettings->bundleAppId, + devSettings->devBundle, + devSettings->useFastRefresh, + devSettings->inlineSourceMap, + hermesBytecodeVersion) + : devSettings->bundleRootPath; + ::Microsoft::ReactNative::SourceCode::SetScriptUrl( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), bundleUrl); + + registerTurboModule( + L"SourceCode", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::SourceCode>()); + } + + registerTurboModule( + L"DevSettings", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::DevSettings>()); + +#ifndef CORE_ABI + registerTurboModule( + L"I18nManager", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::I18nManager>()); + + registerTurboModule( + L"LinkingManager", + winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::LinkingManager>()); + + registerTurboModule(L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::Timing>()); +#else + +#if defined(USE_FABRIC) + if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { + registerTurboModule( + L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::Timing>()); + } else +#endif + { + registerTurboModule(L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::facebook::react::Timing>()); + } +#endif + + registerTurboModule( + ::Microsoft::React::GetWebSocketTurboModuleName(), ::Microsoft::React::GetWebSocketModuleProvider()); + + if (!Microsoft::React::GetRuntimeOptionBool("Blob.DisableModule")) { + registerTurboModule(::Microsoft::React::GetHttpTurboModuleName(), ::Microsoft::React::GetHttpModuleProvider()); + + registerTurboModule(::Microsoft::React::GetBlobTurboModuleName(), ::Microsoft::React::GetBlobModuleProvider()); + + registerTurboModule( + ::Microsoft::React::GetFileReaderTurboModuleName(), ::Microsoft::React::GetFileReaderModuleProvider()); + } +} + +//! Initialize() is called from the native queue. +void ReactInstanceWin::Initialize() noexcept { +#ifdef USE_FABRIC + if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { + InitializeBridgeless(); + } else +#endif + { + InitializeWithBridge(); + } +} + +void ReactInstanceWin::InitDevMenu() noexcept { + Microsoft::ReactNative::DevMenuManager::InitDevMenu(m_reactContext, [weakReactHost = m_weakReactHost]() noexcept { +#if !defined(CORE_ABI) && !defined(USE_FABRIC) + Microsoft::ReactNative::ShowConfigureBundlerDialog(weakReactHost); +#endif // CORE_ABI + }); +} + +void ReactInstanceWin::InitUIDependentCalls() noexcept { +#ifndef CORE_ABI + Microsoft::ReactNative::AppThemeHolder::InitAppThemeHolder(GetReactContext()); + Microsoft::ReactNative::I18nManager::InitI18nInfo( + winrt::Microsoft::ReactNative::ReactPropertyBag(Options().Properties)); + Microsoft::ReactNative::Appearance::InitOnUIThread(GetReactContext()); + Microsoft::ReactNative::DeviceInfoHolder::InitDeviceInfoHolder(GetReactContext()); +#endif // CORE_ABI +} + +std::shared_ptr ReactInstanceWin::CreateDevSettings() noexcept { + auto devSettings = std::make_shared(); + devSettings->useJITCompilation = m_options.EnableJITCompilation; + devSettings->sourceBundleHost = SourceBundleHost(); + devSettings->sourceBundlePort = SourceBundlePort(); + devSettings->inlineSourceMap = RequestInlineSourceMap(); + devSettings->debugBundlePath = DebugBundlePath(); + devSettings->liveReloadCallback = GetLiveReloadCallback(); + devSettings->errorCallback = GetErrorCallback(); + devSettings->loggingCallback = GetLoggingCallback(); + m_redboxHandler = devSettings->redboxHandler = std::move(GetRedBoxHandler()); + devSettings->useDirectDebugger = m_useDirectDebugger; + devSettings->debuggerBreakOnNextLine = m_debuggerBreakOnNextLine; + devSettings->debuggerPort = m_options.DeveloperSettings.DebuggerPort; + devSettings->debuggerRuntimeName = m_options.DeveloperSettings.DebuggerRuntimeName; + devSettings->useWebDebugger = m_useWebDebugger; + devSettings->useFastRefresh = m_isFastReloadEnabled; + devSettings->bundleRootPath = BundleRootPath(); + devSettings->platformName = + winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::GetPlatformName(m_reactContext->Properties()); + devSettings->waitingForDebuggerCallback = GetWaitingForDebuggerCallback(); + devSettings->debuggerAttachCallback = GetDebuggerAttachCallback(); + devSettings->enableDefaultCrashHandler = m_options.EnableDefaultCrashHandler(); + devSettings->bundleAppId = BundleAppId(); + devSettings->devBundle = RequestDevBundle(); + devSettings->showDevMenuCallback = [weakThis = Mso::WeakPtr{this}]() noexcept { + if (auto strongThis = weakThis.GetStrongPtr()) { + strongThis->m_uiQueue->Post( + [context = strongThis->m_reactContext]() { Microsoft::ReactNative::DevMenuManager::Show(context); }); + } + }; + + bool useRuntimeScheduler = winrt::Microsoft::ReactNative::implementation::QuirkSettings::GetUseRuntimeScheduler( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties())); + + devSettings->useRuntimeScheduler = useRuntimeScheduler; + + return devSettings; +} + +Mso::DispatchQueueSettings CreateDispatchQueueSettings( + const winrt::Microsoft::ReactNative::IReactNotificationService &service) { + Mso::DispatchQueueSettings queueSettings{}; + queueSettings.TaskStarting = [service](Mso::DispatchQueue const &) noexcept { + service.SendNotification( + winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherTaskStartingEventName(), nullptr, nullptr); + }; + queueSettings.IdleWaitStarting = [service](Mso::DispatchQueue const &) noexcept { + service.SendNotification( + winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherIdleWaitStartingEventName(), + nullptr, + nullptr); + }; + queueSettings.IdleWaitCompleted = [service](Mso::DispatchQueue const &) noexcept { + service.SendNotification( + winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherIdleWaitCompletedEventName(), + nullptr, + nullptr); + }; + return queueSettings; +} + +std::unique_ptr CreatePreparedScriptStore() noexcept { + std::unique_ptr preparedScriptStore = nullptr; + wchar_t tempPath[MAX_PATH]; + if (GetTempPathW(static_cast(std::size(tempPath)), tempPath)) { + preparedScriptStore = std::make_unique(winrt::to_string(tempPath)); + } + return preparedScriptStore; +} + +#ifdef USE_FABRIC + +typedef HRESULT(__stdcall *SetThreadDescriptionFn)(HANDLE, PCWSTR); +void SetJSThreadDescription() noexcept { + // Office still supports Server 2016 so we need to use Run Time Dynamic Linking and cannot just use: + // ::SetThreadDescription(GetCurrentThread(), L"React-Native JavaScript Thread"); + + auto moduleHandle = GetModuleHandleW(L"kernelbase.dll"); + // The description is just for developer experience, so we can skip it if kernelbase isn't already loaded + if (!moduleHandle) + return; + + auto proc = GetProcAddress(moduleHandle, "SetThreadDescription"); + if (!proc) + return; + + reinterpret_cast(proc)(GetCurrentThread(), L"React-Native JavaScript Thread"); +} + +void ReactInstanceWin::InitializeBridgeless() noexcept { + InitUIQueue(); + + m_uiMessageThread.Exchange(std::make_shared( + *m_uiQueue, Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); + + ReactPropertyBag(m_reactContext->Properties()) + .Set( + winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::PostToUIBatchingQueueProperty(), + [wkBatchingUIThread = std::weak_ptr(m_uiMessageThread.Load())]( + winrt::Microsoft::ReactNative::ReactDispatcherCallback const &callback) { + if (auto batchingUIThread = wkBatchingUIThread.lock()) { + batchingUIThread->runOnQueue(callback); + } + }); + + InitDevMenu(); + winrt::Microsoft::ReactNative::Composition::implementation::UriImageManager::Install( + ReactPropertyBag(m_reactContext->Properties()), m_options.UriImageManager); + + m_uiQueue->Post([this, weakThis = Mso::WeakPtr{this}]() noexcept { + // Objects that must be created on the UI thread + if (auto strongThis = weakThis.GetStrongPtr()) { + InitUIDependentCalls(); + + strongThis->Queue().Post([this, weakThis]() noexcept { + if (auto strongThis = weakThis.GetStrongPtr()) { + auto devSettings = strongThis->CreateDevSettings(); + devSettings->useTurboModulesOnly = true; + + try { + if (devSettings->useFastRefresh || devSettings->liveReloadCallback) { + Microsoft::ReactNative::PackagerConnection::CreateOrReusePackagerConnection(*devSettings); + } + // null moduleProvider since native modules are not supported in bridgeless + LoadModules(devSettings, nullptr, m_options.TurboModuleProvider); + + auto jsDispatchQueue = + Mso::DispatchQueue::MakeLooperQueue(CreateDispatchQueueSettings(m_reactContext->Notifications())); + auto jsDispatcher = + winrt::make(Mso::Copy(jsDispatchQueue)); + m_options.Properties.Set(ReactDispatcherHelper::JSDispatcherProperty(), jsDispatcher); + m_jsMessageThread.Exchange(std::make_shared( + jsDispatchQueue, Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); + + m_jsDispatchQueue.Exchange(std::move(jsDispatchQueue)); + + m_jsMessageThread.Load()->runOnQueueSync([&]() { + SetJSThreadDescription(); + auto timerRegistry = + ::Microsoft::ReactNative::TimerRegistry::CreateTimerRegistry(m_reactContext->Properties()); + auto timerRegistryRaw = timerRegistry.get(); + + auto timerManager = std::make_shared(std::move(timerRegistry)); + timerRegistryRaw->setTimerManager(timerManager); + + auto jsErrorHandlingFunc = [this]( + facebook::jsi::Runtime &runtime, + const facebook::react::JsErrorHandler::ProcessedError &error) noexcept { + OnJSError(runtime, std::move(error)); + }; + + if (devSettings->useDirectDebugger) { + ::Microsoft::ReactNative::GetSharedDevManager()->EnsureHermesInspector( + devSettings->sourceBundleHost, devSettings->sourceBundlePort); + } + + m_jsiRuntimeHolder = std::make_shared( + devSettings, m_jsMessageThread.Load(), CreatePreparedScriptStore()); + auto jsRuntime = std::make_unique(m_jsiRuntimeHolder); + jsRuntime->getRuntime(); + m_bridgelessReactInstance = std::make_unique( + std::move(jsRuntime), m_jsMessageThread.Load(), timerManager, jsErrorHandlingFunc); + + auto bufferedRuntimeExecutor = m_bridgelessReactInstance->getBufferedRuntimeExecutor(); + timerManager->setRuntimeExecutor(bufferedRuntimeExecutor); + + Microsoft::ReactNative::SchedulerSettings::SetRuntimeScheduler( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_options.Properties), + m_bridgelessReactInstance->getRuntimeScheduler()); + }); + + m_options.TurboModuleProvider->SetReactContext( + winrt::make(Mso::Copy(m_reactContext))); + + facebook::react::ReactInstance::JSRuntimeFlags options; + m_bridgelessReactInstance->initializeRuntime( + options, + [=, onCreated = m_options.OnInstanceCreated, reactContext = m_reactContext]( + facebook::jsi::Runtime &runtime) { + auto logger = [loggingHook = GetLoggingCallback()]( + const std::string &message, unsigned int logLevel) { + if (loggingHook) + loggingHook(static_cast(logLevel), message.c_str()); + }; + facebook::react::bindNativeLogger(runtime, logger); + + auto turboModuleManager = std::make_shared( + m_options.TurboModuleProvider, + std::make_shared( + m_bridgelessReactInstance->getRuntimeScheduler())); + + auto binding = + [turboModuleManager](const std::string &name) -> std::shared_ptr { + return turboModuleManager->getModule(name); + }; + + // Use a legacy native module binding that always returns null + // This means that calls to NativeModules.XXX will always return null, rather than crashing on access + auto legacyNativeModuleBinding = + [](const std::string & /*name*/) -> std::shared_ptr { + return nullptr; + }; + + facebook::react::TurboModuleBinding::install( + runtime, + std::function(binding), + std::function(legacyNativeModuleBinding), + m_options.TurboModuleProvider->LongLivedObjectCollection()); + + auto componentDescriptorRegistry = + Microsoft::ReactNative::WindowsComponentDescriptorRegistry::FromProperties( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_options.Properties)); + auto hasComponentProvider = [componentDescriptorRegistry](const std::string &name) -> bool { + return componentDescriptorRegistry->hasComponentProvider( + facebook::react::componentNameByReactViewName(name)); + }; + facebook::react::bindHasComponentProvider(runtime, std::move(hasComponentProvider)); + + // init TurboModule + for (const auto &moduleName : turboModuleManager->getEagerInitModuleNames()) { + turboModuleManager->getModule(moduleName); + } + + if (onCreated) { + onCreated.Get()->Invoke(reactContext); + } + }); + + LoadJSBundlesBridgeless(devSettings); + SetupHMRClient(); + + } catch (std::exception &e) { + OnErrorWithMessage(e.what()); + OnErrorWithMessage("ReactInstanceWin: Failed to create React Instance."); + } catch (winrt::hresult_error const &e) { + OnErrorWithMessage(Microsoft::Common::Unicode::Utf16ToUtf8(e.message().c_str(), e.message().size())); + OnErrorWithMessage("ReactInstanceWin: Failed to create React Instance."); + } catch (...) { + OnErrorWithMessage("ReactInstanceWin: Failed to create React Instance."); + } + } + }); + } + }); +} +#endif + +void ReactInstanceWin::FireInstanceCreatedCallback() noexcept { + // The InstanceCreated event can be used to augment the JS environment for all JS code. So it needs to be + // triggered before any platform JS code is run. Using m_jsMessageThread instead of jsDispatchQueue avoids + // waiting for the JSCaller which can delay the event until after certain JS code has already run + m_jsMessageThread.Load()->runOnQueue( + [onCreated = m_options.OnInstanceCreated, reactContext = m_reactContext]() noexcept { + if (onCreated) { + onCreated.Get()->Invoke(reactContext); + } + }); +} + +void ReactInstanceWin::InitializeWithBridge() noexcept { + InitJSMessageThread(); + InitNativeMessageThread(); + + InitUIQueue(); + InitUIMessageThread(); + +#if !defined(CORE_ABI) && !defined(USE_FABRIC) + // InitUIManager uses m_legacyReactInstance + InitUIManager(); +#endif + + InitDevMenu(); +#ifdef USE_FABRIC + winrt::Microsoft::ReactNative::Composition::implementation::UriImageManager::Install( + ReactPropertyBag(m_reactContext->Properties()), m_options.UriImageManager); +#endif + + m_uiQueue->Post([this, weakThis = Mso::WeakPtr{this}]() noexcept { + // Objects that must be created on the UI thread + if (auto strongThis = weakThis.GetStrongPtr()) { + InitUIDependentCalls(); + strongThis->Queue().Post([this, weakThis]() noexcept { + if (auto strongThis = weakThis.GetStrongPtr()) { + auto devSettings = strongThis->CreateDevSettings(); + + auto getBoolProperty = [properties = ReactPropertyBag{m_options.Properties}]( + const wchar_t *ns, const wchar_t *name, bool defaultValue) noexcept -> bool { + ReactPropertyId propId{ns == nullptr ? ReactPropertyNamespace() : ReactPropertyNamespace(ns), name}; + std::optional propValue = properties.Get(propId); + return propValue.value_or(defaultValue); + }; + + devSettings->omitNetworkingCxxModules = getBoolProperty(nullptr, L"OmitNetworkingCxxModules", false); + devSettings->useWebSocketTurboModule = getBoolProperty(nullptr, L"UseWebSocketTurboModule", false); + devSettings->useTurboModulesOnly = getBoolProperty(L"DevSettings", L"UseTurboModulesOnly", false); + + std::vector cxxModules; + auto nmp = std::make_shared(); + + LoadModules(devSettings, nmp, m_options.TurboModuleProvider); + + auto modules = nmp->GetModules(m_reactContext, m_jsMessageThread.Load()); + cxxModules.insert( + cxxModules.end(), std::make_move_iterator(modules.begin()), std::make_move_iterator(modules.end())); + + if (m_options.ModuleProvider != nullptr) { + std::vector customCxxModules = + m_options.ModuleProvider->GetModules(m_reactContext, m_jsMessageThread.Load()); + cxxModules.insert(std::end(cxxModules), std::begin(customCxxModules), std::end(customCxxModules)); + } + + std::unique_ptr scriptStore = nullptr; + std::unique_ptr preparedScriptStore = nullptr; + + if (const auto jsExecutorFactoryDelegate = + Microsoft::JSI::JSExecutorFactorySettings::GetJSExecutorFactoryDelegate( + winrt::Microsoft::ReactNative::ReactPropertyBag(strongThis->Options().Properties))) { + devSettings->jsExecutorFactoryDelegate = jsExecutorFactoryDelegate; + if (m_options.JsiEngine() == JSIEngine::Hermes) { + devSettings->jsiEngineOverride = facebook::react::JSIEngineOverride::Hermes; + } + } else { + switch (m_options.JsiEngine()) { + case JSIEngine::Hermes: { + preparedScriptStore = CreatePreparedScriptStore(); + + auto hermesRuntimeHolder = std::make_shared( + devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore)); + Microsoft::ReactNative::HermesRuntimeHolder::storeTo( + ReactPropertyBag(m_reactContext->Properties()), hermesRuntimeHolder); + devSettings->jsiRuntimeHolder = hermesRuntimeHolder; + break; + } + case JSIEngine::V8: +#if defined(USE_V8) + { + preparedScriptStore = CreatePreparedScriptStore(); + bool enableMultiThreadSupport{false}; +#ifdef USE_FABRIC + enableMultiThreadSupport = Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties()); +#endif // USE_FABRIC + + if (m_options.JsiEngineV8NodeApi()) { + devSettings->jsiRuntimeHolder = std::make_shared( + devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore), enableMultiThreadSupport); + } else { + devSettings->jsiRuntimeHolder = std::make_shared( + devSettings, + m_jsMessageThread.Load(), + std::move(scriptStore), + std::move(preparedScriptStore), + enableMultiThreadSupport); + } + + break; + } +#endif // USE_V8 + case JSIEngine::Chakra: +#ifndef CORE_ABI + if (m_options.EnableByteCodeCaching || !m_options.ByteCodeFileUri.empty()) { + scriptStore = std::make_unique(); + preparedScriptStore = std::make_unique( + winrt::to_hstring(m_options.ByteCodeFileUri)); + } +#endif + devSettings->jsiRuntimeHolder = std::make_shared( + devSettings, m_jsMessageThread.Load(), std::move(scriptStore), std::move(preparedScriptStore)); + break; + } + } + + m_jsiRuntimeHolder = devSettings->jsiRuntimeHolder; + + try { + // We need to keep the instance wrapper alive as its destruction shuts down the native queue. + m_options.TurboModuleProvider->SetReactContext( + winrt::make(Mso::Copy(m_reactContext))); + + auto bundleRootPath = devSettings->bundleRootPath; + auto jsiRuntimeHolder = devSettings->jsiRuntimeHolder; + auto instanceWrapper = facebook::react::CreateReactInstance( + std::shared_ptr(strongThis->m_instance.Load()), + std::move(bundleRootPath), // bundleRootPath + std::move(cxxModules), + m_options.TurboModuleProvider, + m_options.TurboModuleProvider->LongLivedObjectCollection(), + m_reactContext->Properties(), + std::make_unique(weakThis), + m_jsMessageThread.Load(), + m_nativeMessageThread.Load(), + std::move(devSettings)); + + m_instanceWrapper.Exchange(std::move(instanceWrapper)); + + FireInstanceCreatedCallback(); + LoadJSBundles(); + SetupHMRClient(); + + } catch (std::exception &e) { + OnErrorWithMessage(e.what()); + OnErrorWithMessage("UwpReactInstance: Failed to create React Instance."); + } catch (winrt::hresult_error const &e) { + OnErrorWithMessage(Microsoft::Common::Unicode::Utf16ToUtf8(e.message().c_str(), e.message().size())); + OnErrorWithMessage("UwpReactInstance: Failed to create React Instance."); + } catch (...) { + OnErrorWithMessage("UwpReactInstance: Failed to create React Instance."); + } + } + }); + }; + }); +} + +void ReactInstanceWin::SetupHMRClient() noexcept { + if (UseDeveloperSupport() && State() != ReactInstanceState::HasError) { + folly::dynamic params = folly::dynamic::array( + winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::GetPlatformName( + m_reactContext->Properties()), + DebugBundlePath(), + SourceBundleHost(), + SourceBundlePort(), + m_isFastReloadEnabled, + "ws"); + CallJsFunction("HMRClient", "setup", std::move(params)); + } +} + +void ReactInstanceWin::LoadJSBundles() noexcept { + // + // We use m_jsMessageThread to load JS bundles synchronously. In that case we only load + // them if the m_jsMessageThread is not shut down (quitSynchronous() is not called). + // After the load we call OnReactInstanceLoaded callback on native queue. + // + // Note that the instance could be destroyed while we are loading JS Bundles. + // Though, the JS engine is not destroyed until this work item is not finished. + // Thus, we check the m_isDestroyed flag to see if we should do an early exit. + // Also, since we have to guarantee that the OnReactInstanceLoaded callback is called before + // the OnReactInstanceDestroyed callback, the OnReactInstanceLoaded is called right before the + // OnReactInstanceDestroyed callback in the Destroy() method. In that case any OnReactInstanceLoaded + // calls after we finish this JS message queue work item is ignored. + // + // The LoadedCallbackGuard is used for the case when runOnQueue does not execute the lambda + // before destroying it. It may happen if the m_jsMessageThread is already shutdown. + // In that case, the LoadedCallbackGuard notifies about cancellation by calling OnReactInstanceLoaded. + // The OnReactInstanceLoaded internally only accepts the first call and ignores others. + // + + if (m_useWebDebugger || m_isFastReloadEnabled) { + // Getting bundle from the packager, so do everything async. + auto instanceWrapper = m_instanceWrapper.LoadWithLock(); + instanceWrapper->loadBundle(Mso::Copy(JavaScriptBundleFile())); + + m_jsMessageThread.Load()->runOnQueue( + [weakThis = Mso::WeakPtr{this}, + loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { + if (auto strongThis = weakThis.GetStrongPtr()) { + if (strongThis->State() != ReactInstanceState::HasError) { + strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); + } + } + }); + } else { + m_jsMessageThread.Load()->runOnQueue( + [weakThis = Mso::WeakPtr{this}, + loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { + if (auto strongThis = weakThis.GetStrongPtr()) { + auto instance = strongThis->m_instance.LoadWithLock(); + auto instanceWrapper = strongThis->m_instanceWrapper.LoadWithLock(); + if (!instance || !instanceWrapper) { + return; + } + + try { + instanceWrapper->loadBundleSync(Mso::Copy(strongThis->JavaScriptBundleFile())); + if (strongThis->State() != ReactInstanceState::HasError) { + strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); + } + } catch (...) { + strongThis->OnReactInstanceLoaded(Mso::ExceptionErrorProvider().MakeErrorCode(std::current_exception())); + } + } + }); + } +} + +#ifdef USE_FABRIC +void ReactInstanceWin::LoadJSBundlesBridgeless(std::shared_ptr devSettings) noexcept { + if (m_isFastReloadEnabled) { + // Getting bundle from the packager, so do everything async. + + ::Microsoft::ReactNative::LoadRemoteUrlScript( + devSettings, + ::Microsoft::ReactNative::GetSharedDevManager(), + Mso::Copy(JavaScriptBundleFile()), + [=](std::unique_ptr script, const std::string &sourceURL) { + m_bridgelessReactInstance->loadScript(std::move(script), sourceURL); + }); + + m_jsMessageThread.Load()->runOnQueue( + [weakThis = Mso::WeakPtr{this}, + loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { + if (auto strongThis = weakThis.GetStrongPtr()) { + if (strongThis->State() != ReactInstanceState::HasError) { + strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); + } + } + }); + } else { + auto bundleString = ::Microsoft::ReactNative::JsBigStringFromPath(devSettings, Mso::Copy(JavaScriptBundleFile())); + m_bridgelessReactInstance->loadScript(std::move(bundleString), Mso::Copy(JavaScriptBundleFile())); + + m_jsMessageThread.Load()->runOnQueue( + [weakThis = Mso::WeakPtr{this}, + loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { + if (auto strongThis = weakThis.GetStrongPtr()) { + try { + if (strongThis->State() != ReactInstanceState::HasError) { + strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); + } + } catch (...) { + strongThis->OnReactInstanceLoaded(Mso::ExceptionErrorProvider().MakeErrorCode(std::current_exception())); + } + } + }); + } +} +#endif + +void ReactInstanceWin::OnReactInstanceLoaded(const Mso::ErrorCode &errorCode) noexcept { + bool isLoadedExpected = false; + if (m_isLoaded.compare_exchange_strong(isLoadedExpected, true)) { + if (!errorCode) { + m_state = ReactInstanceState::Loaded; + m_whenLoaded.SetValue(); + DrainJSCallQueue(); + } else { + m_state = ReactInstanceState::HasError; + m_whenLoaded.SetError(errorCode); + OnError(errorCode); + } + } +} + +Mso::Future ReactInstanceWin::Destroy() noexcept { + // This method must be called from the native queue. + VerifyIsInQueueElseCrash(); + + if (m_isDestroyed) { + return m_whenDestroyedResult; + } + + m_isDestroyed = true; + m_state = ReactInstanceState::Unloaded; + AbandonJSCallQueue(); + + // Make sure that the instance is not destroyed yet + if (auto instance = m_instance.Exchange(nullptr)) { + { + // Release the JSI runtime + std::scoped_lock lock{m_mutex}; + m_jsiRuntimeHolder = nullptr; + m_jsiRuntime = nullptr; + } + // Release the message queues before the ui manager and instance. + m_nativeMessageThread.Exchange(nullptr); + m_jsMessageThread.Exchange(nullptr); + m_instanceWrapper.Exchange(nullptr); + m_jsDispatchQueue.Exchange(nullptr); + } + +#ifdef USE_FABRIC + if (m_bridgelessReactInstance) { + auto jsDispatchQueue = m_jsDispatchQueue.Exchange(nullptr); + if (auto jsMessageThread = m_jsMessageThread.Exchange(nullptr)) { + jsMessageThread->runOnQueueSync([&]() noexcept { + { + // Release the JSI runtime + std::scoped_lock lock{m_mutex}; + + this->m_jsiRuntimeHolder = nullptr; + this->m_jsiRuntime = nullptr; + } + this->m_bridgelessReactInstance = nullptr; + jsMessageThread->quitSynchronous(); + if (jsDispatchQueue) { + jsDispatchQueue.Shutdown(PendingTaskAction::Complete); + } + m_whenDestroyed.SetValue(); + }); + } + } +#endif + + return m_whenDestroyedResult; +} + +const ReactOptions &ReactInstanceWin::Options() const noexcept { + return m_options; +} + +ReactInstanceState ReactInstanceWin::State() const noexcept { + return m_state; +} + +void ReactInstanceWin::InitJSMessageThread() noexcept { + m_instance.Exchange(std::make_shared()); + + auto scheduler = Mso::MakeJSCallInvokerScheduler( + CreateDispatchQueueSettings(m_reactContext->Notifications()), + m_instance.Load()->getJSCallInvoker(), + Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError), + Mso::Copy(m_whenDestroyed)); + auto jsDispatchQueue = Mso::DispatchQueue::MakeCustomQueue(Mso::CntPtr(scheduler)); + + auto jsDispatcher = + winrt::make(Mso::Copy(jsDispatchQueue)); + m_options.Properties.Set(ReactDispatcherHelper::JSDispatcherProperty(), jsDispatcher); + + m_jsMessageThread.Exchange(qi_cast(scheduler.Get())->GetMessageQueue()); + m_jsDispatchQueue.Exchange(std::move(jsDispatchQueue)); +} + +void ReactInstanceWin::InitNativeMessageThread() noexcept { + // Native queue was already given us in constructor. + m_nativeMessageThread.Exchange( + std::make_shared(Queue(), Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); +} + +void ReactInstanceWin::InitUIQueue() noexcept { + m_uiQueue = winrt::Microsoft::ReactNative::implementation::ReactDispatcher::GetUIDispatchQueue2(m_options.Properties); + VerifyElseCrashSz(m_uiQueue, "No UI Dispatcher provided"); +} + +void ReactInstanceWin::InitUIMessageThread() noexcept { + m_uiMessageThread.Exchange(std::make_shared( + *m_uiQueue, Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); + + auto batchingUIThread = Microsoft::ReactNative::MakeBatchingQueueThread(m_uiMessageThread.Load()); + m_batchingUIThread = batchingUIThread; + + ReactPropertyBag(m_reactContext->Properties()) + .Set( + winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::PostToUIBatchingQueueProperty(), + [wkBatchingUIThread = std::weak_ptr(batchingUIThread)]( + winrt::Microsoft::ReactNative::ReactDispatcherCallback const &callback) { + if (auto batchingUIThread = wkBatchingUIThread.lock()) { + batchingUIThread->runOnQueue(callback); + } + }); + + m_jsDispatchQueue.Load().Post( + [batchingUIThread, instance = std::weak_ptr(m_instance.Load())]() noexcept { + batchingUIThread->decoratedNativeCallInvokerReady(instance); + }); +} + +#if !defined(CORE_ABI) && !defined(USE_FABRIC) +void ReactInstanceWin::InitUIManager() noexcept { + std::vector> viewManagers; + + // Custom view managers + if (m_options.ViewManagerProvider) { + viewManagers = m_options.ViewManagerProvider->GetViewManagers(m_reactContext); + } + + Microsoft::ReactNative::AddStandardViewManagers(viewManagers, *m_reactContext); + + auto uiManagerSettings = std::make_unique( + m_batchingUIThread, m_uiMessageThread.Load(), std::move(viewManagers)); + Microsoft::ReactNative::UIManager::SetSettings(m_reactContext->Properties(), std::move(uiManagerSettings)); + + m_reactContext->Properties().Set( + implementation::XamlUIService::XamlUIServiceProperty().Handle(), + winrt::make(m_reactContext)); + + m_reactContext->Properties().Set( + implementation::LayoutService::LayoutServiceProperty().Handle(), + winrt::make(m_reactContext)); +} +#endif + +facebook::react::NativeLoggingHook ReactInstanceWin::GetLoggingCallback() noexcept { + if (m_options.OnLogging) { + return [logCallback = m_options.OnLogging](facebook::react::RCTLogLevel logLevel, const char *message) { + logCallback(static_cast(logLevel), message); + }; + } else { + // When no logging callback was specified, use a default one in DEBUG builds +#if DEBUG + return [telemetryTag{JavaScriptBundleFile()}](facebook::react::RCTLogLevel logLevel, const char *message) { + std::ostringstream ss; + ss << "ReactNative ['" << telemetryTag << "'] ("; + switch (logLevel) { + case facebook::react::RCTLogLevel::Trace: + ss << "trace"; + break; + case facebook::react::RCTLogLevel::Info: + ss << "info"; + break; + case facebook::react::RCTLogLevel::Warning: + ss << "warning"; + break; + case facebook::react::RCTLogLevel::Error: + ss << "error"; + break; + case facebook::react::RCTLogLevel::Fatal: + ss << "fatal"; + break; + } + ss << "): '" << message << "'\n"; + OutputDebugStringA(ss.str().c_str()); + }; +#else + return facebook::react::NativeLoggingHook{}; +#endif + } +} + +std::shared_ptr ReactInstanceWin::GetRedBoxHandler() noexcept { + if (m_options.RedBoxHandler) { + return m_options.RedBoxHandler; +#ifndef CORE_ABI + } else if (UseDeveloperSupport()) { + auto localWkReactHost = m_weakReactHost; + return CreateDefaultRedBoxHandler( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), + std::move(localWkReactHost), + *m_uiQueue); +#endif + } else { + return {}; + } +} + +std::function ReactInstanceWin::GetLiveReloadCallback() noexcept { + // Live reload is enabled if we provide a callback function. + if (m_isLiveReloadEnabled || m_isFastReloadEnabled) { + return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnLiveReload); + } + return std::function{}; +} + +std::string ReactInstanceWin::GetBytecodeFileName() noexcept { + // use bytecode caching if enabled and not debugging + // (ChakraCore debugging does not work when bytecode caching is enabled) + // TODO: implement + // bool useByteCode = Mso::React::BytecodeOptimizationEnabled() && !m_options.DeveloperSettings.UseDirectDebugger; + // return useByteCode ? Mso::React::GetBytecodeFilePath(m_options.Identity) : ""; + return ""; +} + +std::function ReactInstanceWin::GetErrorCallback() noexcept { + return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnErrorWithMessage); +} + +void ReactInstanceWin::OnErrorWithMessage(const std::string &errorMessage) noexcept { + OnError(Mso::React::ReactErrorProvider().MakeErrorCode(Mso::React::ReactError{errorMessage.c_str()})); +} + +void ReactInstanceWin::OnError(const Mso::ErrorCode &errorCode) noexcept { + m_state = ReactInstanceState::HasError; + AbandonJSCallQueue(); + + if (m_redboxHandler && m_redboxHandler->isDevSupportEnabled()) { + ErrorInfo errorInfo; + errorInfo.Message = errorCode.ToString(); + errorInfo.Id = 0; + m_redboxHandler->showNewError(std::move(errorInfo), ErrorType::Native); + } + + InvokeInQueue([this, errorCode]() noexcept { m_options.OnError(errorCode); }); + + m_updateUI(); +} + +#ifdef USE_FABRIC +void ReactInstanceWin::OnJSError( + facebook::jsi::Runtime &runtime, + const facebook::react::JsErrorHandler::ProcessedError &error) noexcept { + ErrorInfo errorInfo; + errorInfo.Message = error.message; + auto errorCode = Mso::React::ReactErrorProvider().MakeErrorCode(Mso::React::ReactError{errorInfo.Message.c_str()}); + + for (const facebook::react::JsErrorHandler::ProcessedError::StackFrame &frame : error.stack) { + errorInfo.Callstack.push_back( + {frame.file.value(), frame.methodName, frame.lineNumber.value(), frame.column.value()}); + } + + errorInfo.Id = error.id; + + bool isFatal = error.isFatal; + + m_state = ReactInstanceState::HasError; + AbandonJSCallQueue(); + + OnReactInstanceLoaded(errorCode); + if (m_redboxHandler && m_redboxHandler->isDevSupportEnabled()) { + m_redboxHandler->showNewError(std::move(errorInfo), isFatal ? ErrorType::JSFatal : ErrorType::JSSoft); + } + + InvokeInQueue([this, errorCode]() noexcept { m_options.OnError(errorCode); }); + + m_updateUI(); +} +#endif + +void ReactInstanceWin::OnLiveReload() noexcept { + if (auto reactHost = m_weakReactHost.GetStrongPtr()) { + reactHost->ReloadInstance(); + } +} + +std::function ReactInstanceWin::GetWaitingForDebuggerCallback() noexcept { + if (m_useWebDebugger) { + return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnWaitingForDebugger); + } + + return {}; +} + +void ReactInstanceWin::OnWaitingForDebugger() noexcept { + auto state = m_state.load(); + while (state == ReactInstanceState::Loading) { + if (m_state.compare_exchange_weak(state, ReactInstanceState::WaitingForDebugger)) { + break; + } + } + + m_updateUI(); +} + +std::function ReactInstanceWin::GetDebuggerAttachCallback() noexcept { + if (m_useWebDebugger) { + return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnDebuggerAttach); + } + + return {}; +} + +void ReactInstanceWin::OnDebuggerAttach() noexcept { + m_updateUI(); +} + +void ReactInstanceWin::DrainJSCallQueue() noexcept { + // Handle all items in the queue one by one. + for (;;) { + JSCallEntry entry; // To avoid callJSFunction under the lock + { + std::scoped_lock lock{m_mutex}; + if (m_state == ReactInstanceState::Loaded && !m_jsCallQueue.empty()) { + entry = std::move(m_jsCallQueue.front()); + m_jsCallQueue.pop_front(); + } else { + break; + } + } + +#ifdef USE_FABRIC + if (m_bridgelessReactInstance) { + m_bridgelessReactInstance->callFunctionOnModule(entry.ModuleName, entry.MethodName, std::move(entry.Args)); + } else +#endif + if (auto instance = m_instance.LoadWithLock()) { + instance->callJSFunction(std::move(entry.ModuleName), std::move(entry.MethodName), std::move(entry.Args)); + } + } +} + +void ReactInstanceWin::AbandonJSCallQueue() noexcept { + std::deque jsCallQueue; // To avoid destruction under the lock + { + std::scoped_lock lock{m_mutex}; + if (m_state == ReactInstanceState::HasError || m_state == ReactInstanceState::Unloaded) { + jsCallQueue = std::move(m_jsCallQueue); + } + } +} + +void ReactInstanceWin::CallJsFunction( + std::string &&moduleName, + std::string &&method, + folly::dynamic &¶ms) noexcept { + bool shouldCall{false}; // To call callJSFunction outside of lock + { + std::scoped_lock lock{m_mutex}; + if (m_state == ReactInstanceState::Loaded && m_jsCallQueue.empty()) { + shouldCall = true; + } else if ( + m_state == ReactInstanceState::Loading || m_state == ReactInstanceState::WaitingForDebugger || + (m_state == ReactInstanceState::Loaded && !m_jsCallQueue.empty())) { + m_jsCallQueue.push_back(JSCallEntry{std::move(moduleName), std::move(method), std::move(params)}); + } + // otherwise ignore the call + } + + if (shouldCall) { +#ifdef USE_FABRIC + if (m_bridgelessReactInstance) { + m_bridgelessReactInstance->callFunctionOnModule(moduleName, method, std::move(params)); + } else +#endif + if (auto instance = m_instance.LoadWithLock()) { + instance->callJSFunction(std::move(moduleName), std::move(method), std::move(params)); + } + } +} + +void ReactInstanceWin::DispatchEvent(int64_t viewTag, std::string &&eventName, folly::dynamic &&eventData) noexcept { + folly::dynamic params = folly::dynamic::array(viewTag, std::move(eventName), std::move(eventData)); + CallJsFunction("RCTEventEmitter", "receiveEvent", std::move(params)); +} + +winrt::Microsoft::ReactNative::JsiRuntime ReactInstanceWin::JsiRuntime() noexcept { + std::shared_ptr jsiRuntimeHolder; + { + std::scoped_lock lock{m_mutex}; + if (m_jsiRuntime) { + return m_jsiRuntime; + } else { + jsiRuntimeHolder = m_jsiRuntimeHolder; + } + } + + auto jsiRuntime = jsiRuntimeHolder ? jsiRuntimeHolder->getRuntime() : nullptr; + + { + std::scoped_lock lock{m_mutex}; + if (!m_jsiRuntime && jsiRuntime) { + // Set only if other thread did not do it yet. + m_jsiRuntime = + winrt::Microsoft::ReactNative::implementation::JsiRuntime::GetOrCreate(jsiRuntimeHolder, jsiRuntime); + } + + return m_jsiRuntime; + } +} + +std::shared_ptr ReactInstanceWin::GetInnerInstance() noexcept { + return m_instance.LoadWithLock(); +} + +bool ReactInstanceWin::IsLoaded() const noexcept { + return m_state == ReactInstanceState::Loaded; +} + +void ReactInstanceWin::AttachMeasuredRootView( + facebook::react::IReactRootView *rootView, + const winrt::Microsoft::ReactNative::JSValueArgWriter &initialProps, + bool useFabric) noexcept { + if (State() == ReactInstanceState::HasError) + return; + + assert(!useFabric); +#ifndef CORE_ABI + if (!useFabric || m_useWebDebugger) { + int64_t rootTag = -1; + +#if !defined(CORE_ABI) && !defined(USE_FABRIC) + if (auto uiManager = Microsoft::ReactNative::GetNativeUIManager(*m_reactContext).lock()) { + rootTag = uiManager->AddMeasuredRootView(rootView); + rootView->SetTag(rootTag); + } else { + assert(false); + } +#endif + + std::string jsMainModuleName = rootView->JSComponentName(); + folly::dynamic params = folly::dynamic::array( + std::move(jsMainModuleName), + folly::dynamic::object("initialProps", DynamicWriter::ToDynamic(initialProps))("rootTag", rootTag)( + "fabric", false)); + CallJsFunction("AppRegistry", "runApplication", std::move(params)); + } +#endif +} + +void ReactInstanceWin::DetachRootView(facebook::react::IReactRootView *rootView, bool useFabric) noexcept { + if (State() == ReactInstanceState::HasError) + return; + + auto rootTag = rootView->GetTag(); + folly::dynamic params = folly::dynamic::array(rootTag); + +#ifdef USE_FABRIC + if (useFabric && !m_useWebDebugger) { + auto uiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties( + winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties())); + uiManager->stopSurface(static_cast(rootTag)); + } else +#endif + { + CallJsFunction("AppRegistry", "unmountApplicationComponentAtRootTag", std::move(params)); + } + + // Give the JS thread time to finish executing + m_jsMessageThread.Load()->runOnQueueSync([]() {}); +} + +Mso::CntPtr MakeReactInstance( + IReactHost &reactHost, + ReactOptions &&options, + Mso::Promise &&whenCreated, + Mso::Promise &&whenLoaded, + Mso::VoidFunctor &&updateUI) noexcept { + return Mso::Make( + reactHost, std::move(options), std::move(whenCreated), std::move(whenLoaded), std::move(updateUI)); +} + +bool ReactInstanceWin::UseWebDebugger() const noexcept { + return m_useWebDebugger; +} + +bool ReactInstanceWin::UseFastRefresh() const noexcept { + return m_isFastReloadEnabled; +} + +bool ReactInstanceWin::UseDirectDebugger() const noexcept { + return m_useDirectDebugger; +} + +bool ReactInstanceWin::DebuggerBreakOnNextLine() const noexcept { + return m_debuggerBreakOnNextLine; +} + +uint16_t ReactInstanceWin::DebuggerPort() const noexcept { + return m_options.DeveloperSettings.DebuggerPort; +} + +std::string ReactInstanceWin::DebugBundlePath() const noexcept { + return m_options.DeveloperSettings.SourceBundleName.empty() ? m_options.Identity + : m_options.DeveloperSettings.SourceBundleName; +} + +std::string ReactInstanceWin::BundleRootPath() const noexcept { + return m_options.BundleRootPath.empty() ? "ms-appx:///Bundle/" : m_options.BundleRootPath; +} + +std::string ReactInstanceWin::SourceBundleHost() const noexcept { + return m_options.DeveloperSettings.SourceBundleHost.empty() ? facebook::react::DevServerHelper::DefaultPackagerHost + : m_options.DeveloperSettings.SourceBundleHost; +} + +uint16_t ReactInstanceWin::SourceBundlePort() const noexcept { + return m_options.DeveloperSettings.SourceBundlePort ? m_options.DeveloperSettings.SourceBundlePort + : facebook::react::DevServerHelper::DefaultPackagerPort; +} + +bool ReactInstanceWin::RequestInlineSourceMap() const noexcept { + return m_options.DeveloperSettings.RequestInlineSourceMap; +} + +JSIEngine ReactInstanceWin::JsiEngine() const noexcept { + return m_options.JsiEngine(); +} + +std::string ReactInstanceWin::JavaScriptBundleFile() const noexcept { + return m_options.Identity; +} + +std::string ReactInstanceWin::BundleAppId() const noexcept { + return m_options.DeveloperSettings.BundleAppId; +} + +bool ReactInstanceWin::RequestDevBundle() const noexcept { + return m_options.DeveloperSettings.DevBundle; +} + +bool ReactInstanceWin::UseDeveloperSupport() const noexcept { + return m_options.UseDeveloperSupport(); +} + +Mso::React::IReactContext &ReactInstanceWin::GetReactContext() const noexcept { + return *m_reactContext; +} + +} // namespace Mso::React diff --git a/vnext/src-win/index.windows.js b/vnext/src-win/index.windows.js index a7566f20331..bde0d3a7725 100644 --- a/vnext/src-win/index.windows.js +++ b/vnext/src-win/index.windows.js @@ -48,6 +48,7 @@ import typeof TouchableNativeFeedback from './Libraries/Components/Touchable/Tou import typeof TouchableOpacity from './Libraries/Components/Touchable/TouchableOpacity'; import typeof TouchableWithoutFeedback from './Libraries/Components/Touchable/TouchableWithoutFeedback'; import typeof View from './Libraries/Components/View/View'; +import typeof RegisterCallableModule from './Libraries/Core/registerCallableModule'; import typeof NativeEventEmitter from './Libraries/EventEmitter/NativeEventEmitter'; import typeof RCTDeviceEventEmitter from './Libraries/EventEmitter/RCTDeviceEventEmitter'; import typeof RCTNativeAppEventEmitter from './Libraries/EventEmitter/RCTNativeAppEventEmitter'; @@ -107,6 +108,9 @@ const invariant = require('invariant'); export type {HostComponent, HostInstance}; module.exports = { + get registerCallableModule(): RegisterCallableModule { + return require('./Libraries/Core/registerCallableModule').default; + }, // Components get AccessibilityInfo(): AccessibilityInfo { return require('./Libraries/Components/AccessibilityInfo/AccessibilityInfo') @@ -286,7 +290,6 @@ module.exports = { get NativeEventEmitter(): NativeEventEmitter { return require('./Libraries/EventEmitter/NativeEventEmitter').default; }, - // $FlowFixMe[value-as-type] get Networking(): Networking { return require('./Libraries/Network/RCTNetworking').default; }, @@ -308,7 +311,6 @@ module.exports = { ); return require('./Libraries/PushNotificationIOS/PushNotificationIOS'); }, - // $FlowFixMe[value-as-type] get Settings(): Settings { return require('./Libraries/Settings/Settings'); }, From 8752d0cd7d1d8929994818e91581251cb2a61ede Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Mon, 5 May 2025 21:15:40 -0700 Subject: [PATCH 15/19] TurboModules should always use JSCallInvoker even on callbacks --- .../TurboModuleTests.cpp | 2 - ...atcherWriter.cpp => CallInvokerWriter.cpp} | 66 +- ...DispatcherWriter.h => CallInvokerWriter.h} | 17 +- .../TurboModulesProvider.cpp | 24 +- .../Utils/LocalBundleReader.cpp | 5 +- vnext/Shared/Shared.vcxitems | 2 +- .../ReactInstanceWin.cpp | 1593 ----------------- 7 files changed, 57 insertions(+), 1652 deletions(-) rename vnext/Microsoft.ReactNative/{JSDispatcherWriter.cpp => CallInvokerWriter.cpp} (67%) rename vnext/Microsoft.ReactNative/{JSDispatcherWriter.h => CallInvokerWriter.h} (69%) delete mode 100644 vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp diff --git a/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp b/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp index 72516e910f4..2486e8fdba1 100644 --- a/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp +++ b/vnext/Microsoft.ReactNative.IntegrationTests/TurboModuleTests.cpp @@ -570,7 +570,6 @@ TEST_CLASS (TurboModuleTests) { TestCheck(!registered); } - #if !USE_FABRIC TEST_METHOD(ExecuteSampleTurboModule) { TestEventService::Initialize(); @@ -646,7 +645,6 @@ TEST_CLASS (TurboModuleTests) { TestEvent{"sayHelloSync", "Hello"}, }); } - #endif TEST_METHOD(JSDispatcherAfterInstanceUnload) { TestEventService::Initialize(); diff --git a/vnext/Microsoft.ReactNative/JSDispatcherWriter.cpp b/vnext/Microsoft.ReactNative/CallInvokerWriter.cpp similarity index 67% rename from vnext/Microsoft.ReactNative/JSDispatcherWriter.cpp rename to vnext/Microsoft.ReactNative/CallInvokerWriter.cpp index 264600596ef..2e75bd3c98f 100644 --- a/vnext/Microsoft.ReactNative/JSDispatcherWriter.cpp +++ b/vnext/Microsoft.ReactNative/CallInvokerWriter.cpp @@ -2,7 +2,7 @@ // Licensed under the MIT License. #include "pch.h" -#include "JSDispatcherWriter.h" +#include "CallInvokerWriter.h" #include #include @@ -25,23 +25,24 @@ struct JSNoopWriter : winrt::implements { }; //=========================================================================== -// JSDispatcherWriter implementation +// CallInvokerWriter implementation //=========================================================================== -JSDispatcherWriter::JSDispatcherWriter( - IReactDispatcher const &jsDispatcher, +CallInvokerWriter::CallInvokerWriter( + const std::shared_ptr &jsInvoker, std::weak_ptr jsiRuntimeHolder) noexcept - : m_jsDispatcher(jsDispatcher), m_jsiRuntimeHolder(std::move(jsiRuntimeHolder)) {} + : m_callInvoker(jsInvoker), m_jsiRuntimeHolder(std::move(jsiRuntimeHolder)) {} -JSDispatcherWriter::~JSDispatcherWriter() { + CallInvokerWriter::~CallInvokerWriter() { if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { jsiRuntimeHolder->allowRelease(); } } -void JSDispatcherWriter::WithResultArgs( +void CallInvokerWriter::WithResultArgs( Mso::Functor handler) noexcept { +/* if (m_jsDispatcher.HasThreadAccess()) { VerifyElseCrash(!m_dynamicWriter); if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { @@ -52,66 +53,64 @@ void JSDispatcherWriter::WithResultArgs( m_jsiWriter = nullptr; } } else { +*/ VerifyElseCrash(!m_jsiWriter); folly::dynamic dynValue = m_dynamicWriter->TakeValue(); VerifyElseCrash(dynValue.isArray()); - m_jsDispatcher.Post( - [handler, dynValue = std::move(dynValue), weakJsiRuntimeHolder = m_jsiRuntimeHolder, self = get_strong()]() { - if (auto jsiRuntimeHolder = weakJsiRuntimeHolder.lock()) { - std::vector args; - args.reserve(dynValue.size()); - auto &runtime = jsiRuntimeHolder->Runtime(); - for (auto const &item : dynValue) { - args.emplace_back(facebook::jsi::valueFromDynamic(runtime, item)); - } - handler(runtime, args.data(), args.size()); - } - }); - } + m_callInvoker->invokeAsync([handler, dynValue = std::move(dynValue), weakJsiRuntimeHolder = m_jsiRuntimeHolder, self = get_strong()](facebook::jsi::Runtime& runtime) { + std::vector args; + args.reserve(dynValue.size()); + for (auto const &item : dynValue) { + args.emplace_back(facebook::jsi::valueFromDynamic(runtime, item)); + } + handler(runtime, args.data(), args.size()); + }); + //} } -void JSDispatcherWriter::WriteNull() noexcept { +void CallInvokerWriter::WriteNull() noexcept { GetWriter().WriteNull(); } -void JSDispatcherWriter::WriteBoolean(bool value) noexcept { +void CallInvokerWriter::WriteBoolean(bool value) noexcept { GetWriter().WriteBoolean(value); } -void JSDispatcherWriter::WriteInt64(int64_t value) noexcept { +void CallInvokerWriter::WriteInt64(int64_t value) noexcept { GetWriter().WriteInt64(value); } -void JSDispatcherWriter::WriteDouble(double value) noexcept { +void CallInvokerWriter::WriteDouble(double value) noexcept { GetWriter().WriteDouble(value); } -void JSDispatcherWriter::WriteString(const winrt::hstring &value) noexcept { +void CallInvokerWriter::WriteString(const winrt::hstring &value) noexcept { GetWriter().WriteString(value); } -void JSDispatcherWriter::WriteObjectBegin() noexcept { +void CallInvokerWriter::WriteObjectBegin() noexcept { GetWriter().WriteObjectBegin(); } -void JSDispatcherWriter::WritePropertyName(const winrt::hstring &name) noexcept { +void CallInvokerWriter::WritePropertyName(const winrt::hstring &name) noexcept { GetWriter().WritePropertyName(name); } -void JSDispatcherWriter::WriteObjectEnd() noexcept { +void CallInvokerWriter::WriteObjectEnd() noexcept { GetWriter().WriteObjectEnd(); } -void JSDispatcherWriter::WriteArrayBegin() noexcept { +void CallInvokerWriter::WriteArrayBegin() noexcept { GetWriter().WriteArrayBegin(); } -void JSDispatcherWriter::WriteArrayEnd() noexcept { +void CallInvokerWriter::WriteArrayEnd() noexcept { GetWriter().WriteArrayEnd(); } -IJSValueWriter JSDispatcherWriter::GetWriter() noexcept { +IJSValueWriter CallInvokerWriter::GetWriter() noexcept { if (!m_writer) { +/* if (m_jsDispatcher.HasThreadAccess()) { if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { m_jsiWriter = winrt::make_self(jsiRuntimeHolder->Runtime()); @@ -120,11 +119,12 @@ IJSValueWriter JSDispatcherWriter::GetWriter() noexcept { m_writer = winrt::make(); } } else { + */ m_dynamicWriter = winrt::make_self(); m_writer = m_dynamicWriter.as(); - } + //} } - Debug(VerifyElseCrash(m_dynamicWriter != nullptr || m_jsDispatcher.HasThreadAccess())); + Debug(VerifyElseCrash(m_dynamicWriter != nullptr/* || m_jsDispatcher.HasThreadAccess()*/)); return m_writer; } diff --git a/vnext/Microsoft.ReactNative/JSDispatcherWriter.h b/vnext/Microsoft.ReactNative/CallInvokerWriter.h similarity index 69% rename from vnext/Microsoft.ReactNative/JSDispatcherWriter.h rename to vnext/Microsoft.ReactNative/CallInvokerWriter.h index 50b2cb1c107..424ef858e5b 100644 --- a/vnext/Microsoft.ReactNative/JSDispatcherWriter.h +++ b/vnext/Microsoft.ReactNative/CallInvokerWriter.h @@ -7,16 +7,17 @@ #include "DynamicWriter.h" #include "JsiWriter.h" #include "winrt/Microsoft.ReactNative.h" +#include namespace winrt::Microsoft::ReactNative { -// IJSValueWriter to ensure that JsiWriter is always used from JSDispatcher. -// In case if writing is done outside of JSDispatcher, it uses DynamicWriter to create -// folly::dynamic which then is written to JsiWriter in JSDispatcher. -struct JSDispatcherWriter : winrt::implements { - ~JSDispatcherWriter(); - JSDispatcherWriter( - IReactDispatcher const &jsDispatcher, +// IJSValueWriter to ensure that JsiWriter is always used from a RuntimeExecutor. +// In case if writing is done outside of RuntimeExecutor, it uses DynamicWriter to create +// folly::dynamic which then is written to JsiWriter in RuntimeExecutor. +struct CallInvokerWriter : winrt::implements { + ~CallInvokerWriter(); + CallInvokerWriter( + const std::shared_ptr &jsInvoker, std::weak_ptr jsiRuntimeHolder) noexcept; void WithResultArgs(Mso::Functor handler) noexcept; @@ -37,7 +38,7 @@ struct JSDispatcherWriter : winrt::implements m_callInvoker; std::weak_ptr m_jsiRuntimeHolder; winrt::com_ptr m_dynamicWriter; winrt::com_ptr m_jsiWriter; diff --git a/vnext/Microsoft.ReactNative/TurboModulesProvider.cpp b/vnext/Microsoft.ReactNative/TurboModulesProvider.cpp index 24292e540cc..294e48b4f55 100644 --- a/vnext/Microsoft.ReactNative/TurboModulesProvider.cpp +++ b/vnext/Microsoft.ReactNative/TurboModulesProvider.cpp @@ -9,7 +9,7 @@ #include "TurboModulesProvider.h" #include #include -#include "JSDispatcherWriter.h" +#include "CallInvokerWriter.h" #include "JSValueWriter.h" #include "JsiApi.h" #include "JsiReader.h" @@ -202,7 +202,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { runtime, propName, 0, - [jsDispatcher = m_reactContext.JSDispatcher(), + [jsInvoker = jsInvoker_, method = methodInfo.Method, longLivedObjectCollection = m_longLivedObjectCollection]( facebook::jsi::Runtime &rt, @@ -214,7 +214,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { auto jsiRuntimeHolder = LongLivedJsiRuntime::CreateWeak(strongLongLivedObjectCollection, rt); method( winrt::make(rt, args, argCount - 1), - winrt::make(jsDispatcher, jsiRuntimeHolder), + winrt::make(jsInvoker, jsiRuntimeHolder), MakeCallback(rt, strongLongLivedObjectCollection, args[argCount - 1]), nullptr); } @@ -225,7 +225,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { runtime, propName, 0, - [jsDispatcher = m_reactContext.JSDispatcher(), + [jsInvoker = jsInvoker_, method = methodInfo.Method, longLivedObjectCollection = m_longLivedObjectCollection]( facebook::jsi::Runtime &rt, @@ -242,9 +242,9 @@ class TurboModuleImpl : public facebook::react::TurboModule { method( winrt::make(rt, args, argCount - 2), - winrt::make(jsDispatcher, jsiRuntimeHolder), + winrt::make(jsInvoker, jsiRuntimeHolder), [weakCallback1, weakCallback2, jsiRuntimeHolder](const IJSValueWriter &writer) noexcept { - writer.as()->WithResultArgs( + writer.as()->WithResultArgs( [weakCallback1, weakCallback2, jsiRuntimeHolder]( facebook::jsi::Runtime &rt, facebook::jsi::Value const *args, size_t count) { if (auto callback1 = weakCallback1.lock()) { @@ -260,7 +260,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { }); }, [weakCallback1, weakCallback2, jsiRuntimeHolder](const IJSValueWriter &writer) noexcept { - writer.as()->WithResultArgs( + writer.as()->WithResultArgs( [weakCallback1, weakCallback2, jsiRuntimeHolder]( facebook::jsi::Runtime &rt, facebook::jsi::Value const *args, size_t count) { if (auto callback2 = weakCallback2.lock()) { @@ -283,7 +283,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { runtime, propName, 0, - [jsDispatcher = m_reactContext.JSDispatcher(), + [jsInvoker = jsInvoker_, method = methodInfo.Method, longLivedObjectCollection = m_longLivedObjectCollection]( facebook::jsi::Runtime &rt, @@ -293,7 +293,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { if (auto strongLongLivedObjectCollection = longLivedObjectCollection.lock()) { auto jsiRuntimeHolder = LongLivedJsiRuntime::CreateWeak(strongLongLivedObjectCollection, rt); auto argReader = winrt::make(rt, args, count); - auto argWriter = winrt::make(jsDispatcher, jsiRuntimeHolder); + auto argWriter = winrt::make(jsInvoker, jsiRuntimeHolder); return facebook::react::createPromiseAsJSIValue( rt, [method, argReader, argWriter, strongLongLivedObjectCollection, jsiRuntimeHolder]( @@ -306,7 +306,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { argReader, argWriter, [weakResolve, weakReject, jsiRuntimeHolder](const IJSValueWriter &writer) { - writer.as()->WithResultArgs( + writer.as()->WithResultArgs( [weakResolve, weakReject, jsiRuntimeHolder]( facebook::jsi::Runtime &runtime, facebook::jsi::Value const *args, @@ -325,7 +325,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { }); }, [weakResolve, weakReject, jsiRuntimeHolder](const IJSValueWriter &writer) { - writer.as()->WithResultArgs( + writer.as()->WithResultArgs( [weakResolve, weakReject, jsiRuntimeHolder]( facebook::jsi::Runtime &runtime, facebook::jsi::Value const *args, @@ -438,7 +438,7 @@ class TurboModuleImpl : public facebook::react::TurboModule { auto weakCallback = LongLivedJsiFunction::CreateWeak(longLivedObjectCollection, rt, callback.getObject(rt).getFunction(rt)); return [weakCallback = std::move(weakCallback)](const IJSValueWriter &writer) noexcept { - writer.as()->WithResultArgs( + writer.as()->WithResultArgs( [weakCallback](facebook::jsi::Runtime &rt, facebook::jsi::Value const *args, size_t count) { if (auto callback = weakCallback.lock()) { callback->Value().call(rt, args, count); diff --git a/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp b/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp index acc9939159e..d7c4cdd3a67 100644 --- a/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +++ b/vnext/Microsoft.ReactNative/Utils/LocalBundleReader.cpp @@ -87,10 +87,9 @@ std::future LocalBundleReader::LoadBundleAsync(const std::wstring b dataReader.Close(); co_return script; - } + } // RuntimeScheduler only handles std::exception or jsi::JSError - catch (winrt::hresult_error const& e) - { + catch (winrt::hresult_error const &e) { throw std::exception(winrt::to_string(e.message()).c_str()); } } diff --git a/vnext/Shared/Shared.vcxitems b/vnext/Shared/Shared.vcxitems index 3107d11bd4f..d285ef0bd13 100644 --- a/vnext/Shared/Shared.vcxitems +++ b/vnext/Shared/Shared.vcxitems @@ -398,7 +398,7 @@ $(MSBuildThisFileDirectory)..\Microsoft.ReactNative\IReactDispatcher.idl - + $(MSBuildThisFileDirectory)..\Microsoft.ReactNative\IJSValueWriter.idl diff --git a/vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp b/vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp deleted file mode 100644 index 057beb22bbe..00000000000 --- a/vnext/enc_temp_folder/8152f4ceb3024b97bf76fb2bcadd75/ReactInstanceWin.cpp +++ /dev/null @@ -1,1593 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include "ReactInstanceWin.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "BaseScriptStoreImpl.h" -#include "ChakraRuntimeHolder.h" -#include "CrashManager.h" -#include "DevMenu.h" -#include "DynamicWriter.h" -#include "HermesRuntimeHolder.h" -#include "IReactContext.h" -#include "IReactDispatcher.h" -#include "IReactNotificationService.h" -#include "JSI/JSExecutorFactorySettings.h" -#include "JsiApi.h" -#include "Modules/DevSettingsModule.h" -#include "Modules/ExceptionsManager.h" -#include "Modules/PlatformConstantsWinModule.h" -#include "Modules/ReactRootViewTagGenerator.h" -#include "Modules/SampleTurboModule.h" -#include "Modules/SourceCode.h" -#include "Modules/StatusBarManager.h" -#include "Modules/Timing.h" -#include "MoveOnCopy.h" -#include "MsoUtils.h" -#include "NativeModules.h" -#include "NativeModulesProvider.h" -#include "ReactCoreInjection.h" -#include "ReactErrorProvider.h" -#include "RedBox.h" -#include "Unicode.h" - -#ifdef USE_FABRIC -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if !defined(CORE_ABI) && !defined(USE_FABRIC) -#include -#include -#include "Modules/NativeUIManager.h" -#include "Modules/PaperUIManagerModule.h" -#endif - -#ifndef CORE_ABI -#include -#include -#include "ConfigureBundlerDlg.h" -#include "Modules/AccessibilityInfoModule.h" -#include "Modules/AlertModule.h" -#include "Modules/AppStateModule.h" -#include "Modules/AppThemeModuleUwp.h" -#include "Modules/ClipboardModule.h" -#include "Modules/DeviceInfoModule.h" -#include "Modules/I18nManagerModule.h" -#include "Modules/LinkingManagerModule.h" -#include "Modules/LogBoxModule.h" -#else -#include "Modules/DesktopTimingModule.h" -#endif -#include "Modules/ExceptionsManager.h" -#include "Modules/PlatformConstantsWinModule.h" -#include "Modules/ReactRootViewTagGenerator.h" -#include "Modules/SourceCode.h" -#include "Modules/StatusBarManager.h" - -#if !defined(CORE_ABI) || defined(USE_FABRIC) -#include -#include "Modules/Animated/NativeAnimatedModule.h" -#endif - -#if defined(USE_V8) -#include "JSI/V8RuntimeHolder.h" -#include "V8JSIRuntimeHolder.h" -#endif // USE_V8 - -namespace Microsoft::ReactNative { - -void AddStandardViewManagers( - std::vector> &viewManagers, - const Mso::React::IReactContext &context) noexcept; - -std::shared_ptr CreateUIManager2( - Mso::React::IReactContext *context, - std::vector &&viewManagers) noexcept; - -} // namespace Microsoft::ReactNative - -using namespace winrt::Microsoft::ReactNative; - -namespace Mso::React { - -//============================================================================================= -// LoadedCallbackGuard ensures that the OnReactInstanceLoaded is always called. -// It calls OnReactInstanceLoaded in destructor with a cancellation error. -// If loading was previously succeeded this call with an error code is ignored. -//============================================================================================= - -struct LoadedCallbackGuard { - LoadedCallbackGuard(ReactInstanceWin &reactInstance) noexcept : m_reactInstance{&reactInstance} {} - - LoadedCallbackGuard(const LoadedCallbackGuard &other) = delete; - LoadedCallbackGuard &operator=(const LoadedCallbackGuard &other) = delete; - - LoadedCallbackGuard(LoadedCallbackGuard &&other) = default; - LoadedCallbackGuard &operator=(LoadedCallbackGuard &&other) = default; - - ~LoadedCallbackGuard() noexcept { - if (m_reactInstance) { - m_reactInstance->OnReactInstanceLoaded(Mso::CancellationErrorProvider().MakeErrorCode(true)); - } - } - - private: - Mso::CntPtr m_reactInstance; -}; - -struct BridgeUIBatchInstanceCallback final : public facebook::react::InstanceCallback { - BridgeUIBatchInstanceCallback(Mso::WeakPtr wkInstance) : m_wkInstance(wkInstance) {} - virtual ~BridgeUIBatchInstanceCallback() = default; - void onBatchComplete() override { - if (auto instance = m_wkInstance.GetStrongPtr()) { - auto state = instance->State(); - if (state != ReactInstanceState::HasError && state != ReactInstanceState::Unloaded) { - if (instance->UseWebDebugger()) { - // While using a CxxModule for UIManager (which we do when running under webdebugger) - // We need to post the batch complete to the NativeQueue to ensure that the UIManager - // has posted everything from this batch into its queue before we complete the batch. - instance->m_jsDispatchQueue.Load().Post([wkInstance = m_wkInstance]() { - if (auto instance = wkInstance.GetStrongPtr()) { - instance->m_batchingUIThread->runOnQueue([wkInstance]() { - if (auto instance = wkInstance.GetStrongPtr()) { - auto propBag = ReactPropertyBag(instance->m_reactContext->Properties()); - if (auto callback = propBag.Get(winrt::Microsoft::ReactNative::implementation::ReactCoreInjection:: - UIBatchCompleteCallbackProperty())) { - (*callback)(instance->m_reactContext->Properties()); - } -#if !defined(CORE_ABI) && !defined(USE_FABRIC) - if (auto uiManager = Microsoft::ReactNative::GetNativeUIManager(*instance->m_reactContext).lock()) { - uiManager->onBatchComplete(); - } -#endif - } - }); - - // For UWP we use a batching message queue to optimize the usage - // of the CoreDispatcher. Win32 already has an optimized queue. - facebook::react::BatchingMessageQueueThread *batchingUIThread = - static_cast(instance->m_batchingUIThread.get()); - if (batchingUIThread != nullptr) { - batchingUIThread->onBatchComplete(); - } - } - }); - } else { - instance->m_batchingUIThread->runOnQueue([wkInstance = m_wkInstance]() { - if (auto instance = wkInstance.GetStrongPtr()) { - auto propBag = ReactPropertyBag(instance->m_reactContext->Properties()); - if (auto callback = propBag.Get(winrt::Microsoft::ReactNative::implementation::ReactCoreInjection:: - UIBatchCompleteCallbackProperty())) { - (*callback)(instance->m_reactContext->Properties()); - } -#if !defined(CORE_ABI) && !defined(USE_FABRIC) - if (auto uiManager = Microsoft::ReactNative::GetNativeUIManager(*instance->m_reactContext).lock()) { - uiManager->onBatchComplete(); - } -#endif - } - }); - // For UWP we use a batching message queue to optimize the usage - // of the CoreDispatcher. Win32 already has an optimized queue. - facebook::react::BatchingMessageQueueThread *batchingUIThread = - static_cast(instance->m_batchingUIThread.get()); - if (batchingUIThread != nullptr) { - batchingUIThread->onBatchComplete(); - } - } - } - } - } - void incrementPendingJSCalls() override {} - void decrementPendingJSCalls() override {} - - Mso::WeakPtr m_wkInstance; - Mso::CntPtr m_context; - std::weak_ptr m_uiThread; -}; - -//============================================================================================= -// ReactInstanceWin implementation -//============================================================================================= - -/*static*/ std::mutex ReactInstanceWin::s_registryMutex; -/*static*/ std::vector ReactInstanceWin::s_instanceRegistry; - -ReactInstanceWin::ReactInstanceWin( - IReactHost &reactHost, - ReactOptions const &options, - Mso::Promise &&whenCreated, - Mso::Promise &&whenLoaded, - Mso::VoidFunctor &&updateUI) noexcept - : Super{reactHost.NativeQueue()}, - m_weakReactHost{&reactHost}, - m_options{options}, - m_whenCreated{std::move(whenCreated)}, - m_isFastReloadEnabled(options.UseFastRefresh()), - m_isLiveReloadEnabled(options.UseLiveReload()), - m_updateUI{std::move(updateUI)}, - m_useWebDebugger(options.UseWebDebugger()), - m_useDirectDebugger(options.UseDirectDebugger()), - m_debuggerBreakOnNextLine(options.DebuggerBreakOnNextLine()), - m_reactContext{Mso::Make( - this, - options.Properties, - winrt::make(options.Notifications))} { - // As soon as the bundle is loaded or failed to load, we set the m_whenLoaded promise value in JS queue. - // It then synchronously raises the OnInstanceLoaded event in the JS queue. - // Then, we notify the ReactHost about the load event in the internal queue. - m_whenLoaded.AsFuture() - .Then( - [onLoaded = m_options.OnInstanceLoaded, reactContext = m_reactContext](Mso::Maybe &&value) noexcept { - auto errCode = value.IsError() ? value.TakeError() : Mso::ErrorCode(); - if (onLoaded) { - onLoaded.Get()->Invoke(reactContext, errCode); - } - return Mso::Maybe(errCode); - }) - .Then(Queue(), [whenLoaded = std::move(whenLoaded)](Mso::Maybe &&value) noexcept { - whenLoaded.SetValue(std::move(value)); - }); - - // When the JS queue is shutdown, we set the m_whenDestroyed promise value as the last work item in the JS queue. - // No JS queue work can be done after that for the instance. - // The promise continuation synchronously calls the OnInstanceDestroyed event. - // Then, the Destroy() method returns the m_whenDestroyedResult future to ReactHost to handle instance destruction. - m_whenDestroyedResult = - m_whenDestroyed.AsFuture().Then([whenLoaded = m_whenLoaded, - onDestroyed = m_options.OnInstanceDestroyed, - // If the ReactHost has been released, this - // instance might be the only thing keeping - // the propertyBag alive. - // We want it to remain alive for the - // InstanceDestroyed callbacks - propBag = m_options.Properties, - reactContext = m_reactContext]() noexcept { - whenLoaded.TryCancel(); // It only has an effect if whenLoaded was not set before - Microsoft::ReactNative::HermesRuntimeHolder::storeTo(ReactPropertyBag(reactContext->Properties()), nullptr); - if (onDestroyed) { - onDestroyed.Get()->Invoke(reactContext); - } - }); - - // We notify the ReactHost immediately that the instance is created, but the - // OnInstanceCreated event is raised only after the internal react-native instance is ready and - // it starts handling JS queue work items. - m_whenCreated.SetValue(); - - if (m_options.EnableDefaultCrashHandler()) { - CrashManager::RegisterCustomHandler(); - } - - { - std::scoped_lock lock{s_registryMutex}; - s_instanceRegistry.push_back(this); - } -} - -ReactInstanceWin::~ReactInstanceWin() noexcept { - std::scoped_lock lock{s_registryMutex}; - auto it = std::find(s_instanceRegistry.begin(), s_instanceRegistry.end(), this); - if (it != s_instanceRegistry.end()) { - s_instanceRegistry.erase(it); - } - - if (m_options.EnableDefaultCrashHandler()) { - CrashManager::UnregisterCustomHandler(); - } -} - -void ReactInstanceWin::InstanceCrashHandler(int fileDescriptor) noexcept { - if (!m_options.EnableDefaultCrashHandler()) { - return; - } - - if (m_jsiRuntimeHolder) { - m_jsiRuntimeHolder->crashHandler(fileDescriptor); - } - - // record additional information that could be useful for debugging crash dumps here - // (perhaps properties and settings or clues about the react tree) -} - -/*static*/ void ReactInstanceWin::CrashHandler(int fileDescriptor) noexcept { - std::scoped_lock lock{s_registryMutex}; - for (auto &entry : s_instanceRegistry) { - entry->InstanceCrashHandler(fileDescriptor); - } -} - -void ReactInstanceWin::LoadModules( - const std::shared_ptr &devSettings, - const std::shared_ptr &nativeModulesProvider, - const std::shared_ptr &turboModulesProvider) noexcept { - auto registerTurboModule = [this, &nativeModulesProvider, &turboModulesProvider]( - const wchar_t *name, const ReactModuleProvider &provider) noexcept { - if (m_options.UseWebDebugger()) { - nativeModulesProvider->AddModuleProvider(name, provider); - } else { - turboModulesProvider->AddModuleProvider(name, provider, false); - } - }; - -#ifdef USE_FABRIC - if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { - registerTurboModule( - L"FabricUIManagerBinding", - winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::FabricUIManager>()); - } -#endif - -#if !defined(CORE_ABI) && !defined(USE_FABRIC) - registerTurboModule( - L"UIManager", - // TODO: Use MakeTurboModuleProvider after it satisfies ReactNativeSpecs::UIManagerSpec - winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::UIManager>()); -#endif - -#ifndef CORE_ABI - registerTurboModule( - L"AccessibilityInfo", - winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::AccessibilityInfo>()); - - registerTurboModule( - L"Alert", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::Alert>()); - - registerTurboModule( - L"Appearance", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::Appearance>()); - - registerTurboModule( - L"AppState", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::AppState>()); - - registerTurboModule( - L"AppTheme", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::AppTheme>()); - - registerTurboModule( - L"LogBox", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::LogBox>()); - - registerTurboModule( - L"Clipboard", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::Clipboard>()); - - registerTurboModule( - L"DeviceInfo", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::DeviceInfo>()); - - registerTurboModule( - L"ImageLoader", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ImageLoader>()); - - registerTurboModule( - L"NativeAnimatedModule", - winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::NativeAnimatedModule>()); - -#elif defined(CORE_ABI) && defined(USE_FABRIC) - if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { - registerTurboModule( - L"ImageLoader", - winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ImageLoader>()); - - registerTurboModule( - L"NativeAnimatedModule", - winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::NativeAnimatedModule>()); - } -#endif - - if (!m_options.UseWebDebugger()) { - turboModulesProvider->AddModuleProvider( - L"SampleTurboModule", - winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::SampleTurboModule>(), - false); - } - - if (devSettings->useTurboModulesOnly) { - ::Microsoft::ReactNative::ExceptionsManager::SetRedBoxHander( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), m_redboxHandler); - registerTurboModule( - L"ExceptionsManager", - winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::ExceptionsManager>()); - - registerTurboModule( - L"StatusBarManager", - winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::StatusBarManager>()); - - registerTurboModule( - L"PlatformConstants", - winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::PlatformConstants>()); - uint32_t hermesBytecodeVersion = 0; -#if defined(USE_HERMES) && defined(ENABLE_DEVSERVER_HBCBUNDLES) - hermesBytecodeVersion = ::hermes::hbc::BYTECODE_VERSION; -#endif - - std::string bundleUrl = (devSettings->useWebDebugger || devSettings->liveReloadCallback) - ? facebook::react::DevServerHelper::get_BundleUrl( - devSettings->sourceBundleHost, - devSettings->sourceBundlePort, - devSettings->debugBundlePath, - devSettings->platformName, - devSettings->bundleAppId, - devSettings->devBundle, - devSettings->useFastRefresh, - devSettings->inlineSourceMap, - hermesBytecodeVersion) - : devSettings->bundleRootPath; - ::Microsoft::ReactNative::SourceCode::SetScriptUrl( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), bundleUrl); - - registerTurboModule( - L"SourceCode", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::SourceCode>()); - } - - registerTurboModule( - L"DevSettings", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::DevSettings>()); - -#ifndef CORE_ABI - registerTurboModule( - L"I18nManager", winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::I18nManager>()); - - registerTurboModule( - L"LinkingManager", - winrt::Microsoft::ReactNative::MakeTurboModuleProvider<::Microsoft::ReactNative::LinkingManager>()); - - registerTurboModule(L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::Timing>()); -#else - -#if defined(USE_FABRIC) - if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { - registerTurboModule( - L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::Microsoft::ReactNative::Timing>()); - } else -#endif - { - registerTurboModule(L"Timing", winrt::Microsoft::ReactNative::MakeModuleProvider<::facebook::react::Timing>()); - } -#endif - - registerTurboModule( - ::Microsoft::React::GetWebSocketTurboModuleName(), ::Microsoft::React::GetWebSocketModuleProvider()); - - if (!Microsoft::React::GetRuntimeOptionBool("Blob.DisableModule")) { - registerTurboModule(::Microsoft::React::GetHttpTurboModuleName(), ::Microsoft::React::GetHttpModuleProvider()); - - registerTurboModule(::Microsoft::React::GetBlobTurboModuleName(), ::Microsoft::React::GetBlobModuleProvider()); - - registerTurboModule( - ::Microsoft::React::GetFileReaderTurboModuleName(), ::Microsoft::React::GetFileReaderModuleProvider()); - } -} - -//! Initialize() is called from the native queue. -void ReactInstanceWin::Initialize() noexcept { -#ifdef USE_FABRIC - if (Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties())) { - InitializeBridgeless(); - } else -#endif - { - InitializeWithBridge(); - } -} - -void ReactInstanceWin::InitDevMenu() noexcept { - Microsoft::ReactNative::DevMenuManager::InitDevMenu(m_reactContext, [weakReactHost = m_weakReactHost]() noexcept { -#if !defined(CORE_ABI) && !defined(USE_FABRIC) - Microsoft::ReactNative::ShowConfigureBundlerDialog(weakReactHost); -#endif // CORE_ABI - }); -} - -void ReactInstanceWin::InitUIDependentCalls() noexcept { -#ifndef CORE_ABI - Microsoft::ReactNative::AppThemeHolder::InitAppThemeHolder(GetReactContext()); - Microsoft::ReactNative::I18nManager::InitI18nInfo( - winrt::Microsoft::ReactNative::ReactPropertyBag(Options().Properties)); - Microsoft::ReactNative::Appearance::InitOnUIThread(GetReactContext()); - Microsoft::ReactNative::DeviceInfoHolder::InitDeviceInfoHolder(GetReactContext()); -#endif // CORE_ABI -} - -std::shared_ptr ReactInstanceWin::CreateDevSettings() noexcept { - auto devSettings = std::make_shared(); - devSettings->useJITCompilation = m_options.EnableJITCompilation; - devSettings->sourceBundleHost = SourceBundleHost(); - devSettings->sourceBundlePort = SourceBundlePort(); - devSettings->inlineSourceMap = RequestInlineSourceMap(); - devSettings->debugBundlePath = DebugBundlePath(); - devSettings->liveReloadCallback = GetLiveReloadCallback(); - devSettings->errorCallback = GetErrorCallback(); - devSettings->loggingCallback = GetLoggingCallback(); - m_redboxHandler = devSettings->redboxHandler = std::move(GetRedBoxHandler()); - devSettings->useDirectDebugger = m_useDirectDebugger; - devSettings->debuggerBreakOnNextLine = m_debuggerBreakOnNextLine; - devSettings->debuggerPort = m_options.DeveloperSettings.DebuggerPort; - devSettings->debuggerRuntimeName = m_options.DeveloperSettings.DebuggerRuntimeName; - devSettings->useWebDebugger = m_useWebDebugger; - devSettings->useFastRefresh = m_isFastReloadEnabled; - devSettings->bundleRootPath = BundleRootPath(); - devSettings->platformName = - winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::GetPlatformName(m_reactContext->Properties()); - devSettings->waitingForDebuggerCallback = GetWaitingForDebuggerCallback(); - devSettings->debuggerAttachCallback = GetDebuggerAttachCallback(); - devSettings->enableDefaultCrashHandler = m_options.EnableDefaultCrashHandler(); - devSettings->bundleAppId = BundleAppId(); - devSettings->devBundle = RequestDevBundle(); - devSettings->showDevMenuCallback = [weakThis = Mso::WeakPtr{this}]() noexcept { - if (auto strongThis = weakThis.GetStrongPtr()) { - strongThis->m_uiQueue->Post( - [context = strongThis->m_reactContext]() { Microsoft::ReactNative::DevMenuManager::Show(context); }); - } - }; - - bool useRuntimeScheduler = winrt::Microsoft::ReactNative::implementation::QuirkSettings::GetUseRuntimeScheduler( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties())); - - devSettings->useRuntimeScheduler = useRuntimeScheduler; - - return devSettings; -} - -Mso::DispatchQueueSettings CreateDispatchQueueSettings( - const winrt::Microsoft::ReactNative::IReactNotificationService &service) { - Mso::DispatchQueueSettings queueSettings{}; - queueSettings.TaskStarting = [service](Mso::DispatchQueue const &) noexcept { - service.SendNotification( - winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherTaskStartingEventName(), nullptr, nullptr); - }; - queueSettings.IdleWaitStarting = [service](Mso::DispatchQueue const &) noexcept { - service.SendNotification( - winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherIdleWaitStartingEventName(), - nullptr, - nullptr); - }; - queueSettings.IdleWaitCompleted = [service](Mso::DispatchQueue const &) noexcept { - service.SendNotification( - winrt::Microsoft::ReactNative::ReactDispatcherHelper::JSDispatcherIdleWaitCompletedEventName(), - nullptr, - nullptr); - }; - return queueSettings; -} - -std::unique_ptr CreatePreparedScriptStore() noexcept { - std::unique_ptr preparedScriptStore = nullptr; - wchar_t tempPath[MAX_PATH]; - if (GetTempPathW(static_cast(std::size(tempPath)), tempPath)) { - preparedScriptStore = std::make_unique(winrt::to_string(tempPath)); - } - return preparedScriptStore; -} - -#ifdef USE_FABRIC - -typedef HRESULT(__stdcall *SetThreadDescriptionFn)(HANDLE, PCWSTR); -void SetJSThreadDescription() noexcept { - // Office still supports Server 2016 so we need to use Run Time Dynamic Linking and cannot just use: - // ::SetThreadDescription(GetCurrentThread(), L"React-Native JavaScript Thread"); - - auto moduleHandle = GetModuleHandleW(L"kernelbase.dll"); - // The description is just for developer experience, so we can skip it if kernelbase isn't already loaded - if (!moduleHandle) - return; - - auto proc = GetProcAddress(moduleHandle, "SetThreadDescription"); - if (!proc) - return; - - reinterpret_cast(proc)(GetCurrentThread(), L"React-Native JavaScript Thread"); -} - -void ReactInstanceWin::InitializeBridgeless() noexcept { - InitUIQueue(); - - m_uiMessageThread.Exchange(std::make_shared( - *m_uiQueue, Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); - - ReactPropertyBag(m_reactContext->Properties()) - .Set( - winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::PostToUIBatchingQueueProperty(), - [wkBatchingUIThread = std::weak_ptr(m_uiMessageThread.Load())]( - winrt::Microsoft::ReactNative::ReactDispatcherCallback const &callback) { - if (auto batchingUIThread = wkBatchingUIThread.lock()) { - batchingUIThread->runOnQueue(callback); - } - }); - - InitDevMenu(); - winrt::Microsoft::ReactNative::Composition::implementation::UriImageManager::Install( - ReactPropertyBag(m_reactContext->Properties()), m_options.UriImageManager); - - m_uiQueue->Post([this, weakThis = Mso::WeakPtr{this}]() noexcept { - // Objects that must be created on the UI thread - if (auto strongThis = weakThis.GetStrongPtr()) { - InitUIDependentCalls(); - - strongThis->Queue().Post([this, weakThis]() noexcept { - if (auto strongThis = weakThis.GetStrongPtr()) { - auto devSettings = strongThis->CreateDevSettings(); - devSettings->useTurboModulesOnly = true; - - try { - if (devSettings->useFastRefresh || devSettings->liveReloadCallback) { - Microsoft::ReactNative::PackagerConnection::CreateOrReusePackagerConnection(*devSettings); - } - // null moduleProvider since native modules are not supported in bridgeless - LoadModules(devSettings, nullptr, m_options.TurboModuleProvider); - - auto jsDispatchQueue = - Mso::DispatchQueue::MakeLooperQueue(CreateDispatchQueueSettings(m_reactContext->Notifications())); - auto jsDispatcher = - winrt::make(Mso::Copy(jsDispatchQueue)); - m_options.Properties.Set(ReactDispatcherHelper::JSDispatcherProperty(), jsDispatcher); - m_jsMessageThread.Exchange(std::make_shared( - jsDispatchQueue, Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); - - m_jsDispatchQueue.Exchange(std::move(jsDispatchQueue)); - - m_jsMessageThread.Load()->runOnQueueSync([&]() { - SetJSThreadDescription(); - auto timerRegistry = - ::Microsoft::ReactNative::TimerRegistry::CreateTimerRegistry(m_reactContext->Properties()); - auto timerRegistryRaw = timerRegistry.get(); - - auto timerManager = std::make_shared(std::move(timerRegistry)); - timerRegistryRaw->setTimerManager(timerManager); - - auto jsErrorHandlingFunc = [this]( - facebook::jsi::Runtime &runtime, - const facebook::react::JsErrorHandler::ProcessedError &error) noexcept { - OnJSError(runtime, std::move(error)); - }; - - if (devSettings->useDirectDebugger) { - ::Microsoft::ReactNative::GetSharedDevManager()->EnsureHermesInspector( - devSettings->sourceBundleHost, devSettings->sourceBundlePort); - } - - m_jsiRuntimeHolder = std::make_shared( - devSettings, m_jsMessageThread.Load(), CreatePreparedScriptStore()); - auto jsRuntime = std::make_unique(m_jsiRuntimeHolder); - jsRuntime->getRuntime(); - m_bridgelessReactInstance = std::make_unique( - std::move(jsRuntime), m_jsMessageThread.Load(), timerManager, jsErrorHandlingFunc); - - auto bufferedRuntimeExecutor = m_bridgelessReactInstance->getBufferedRuntimeExecutor(); - timerManager->setRuntimeExecutor(bufferedRuntimeExecutor); - - Microsoft::ReactNative::SchedulerSettings::SetRuntimeScheduler( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_options.Properties), - m_bridgelessReactInstance->getRuntimeScheduler()); - }); - - m_options.TurboModuleProvider->SetReactContext( - winrt::make(Mso::Copy(m_reactContext))); - - facebook::react::ReactInstance::JSRuntimeFlags options; - m_bridgelessReactInstance->initializeRuntime( - options, - [=, onCreated = m_options.OnInstanceCreated, reactContext = m_reactContext]( - facebook::jsi::Runtime &runtime) { - auto logger = [loggingHook = GetLoggingCallback()]( - const std::string &message, unsigned int logLevel) { - if (loggingHook) - loggingHook(static_cast(logLevel), message.c_str()); - }; - facebook::react::bindNativeLogger(runtime, logger); - - auto turboModuleManager = std::make_shared( - m_options.TurboModuleProvider, - std::make_shared( - m_bridgelessReactInstance->getRuntimeScheduler())); - - auto binding = - [turboModuleManager](const std::string &name) -> std::shared_ptr { - return turboModuleManager->getModule(name); - }; - - // Use a legacy native module binding that always returns null - // This means that calls to NativeModules.XXX will always return null, rather than crashing on access - auto legacyNativeModuleBinding = - [](const std::string & /*name*/) -> std::shared_ptr { - return nullptr; - }; - - facebook::react::TurboModuleBinding::install( - runtime, - std::function(binding), - std::function(legacyNativeModuleBinding), - m_options.TurboModuleProvider->LongLivedObjectCollection()); - - auto componentDescriptorRegistry = - Microsoft::ReactNative::WindowsComponentDescriptorRegistry::FromProperties( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_options.Properties)); - auto hasComponentProvider = [componentDescriptorRegistry](const std::string &name) -> bool { - return componentDescriptorRegistry->hasComponentProvider( - facebook::react::componentNameByReactViewName(name)); - }; - facebook::react::bindHasComponentProvider(runtime, std::move(hasComponentProvider)); - - // init TurboModule - for (const auto &moduleName : turboModuleManager->getEagerInitModuleNames()) { - turboModuleManager->getModule(moduleName); - } - - if (onCreated) { - onCreated.Get()->Invoke(reactContext); - } - }); - - LoadJSBundlesBridgeless(devSettings); - SetupHMRClient(); - - } catch (std::exception &e) { - OnErrorWithMessage(e.what()); - OnErrorWithMessage("ReactInstanceWin: Failed to create React Instance."); - } catch (winrt::hresult_error const &e) { - OnErrorWithMessage(Microsoft::Common::Unicode::Utf16ToUtf8(e.message().c_str(), e.message().size())); - OnErrorWithMessage("ReactInstanceWin: Failed to create React Instance."); - } catch (...) { - OnErrorWithMessage("ReactInstanceWin: Failed to create React Instance."); - } - } - }); - } - }); -} -#endif - -void ReactInstanceWin::FireInstanceCreatedCallback() noexcept { - // The InstanceCreated event can be used to augment the JS environment for all JS code. So it needs to be - // triggered before any platform JS code is run. Using m_jsMessageThread instead of jsDispatchQueue avoids - // waiting for the JSCaller which can delay the event until after certain JS code has already run - m_jsMessageThread.Load()->runOnQueue( - [onCreated = m_options.OnInstanceCreated, reactContext = m_reactContext]() noexcept { - if (onCreated) { - onCreated.Get()->Invoke(reactContext); - } - }); -} - -void ReactInstanceWin::InitializeWithBridge() noexcept { - InitJSMessageThread(); - InitNativeMessageThread(); - - InitUIQueue(); - InitUIMessageThread(); - -#if !defined(CORE_ABI) && !defined(USE_FABRIC) - // InitUIManager uses m_legacyReactInstance - InitUIManager(); -#endif - - InitDevMenu(); -#ifdef USE_FABRIC - winrt::Microsoft::ReactNative::Composition::implementation::UriImageManager::Install( - ReactPropertyBag(m_reactContext->Properties()), m_options.UriImageManager); -#endif - - m_uiQueue->Post([this, weakThis = Mso::WeakPtr{this}]() noexcept { - // Objects that must be created on the UI thread - if (auto strongThis = weakThis.GetStrongPtr()) { - InitUIDependentCalls(); - strongThis->Queue().Post([this, weakThis]() noexcept { - if (auto strongThis = weakThis.GetStrongPtr()) { - auto devSettings = strongThis->CreateDevSettings(); - - auto getBoolProperty = [properties = ReactPropertyBag{m_options.Properties}]( - const wchar_t *ns, const wchar_t *name, bool defaultValue) noexcept -> bool { - ReactPropertyId propId{ns == nullptr ? ReactPropertyNamespace() : ReactPropertyNamespace(ns), name}; - std::optional propValue = properties.Get(propId); - return propValue.value_or(defaultValue); - }; - - devSettings->omitNetworkingCxxModules = getBoolProperty(nullptr, L"OmitNetworkingCxxModules", false); - devSettings->useWebSocketTurboModule = getBoolProperty(nullptr, L"UseWebSocketTurboModule", false); - devSettings->useTurboModulesOnly = getBoolProperty(L"DevSettings", L"UseTurboModulesOnly", false); - - std::vector cxxModules; - auto nmp = std::make_shared(); - - LoadModules(devSettings, nmp, m_options.TurboModuleProvider); - - auto modules = nmp->GetModules(m_reactContext, m_jsMessageThread.Load()); - cxxModules.insert( - cxxModules.end(), std::make_move_iterator(modules.begin()), std::make_move_iterator(modules.end())); - - if (m_options.ModuleProvider != nullptr) { - std::vector customCxxModules = - m_options.ModuleProvider->GetModules(m_reactContext, m_jsMessageThread.Load()); - cxxModules.insert(std::end(cxxModules), std::begin(customCxxModules), std::end(customCxxModules)); - } - - std::unique_ptr scriptStore = nullptr; - std::unique_ptr preparedScriptStore = nullptr; - - if (const auto jsExecutorFactoryDelegate = - Microsoft::JSI::JSExecutorFactorySettings::GetJSExecutorFactoryDelegate( - winrt::Microsoft::ReactNative::ReactPropertyBag(strongThis->Options().Properties))) { - devSettings->jsExecutorFactoryDelegate = jsExecutorFactoryDelegate; - if (m_options.JsiEngine() == JSIEngine::Hermes) { - devSettings->jsiEngineOverride = facebook::react::JSIEngineOverride::Hermes; - } - } else { - switch (m_options.JsiEngine()) { - case JSIEngine::Hermes: { - preparedScriptStore = CreatePreparedScriptStore(); - - auto hermesRuntimeHolder = std::make_shared( - devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore)); - Microsoft::ReactNative::HermesRuntimeHolder::storeTo( - ReactPropertyBag(m_reactContext->Properties()), hermesRuntimeHolder); - devSettings->jsiRuntimeHolder = hermesRuntimeHolder; - break; - } - case JSIEngine::V8: -#if defined(USE_V8) - { - preparedScriptStore = CreatePreparedScriptStore(); - bool enableMultiThreadSupport{false}; -#ifdef USE_FABRIC - enableMultiThreadSupport = Microsoft::ReactNative::IsFabricEnabled(m_reactContext->Properties()); -#endif // USE_FABRIC - - if (m_options.JsiEngineV8NodeApi()) { - devSettings->jsiRuntimeHolder = std::make_shared( - devSettings, m_jsMessageThread.Load(), std::move(preparedScriptStore), enableMultiThreadSupport); - } else { - devSettings->jsiRuntimeHolder = std::make_shared( - devSettings, - m_jsMessageThread.Load(), - std::move(scriptStore), - std::move(preparedScriptStore), - enableMultiThreadSupport); - } - - break; - } -#endif // USE_V8 - case JSIEngine::Chakra: -#ifndef CORE_ABI - if (m_options.EnableByteCodeCaching || !m_options.ByteCodeFileUri.empty()) { - scriptStore = std::make_unique(); - preparedScriptStore = std::make_unique( - winrt::to_hstring(m_options.ByteCodeFileUri)); - } -#endif - devSettings->jsiRuntimeHolder = std::make_shared( - devSettings, m_jsMessageThread.Load(), std::move(scriptStore), std::move(preparedScriptStore)); - break; - } - } - - m_jsiRuntimeHolder = devSettings->jsiRuntimeHolder; - - try { - // We need to keep the instance wrapper alive as its destruction shuts down the native queue. - m_options.TurboModuleProvider->SetReactContext( - winrt::make(Mso::Copy(m_reactContext))); - - auto bundleRootPath = devSettings->bundleRootPath; - auto jsiRuntimeHolder = devSettings->jsiRuntimeHolder; - auto instanceWrapper = facebook::react::CreateReactInstance( - std::shared_ptr(strongThis->m_instance.Load()), - std::move(bundleRootPath), // bundleRootPath - std::move(cxxModules), - m_options.TurboModuleProvider, - m_options.TurboModuleProvider->LongLivedObjectCollection(), - m_reactContext->Properties(), - std::make_unique(weakThis), - m_jsMessageThread.Load(), - m_nativeMessageThread.Load(), - std::move(devSettings)); - - m_instanceWrapper.Exchange(std::move(instanceWrapper)); - - FireInstanceCreatedCallback(); - LoadJSBundles(); - SetupHMRClient(); - - } catch (std::exception &e) { - OnErrorWithMessage(e.what()); - OnErrorWithMessage("UwpReactInstance: Failed to create React Instance."); - } catch (winrt::hresult_error const &e) { - OnErrorWithMessage(Microsoft::Common::Unicode::Utf16ToUtf8(e.message().c_str(), e.message().size())); - OnErrorWithMessage("UwpReactInstance: Failed to create React Instance."); - } catch (...) { - OnErrorWithMessage("UwpReactInstance: Failed to create React Instance."); - } - } - }); - }; - }); -} - -void ReactInstanceWin::SetupHMRClient() noexcept { - if (UseDeveloperSupport() && State() != ReactInstanceState::HasError) { - folly::dynamic params = folly::dynamic::array( - winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::GetPlatformName( - m_reactContext->Properties()), - DebugBundlePath(), - SourceBundleHost(), - SourceBundlePort(), - m_isFastReloadEnabled, - "ws"); - CallJsFunction("HMRClient", "setup", std::move(params)); - } -} - -void ReactInstanceWin::LoadJSBundles() noexcept { - // - // We use m_jsMessageThread to load JS bundles synchronously. In that case we only load - // them if the m_jsMessageThread is not shut down (quitSynchronous() is not called). - // After the load we call OnReactInstanceLoaded callback on native queue. - // - // Note that the instance could be destroyed while we are loading JS Bundles. - // Though, the JS engine is not destroyed until this work item is not finished. - // Thus, we check the m_isDestroyed flag to see if we should do an early exit. - // Also, since we have to guarantee that the OnReactInstanceLoaded callback is called before - // the OnReactInstanceDestroyed callback, the OnReactInstanceLoaded is called right before the - // OnReactInstanceDestroyed callback in the Destroy() method. In that case any OnReactInstanceLoaded - // calls after we finish this JS message queue work item is ignored. - // - // The LoadedCallbackGuard is used for the case when runOnQueue does not execute the lambda - // before destroying it. It may happen if the m_jsMessageThread is already shutdown. - // In that case, the LoadedCallbackGuard notifies about cancellation by calling OnReactInstanceLoaded. - // The OnReactInstanceLoaded internally only accepts the first call and ignores others. - // - - if (m_useWebDebugger || m_isFastReloadEnabled) { - // Getting bundle from the packager, so do everything async. - auto instanceWrapper = m_instanceWrapper.LoadWithLock(); - instanceWrapper->loadBundle(Mso::Copy(JavaScriptBundleFile())); - - m_jsMessageThread.Load()->runOnQueue( - [weakThis = Mso::WeakPtr{this}, - loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { - if (auto strongThis = weakThis.GetStrongPtr()) { - if (strongThis->State() != ReactInstanceState::HasError) { - strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); - } - } - }); - } else { - m_jsMessageThread.Load()->runOnQueue( - [weakThis = Mso::WeakPtr{this}, - loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { - if (auto strongThis = weakThis.GetStrongPtr()) { - auto instance = strongThis->m_instance.LoadWithLock(); - auto instanceWrapper = strongThis->m_instanceWrapper.LoadWithLock(); - if (!instance || !instanceWrapper) { - return; - } - - try { - instanceWrapper->loadBundleSync(Mso::Copy(strongThis->JavaScriptBundleFile())); - if (strongThis->State() != ReactInstanceState::HasError) { - strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); - } - } catch (...) { - strongThis->OnReactInstanceLoaded(Mso::ExceptionErrorProvider().MakeErrorCode(std::current_exception())); - } - } - }); - } -} - -#ifdef USE_FABRIC -void ReactInstanceWin::LoadJSBundlesBridgeless(std::shared_ptr devSettings) noexcept { - if (m_isFastReloadEnabled) { - // Getting bundle from the packager, so do everything async. - - ::Microsoft::ReactNative::LoadRemoteUrlScript( - devSettings, - ::Microsoft::ReactNative::GetSharedDevManager(), - Mso::Copy(JavaScriptBundleFile()), - [=](std::unique_ptr script, const std::string &sourceURL) { - m_bridgelessReactInstance->loadScript(std::move(script), sourceURL); - }); - - m_jsMessageThread.Load()->runOnQueue( - [weakThis = Mso::WeakPtr{this}, - loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { - if (auto strongThis = weakThis.GetStrongPtr()) { - if (strongThis->State() != ReactInstanceState::HasError) { - strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); - } - } - }); - } else { - auto bundleString = ::Microsoft::ReactNative::JsBigStringFromPath(devSettings, Mso::Copy(JavaScriptBundleFile())); - m_bridgelessReactInstance->loadScript(std::move(bundleString), Mso::Copy(JavaScriptBundleFile())); - - m_jsMessageThread.Load()->runOnQueue( - [weakThis = Mso::WeakPtr{this}, - loadCallbackGuard = Mso::MakeMoveOnCopyWrapper(LoadedCallbackGuard{*this})]() noexcept { - if (auto strongThis = weakThis.GetStrongPtr()) { - try { - if (strongThis->State() != ReactInstanceState::HasError) { - strongThis->OnReactInstanceLoaded(Mso::ErrorCode{}); - } - } catch (...) { - strongThis->OnReactInstanceLoaded(Mso::ExceptionErrorProvider().MakeErrorCode(std::current_exception())); - } - } - }); - } -} -#endif - -void ReactInstanceWin::OnReactInstanceLoaded(const Mso::ErrorCode &errorCode) noexcept { - bool isLoadedExpected = false; - if (m_isLoaded.compare_exchange_strong(isLoadedExpected, true)) { - if (!errorCode) { - m_state = ReactInstanceState::Loaded; - m_whenLoaded.SetValue(); - DrainJSCallQueue(); - } else { - m_state = ReactInstanceState::HasError; - m_whenLoaded.SetError(errorCode); - OnError(errorCode); - } - } -} - -Mso::Future ReactInstanceWin::Destroy() noexcept { - // This method must be called from the native queue. - VerifyIsInQueueElseCrash(); - - if (m_isDestroyed) { - return m_whenDestroyedResult; - } - - m_isDestroyed = true; - m_state = ReactInstanceState::Unloaded; - AbandonJSCallQueue(); - - // Make sure that the instance is not destroyed yet - if (auto instance = m_instance.Exchange(nullptr)) { - { - // Release the JSI runtime - std::scoped_lock lock{m_mutex}; - m_jsiRuntimeHolder = nullptr; - m_jsiRuntime = nullptr; - } - // Release the message queues before the ui manager and instance. - m_nativeMessageThread.Exchange(nullptr); - m_jsMessageThread.Exchange(nullptr); - m_instanceWrapper.Exchange(nullptr); - m_jsDispatchQueue.Exchange(nullptr); - } - -#ifdef USE_FABRIC - if (m_bridgelessReactInstance) { - auto jsDispatchQueue = m_jsDispatchQueue.Exchange(nullptr); - if (auto jsMessageThread = m_jsMessageThread.Exchange(nullptr)) { - jsMessageThread->runOnQueueSync([&]() noexcept { - { - // Release the JSI runtime - std::scoped_lock lock{m_mutex}; - - this->m_jsiRuntimeHolder = nullptr; - this->m_jsiRuntime = nullptr; - } - this->m_bridgelessReactInstance = nullptr; - jsMessageThread->quitSynchronous(); - if (jsDispatchQueue) { - jsDispatchQueue.Shutdown(PendingTaskAction::Complete); - } - m_whenDestroyed.SetValue(); - }); - } - } -#endif - - return m_whenDestroyedResult; -} - -const ReactOptions &ReactInstanceWin::Options() const noexcept { - return m_options; -} - -ReactInstanceState ReactInstanceWin::State() const noexcept { - return m_state; -} - -void ReactInstanceWin::InitJSMessageThread() noexcept { - m_instance.Exchange(std::make_shared()); - - auto scheduler = Mso::MakeJSCallInvokerScheduler( - CreateDispatchQueueSettings(m_reactContext->Notifications()), - m_instance.Load()->getJSCallInvoker(), - Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError), - Mso::Copy(m_whenDestroyed)); - auto jsDispatchQueue = Mso::DispatchQueue::MakeCustomQueue(Mso::CntPtr(scheduler)); - - auto jsDispatcher = - winrt::make(Mso::Copy(jsDispatchQueue)); - m_options.Properties.Set(ReactDispatcherHelper::JSDispatcherProperty(), jsDispatcher); - - m_jsMessageThread.Exchange(qi_cast(scheduler.Get())->GetMessageQueue()); - m_jsDispatchQueue.Exchange(std::move(jsDispatchQueue)); -} - -void ReactInstanceWin::InitNativeMessageThread() noexcept { - // Native queue was already given us in constructor. - m_nativeMessageThread.Exchange( - std::make_shared(Queue(), Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); -} - -void ReactInstanceWin::InitUIQueue() noexcept { - m_uiQueue = winrt::Microsoft::ReactNative::implementation::ReactDispatcher::GetUIDispatchQueue2(m_options.Properties); - VerifyElseCrashSz(m_uiQueue, "No UI Dispatcher provided"); -} - -void ReactInstanceWin::InitUIMessageThread() noexcept { - m_uiMessageThread.Exchange(std::make_shared( - *m_uiQueue, Mso::MakeWeakMemberFunctor(this, &ReactInstanceWin::OnError))); - - auto batchingUIThread = Microsoft::ReactNative::MakeBatchingQueueThread(m_uiMessageThread.Load()); - m_batchingUIThread = batchingUIThread; - - ReactPropertyBag(m_reactContext->Properties()) - .Set( - winrt::Microsoft::ReactNative::implementation::ReactCoreInjection::PostToUIBatchingQueueProperty(), - [wkBatchingUIThread = std::weak_ptr(batchingUIThread)]( - winrt::Microsoft::ReactNative::ReactDispatcherCallback const &callback) { - if (auto batchingUIThread = wkBatchingUIThread.lock()) { - batchingUIThread->runOnQueue(callback); - } - }); - - m_jsDispatchQueue.Load().Post( - [batchingUIThread, instance = std::weak_ptr(m_instance.Load())]() noexcept { - batchingUIThread->decoratedNativeCallInvokerReady(instance); - }); -} - -#if !defined(CORE_ABI) && !defined(USE_FABRIC) -void ReactInstanceWin::InitUIManager() noexcept { - std::vector> viewManagers; - - // Custom view managers - if (m_options.ViewManagerProvider) { - viewManagers = m_options.ViewManagerProvider->GetViewManagers(m_reactContext); - } - - Microsoft::ReactNative::AddStandardViewManagers(viewManagers, *m_reactContext); - - auto uiManagerSettings = std::make_unique( - m_batchingUIThread, m_uiMessageThread.Load(), std::move(viewManagers)); - Microsoft::ReactNative::UIManager::SetSettings(m_reactContext->Properties(), std::move(uiManagerSettings)); - - m_reactContext->Properties().Set( - implementation::XamlUIService::XamlUIServiceProperty().Handle(), - winrt::make(m_reactContext)); - - m_reactContext->Properties().Set( - implementation::LayoutService::LayoutServiceProperty().Handle(), - winrt::make(m_reactContext)); -} -#endif - -facebook::react::NativeLoggingHook ReactInstanceWin::GetLoggingCallback() noexcept { - if (m_options.OnLogging) { - return [logCallback = m_options.OnLogging](facebook::react::RCTLogLevel logLevel, const char *message) { - logCallback(static_cast(logLevel), message); - }; - } else { - // When no logging callback was specified, use a default one in DEBUG builds -#if DEBUG - return [telemetryTag{JavaScriptBundleFile()}](facebook::react::RCTLogLevel logLevel, const char *message) { - std::ostringstream ss; - ss << "ReactNative ['" << telemetryTag << "'] ("; - switch (logLevel) { - case facebook::react::RCTLogLevel::Trace: - ss << "trace"; - break; - case facebook::react::RCTLogLevel::Info: - ss << "info"; - break; - case facebook::react::RCTLogLevel::Warning: - ss << "warning"; - break; - case facebook::react::RCTLogLevel::Error: - ss << "error"; - break; - case facebook::react::RCTLogLevel::Fatal: - ss << "fatal"; - break; - } - ss << "): '" << message << "'\n"; - OutputDebugStringA(ss.str().c_str()); - }; -#else - return facebook::react::NativeLoggingHook{}; -#endif - } -} - -std::shared_ptr ReactInstanceWin::GetRedBoxHandler() noexcept { - if (m_options.RedBoxHandler) { - return m_options.RedBoxHandler; -#ifndef CORE_ABI - } else if (UseDeveloperSupport()) { - auto localWkReactHost = m_weakReactHost; - return CreateDefaultRedBoxHandler( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties()), - std::move(localWkReactHost), - *m_uiQueue); -#endif - } else { - return {}; - } -} - -std::function ReactInstanceWin::GetLiveReloadCallback() noexcept { - // Live reload is enabled if we provide a callback function. - if (m_isLiveReloadEnabled || m_isFastReloadEnabled) { - return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnLiveReload); - } - return std::function{}; -} - -std::string ReactInstanceWin::GetBytecodeFileName() noexcept { - // use bytecode caching if enabled and not debugging - // (ChakraCore debugging does not work when bytecode caching is enabled) - // TODO: implement - // bool useByteCode = Mso::React::BytecodeOptimizationEnabled() && !m_options.DeveloperSettings.UseDirectDebugger; - // return useByteCode ? Mso::React::GetBytecodeFilePath(m_options.Identity) : ""; - return ""; -} - -std::function ReactInstanceWin::GetErrorCallback() noexcept { - return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnErrorWithMessage); -} - -void ReactInstanceWin::OnErrorWithMessage(const std::string &errorMessage) noexcept { - OnError(Mso::React::ReactErrorProvider().MakeErrorCode(Mso::React::ReactError{errorMessage.c_str()})); -} - -void ReactInstanceWin::OnError(const Mso::ErrorCode &errorCode) noexcept { - m_state = ReactInstanceState::HasError; - AbandonJSCallQueue(); - - if (m_redboxHandler && m_redboxHandler->isDevSupportEnabled()) { - ErrorInfo errorInfo; - errorInfo.Message = errorCode.ToString(); - errorInfo.Id = 0; - m_redboxHandler->showNewError(std::move(errorInfo), ErrorType::Native); - } - - InvokeInQueue([this, errorCode]() noexcept { m_options.OnError(errorCode); }); - - m_updateUI(); -} - -#ifdef USE_FABRIC -void ReactInstanceWin::OnJSError( - facebook::jsi::Runtime &runtime, - const facebook::react::JsErrorHandler::ProcessedError &error) noexcept { - ErrorInfo errorInfo; - errorInfo.Message = error.message; - auto errorCode = Mso::React::ReactErrorProvider().MakeErrorCode(Mso::React::ReactError{errorInfo.Message.c_str()}); - - for (const facebook::react::JsErrorHandler::ProcessedError::StackFrame &frame : error.stack) { - errorInfo.Callstack.push_back( - {frame.file.value(), frame.methodName, frame.lineNumber.value(), frame.column.value()}); - } - - errorInfo.Id = error.id; - - bool isFatal = error.isFatal; - - m_state = ReactInstanceState::HasError; - AbandonJSCallQueue(); - - OnReactInstanceLoaded(errorCode); - if (m_redboxHandler && m_redboxHandler->isDevSupportEnabled()) { - m_redboxHandler->showNewError(std::move(errorInfo), isFatal ? ErrorType::JSFatal : ErrorType::JSSoft); - } - - InvokeInQueue([this, errorCode]() noexcept { m_options.OnError(errorCode); }); - - m_updateUI(); -} -#endif - -void ReactInstanceWin::OnLiveReload() noexcept { - if (auto reactHost = m_weakReactHost.GetStrongPtr()) { - reactHost->ReloadInstance(); - } -} - -std::function ReactInstanceWin::GetWaitingForDebuggerCallback() noexcept { - if (m_useWebDebugger) { - return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnWaitingForDebugger); - } - - return {}; -} - -void ReactInstanceWin::OnWaitingForDebugger() noexcept { - auto state = m_state.load(); - while (state == ReactInstanceState::Loading) { - if (m_state.compare_exchange_weak(state, ReactInstanceState::WaitingForDebugger)) { - break; - } - } - - m_updateUI(); -} - -std::function ReactInstanceWin::GetDebuggerAttachCallback() noexcept { - if (m_useWebDebugger) { - return Mso::MakeWeakMemberStdFunction(this, &ReactInstanceWin::OnDebuggerAttach); - } - - return {}; -} - -void ReactInstanceWin::OnDebuggerAttach() noexcept { - m_updateUI(); -} - -void ReactInstanceWin::DrainJSCallQueue() noexcept { - // Handle all items in the queue one by one. - for (;;) { - JSCallEntry entry; // To avoid callJSFunction under the lock - { - std::scoped_lock lock{m_mutex}; - if (m_state == ReactInstanceState::Loaded && !m_jsCallQueue.empty()) { - entry = std::move(m_jsCallQueue.front()); - m_jsCallQueue.pop_front(); - } else { - break; - } - } - -#ifdef USE_FABRIC - if (m_bridgelessReactInstance) { - m_bridgelessReactInstance->callFunctionOnModule(entry.ModuleName, entry.MethodName, std::move(entry.Args)); - } else -#endif - if (auto instance = m_instance.LoadWithLock()) { - instance->callJSFunction(std::move(entry.ModuleName), std::move(entry.MethodName), std::move(entry.Args)); - } - } -} - -void ReactInstanceWin::AbandonJSCallQueue() noexcept { - std::deque jsCallQueue; // To avoid destruction under the lock - { - std::scoped_lock lock{m_mutex}; - if (m_state == ReactInstanceState::HasError || m_state == ReactInstanceState::Unloaded) { - jsCallQueue = std::move(m_jsCallQueue); - } - } -} - -void ReactInstanceWin::CallJsFunction( - std::string &&moduleName, - std::string &&method, - folly::dynamic &¶ms) noexcept { - bool shouldCall{false}; // To call callJSFunction outside of lock - { - std::scoped_lock lock{m_mutex}; - if (m_state == ReactInstanceState::Loaded && m_jsCallQueue.empty()) { - shouldCall = true; - } else if ( - m_state == ReactInstanceState::Loading || m_state == ReactInstanceState::WaitingForDebugger || - (m_state == ReactInstanceState::Loaded && !m_jsCallQueue.empty())) { - m_jsCallQueue.push_back(JSCallEntry{std::move(moduleName), std::move(method), std::move(params)}); - } - // otherwise ignore the call - } - - if (shouldCall) { -#ifdef USE_FABRIC - if (m_bridgelessReactInstance) { - m_bridgelessReactInstance->callFunctionOnModule(moduleName, method, std::move(params)); - } else -#endif - if (auto instance = m_instance.LoadWithLock()) { - instance->callJSFunction(std::move(moduleName), std::move(method), std::move(params)); - } - } -} - -void ReactInstanceWin::DispatchEvent(int64_t viewTag, std::string &&eventName, folly::dynamic &&eventData) noexcept { - folly::dynamic params = folly::dynamic::array(viewTag, std::move(eventName), std::move(eventData)); - CallJsFunction("RCTEventEmitter", "receiveEvent", std::move(params)); -} - -winrt::Microsoft::ReactNative::JsiRuntime ReactInstanceWin::JsiRuntime() noexcept { - std::shared_ptr jsiRuntimeHolder; - { - std::scoped_lock lock{m_mutex}; - if (m_jsiRuntime) { - return m_jsiRuntime; - } else { - jsiRuntimeHolder = m_jsiRuntimeHolder; - } - } - - auto jsiRuntime = jsiRuntimeHolder ? jsiRuntimeHolder->getRuntime() : nullptr; - - { - std::scoped_lock lock{m_mutex}; - if (!m_jsiRuntime && jsiRuntime) { - // Set only if other thread did not do it yet. - m_jsiRuntime = - winrt::Microsoft::ReactNative::implementation::JsiRuntime::GetOrCreate(jsiRuntimeHolder, jsiRuntime); - } - - return m_jsiRuntime; - } -} - -std::shared_ptr ReactInstanceWin::GetInnerInstance() noexcept { - return m_instance.LoadWithLock(); -} - -bool ReactInstanceWin::IsLoaded() const noexcept { - return m_state == ReactInstanceState::Loaded; -} - -void ReactInstanceWin::AttachMeasuredRootView( - facebook::react::IReactRootView *rootView, - const winrt::Microsoft::ReactNative::JSValueArgWriter &initialProps, - bool useFabric) noexcept { - if (State() == ReactInstanceState::HasError) - return; - - assert(!useFabric); -#ifndef CORE_ABI - if (!useFabric || m_useWebDebugger) { - int64_t rootTag = -1; - -#if !defined(CORE_ABI) && !defined(USE_FABRIC) - if (auto uiManager = Microsoft::ReactNative::GetNativeUIManager(*m_reactContext).lock()) { - rootTag = uiManager->AddMeasuredRootView(rootView); - rootView->SetTag(rootTag); - } else { - assert(false); - } -#endif - - std::string jsMainModuleName = rootView->JSComponentName(); - folly::dynamic params = folly::dynamic::array( - std::move(jsMainModuleName), - folly::dynamic::object("initialProps", DynamicWriter::ToDynamic(initialProps))("rootTag", rootTag)( - "fabric", false)); - CallJsFunction("AppRegistry", "runApplication", std::move(params)); - } -#endif -} - -void ReactInstanceWin::DetachRootView(facebook::react::IReactRootView *rootView, bool useFabric) noexcept { - if (State() == ReactInstanceState::HasError) - return; - - auto rootTag = rootView->GetTag(); - folly::dynamic params = folly::dynamic::array(rootTag); - -#ifdef USE_FABRIC - if (useFabric && !m_useWebDebugger) { - auto uiManager = ::Microsoft::ReactNative::FabricUIManager::FromProperties( - winrt::Microsoft::ReactNative::ReactPropertyBag(m_reactContext->Properties())); - uiManager->stopSurface(static_cast(rootTag)); - } else -#endif - { - CallJsFunction("AppRegistry", "unmountApplicationComponentAtRootTag", std::move(params)); - } - - // Give the JS thread time to finish executing - m_jsMessageThread.Load()->runOnQueueSync([]() {}); -} - -Mso::CntPtr MakeReactInstance( - IReactHost &reactHost, - ReactOptions &&options, - Mso::Promise &&whenCreated, - Mso::Promise &&whenLoaded, - Mso::VoidFunctor &&updateUI) noexcept { - return Mso::Make( - reactHost, std::move(options), std::move(whenCreated), std::move(whenLoaded), std::move(updateUI)); -} - -bool ReactInstanceWin::UseWebDebugger() const noexcept { - return m_useWebDebugger; -} - -bool ReactInstanceWin::UseFastRefresh() const noexcept { - return m_isFastReloadEnabled; -} - -bool ReactInstanceWin::UseDirectDebugger() const noexcept { - return m_useDirectDebugger; -} - -bool ReactInstanceWin::DebuggerBreakOnNextLine() const noexcept { - return m_debuggerBreakOnNextLine; -} - -uint16_t ReactInstanceWin::DebuggerPort() const noexcept { - return m_options.DeveloperSettings.DebuggerPort; -} - -std::string ReactInstanceWin::DebugBundlePath() const noexcept { - return m_options.DeveloperSettings.SourceBundleName.empty() ? m_options.Identity - : m_options.DeveloperSettings.SourceBundleName; -} - -std::string ReactInstanceWin::BundleRootPath() const noexcept { - return m_options.BundleRootPath.empty() ? "ms-appx:///Bundle/" : m_options.BundleRootPath; -} - -std::string ReactInstanceWin::SourceBundleHost() const noexcept { - return m_options.DeveloperSettings.SourceBundleHost.empty() ? facebook::react::DevServerHelper::DefaultPackagerHost - : m_options.DeveloperSettings.SourceBundleHost; -} - -uint16_t ReactInstanceWin::SourceBundlePort() const noexcept { - return m_options.DeveloperSettings.SourceBundlePort ? m_options.DeveloperSettings.SourceBundlePort - : facebook::react::DevServerHelper::DefaultPackagerPort; -} - -bool ReactInstanceWin::RequestInlineSourceMap() const noexcept { - return m_options.DeveloperSettings.RequestInlineSourceMap; -} - -JSIEngine ReactInstanceWin::JsiEngine() const noexcept { - return m_options.JsiEngine(); -} - -std::string ReactInstanceWin::JavaScriptBundleFile() const noexcept { - return m_options.Identity; -} - -std::string ReactInstanceWin::BundleAppId() const noexcept { - return m_options.DeveloperSettings.BundleAppId; -} - -bool ReactInstanceWin::RequestDevBundle() const noexcept { - return m_options.DeveloperSettings.DevBundle; -} - -bool ReactInstanceWin::UseDeveloperSupport() const noexcept { - return m_options.UseDeveloperSupport(); -} - -Mso::React::IReactContext &ReactInstanceWin::GetReactContext() const noexcept { - return *m_reactContext; -} - -} // namespace Mso::React From cbfce7b0edfaabc76e81360886e6bfd08c2bacf8 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Mon, 5 May 2025 21:28:26 -0700 Subject: [PATCH 16/19] format --- .../CallInvokerWriter.cpp | 74 ++++++++++--------- .../Microsoft.ReactNative/CallInvokerWriter.h | 4 +- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/vnext/Microsoft.ReactNative/CallInvokerWriter.cpp b/vnext/Microsoft.ReactNative/CallInvokerWriter.cpp index 2e75bd3c98f..d7c1b24ee09 100644 --- a/vnext/Microsoft.ReactNative/CallInvokerWriter.cpp +++ b/vnext/Microsoft.ReactNative/CallInvokerWriter.cpp @@ -33,7 +33,7 @@ CallInvokerWriter::CallInvokerWriter( std::weak_ptr jsiRuntimeHolder) noexcept : m_callInvoker(jsInvoker), m_jsiRuntimeHolder(std::move(jsiRuntimeHolder)) {} - CallInvokerWriter::~CallInvokerWriter() { +CallInvokerWriter::~CallInvokerWriter() { if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { jsiRuntimeHolder->allowRelease(); } @@ -42,29 +42,31 @@ CallInvokerWriter::CallInvokerWriter( void CallInvokerWriter::WithResultArgs( Mso::Functor handler) noexcept { -/* - if (m_jsDispatcher.HasThreadAccess()) { - VerifyElseCrash(!m_dynamicWriter); - if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { - const facebook::jsi::Value *args{nullptr}; - size_t argCount{0}; - m_jsiWriter->AccessResultAsArgs(args, argCount); - handler(jsiRuntimeHolder->Runtime(), args, argCount); - m_jsiWriter = nullptr; - } - } else { -*/ - VerifyElseCrash(!m_jsiWriter); - folly::dynamic dynValue = m_dynamicWriter->TakeValue(); - VerifyElseCrash(dynValue.isArray()); - m_callInvoker->invokeAsync([handler, dynValue = std::move(dynValue), weakJsiRuntimeHolder = m_jsiRuntimeHolder, self = get_strong()](facebook::jsi::Runtime& runtime) { - std::vector args; - args.reserve(dynValue.size()); - for (auto const &item : dynValue) { - args.emplace_back(facebook::jsi::valueFromDynamic(runtime, item)); + /* + if (m_jsDispatcher.HasThreadAccess()) { + VerifyElseCrash(!m_dynamicWriter); + if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { + const facebook::jsi::Value *args{nullptr}; + size_t argCount{0}; + m_jsiWriter->AccessResultAsArgs(args, argCount); + handler(jsiRuntimeHolder->Runtime(), args, argCount); + m_jsiWriter = nullptr; } - handler(runtime, args.data(), args.size()); - }); + } else { + */ + VerifyElseCrash(!m_jsiWriter); + folly::dynamic dynValue = m_dynamicWriter->TakeValue(); + VerifyElseCrash(dynValue.isArray()); + m_callInvoker->invokeAsync( + [handler, dynValue = std::move(dynValue), weakJsiRuntimeHolder = m_jsiRuntimeHolder, self = get_strong()]( + facebook::jsi::Runtime &runtime) { + std::vector args; + args.reserve(dynValue.size()); + for (auto const &item : dynValue) { + args.emplace_back(facebook::jsi::valueFromDynamic(runtime, item)); + } + handler(runtime, args.data(), args.size()); + }); //} } @@ -110,21 +112,21 @@ void CallInvokerWriter::WriteArrayEnd() noexcept { IJSValueWriter CallInvokerWriter::GetWriter() noexcept { if (!m_writer) { -/* - if (m_jsDispatcher.HasThreadAccess()) { - if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { - m_jsiWriter = winrt::make_self(jsiRuntimeHolder->Runtime()); - m_writer = m_jsiWriter.as(); - } else { - m_writer = winrt::make(); - } - } else { - */ - m_dynamicWriter = winrt::make_self(); - m_writer = m_dynamicWriter.as(); + /* + if (m_jsDispatcher.HasThreadAccess()) { + if (auto jsiRuntimeHolder = m_jsiRuntimeHolder.lock()) { + m_jsiWriter = winrt::make_self(jsiRuntimeHolder->Runtime()); + m_writer = m_jsiWriter.as(); + } else { + m_writer = winrt::make(); + } + } else { + */ + m_dynamicWriter = winrt::make_self(); + m_writer = m_dynamicWriter.as(); //} } - Debug(VerifyElseCrash(m_dynamicWriter != nullptr/* || m_jsDispatcher.HasThreadAccess()*/)); + Debug(VerifyElseCrash(m_dynamicWriter != nullptr /* || m_jsDispatcher.HasThreadAccess()*/)); return m_writer; } diff --git a/vnext/Microsoft.ReactNative/CallInvokerWriter.h b/vnext/Microsoft.ReactNative/CallInvokerWriter.h index 424ef858e5b..fdbcc96b7b1 100644 --- a/vnext/Microsoft.ReactNative/CallInvokerWriter.h +++ b/vnext/Microsoft.ReactNative/CallInvokerWriter.h @@ -3,11 +3,11 @@ #pragma once #include +#include #include #include "DynamicWriter.h" #include "JsiWriter.h" #include "winrt/Microsoft.ReactNative.h" -#include namespace winrt::Microsoft::ReactNative { @@ -38,7 +38,7 @@ struct CallInvokerWriter : winrt::implements IJSValueWriter GetWriter() noexcept; private: - const std::shared_ptr m_callInvoker; + const std::shared_ptr m_callInvoker; std::weak_ptr m_jsiRuntimeHolder; winrt::com_ptr m_dynamicWriter; winrt::com_ptr m_jsiWriter; From 4d40510f09c3b15e9bef28b07426a080e9d1ded2 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Mon, 5 May 2025 21:58:30 -0700 Subject: [PATCH 17/19] fix --- vnext/Desktop/React.Windows.Desktop.vcxproj | 3 +-- vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/vnext/Desktop/React.Windows.Desktop.vcxproj b/vnext/Desktop/React.Windows.Desktop.vcxproj index e3f1eb6c814..68156e10ed6 100644 --- a/vnext/Desktop/React.Windows.Desktop.vcxproj +++ b/vnext/Desktop/React.Windows.Desktop.vcxproj @@ -242,8 +242,7 @@ ..\Microsoft.ReactNative\IJSValueWriter.idl - - + ..\Microsoft.ReactNative\IJSValueWriter.idl diff --git a/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj b/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj index 937850c9d4d..45efef12dc2 100644 --- a/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +++ b/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj @@ -201,7 +201,7 @@ IJSValueWriter.idl - + IJSValueWriter.idl From 0a931af50205c2e074eaa2e9c89780af4a3bb458 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Tue, 6 May 2025 06:03:44 -0700 Subject: [PATCH 18/19] fix --- vnext/Desktop/React.Windows.Desktop.vcxproj | 3 ++- vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/vnext/Desktop/React.Windows.Desktop.vcxproj b/vnext/Desktop/React.Windows.Desktop.vcxproj index 68156e10ed6..52387dbd75f 100644 --- a/vnext/Desktop/React.Windows.Desktop.vcxproj +++ b/vnext/Desktop/React.Windows.Desktop.vcxproj @@ -242,7 +242,8 @@ ..\Microsoft.ReactNative\IJSValueWriter.idl - + + ..\Microsoft.ReactNative\IJSValueWriter.idl diff --git a/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj b/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj index 45efef12dc2..02c9a6d4d98 100644 --- a/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +++ b/vnext/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj @@ -201,7 +201,7 @@ IJSValueWriter.idl - + IJSValueWriter.idl From f3f93a3b20cca8e6dcad100a3322f465a828f4b1 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Tue, 6 May 2025 09:49:44 -0700 Subject: [PATCH 19/19] fix --- vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp b/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp index 154a21c8193..cd573e99923 100644 --- a/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp +++ b/vnext/Microsoft.ReactNative/AsynchronousEventBeat.cpp @@ -9,8 +9,7 @@ AsynchronousEventBeat::AsynchronousEventBeat( : EventBeat(ownerBox, *runtimeScheduler), m_context(context) {} void AsynchronousEventBeat::request() const { - bool alreadyRequested = isEventBeatRequested_; - EventBeat::request(); + bool alreadyRequested = isEventBeatRequested_.exchange(true); if (!alreadyRequested) { auto uiDispatcher = m_context.UIDispatcher(); if (uiDispatcher.HasThreadAccess()) {