react-native-windows 0.72.2 → 0.72.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -409,7 +409,7 @@ inline void ReadValue(IJSValueReader const &reader, /*out*/ JSValueArray &value)
409
409
  template <class T, std::enable_if_t<!std::is_void_v<decltype(GetStructInfo(static_cast<T *>(nullptr)))>, int>>
410
410
  inline void ReadValue(IJSValueReader const &reader, /*out*/ T &value) noexcept {
411
411
  if (reader.ValueType() == JSValueType::Object) {
412
- const auto &fieldMap = StructInfo<T>::FieldMap;
412
+ const auto &fieldMap = StructInfo<T>::GetFieldMap();
413
413
  hstring propertyName;
414
414
  while (reader.GetNextObjectProperty(/*out*/ propertyName)) {
415
415
  auto it = fieldMap.find(std::wstring_view(propertyName));
@@ -234,7 +234,7 @@ inline void WriteCustomDirectEventTypeConstant(IJSValueWriter const &writer, std
234
234
  template <class T, std::enable_if_t<!std::is_void_v<decltype(GetStructInfo(static_cast<T *>(nullptr)))>, int>>
235
235
  inline void WriteValue(IJSValueWriter const &writer, T const &value) noexcept {
236
236
  writer.WriteObjectBegin();
237
- for (const auto &fieldEntry : StructInfo<T>::FieldMap) {
237
+ for (const auto &fieldEntry : StructInfo<T>::GetFieldMap()) {
238
238
  writer.WritePropertyName(fieldEntry.first);
239
239
  fieldEntry.second.WriteField(writer, &value);
240
240
  }
@@ -51,6 +51,28 @@
51
51
  INTERNAL_REACT_RECOMPOSER_4( \
52
52
  (__VA_ARGS__, INTERNAL_REACT_MODULE_3_ARGS, INTERNAL_REACT_MODULE_2_ARGS, INTERNAL_REACT_MODULE_1_ARG, ))
53
53
 
54
+ // Another version of REACT_MODULE but does not do auto registration
55
+ #define INTERNAL_REACT_MODULE_NOREG_3_ARGS(moduleStruct, moduleName, eventEmitterName) \
56
+ struct moduleStruct; \
57
+ template <class TRegistry> \
58
+ constexpr void GetReactModuleInfo(moduleStruct *, TRegistry &registry) noexcept { \
59
+ registry.RegisterModule( \
60
+ moduleName, eventEmitterName, winrt::Microsoft::ReactNative::ReactAttributeId<__COUNTER__>{}); \
61
+ }
62
+
63
+ #define INTERNAL_REACT_MODULE_NOREG_2_ARGS(moduleStruct, moduleName) \
64
+ INTERNAL_REACT_MODULE_NOREG_3_ARGS(moduleStruct, moduleName, L"")
65
+
66
+ #define INTERNAL_REACT_MODULE_NOREG_1_ARG(moduleStruct) \
67
+ INTERNAL_REACT_MODULE_NOREG_2_ARGS(moduleStruct, L## #moduleStruct)
68
+
69
+ #define INTERNAL_REACT_MODULE_NOREG(...) \
70
+ INTERNAL_REACT_RECOMPOSER_4( \
71
+ (__VA_ARGS__, \
72
+ INTERNAL_REACT_MODULE_NOREG_3_ARGS, \
73
+ INTERNAL_REACT_MODULE_NOREG_2_ARGS, \
74
+ INTERNAL_REACT_MODULE_NOREG_1_ARG, ))
75
+
54
76
  // Provide meta data information about struct member.
55
77
  // For each member with a 'custom attribute' macro we create a static method to provide meta data.
56
78
  // The member Id is generated as a ReactMemberId<__COUNTER__> type.
@@ -30,6 +30,11 @@
30
30
  #define REACT_MODULE(/* moduleStruct, [opt] moduleName, [opt] eventEmitterName */...) \
31
31
  INTERNAL_REACT_MODULE(__VA_ARGS__)(__VA_ARGS__)
32
32
 
33
+ // REACT_MODULE_NOREG is REACT_MODULE without auto registration
34
+ // they have the same arguments
35
+ #define REACT_MODULE_NOREG(/* moduleStruct, [opt] moduleName, [opt] eventEmitterName */...) \
36
+ INTERNAL_REACT_MODULE_NOREG(__VA_ARGS__)(__VA_ARGS__)
37
+
33
38
  // REACT_INIT(method)
34
39
  // Arguments:
35
40
  // - method (required) - the method name the macro is attached to.
@@ -113,12 +113,12 @@ void FieldWriter(IJSValueWriter const &writer, const void *obj, const uintptr_t
113
113
 
114
114
  template <class T>
115
115
  struct StructInfo {
116
- static const FieldMap FieldMap;
116
+ static const FieldMap &GetFieldMap() {
117
+ static const FieldMap fieldMap = GetStructInfo(static_cast<T *>(nullptr));
118
+ return fieldMap;
119
+ }
117
120
  };
118
121
 
119
- template <class T>
120
- /*static*/ const FieldMap StructInfo<T>::FieldMap = GetStructInfo(static_cast<T *>(nullptr));
121
-
122
122
  template <int I>
123
123
  using ReactFieldId = std::integral_constant<int, I>;
124
124
 
@@ -24,11 +24,21 @@
24
24
  "Microsoft.SourceLink.Common": "1.0.0"
25
25
  }
26
26
  },
27
+ "boost": {
28
+ "type": "Transitive",
29
+ "resolved": "1.76.0",
30
+ "contentHash": "p+w3YvNdXL8Cu9Fzrmexssu0tZbWxuf6ywsQqHjDlKFE5ojXHof1HIyMC3zDLfLnh80dIeFcEUAuR2Asg/XHRA=="
31
+ },
27
32
  "Microsoft.Build.Tasks.Git": {
28
33
  "type": "Transitive",
29
34
  "resolved": "1.0.0",
30
35
  "contentHash": "z2fpmmt+1Jfl+ZnBki9nSP08S1/tbEOxFdsK1rSR+LBehIJz1Xv9/6qOOoGNqlwnAGGVGis1Oj6S8Kt9COEYlQ=="
31
36
  },
37
+ "Microsoft.JavaScript.Hermes": {
38
+ "type": "Transitive",
39
+ "resolved": "0.1.15",
40
+ "contentHash": "My/u5RvxoymtwWokoweU6iVpuP79w271UjadcmSNqnQ9ESIv00tlVP4sHnIiN3t2lJNDeciyE1EVF4swGPECKQ=="
41
+ },
32
42
  "Microsoft.Net.Native.Compiler": {
33
43
  "type": "Transitive",
34
44
  "resolved": "2.2.7-rel-27913-00",
@@ -53,17 +63,35 @@
53
63
  "Microsoft.NETCore.Platforms": {
54
64
  "type": "Transitive",
55
65
  "resolved": "2.1.0",
56
- "contentHash": "ok+RPAtESz/9MUXeIEz6Lv5XAGQsaNmEYXMsgVALj4D7kqC8gveKWXWXbufLySR2fWrwZf8smyN5RmHu0e4BHA=="
66
+ "contentHash": "GmkKfoyerqmsHMn7OZj0AKpcBabD+GaafqphvX2Mw406IwiJRy1pKcKqdCfKJfYmkRyJ6+e+RaUylgdJoDa1jQ=="
57
67
  },
58
68
  "Microsoft.SourceLink.Common": {
59
69
  "type": "Transitive",
60
70
  "resolved": "1.0.0",
61
71
  "contentHash": "G8DuQY8/DK5NN+3jm5wcMcd9QYD90UV7MiLmdljSJixi3U/vNaeBKmmXUqI4DJCOeWizIUEh4ALhSt58mR+5eg=="
62
72
  },
73
+ "Microsoft.UI.Xaml": {
74
+ "type": "Transitive",
75
+ "resolved": "2.8.0",
76
+ "contentHash": "vxdHxTr63s5KVtNddMFpgvjBjUH50z7seq/5jLWmmSuf8poxg+sXrywkofUdE8ZstbpO9y3FL/IXXUcPYbeesA==",
77
+ "dependencies": {
78
+ "Microsoft.Web.WebView2": "1.0.1264.42"
79
+ }
80
+ },
81
+ "Microsoft.Web.WebView2": {
82
+ "type": "Transitive",
83
+ "resolved": "1.0.1264.42",
84
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
85
+ },
86
+ "Microsoft.Windows.SDK.BuildTools": {
87
+ "type": "Transitive",
88
+ "resolved": "10.0.22000.194",
89
+ "contentHash": "4L0P3zqut466SIqT3VBeLTNUQTxCBDOrTRymRuROCRJKazcK7ibLz9yAO1nKWRt50ttCj39oAa2Iuz9ZTDmLlg=="
90
+ },
63
91
  "NETStandard.Library": {
64
92
  "type": "Transitive",
65
93
  "resolved": "2.0.3",
66
- "contentHash": "st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
94
+ "contentHash": "548M6mnBSJWxsIlkQHfbzoYxpiYFXZZSL00p4GHYv8PkiqFBnnT68mW5mGEsA/ch9fDO9GkPgkFQpWiXZN7mAQ==",
67
95
  "dependencies": {
68
96
  "Microsoft.NETCore.Platforms": "1.1.0"
69
97
  }
@@ -144,6 +172,7 @@
144
172
  "folly": {
145
173
  "type": "Project",
146
174
  "dependencies": {
175
+ "boost": "[1.76.0, )",
147
176
  "fmt": "[1.0.0, )"
148
177
  }
149
178
  },
@@ -152,13 +181,18 @@
152
181
  "dependencies": {
153
182
  "Common": "[1.0.0, )",
154
183
  "Folly": "[1.0.0, )",
155
- "ReactCommon": "[1.0.0, )"
184
+ "Microsoft.JavaScript.Hermes": "[0.1.15, )",
185
+ "Microsoft.UI.Xaml": "[2.8.0, )",
186
+ "Microsoft.Windows.SDK.BuildTools": "[10.0.22000.194, )",
187
+ "ReactCommon": "[1.0.0, )",
188
+ "boost": "[1.76.0, )"
156
189
  }
157
190
  },
158
191
  "reactcommon": {
159
192
  "type": "Project",
160
193
  "dependencies": {
161
- "Folly": "[1.0.0, )"
194
+ "Folly": "[1.0.0, )",
195
+ "boost": "[1.76.0, )"
162
196
  }
163
197
  }
164
198
  },
@@ -176,6 +210,11 @@
176
210
  "runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.9"
177
211
  }
178
212
  },
213
+ "Microsoft.Web.WebView2": {
214
+ "type": "Transitive",
215
+ "resolved": "1.0.1264.42",
216
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
217
+ },
179
218
  "runtime.win10-arm.Microsoft.NETCore.UniversalWindowsPlatform": {
180
219
  "type": "Transitive",
181
220
  "resolved": "6.2.9",
@@ -196,6 +235,11 @@
196
235
  "runtime.win10-arm-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.9"
197
236
  }
198
237
  },
238
+ "Microsoft.Web.WebView2": {
239
+ "type": "Transitive",
240
+ "resolved": "1.0.1264.42",
241
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
242
+ },
199
243
  "runtime.win10-arm-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
200
244
  "type": "Transitive",
201
245
  "resolved": "6.2.9",
@@ -216,6 +260,11 @@
216
260
  "runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.9"
217
261
  }
218
262
  },
263
+ "Microsoft.Web.WebView2": {
264
+ "type": "Transitive",
265
+ "resolved": "1.0.1264.42",
266
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
267
+ },
219
268
  "runtime.win10-arm64-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
220
269
  "type": "Transitive",
221
270
  "resolved": "6.2.9",
@@ -236,6 +285,11 @@
236
285
  "runtime.win10-x64.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.9"
237
286
  }
