react-native-windows 0.66.17 → 0.66.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/CHANGELOG.json +52 -1
  2. package/CHANGELOG.md +30 -5
  3. package/Chakra/ChakraHelpers.cpp +0 -1
  4. package/Libraries/Network/RCTNetworkingWinShared.js +7 -0
  5. package/Microsoft.ReactNative/Base/CoreNativeModules.cpp +2 -3
  6. package/Microsoft.ReactNative/Modules/CreateModules.cpp +3 -3
  7. package/Microsoft.ReactNative.Cxx/NativeModules.h +2 -2
  8. package/Scripts/OfficeReact.Win32.nuspec +1 -1
  9. package/Shared/BaseScriptStoreImpl.cpp +1 -1
  10. package/Shared/CppRuntimeOptions.h +50 -0
  11. package/Shared/CreateModules.h +20 -1
  12. package/Shared/InspectorPackagerConnection.cpp +7 -5
  13. package/Shared/InspectorPackagerConnection.h +2 -2
  14. package/Shared/JSI/ChakraApi.cpp +0 -1
  15. package/Shared/JSI/ChakraRuntime.cpp +0 -1
  16. package/Shared/Modules/BlobModule.cpp +376 -0
  17. package/Shared/Modules/BlobModule.h +153 -0
  18. package/Shared/Modules/CxxModuleUtilities.cpp +19 -0
  19. package/Shared/Modules/CxxModuleUtilities.h +23 -0
  20. package/Shared/Modules/FileReaderModule.cpp +156 -0
  21. package/Shared/Modules/FileReaderModule.h +54 -0
  22. package/Shared/Modules/HttpModule.cpp +201 -0
  23. package/Shared/Modules/HttpModule.h +60 -0
  24. package/Shared/Modules/IBlobPersistor.h +30 -0
  25. package/Shared/Modules/IHttpModuleProxy.h +30 -0
  26. package/Shared/Modules/IRequestBodyHandler.h +52 -0
  27. package/Shared/Modules/IResponseHandler.h +27 -0
  28. package/Shared/Modules/IUriHandler.h +37 -0
  29. package/Shared/Modules/IWebSocketModuleContentHandler.h +26 -0
  30. package/Shared/Modules/IWebSocketModuleProxy.h +22 -0
  31. package/Shared/Modules/NetworkingModule.cpp +1 -1
  32. package/Shared/Modules/WebSocketModule.cpp +97 -23
  33. package/Shared/Modules/WebSocketModule.h +35 -6
  34. package/Shared/Networking/IHttpResource.h +101 -0
  35. package/Shared/{IWebSocketResource.h → Networking/IWebSocketResource.h} +3 -3
  36. package/Shared/Networking/OriginPolicy.h +15 -0
  37. package/Shared/Networking/OriginPolicyHttpFilter.cpp +747 -0
  38. package/Shared/Networking/OriginPolicyHttpFilter.h +112 -0
  39. package/Shared/Networking/WinRTHttpResource.cpp +465 -0
  40. package/Shared/Networking/WinRTHttpResource.h +86 -0
  41. package/Shared/Networking/WinRTTypes.h +33 -0
  42. package/Shared/{WinRTWebSocketResource.cpp → Networking/WinRTWebSocketResource.cpp} +31 -22
  43. package/Shared/{WinRTWebSocketResource.h → Networking/WinRTWebSocketResource.h} +3 -3
  44. package/Shared/OInstance.cpp +44 -4
  45. package/Shared/OInstance.h +8 -4
  46. package/Shared/RuntimeOptions.cpp +96 -15
  47. package/Shared/RuntimeOptions.h +32 -8
  48. package/Shared/Shared.vcxitems +28 -4
  49. package/Shared/Shared.vcxitems.filters +93 -12
  50. package/Shared/Utils/WinRTConversions.cpp +22 -0
  51. package/Shared/Utils/WinRTConversions.h +15 -0
  52. package/package.json +1 -1
  53. package/Shared/IHttpResource.h +0 -34
package/CHANGELOG.json CHANGED
@@ -2,7 +2,58 @@
2
2
  "name": "react-native-windows",