238
287
  },
288
+ "Microsoft.Web.WebView2": {
289
+ "type": "Transitive",
290
+ "resolved": "1.0.1264.42",
291
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
292
+ },
239
293
  "runtime.win10-x64.Microsoft.NETCore.UniversalWindowsPlatform": {
240
294
  "type": "Transitive",
241
295
  "resolved": "6.2.9",
@@ -256,6 +310,11 @@
256
310
  "runtime.win10-x64-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.9"
257
311
  }
258
312
  },
313
+ "Microsoft.Web.WebView2": {
314
+ "type": "Transitive",
315
+ "resolved": "1.0.1264.42",
316
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
317
+ },
259
318
  "runtime.win10-x64-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
260
319
  "type": "Transitive",
261
320
  "resolved": "6.2.9",
@@ -276,6 +335,11 @@
276
335
  "runtime.win10-x86.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.9"
277
336
  }
278
337
  },
338
+ "Microsoft.Web.WebView2": {
339
+ "type": "Transitive",
340
+ "resolved": "1.0.1264.42",
341
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
342
+ },
279
343
  "runtime.win10-x86.Microsoft.NETCore.UniversalWindowsPlatform": {
280
344
  "type": "Transitive",
281
345
  "resolved": "6.2.9",
@@ -296,6 +360,11 @@
296
360
  "runtime.win10-x86-aot.Microsoft.NETCore.UniversalWindowsPlatform": "6.2.9"
297
361
  }