3
3
  "entries": [
4
4
  {
5
- "date": "Mon, 25 Apr 2022 15:09:26 GMT",
5
+ "date": "Fri, 27 May 2022 16:26:16 GMT",
6
+ "tag": "react-native-windows_v0.66.20",
7
+ "version": "0.66.20",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "comment": "Fix RuntimeOptions for RNW Desktop",
12
+ "author": "vmorozov@microsoft.com",
13
+ "commit": "927b021179ee739610d6ddc81624f30adb4a2d7b",
14
+ "package": "react-native-windows"
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Tue, 24 May 2022 21:08:55 GMT",
21
+ "tag": "react-native-windows_v0.66.19",
22
+ "version": "0.66.19",
23
+ "comments": {
24
+ "patch": [
25
+ {
26
+ "comment": "Implement Blob module (#9352)",
27
+ "author": "julio@rochsquadron.net",
28
+ "commit": "4b1eb4196ab7be2e266da754637a00a252f3745f",
29
+ "package": "react-native-windows"
30
+ }
31
+ ]
32
+ }
33
+ },
34
+ {
35
+ "date": "Mon, 02 May 2022 15:10:52 GMT",
36
+ "tag": "react-native-windows_v0.66.18",
37
+ "version": "0.66.18",
38
+ "comments": {
39
+ "patch": [
40
+ {
41
+ "comment": "Fix clang-check errors in NativeModules.h",
42
+ "author": "53799235+ZihanChen-MSFT@users.noreply.github.com",
43
+ "commit": "94d54d33e317332fa9145129d228a8e323f9b948",
44
+ "package": "react-native-windows"
45
+ },
46
+ {
47
+ "comment": "Handle abrupt WebSocket connection interruption (#9829)",
48
+ "author": "julio.rocha@microsoft.com",
49
+ "commit": "e2571e1d39d3fef4d4ad328a1662ab7f30fec633",
50
+ "package": "react-native-windows"
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "date": "Mon, 25 Apr 2022 15:09:39 GMT",
6
57
  "tag": "react-native-windows_v0.66.17",
7
58
  "version": "0.66.17",
8
59
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,18 +1,43 @@
1
1
  # Change Log - react-native-windows
2
2
 
3
- This log was last generated on Mon, 25 Apr 2022 15:09:26 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 27 May 2022 16:26:16 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## 0.66.17
7
+ ## 0.66.20
8
8
 
9
- Mon, 25 Apr 2022 15:09:26 GMT
9
+ Fri, 27 May 2022 16:26:16 GMT
10
10
 
11
11
  ### Patches
12
12
 
13
- - Fix JSI for Node-API and update V8 to 0.65.11 (vmorozov@microsoft.com)
14
- - Fix Sequential DispatchQueue deadlock on shutdown (vmorozov@microsoft.com)
13
+ - Fix RuntimeOptions for RNW Desktop (vmorozov@microsoft.com)
15
14
 
15
+ ## 0.66.19
16
+
17
+ Tue, 24 May 2022 21:08:55 GMT
18
+
19
+ ### Patches
20
+
21
+ - Implement Blob module (#9352) (julio@rochsquadron.net)
22
+
23
+ ## 0.66.18
24
+
25
+ Mon, 02 May 2022 15:10:52 GMT
26
+
27
+ ### Patches
28
+
29
+ - Fix clang-check errors in NativeModules.h (53799235+ZihanChen-MSFT@users.noreply.github.com)
30
+ - Handle abrupt WebSocket connection interruption (#9829) (julio.rocha@microsoft.com)
31
+
32
+ ## 0.66.17
33
+
34
+ Mon, 25 Apr 2022 15:09:39 GMT
35
+
36
+ ### Patches
37
+
38
+ - Fix JSI for Node-API and update V8 to 0.65.11 (vmorozov@microsoft.com)
39
+ - Fix Sequential DispatchQueue deadlock on shutdown (vmorozov@microsoft.com)
40
+
16
41
  ## 0.66.16
17
42
 
18
43
  Mon, 04 Apr 2022 15:13:07 GMT
@@ -3,7 +3,6 @@
3
3
 
4
4
  #include "pch.h"
5
5
 
6
- #include <RuntimeOptions.h>
7
6
  #include "ChakraHelpers.h"
8
7
  #include "ChakraUtils.h"
9
8
  #include "ChakraValue.h"
@@ -61,6 +61,11 @@ type RCTNetworkingEventDefinitions = $ReadOnly<{
61
61
  ],
62
62
  }>;
63
63
 
64
+ let _requestId = 1;
65
+ function generateRequestId(): number {
66
+ return _requestId++;
67
+ }
68
+
64
69
  const RCTNetworking = {
65
70
  addListener<K: $Keys<RCTNetworkingEventDefinitions>>(
66
71
  eventType: K,
@@ -82,11 +87,13 @@ const RCTNetworking = {
82
87
  callback: (requestId: number) => void,
83
88
  withCredentials: boolean,
84
89
  ) {
90
+ const requestId = generateRequestId();
85
91
  const body = convertRequestBody(data);
86
92
  RCTNetworkingNative.sendRequest(
87
93
  {
88
94
  method,
89
95
  url,
96
+ requestId,
90
97
  data: {...body, trackingName},
91
98
  headers,
92
99
  responseType,
@@ -14,7 +14,6 @@
14
14
  #include <Modules/ImageViewManagerModule.h>
15
15
  #include <Modules/LinkingManagerModule.h>
16
16
  #include <Modules/NativeUIManager.h>
17
- #include <Modules/NetworkingModule.h>
18
17
  #include <Modules/PaperUIManagerModule.h>
19
18
  #include <Threading/MessageQueueThreadFactory.h>
20
19
 
@@ -51,8 +50,8 @@ std::vector<facebook::react::NativeModuleDescription> GetCoreModules(
51
50
  std::vector<facebook::react::NativeModuleDescription> modules;
52
51
 
53
52
  modules.emplace_back(
54
- Microsoft::React::NetworkingModule::Name,
55
- []() { return std::make_unique<Microsoft::React::NetworkingModule>(); },
53
+ "Networking",
54
+ [props = context->Properties()]() { return Microsoft::React::CreateHttpModule(props); },
56
55
  jsMessageQueue);
57
56
 
58
57
  modules.emplace_back(
@@ -2,10 +2,10 @@
2
2
  // Licensed under the MIT License.
3
3
 
4
4
  #include <CreateModules.h>
5
+ #include <Networking/WinRTWebSocketResource.h>
5
6
  #include <QuirkSettings.h>
6
7
  #include <React.h>
7
8
  #include <ReactPropertyBag.h>
8
- #include <WinRTWebSocketResource.h>
9
9
 
10
10
  // React Native
11
11
  #include <cxxreact/CxxModule.h>
@@ -17,11 +17,11 @@ using winrt::Microsoft::ReactNative::ReactPropertyBag;
17
17
  using winrt::Microsoft::ReactNative::ReactPropertyId;
18
18
  using winrt::Microsoft::ReactNative::implementation::QuirkSettings;
19
19
 
20
- namespace Microsoft::React {
20
+ namespace Microsoft::React::Networking {
21
21
 
22
22
  std::shared_ptr<IWebSocketResource> IWebSocketResource::Make() {
23
23
  std::vector<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> certExceptions;
24
24
  return std::make_shared<WinRTWebSocketResource>(std::move(certExceptions));
25
25
  }
26
26
 
27
- } // namespace Microsoft::React
27
+ } // namespace Microsoft::React::Networking
@@ -1011,7 +1011,7 @@ template <class TModule, int I, class TMethodSpec>
1011
1011
  struct ReactMethodVerifier {
1012
1012
  static constexpr bool Verify() noexcept {
1013
1013
  ReactMethodVerifier verifier{};
1014
- ReactMemberInfoIterator<TModule>{}.GetMemberInfo<I>(verifier);
1014
+ ReactMemberInfoIterator<TModule>{}.template GetMemberInfo<I>(verifier);
1015
1015
  return verifier.m_result;
1016
1016
  }
1017
1017
 
@@ -1029,7 +1029,7 @@ template <class TModule, int I, class TMethodSpec>
1029
1029
  struct ReactSyncMethodVerifier {
1030
1030
  static constexpr bool Verify() noexcept {
1031
1031
  ReactSyncMethodVerifier verifier{};
1032
- ReactMemberInfoIterator<TModule>{}.GetMemberInfo<I>(verifier);
1032
+ ReactMemberInfoIterator<TModule>{}.template GetMemberInfo<I>(verifier);
1033
1033
  return verifier.m_result;
1034
1034
  }
1035
1035
 
@@ -50,13 +50,13 @@
50
50
  <file src="$nugetroot$\inc\Shared\IReactRootView.h" target="inc"/>
51
51
  <file src="$nugetroot$\inc\Shared\IRedBoxHandler.h" target="inc"/>
52
52
  <file src="$nugetroot$\inc\Shared\IUIManager.h" target="inc"/>
53
- <file src="$nugetroot$\inc\Shared\IWebSocketResource.h" target="inc"/>
54
53
  <file src="$nugetroot$\inc\Shared\JSBigAbiString.h" target="inc"/>
55
54
  <file src="$nugetroot$\inc\Shared\LayoutAnimation.h" target="inc"/>
56
55
  <file src="$nugetroot$\inc\Shared\Logging.h" target="inc"/>
57
56
  <file src="$nugetroot$\inc\Shared\MemoryMappedBuffer.h" target="inc"/>
58
57
  <file src="$nugetroot$\inc\Shared\Modules\I18nModule.h" target="inc"/>
59
58
  <file src="$nugetroot$\inc\Shared\NativeModuleProvider.h" target="inc"/>
59
+ <file src="$nugetroot$\inc\Shared\Networking\IWebSocketResource.h" target="inc"/>
60
60
  <file src="$nugetroot$\inc\Shared\RuntimeOptions.h" target="inc"/>
61
61
  <file src="$nugetroot$\inc\ReactWin32\ShadowNode.h" target="inc"/>
62
62
  <file src="$nugetroot$\inc\Shared\Tracing.h" target="inc"/>
@@ -6,7 +6,7 @@
6
6
  #include "BaseScriptStoreImpl.h"
7
7
  #include "MemoryMappedBuffer.h"
8
8
 
9
- #include <RuntimeOptions.h>
9
+ #include <CppRuntimeOptions.h>
10
10
 
11
11
  // C++/WinRT
12
12
  #include <winrt/base.h>
@@ -0,0 +1,50 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ #pragma once
5
+
6
+ #include <string>
7
+
8
+ namespace Microsoft::React {
9
+
10
+ /// <summary>
11
+ /// Sets a global boolean value identified by an arbitrary string.
12
+ /// </summary>
13
+ /// <param name="name">Global key</param>
14
+ void __cdecl SetRuntimeOptionBool(std::string &&name, bool value) noexcept;
15
+
16
+ /// <summary>
17
+ /// Sets a global signed integer value identified by an arbitrary string.
18
+ /// </summary>
19
+ /// <param name="name">Global boolean key</param>
20
+ void __cdecl SetRuntimeOptionInt(std::string &&name, std::int32_t value) noexcept;
21
+
22
+ /// <summary>
23
+ /// Sets a global string value identified by an arbitrary string.
24
+ /// </summary>
25
+ /// <param name="name">Global string key</param>
26
+ /// <param name="value">String value to store</param>
27
+ void __cdecl SetRuntimeOptionString(std::string &&name, std::string &&value) noexcept;
28
+
29
+ /// <summary>
30
+ /// Retrieves a global boolean value for the given key.
31
+ /// </summary>
32
+ /// <param name="name">Global boolean key</param>
33
+ /// <returns>Value stored for the given key, or false if the entry doesn't exist (default)</returns>
34
+ const bool __cdecl GetRuntimeOptionBool(const std::string &name) noexcept;
35
+
36
+ /// <summary>
37
+ /// Retrieves a global boolean value for the given key.
38
+ /// </summary>
39
+ /// <param name="name">Global key</param>
40
+ /// <returns>Value stored for the given key, or 0 if the entry doesn't exist (default)</returns>
41
+ const std::int32_t __cdecl GetRuntimeOptionInt(const std::string &name) noexcept;
42
+
43
+ /// <summary>
44
+ /// Retrieves a global string value for the given key.
45
+ /// </summary>
46
+ /// <param name="name">Global key</param>
47
+ /// <returns>Value stored for the given key, or an empty string if the entry doesn't exist (default)</returns>
48
+ const std::string __cdecl GetRuntimeOptionString(const std::string &name) noexcept;
49
+
50
+ } // namespace Microsoft::React
@@ -3,9 +3,14 @@
3
3
 
4
4
  #pragma once
5
5
 
6
+ // React Native
6
7
  #include <cxxreact/CxxModule.h>
7
8
  #include <smartPtr/cntPtr.h>
8
9
 
10
+ // Windows API
11
+ #include <winrt/Windows.Foundation.h>
12
+
13
+ // Standard Library
9
14
  #include <memory>
10
15
 
11
16
  // Forward declarations. Desktop projects can not access <React.h>
@@ -32,6 +37,20 @@ extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateAsyncStorageMod
32
37
 
33
38
  namespace Microsoft::React {
34
39
 
35
- extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateWebSocketModule() noexcept;
40
+ extern const char *GetHttpModuleName() noexcept;
41
+ extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateHttpModule(
42
+ winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept;
43
+
44
+ extern const char *GetWebSocketModuleName() noexcept;
45
+ extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateWebSocketModule(
46
+ winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept;
47
+
48
+ extern const char *GetBlobModuleName() noexcept;
49
+ extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateBlobModule(
50
+ winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept;
51
+
52
+ extern const char *GetFileReaderModuleName() noexcept;
53
+ extern std::unique_ptr<facebook::xplat::module::CxxModule> CreateFileReaderModule(
54
+ winrt::Windows::Foundation::IInspectable const &inspectableProperties) noexcept;
36
55
 
37
56
  } // namespace Microsoft::React
@@ -196,7 +196,8 @@ InspectorPackagerConnection::InspectorPackagerConnection(
196
196
  winrt::fire_and_forget InspectorPackagerConnection::disconnectAsync() {
197
197
  co_await winrt::resume_background();
198
198
  std::string reason("Explicit close");
199
- m_packagerWebSocketConnection->Close(Microsoft::React::WinRTWebSocketResource::CloseCode::GoingAway, reason);
199
+ m_packagerWebSocketConnection->Close(
200
+ Microsoft::React::Networking::WinRTWebSocketResource::CloseCode::GoingAway, reason);
200
201
  co_return;
201
202
  }
202
203
 
@@ -204,9 +205,10 @@ winrt::fire_and_forget InspectorPackagerConnection::connectAsync() {
204
205
  co_await winrt::resume_background();
205
206
 
206
207
  std::vector<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> certExceptions;
207
- m_packagerWebSocketConnection = std::make_shared<Microsoft::React::WinRTWebSocketResource>(std::move(certExceptions));
208
+ m_packagerWebSocketConnection =
209
+ std::make_shared<Microsoft::React::Networking::WinRTWebSocketResource>(std::move(certExceptions));
208
210
 
209
- m_packagerWebSocketConnection->SetOnError([](const Microsoft::React::IWebSocketResource::Error &err) {
211
+ m_packagerWebSocketConnection->SetOnError([](const Microsoft::React::Networking::IWebSocketResource::Error &err) {
210
212
  facebook::react::tracing::error(err.Message.c_str());
211
213
  });
212
214
 
@@ -267,8 +269,8 @@ winrt::fire_and_forget InspectorPackagerConnection::connectAsync() {
267
269
  }
268
270
  });
269
271
 
270
- Microsoft::React::IWebSocketResource::Protocols protocols;
271
- Microsoft::React::IWebSocketResource::Options options;
272
+ Microsoft::React::Networking::IWebSocketResource::Protocols protocols;
273
+ Microsoft::React::Networking::IWebSocketResource::Options options;
272
274
  m_packagerWebSocketConnection->Connect(std::string{m_url}, protocols, options);
273
275
 
274
276
  co_return;
@@ -4,7 +4,7 @@
4
4
  #pragma once
5
5
 
6
6
  #include <InspectorProxy.h>
7
- #include <WinRTWebSocketResource.h>
7
+ #include <Networking/WinRTWebSocketResource.h>
8
8
  #include <jsinspector/InspectorInterfaces.h>
9
9
 
10
10
  namespace Microsoft::ReactNative {
@@ -42,7 +42,7 @@ class InspectorPackagerConnection final : public std::enable_shared_from_this<In
42
42
  void sendMessageToVM(int64_t pageId, std::string &&message);
43
43
 
44
44
  std::unordered_map<int64_t, std::unique_ptr<facebook::react::ILocalConnection>> m_localConnections;
45
- std::shared_ptr<Microsoft::React::WinRTWebSocketResource> m_packagerWebSocketConnection;
45
+ std::shared_ptr<Microsoft::React::Networking::WinRTWebSocketResource> m_packagerWebSocketConnection;
46
46
  std::shared_ptr<IBundleStatusProvider> m_bundleStatusProvider;
47
47
  std::string m_url;
48
48
  };
@@ -3,7 +3,6 @@
3
3
 
4
4
  #include "ChakraApi.h"
5
5
 
6
- #include <RuntimeOptions.h>
7
6
  #include <sstream>
8
7
  #include <utility>
9
8
  #include "Unicode.h"
@@ -4,7 +4,6 @@
4
4
  #include "ChakraRuntime.h"
5
5
  #include "ChakraRuntimeFactory.h"
6
6
 
7
- #include <RuntimeOptions.h>
8
7
  #include "Unicode.h"
9
8
  #include "Utilities.h"
10
9