298
362
  },
363
+ "Microsoft.Web.WebView2": {
364
+ "type": "Transitive",
365
+ "resolved": "1.0.1264.42",
366
+ "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA=="
367
+ },
299
368
  "runtime.win10-x86-aot.Microsoft.NETCore.UniversalWindowsPlatform": {
300
369
  "type": "Transitive",
301
370
  "resolved": "6.2.9",
@@ -10,11 +10,11 @@
10
10
  -->
11
11
  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
12
12
  <PropertyGroup>
13
- <ReactNativeWindowsVersion>0.72.2</ReactNativeWindowsVersion>
13
+ <ReactNativeWindowsVersion>0.72.4</ReactNativeWindowsVersion>
14
14
  <ReactNativeWindowsMajor>0</ReactNativeWindowsMajor>
15
15
  <ReactNativeWindowsMinor>72</ReactNativeWindowsMinor>
16
- <ReactNativeWindowsPatch>2</ReactNativeWindowsPatch>
16
+ <ReactNativeWindowsPatch>4</ReactNativeWindowsPatch>
17
17
  <ReactNativeWindowsCanary>false</ReactNativeWindowsCanary>
18
- <ReactNativeWindowsCommitId>5e9afa8863e83a46610cc49c82e80c1c02cfcf0e</ReactNativeWindowsCommitId>
18
+ <ReactNativeWindowsCommitId>2f12d588d6c668fa5b6de64232454d5fc31e5a82</ReactNativeWindowsCommitId>
19
19
  </PropertyGroup>
20
20
  </Project>
@@ -237,6 +237,8 @@ std::map<string, dynamic> HttpModule::getConstants() {
237
237
 
238
238
  // clang-format off
239
239
  std::vector<facebook::xplat::module::CxxModule::Method> HttpModule::getMethods() {
240
+ // See CxxNativeModule::lazyInit()
241
+ SetUpHttpResource(m_resource, getInstance(), m_inspectableProperties);
240
242
 
241
243
  return
242
244
  {
@@ -249,12 +251,6 @@ std::vector<facebook::xplat::module::CxxModule::Method> HttpModule::getMethods()
249
251
  return;
250
252
  }
251
253
 
252
- auto resource = holder->Module->m_resource;
253
- if (!holder->Module->m_isResourceSetup)
254
- {
255
- SetUpHttpResource(resource, holder->Module->getInstance(), holder->Module->m_inspectableProperties);
256
- holder->Module->m_isResourceSetup = true;
257
- }
258
254
  holder->Module->m_requestId++;
259
255
 
260
256
  auto params = facebook::xplat::jsArgAsObject(args, 0);
@@ -263,7 +259,7 @@ std::vector<facebook::xplat::module::CxxModule::Method> HttpModule::getMethods()
263
259
  headers.emplace(header.first.getString(), header.second.getString());
264
260
  }
265
261
 
266
- resource->SendRequest(
262
+ holder->Module->m_resource->SendRequest(
267
263
  params["method"].asString(),
268
264
  params["url"].asString(),
269
265
  holder->Module->m_requestId,
@@ -289,14 +285,7 @@ std::vector<facebook::xplat::module::CxxModule::Method> HttpModule::getMethods()
289
285
  return;
290
286
  }
291
287
 
292
- auto resource = holder->Module->m_resource;
293
- if (!holder->Module->m_isResourceSetup)
294
- {
295
- SetUpHttpResource(resource, holder->Module->getInstance(), holder->Module->m_inspectableProperties);
296
- holder->Module->m_isResourceSetup = true;
297
- }
298
-
299
- resource->AbortRequest(facebook::xplat::jsArgAsInt(args, 0));
288
+ holder->Module->m_resource->AbortRequest(facebook::xplat::jsArgAsInt(args, 0));
300
289
  }
301
290
  },
302
291
  {
@@ -309,14 +298,7 @@ std::vector<facebook::xplat::module::CxxModule::Method> HttpModule::getMethods()
309
298
  return;
310
299
  }
311
300
 
312
- auto resource = holder->Module->m_resource;
313
- if (!holder->Module->m_isResourceSetup)
314
- {
315
- SetUpHttpResource(resource, holder->Module->getInstance(), holder->Module->m_inspectableProperties);
316
- holder->Module->m_isResourceSetup = true;
317
- }
318
-
319
- resource->ClearCookies();
301
+ holder->Module->m_resource->ClearCookies();
320
302
  }
321
303
  }
322
304
  };
@@ -331,6 +313,11 @@ std::vector<facebook::xplat::module::CxxModule::Method> HttpModule::getMethods()
331
313
  return s_moduleName;
332
314
  }
333
315
 
316
+ /*extern*/ std::unique_ptr<facebook::xplat::module::CxxModule> CreateHttpModule(
317
+ IInspectable const &inspectableProperties) noexcept {
318
+ return std::make_unique<HttpModule>(inspectableProperties);
319
+ }
320
+
334
321
  /*extern*/ const wchar_t *GetHttpTurboModuleName() noexcept {
335
322
  return s_moduleNameW;
336
323
  }
@@ -84,7 +84,6 @@ class HttpModule : public facebook::xplat::module::CxxModule {
84
84
 
85
85
  std::shared_ptr<Networking::IHttpResource> m_resource;
86
86
  std::shared_ptr<ModuleHolder> m_holder;
87
- bool m_isResourceSetup{false};
88
87
  int64_t m_requestId{0};
89
88
 
90
89
  // Property bag high level reference.
@@ -145,8 +145,13 @@ void DefaultBlobResource::AddNetworkingHandler() noexcept /*override*/ {
145
145
  httpHandler->AddRequestBodyHandler(m_requestBodyHandler);
146
146
  httpHandler->AddResponseHandler(m_responseHandler);
147
147
  }
148
+ } else {
149
+ // #11439 - The absence of HttpModule.Proxy may be caused by a module initialization race condition.
150
+ // Best-effort approach to set up the request/response handlers by exposing this interface to dependents
151
+ // (i.e. IHttpResource).
152
+ auto propId = msrn::ReactPropertyId<msrn::ReactNonAbiValue<weak_ptr<IBlobResource>>>{L"Blob.Resource"};
153
+ m_propertyBag.Set(propId, weak_ptr<IBlobResource>(shared_from_this()));
148
154
  }
149
- // TODO: else emit error?
150
155
  }
151
156
 
152
157
  void DefaultBlobResource::AddWebSocketHandler(int64_t id) noexcept /*override*/ {
@@ -6,6 +6,7 @@
6
6
  #include "WinRTHttpResource.h"
7
7
 
8
8
  #include <CppRuntimeOptions.h>
9
+ #include <Networking/IBlobResource.h>
9
10
  #include <ReactPropertyBag.h>
10
11
  #include <Utils/CppWinrtLessExceptions.h>
11
12
  #include <Utils/WinRTConversions.h>
@@ -672,6 +673,14 @@ void WinRTHttpResource::AddResponseHandler(shared_ptr<IResponseHandler> response
672
673
  auto propBag = ReactPropertyBag{inspectableProperties.try_as<IReactPropertyBag>()};
673
674
  auto moduleProxy = weak_ptr<IHttpModuleProxy>{result};
674
675
  propBag.Set(propId, std::move(moduleProxy));
676
+
677
+ // #11439 - Best-effort attempt to set up the HTTP handler after an initial call to addNetworkingHandler failed.
678
+ auto blobRcPropId = ReactPropertyId<ReactNonAbiValue<weak_ptr<Networking::IBlobResource>>>{L"Blob.Resource"};
679
+ if (auto prop = propBag.Get(blobRcPropId)) {
680
+ if (auto blobRc = prop.Value().lock()) {
681
+ blobRc->AddNetworkingHandler();
682
+ }
683
+ }
675
684
  }
676
685
 
677
686
  return result;
@@ -26,7 +26,6 @@
26
26
  #include <cxxreact/ModuleRegistry.h>
27
27
 
28
28
  #include <Modules/ExceptionsManagerModule.h>
29
- #include <Modules/HttpModule.h>
30
29
  #include <Modules/PlatformConstantsModule.h>
31
30
  #include <Modules/SourceCodeModule.h>
32
31
  #include <Modules/StatusBarManagerModule.h>
@@ -68,15 +67,6 @@ using namespace Microsoft::JSI;
68
67
  using std::make_shared;
69
68
  using winrt::Microsoft::ReactNative::ReactPropertyBagHelper;
70
69
 
71
- namespace Microsoft::React {
72
-
73
- /*extern*/ std::unique_ptr<facebook::xplat::module::CxxModule> CreateHttpModule(
74
- winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept {
75
- return std::make_unique<HttpModule>(inspectableProperties);
76
- }
77
-
78
- } // namespace Microsoft::React
79
-
80
70
  namespace facebook {
81
71
  namespace react {
82
72
 
@@ -543,6 +533,10 @@ std::vector<std::unique_ptr<NativeModule>> InstanceImpl::GetDefaultNativeModules
543
533
  std::vector<std::unique_ptr<NativeModule>> modules;
544
534
  auto transitionalProps{ReactPropertyBagHelper::CreatePropertyBag()};
545
535
 
536
+ // These modules are instantiated separately in MSRN (Universal Windows).
537
+ // When there are module name collisions, the last one registered is used.
538
+ // If this code is enabled, we will have unused module instances.
539
+ // Also, MSRN has a different property bag mechanism incompatible with this method's transitionalProps variable.
546
540
  #if (defined(_MSC_VER) && !defined(WINRT))
547
541
  modules.push_back(std::make_unique<CxxNativeModule>(
548
542
  m_innerInstance,
@@ -551,7 +545,6 @@ std::vector<std::unique_ptr<NativeModule>> InstanceImpl::GetDefaultNativeModules
551
545
  return Microsoft::React::CreateHttpModule(transitionalProps);
552
546
  },
553
547
  nativeQueue));
554
- #endif
555
548
 
556
549
  modules.push_back(std::make_unique<CxxNativeModule>(
557
550
  m_innerInstance,
@@ -561,11 +554,18 @@ std::vector<std::unique_ptr<NativeModule>> InstanceImpl::GetDefaultNativeModules
561
554
  },
562
555
  nativeQueue));
563
556
 
564
- // TODO: This is not included for UWP because we have a different module which
565
- // is added later. However, this one is designed
566
- // so that we can base a UWP version on it. We need to do that but is not high
567
- // priority.
568
- #if (defined(_MSC_VER) && !defined(WINRT))
557
+ modules.push_back(std::make_unique<CxxNativeModule>(
558
+ m_innerInstance,
559
+ Microsoft::React::GetBlobModuleName(),
560
+ [transitionalProps]() { return Microsoft::React::CreateBlobModule(transitionalProps); },
561
+ nativeQueue));
562
+
563
+ modules.push_back(std::make_unique<CxxNativeModule>(
564
+ m_innerInstance,
565
+ Microsoft::React::GetFileReaderModuleName(),
566
+ [transitionalProps]() { return Microsoft::React::CreateFileReaderModule(transitionalProps); },
567
+ nativeQueue));
568
+
569
569
  modules.push_back(std::make_unique<CxxNativeModule>(
570
570
  m_innerInstance,
571
571
  "Timing",
@@ -620,26 +620,6 @@ std::vector<std::unique_ptr<NativeModule>> InstanceImpl::GetDefaultNativeModules
620
620
  []() { return std::make_unique<StatusBarManagerModule>(); },
621
621
  nativeQueue));
622
622
 
623
- // These modules are instantiated separately in MSRN (Universal Windows).
624
- // When there are module name colisions, the last one registered is used.
625
- // If this code is enabled, we will have unused module instances.
626
- // Also, MSRN has a different property bag mechanism incompatible with this method's transitionalProps variable.
627
- #if (defined(_MSC_VER) && !defined(WINRT))
628
- if (Microsoft::React::GetRuntimeOptionBool("Blob.EnableModule")) {
629
- modules.push_back(std::make_unique<CxxNativeModule>(
630
- m_innerInstance,
631
- Microsoft::React::GetBlobModuleName(),
632
- [transitionalProps]() { return Microsoft::React::CreateBlobModule(transitionalProps); },
633
- nativeQueue));
634
-
635
- modules.push_back(std::make_unique<CxxNativeModule>(
636
- m_innerInstance,
637
- Microsoft::React::GetFileReaderModuleName(),
638
- [transitionalProps]() { return Microsoft::React::CreateFileReaderModule(transitionalProps); },
639
- nativeQueue));
640
- }
641
- #endif
642
-
643
623
  return modules;
644
624
  }
645
625
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-windows",
3
- "version": "0.72.2",
3
+ "version": "0.72.4",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "@react-native-community/cli": "11.3.5",
27
27
  "@react-native-community/cli-platform-android": "11.3.5",
28
28
  "@react-native-community/cli-platform-ios": "11.3.5",
29
- "@react-native-windows/cli": "0.72.0",
29
+ "@react-native-windows/cli": "0.72.1",
30
30
  "@react-native/assets": "1.0.0",
31
31
  "@react-native/assets-registry": "^0.72.0",
32
32
  "@react-native/codegen": "^0.72.6",
@@ -63,7 +63,7 @@
63
63
  "yargs": "^17.6.2"
64
64
  },
65
65
  "devDependencies": {
66
- "@react-native-windows/codegen": "0.72.0",
66
+ "@react-native-windows/codegen": "0.72.1",
67
67
  "@rnw-scripts/babel-react-native-config": "0.0.0",
68
68
  "@rnw-scripts/eslint-config": "1.1.15",
69
69
  "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.1",