react-native 0.83.0-nightly-20251008-31bff4e09 → 0.83.0-nightly-20251011-6f482708b
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.
- package/Libraries/AppDelegate/RCTAppSetupUtils.mm +12 -0
- package/Libraries/AppDelegate/RCTReactNativeFactory.mm +33 -0
- package/Libraries/Components/TextInput/TextInput.js +6 -0
- package/Libraries/Components/View/ViewNativeComponent.js +2 -2
- package/Libraries/Core/ReactNativeVersion.js +1 -1
- package/Libraries/Network/RCTInspectorNetworkReporter.h +8 -8
- package/Libraries/Network/RCTInspectorNetworkReporter.mm +18 -20
- package/Libraries/Network/RCTNetworkTask.h +5 -1
- package/Libraries/Network/RCTNetworkTask.mm +13 -0
- package/Libraries/Network/RCTNetworking+Internal.h +21 -0
- package/Libraries/Network/RCTNetworking.android.js +3 -1
- package/Libraries/Network/RCTNetworking.h +3 -0
- package/Libraries/Network/RCTNetworking.ios.js +3 -0
- package/Libraries/Network/RCTNetworking.mm +81 -34
- package/Libraries/Renderer/implementations/ReactFabric-dev.js +6759 -4478
- package/Libraries/Renderer/implementations/ReactFabric-prod.js +3169 -3119
- package/Libraries/Renderer/implementations/ReactFabric-profiling.js +4732 -3535
- package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +6641 -4058
- package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +3136 -2818
- package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +4753 -3297
- package/Libraries/Renderer/shims/ReactFabric.js +3 -1
- package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
- package/Libraries/Renderer/shims/ReactNative.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeTypes.js +3 -1
- package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
- package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
- package/React/Base/RCTVersion.m +1 -1
- package/React/CxxBridge/RCTCxxBridge.mm +0 -15
- package/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h +6 -0
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI-generated.cpp +12 -0
- package/React/FBReactNativeSpec/FBReactNativeSpecJSI.h +18 -0
- package/ReactAndroid/api/ReactAndroid.api +2 -0
- package/ReactAndroid/gradle.properties +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/animated/InterpolationAnimatedNode.kt +2 -2
- package/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/MountItemDispatcher.kt +47 -32
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlags.kt +13 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxAccessor.kt +21 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsDefaults.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsLocalAccessor.kt +23 -1
- package/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsProvider.kt +5 -1
- package/ReactAndroid/src/main/java/com/facebook/react/modules/appearance/AppearanceModule.kt +12 -0
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/InspectorNetworkReporter.kt +11 -11
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkEventUtil.kt +18 -10
- package/ReactAndroid/src/main/java/com/facebook/react/modules/network/NetworkingModule.kt +126 -11
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoHelpers.kt +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/ReactNativeVersion.kt +1 -1
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/NativeViewHierarchyManager.java +0 -2
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +13 -4
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.kt +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +8 -3
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.kt +4 -1
- package/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.kt +5 -1
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorNetworkReporter.cpp +23 -21
- package/ReactAndroid/src/main/jni/react/devsupport/JInspectorNetworkReporter.h +8 -8
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.cpp +29 -1
- package/ReactAndroid/src/main/jni/react/featureflags/JReactNativeFeatureFlagsCxxInterop.h +7 -1
- package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.h +26 -0
- package/ReactApple/RCTAnimatedModuleProvider/RCTAnimatedModuleProvider.mm +66 -0
- package/ReactCommon/cxxreact/ReactNativeVersion.h +1 -1
- package/ReactCommon/hermes/executor/HermesExecutorFactory.cpp +68 -1
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.cpp +142 -0
- package/ReactCommon/hermes/inspector-modern/chrome/ConnectionDemux.h +62 -0
- package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeTargetDelegate.cpp +54 -0
- package/ReactCommon/hermes/inspector-modern/chrome/HermesRuntimeTargetDelegate.h +3 -0
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.cpp +37 -0
- package/ReactCommon/hermes/inspector-modern/chrome/Registration.h +41 -0
- package/ReactCommon/jsinspector-modern/CMakeLists.txt +1 -0
- package/ReactCommon/jsinspector-modern/EnumArray.h +45 -0
- package/ReactCommon/jsinspector-modern/FallbackRuntimeTargetDelegate.cpp +6 -0
- package/ReactCommon/jsinspector-modern/FallbackRuntimeTargetDelegate.h +3 -0
- package/ReactCommon/jsinspector-modern/React-jsinspector.podspec +1 -1
- package/ReactCommon/jsinspector-modern/RuntimeAgent.cpp +46 -17
- package/ReactCommon/jsinspector-modern/RuntimeTarget.cpp +64 -18
- package/ReactCommon/jsinspector-modern/RuntimeTarget.h +67 -9
- package/ReactCommon/jsinspector-modern/RuntimeTargetConsole.cpp +10 -28
- package/ReactCommon/jsinspector-modern/RuntimeTargetNetwork.cpp +98 -0
- package/ReactCommon/jsinspector-modern/ScopedExecutor.h +29 -0
- package/ReactCommon/jsinspector-modern/network/NetworkHandler.cpp +33 -3
- package/ReactCommon/jsinspector-modern/network/NetworkHandler.h +12 -1
- package/ReactCommon/jsinspector-modern/tests/DebuggerSessionObserverTest.cpp +44 -0
- package/ReactCommon/jsinspector-modern/tests/InspectorMocks.h +5 -0
- package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.cpp +82 -0
- package/ReactCommon/jsinspector-modern/tests/JsiIntegrationTest.h +54 -0
- package/ReactCommon/jsinspector-modern/tests/NetworkReporterTest.cpp +126 -0
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.cpp +9 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlags.h +11 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.cpp +111 -75
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsAccessor.h +6 -2
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDefaults.h +9 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsDynamicProvider.h +19 -1
- package/ReactCommon/react/featureflags/ReactNativeFeatureFlagsProvider.h +3 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.cpp +11 -1
- package/ReactCommon/react/nativemodule/featureflags/NativeReactNativeFeatureFlags.h +5 -1
- package/ReactCommon/react/renderer/animated/CMakeLists.txt +1 -0
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +18 -5
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +7 -2
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +4 -0
- package/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.h +1 -1
- package/ReactCommon/react/renderer/animationbackend/AnimationBackend.h +4 -3
- package/ReactCommon/react/renderer/graphics/Transform.h +2 -3
- package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/PlatformColorParser.h +59 -23
- package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/configurePlatformColorCacheInvalidationHook.cpp +27 -0
- package/ReactCommon/react/renderer/graphics/platform/android/react/renderer/graphics/configurePlatformColorCacheInvalidationHook.h +12 -0
- package/ReactCommon/react/renderer/mounting/internal/sliceChildShadowNodeViewPairs.cpp +5 -3
- package/ReactCommon/react/renderer/uimanager/UIManager.cpp +3 -2
- package/ReactCommon/react/renderer/uimanager/UIManager.h +8 -4
- package/ReactCommon/react/renderer/uimanager/UIManagerAnimationBackend.h +24 -0
- package/ReactCommon/react/runtime/hermes/HermesInstance.cpp +89 -0
- package/ReactCommon/react/utils/CMakeLists.txt +1 -1
- package/ReactCommon/react/utils/Uuid.cpp +69 -0
- package/ReactCommon/react/utils/Uuid.h +20 -0
- package/ReactCommon/react/utils/tests/UuidTest.cpp +28 -0
- package/ReactCommon/yoga/cmake/yoga-config.cmake.in +1 -1
- package/jest/setup.js +15 -10
- package/package.json +10 -10
- package/scripts/cocoapods/utils.rb +1 -0
- package/scripts/react_native_pods.rb +6 -0
- package/sdks/hermes-engine/hermes-engine.podspec +14 -0
- package/sdks/hermes-engine/utils/build-apple-framework.sh +12 -0
- package/sdks/hermesc/osx-bin/hermes +0 -0
- package/sdks/hermesc/osx-bin/hermesc +0 -0
- package/sdks/hermesc/win64-bin/hermesc.exe +0 -0
- package/src/private/featureflags/ReactNativeFeatureFlags.js +11 -1
- package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +3 -1
- package/src/private/specs_DEPRECATED/modules/NativeNetworkingIOS.js +1 -0
- package/src/private/webapis/dom/nodes/ReactNativeElement.js +12 -2
- package/types_generated/Libraries/Components/View/ViewNativeComponent.d.ts +3 -3
- package/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutDirectionUtil.kt +0 -36
|
@@ -120,6 +120,7 @@ std::unique_ptr<facebook::react::JSExecutorFactory> RCTAppSetupDefaultJsExecutor
|
|
|
120
120
|
RCTTurboModuleManager *turboModuleManager,
|
|
121
121
|
const std::shared_ptr<facebook::react::RuntimeScheduler> &runtimeScheduler)
|
|
122
122
|
{
|
|
123
|
+
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
123
124
|
// Necessary to allow NativeModules to lookup TurboModules
|
|
124
125
|
[bridge setRCTTurboModuleRegistry:turboModuleManager];
|
|
125
126
|
|
|
@@ -146,12 +147,18 @@ std::unique_ptr<facebook::react::JSExecutorFactory> RCTAppSetupDefaultJsExecutor
|
|
|
146
147
|
return std::make_unique<facebook::react::HermesExecutorFactory>(
|
|
147
148
|
facebook::react::RCTJSIExecutorRuntimeInstaller(runtimeInstallerLambda));
|
|
148
149
|
#endif
|
|
150
|
+
#else
|
|
151
|
+
// This method should not be invoked in the New Arch. So when Legacy Arch is removed, we can
|
|
152
|
+
// safly return a nullptr.
|
|
153
|
+
return nullptr;
|
|
154
|
+
#endif
|
|
149
155
|
}
|
|
150
156
|
|
|
151
157
|
std::unique_ptr<facebook::react::JSExecutorFactory> RCTAppSetupJsExecutorFactoryForOldArch(
|
|
152
158
|
RCTBridge *bridge,
|
|
153
159
|
const std::shared_ptr<facebook::react::RuntimeScheduler> &runtimeScheduler)
|
|
154
160
|
{
|
|
161
|
+
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
155
162
|
auto runtimeInstallerLambda = [bridge, runtimeScheduler](facebook::jsi::Runtime &runtime) {
|
|
156
163
|
if (!bridge) {
|
|
157
164
|
return;
|
|
@@ -164,4 +171,9 @@ std::unique_ptr<facebook::react::JSExecutorFactory> RCTAppSetupJsExecutorFactory
|
|
|
164
171
|
return std::make_unique<facebook::react::HermesExecutorFactory>(
|
|
165
172
|
facebook::react::RCTJSIExecutorRuntimeInstaller(runtimeInstallerLambda));
|
|
166
173
|
#endif
|
|
174
|
+
#else
|
|
175
|
+
// This method should not be invoked in the New Arch. So when Legacy Arch is removed, we can
|
|
176
|
+
// safly return a nullptr.
|
|
177
|
+
return nullptr;
|
|
178
|
+
#endif
|
|
167
179
|
}
|
|
@@ -261,7 +261,12 @@ using namespace facebook::react;
|
|
|
261
261
|
|
|
262
262
|
configuration.sourceURLForBridge = ^NSURL *_Nullable(RCTBridge *_Nonnull bridge)
|
|
263
263
|
{
|
|
264
|
+
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
264
265
|
return [weakSelf.delegate sourceURLForBridge:bridge];
|
|
266
|
+
#else
|
|
267
|
+
// When the Legacy Arch is removed, the Delegate does not have a sourceURLForBridge method
|
|
268
|
+
return [weakSelf.delegate bundleURL];
|
|
269
|
+
#endif
|
|
265
270
|
};
|
|
266
271
|
|
|
267
272
|
if ([self.delegate respondsToSelector:@selector(extraModulesForBridge:)]) {
|
|
@@ -275,13 +280,24 @@ using namespace facebook::react;
|
|
|
275
280
|
configuration.extraLazyModuleClassesForBridge =
|
|
276
281
|
^NSDictionary<NSString *, Class> *_Nonnull(RCTBridge *_Nonnull bridge)
|
|
277
282
|
{
|
|
283
|
+
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
278
284
|
return [weakSelf.delegate extraLazyModuleClassesForBridge:bridge];
|
|
285
|
+
#else
|
|
286
|
+
// When the Legacy Arch is removed, the Delegate does not have a extraLazyModuleClassesForBridge method
|
|
287
|
+
return @{};
|
|
288
|
+
#endif
|
|
279
289
|
};
|
|
280
290
|
}
|
|
281
291
|
|
|
282
292
|
if ([self.delegate respondsToSelector:@selector(bridge:didNotFindModule:)]) {
|
|
283
293
|
configuration.bridgeDidNotFindModule = ^BOOL(RCTBridge *_Nonnull bridge, NSString *_Nonnull moduleName) {
|
|
294
|
+
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
284
295
|
return [weakSelf.delegate bridge:bridge didNotFindModule:moduleName];
|
|
296
|
+
#else
|
|
297
|
+
// When the Legacy Arch is removed, the Delegate does not have a bridge:didNotFindModule method
|
|
298
|
+
// We return NO, because if we have invoked this method is unlikely that the module will be actually registered
|
|
299
|
+
return NO;
|
|
300
|
+
#endif
|
|
285
301
|
};
|
|
286
302
|
}
|
|
287
303
|
|
|
@@ -290,13 +306,30 @@ using namespace facebook::react;
|
|
|
290
306
|
^(RCTBridge *_Nonnull bridge,
|
|
291
307
|
RCTSourceLoadProgressBlock _Nonnull onProgress,
|
|
292
308
|
RCTSourceLoadBlock _Nonnull loadCallback) {
|
|
309
|
+
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
293
310
|
[weakSelf.delegate loadSourceForBridge:bridge onProgress:onProgress onComplete:loadCallback];
|
|
311
|
+
#else
|
|
312
|
+
// When the Legacy Arch is removed, the Delegate does not have a
|
|
313
|
+
// loadSourceForBridge:onProgress:onComplete: method
|
|
314
|
+
// We then call the loadBundleAtURL:onProgress:onComplete: instead
|
|
315
|
+
[weakSelf.delegate loadBundleAtURL:self.bundleURL onProgress:onProgress onComplete:loadCallback];
|
|
316
|
+
#endif
|
|
294
317
|
};
|
|
295
318
|
}
|
|
296
319
|
|
|
297
320
|
if ([self.delegate respondsToSelector:@selector(loadSourceForBridge:withBlock:)]) {
|
|
298
321
|
configuration.loadSourceForBridge = ^(RCTBridge *_Nonnull bridge, RCTSourceLoadBlock _Nonnull loadCallback) {
|
|
322
|
+
#ifndef RCT_REMOVE_LEGACY_ARCH
|
|
299
323
|
[weakSelf.delegate loadSourceForBridge:bridge withBlock:loadCallback];
|
|
324
|
+
#else
|
|
325
|
+
// When the Legacy Arch is removed, the Delegate does not have a
|
|
326
|
+
// loadSourceForBridge:withBlock: method
|
|
327
|
+
// We then call the loadBundleAtURL:onProgress:onComplete: instead
|
|
328
|
+
[weakSelf.delegate loadBundleAtURL:self.bundleURL
|
|
329
|
+
onProgress:^(RCTLoadingProgress *progressData) {
|
|
330
|
+
}
|
|
331
|
+
onComplete:loadCallback];
|
|
332
|
+
#endif
|
|
300
333
|
};
|
|
301
334
|
}
|
|
302
335
|
|
|
@@ -449,6 +449,12 @@ function InternalTextInput(props: TextInputProps): React.Node {
|
|
|
449
449
|
before we can get to the long term breaking change.
|
|
450
450
|
*/
|
|
451
451
|
if (instance != null) {
|
|
452
|
+
// Register the input immediately when the ref is set so that focus()
|
|
453
|
+
// can be called from ref callbacks
|
|
454
|
+
// Double registering during useLayoutEffect is fine, because the underlying
|
|
455
|
+
// state is a Set.
|
|
456
|
+
TextInputState.registerInput(instance);
|
|
457
|
+
|
|
452
458
|
// $FlowFixMe[prop-missing] - See the explanation above.
|
|
453
459
|
// $FlowFixMe[unsafe-object-assign]
|
|
454
460
|
Object.assign(instance, {
|
|
@@ -21,8 +21,8 @@ const ViewNativeComponent: HostComponent<Props> =
|
|
|
21
21
|
}));
|
|
22
22
|
|
|
23
23
|
interface NativeCommands {
|
|
24
|
-
+focus: () => void;
|
|
25
|
-
+blur: () => void;
|
|
24
|
+
+focus: (viewRef: HostInstance) => void;
|
|
25
|
+
+blur: (viewRef: HostInstance) => void;
|
|
26
26
|
+hotspotUpdate: (viewRef: HostInstance, x: number, y: number) => void;
|
|
27
27
|
+setPressed: (viewRef: HostInstance, pressed: boolean) => void;
|
|
28
28
|
}
|
|
@@ -29,7 +29,7 @@ export default class ReactNativeVersion {
|
|
|
29
29
|
static major: number = 0;
|
|
30
30
|
static minor: number = 83;
|
|
31
31
|
static patch: number = 0;
|
|
32
|
-
static prerelease: string | null = 'nightly-
|
|
32
|
+
static prerelease: string | null = 'nightly-20251011-6f482708b';
|
|
33
33
|
|
|
34
34
|
static getVersionString(): string {
|
|
35
35
|
return `${this.major}.${this.minor}.${this.patch}${this.prerelease != null ? `-${this.prerelease}` : ''}`;
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* - Corresponds to `PerformanceResourceTiming.requestStart` (specifically,
|
|
28
28
|
* marking when the native request was initiated).
|
|
29
29
|
*/
|
|
30
|
-
+ (void)reportRequestStart:(
|
|
30
|
+
+ (void)reportRequestStart:(NSString *)requestId
|
|
31
31
|
request:(NSURLRequest *)request
|
|
32
32
|
encodedDataLength:(int)encodedDataLength;
|
|
33
33
|
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
* `PerformanceResourceTiming.connectStart`. Defined as "immediately before
|
|
41
41
|
* the browser starts to establish the connection to the server".
|
|
42
42
|
*/
|
|
43
|
-
+ (void)reportConnectionTiming:(
|
|
43
|
+
+ (void)reportConnectionTiming:(NSString *)requestId request:(NSURLRequest *)request;
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
46
|
* Report when HTTP response headers have been received, corresponding to
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
* - Corresponds to `Network.responseReceived` in CDP.
|
|
50
50
|
* - Corresponds to `PerformanceResourceTiming.responseStart`.
|
|
51
51
|
*/
|
|
52
|
-
+ (void)reportResponseStart:(
|
|
52
|
+
+ (void)reportResponseStart:(NSString *)requestId
|
|
53
53
|
response:(NSURLResponse *)response
|
|
54
54
|
statusCode:(int)statusCode
|
|
55
55
|
headers:(NSDictionary<NSString *, NSString *> *)headers;
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
*
|
|
60
60
|
* Corresponds to `Network.dataReceived` in CDP.
|
|
61
61
|
*/
|
|
62
|
-
+ (void)reportDataReceived:(
|
|
62
|
+
+ (void)reportDataReceived:(NSString *)requestId data:(NSData *)data;
|
|
63
63
|
|
|
64
64
|
/**
|
|
65
65
|
* Report when a network request is complete and we are no longer receiving
|
|
@@ -68,20 +68,20 @@
|
|
|
68
68
|
* - Corresponds to `Network.loadingFinished` in CDP.
|
|
69
69
|
* - Corresponds to `PerformanceResourceTiming.responseEnd`.
|
|
70
70
|
*/
|
|
71
|
-
+ (void)reportResponseEnd:(
|
|
71
|
+
+ (void)reportResponseEnd:(NSString *)requestId encodedDataLength:(int)encodedDataLength;
|
|
72
72
|
|
|
73
73
|
/**
|
|
74
74
|
* Report when a network request has failed.
|
|
75
75
|
*
|
|
76
76
|
* - Corresponds to `Network.loadingFailed` in CDP.
|
|
77
77
|
*/
|
|
78
|
-
+ (void)reportRequestFailed:(
|
|
78
|
+
+ (void)reportRequestFailed:(NSString *)requestId cancelled:(BOOL)cancelled;
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
81
|
* Store response body preview. This is an optional reporting method, and is a
|
|
82
82
|
* no-op if CDP debugging is disabled.
|
|
83
83
|
*/
|
|
84
|
-
+ (void)maybeStoreResponseBody:(
|
|
84
|
+
+ (void)maybeStoreResponseBody:(NSString *)requestId data:(NSData *)data base64Encoded:(bool)base64Encoded;
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
87
|
* Incrementally store a response body preview, when a string response is
|
|
@@ -91,6 +91,6 @@
|
|
|
91
91
|
* As with `maybeStoreResponseBody`, calling this method is optional and a
|
|
92
92
|
* no-op if CDP debugging is disabled.
|
|
93
93
|
*/
|
|
94
|
-
+ (void)maybeStoreResponseBodyIncremental:(
|
|
94
|
+
+ (void)maybeStoreResponseBodyIncremental:(NSString *)requestId data:(NSString *)data;
|
|
95
95
|
|
|
96
96
|
@end
|
|
@@ -48,14 +48,14 @@ std::string convertRequestBodyToStringTruncated(NSURLRequest *request)
|
|
|
48
48
|
#ifdef REACT_NATIVE_DEBUGGER_ENABLED
|
|
49
49
|
|
|
50
50
|
// Dictionary to buffer incremental response bodies (CDP debugging active only)
|
|
51
|
-
static const NSMutableDictionary<
|
|
51
|
+
static const NSMutableDictionary<NSString *, NSMutableString *> *responseBuffers = nil;
|
|
52
52
|
|
|
53
53
|
#endif
|
|
54
54
|
|
|
55
55
|
@implementation RCTInspectorNetworkReporter {
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
+ (void)reportRequestStart:(
|
|
58
|
+
+ (void)reportRequestStart:(NSString *)requestId
|
|
59
59
|
request:(NSURLRequest *)request
|
|
60
60
|
encodedDataLength:(int)encodedDataLength
|
|
61
61
|
{
|
|
@@ -68,11 +68,10 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
68
68
|
requestInfo.httpBody = convertRequestBodyToStringTruncated(request);
|
|
69
69
|
#endif
|
|
70
70
|
|
|
71
|
-
NetworkReporter::getInstance().reportRequestStart(
|
|
72
|
-
requestId.stringValue.UTF8String, requestInfo, encodedDataLength, std::nullopt);
|
|
71
|
+
NetworkReporter::getInstance().reportRequestStart(requestId.UTF8String, requestInfo, encodedDataLength, std::nullopt);
|
|
73
72
|
}
|
|
74
73
|
|
|
75
|
-
+ (void)reportConnectionTiming:(
|
|
74
|
+
+ (void)reportConnectionTiming:(NSString *)requestId request:(NSURLRequest *)request
|
|
76
75
|
{
|
|
77
76
|
Headers headersMap;
|
|
78
77
|
|
|
@@ -81,10 +80,10 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
81
80
|
headersMap = convertNSDictionaryToHeaders(request.allHTTPHeaderFields);
|
|
82
81
|
#endif
|
|
83
82
|
|
|
84
|
-
NetworkReporter::getInstance().reportConnectionTiming(requestId.
|
|
83
|
+
NetworkReporter::getInstance().reportConnectionTiming(requestId.UTF8String, headersMap);
|
|
85
84
|
}
|
|
86
85
|
|
|
87
|
-
+ (void)reportResponseStart:(
|
|
86
|
+
+ (void)reportResponseStart:(NSString *)requestId
|
|
88
87
|
response:(NSURLResponse *)response
|
|
89
88
|
statusCode:(int)statusCode
|
|
90
89
|
headers:(NSDictionary<NSString *, NSString *> *)headers
|
|
@@ -99,17 +98,17 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
99
98
|
#endif
|
|
100
99
|
|
|
101
100
|
NetworkReporter::getInstance().reportResponseStart(
|
|
102
|
-
requestId.
|
|
101
|
+
requestId.UTF8String, responseInfo, response.expectedContentLength);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
+ (void)reportDataReceived:(
|
|
104
|
+
+ (void)reportDataReceived:(NSString *)requestId data:(NSData *)data
|
|
106
105
|
{
|
|
107
|
-
NetworkReporter::getInstance().reportDataReceived(requestId.
|
|
106
|
+
NetworkReporter::getInstance().reportDataReceived(requestId.UTF8String, (int)data.length, std::nullopt);
|
|
108
107
|
}
|
|
109
108
|
|
|
110
|
-
+ (void)reportResponseEnd:(
|
|
109
|
+
+ (void)reportResponseEnd:(NSString *)requestId encodedDataLength:(int)encodedDataLength
|
|
111
110
|
{
|
|
112
|
-
NetworkReporter::getInstance().reportResponseEnd(requestId.
|
|
111
|
+
NetworkReporter::getInstance().reportResponseEnd(requestId.UTF8String, encodedDataLength);
|
|
113
112
|
|
|
114
113
|
#ifdef REACT_NATIVE_DEBUGGER_ENABLED
|
|
115
114
|
// Debug build: Check for buffered response body and flush to NetworkReporter
|
|
@@ -118,7 +117,7 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
118
117
|
if (buffer != nullptr) {
|
|
119
118
|
if (buffer.length > 0) {
|
|
120
119
|
NetworkReporter::getInstance().storeResponseBody(
|
|
121
|
-
requestId.
|
|
120
|
+
requestId.UTF8String, RCTStringViewFromNSString(buffer), false);
|
|
122
121
|
}
|
|
123
122
|
[responseBuffers removeObjectForKey:requestId];
|
|
124
123
|
}
|
|
@@ -126,9 +125,9 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
126
125
|
#endif
|
|
127
126
|
}
|
|
128
127
|
|
|
129
|
-
+ (void)reportRequestFailed:(
|
|
128
|
+
+ (void)reportRequestFailed:(NSString *)requestId cancelled:(bool)cancelled
|
|
130
129
|
{
|
|
131
|
-
NetworkReporter::getInstance().reportRequestFailed(requestId.
|
|
130
|
+
NetworkReporter::getInstance().reportRequestFailed(requestId.UTF8String, cancelled);
|
|
132
131
|
|
|
133
132
|
#ifdef REACT_NATIVE_DEBUGGER_ENABLED
|
|
134
133
|
// Debug build: Clear buffer for request
|
|
@@ -138,7 +137,7 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
138
137
|
#endif
|
|
139
138
|
}
|
|
140
139
|
|
|
141
|
-
+ (void)maybeStoreResponseBody:(
|
|
140
|
+
+ (void)maybeStoreResponseBody:(NSString *)requestId data:(id)data base64Encoded:(bool)base64Encoded
|
|
142
141
|
{
|
|
143
142
|
#ifdef REACT_NATIVE_DEBUGGER_ENABLED
|
|
144
143
|
// Debug build: Process response body and report to NetworkReporter
|
|
@@ -152,7 +151,7 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
152
151
|
NSString *encodedString = [(NSData *)data base64EncodedStringWithOptions:0];
|
|
153
152
|
if (encodedString != nullptr) {
|
|
154
153
|
networkReporter.storeResponseBody(
|
|
155
|
-
requestId.
|
|
154
|
+
requestId.UTF8String, RCTStringViewFromNSString(encodedString), base64Encoded);
|
|
156
155
|
} else {
|
|
157
156
|
RCTLogWarn(@"Failed to encode response data for request %@", requestId);
|
|
158
157
|
}
|
|
@@ -160,13 +159,12 @@ static const NSMutableDictionary<NSNumber *, NSMutableString *> *responseBuffers
|
|
|
160
159
|
RCTLogWarn(@"Exception while encoding response data: %@", exception.reason);
|
|
161
160
|
}
|
|
162
161
|
} else if ([data isKindOfClass:[NSString class]] && [(NSString *)data length] > 0) {
|
|
163
|
-
networkReporter.storeResponseBody(
|
|
164
|
-
requestId.stringValue.UTF8String, RCTStringViewFromNSString((NSString *)data), base64Encoded);
|
|
162
|
+
networkReporter.storeResponseBody(requestId.UTF8String, RCTStringViewFromNSString((NSString *)data), base64Encoded);
|
|
165
163
|
}
|
|
166
164
|
#endif
|
|
167
165
|
}
|
|
168
166
|
|
|
169
|
-
+ (void)maybeStoreResponseBodyIncremental:(
|
|
167
|
+
+ (void)maybeStoreResponseBodyIncremental:(NSString *)requestId data:(NSString *)data
|
|
170
168
|
{
|
|
171
169
|
#ifdef REACT_NATIVE_DEBUGGER_ENABLED
|
|
172
170
|
// Debug build: Buffer incremental response body contents
|
|
@@ -28,6 +28,7 @@ typedef NS_ENUM(NSInteger, RCTNetworkTaskStatus) {
|
|
|
28
28
|
@property (nonatomic, readonly) NSNumber *requestID;
|
|
29
29
|
@property (nonatomic, readonly, weak) id requestToken;
|
|
30
30
|
@property (nonatomic, readonly) NSURLResponse *response;
|
|
31
|
+
@property (nonatomic, readonly) NSString *devToolsRequestId;
|
|
31
32
|
|
|
32
33
|
@property (nonatomic, copy) RCTURLRequestCompletionBlock completionBlock;
|
|
33
34
|
@property (nonatomic, copy) RCTURLRequestProgressBlock downloadProgressBlock;
|
|
@@ -40,7 +41,10 @@ typedef NS_ENUM(NSInteger, RCTNetworkTaskStatus) {
|
|
|
40
41
|
- (instancetype)initWithRequest:(NSURLRequest *)request
|
|
41
42
|
handler:(id<RCTURLRequestHandler>)handler
|
|
42
43
|
callbackQueue:(dispatch_queue_t)callbackQueue NS_DESIGNATED_INITIALIZER;
|
|
43
|
-
|
|
44
|
+
- (instancetype)initWithDevToolsRequestId:(NSString *)devToolsRequestId
|
|
45
|
+
request:(NSURLRequest *)request
|
|
46
|
+
handler:(id<RCTURLRequestHandler>)handler
|
|
47
|
+
callbackQueue:(dispatch_queue_t)callbackQueue;
|
|
44
48
|
- (void)start;
|
|
45
49
|
- (void)cancel;
|
|
46
50
|
|
|
@@ -26,6 +26,15 @@ static auto currentRequestId = std::atomic<NSUInteger>(0);
|
|
|
26
26
|
- (instancetype)initWithRequest:(NSURLRequest *)request
|
|
27
27
|
handler:(id<RCTURLRequestHandler>)handler
|
|
28
28
|
callbackQueue:(dispatch_queue_t)callbackQueue
|
|
29
|
+
{
|
|
30
|
+
self = [self initWithDevToolsRequestId:nil request:request handler:handler callbackQueue:callbackQueue];
|
|
31
|
+
return self;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
- (instancetype)initWithDevToolsRequestId:(NSString *)devToolsRequestId
|
|
35
|
+
request:(NSURLRequest *)request
|
|
36
|
+
handler:(id<RCTURLRequestHandler>)handler
|
|
37
|
+
callbackQueue:(dispatch_queue_t)callbackQueue
|
|
29
38
|
{
|
|
30
39
|
RCTAssertParam(request);
|
|
31
40
|
RCTAssertParam(handler);
|
|
@@ -33,6 +42,10 @@ static auto currentRequestId = std::atomic<NSUInteger>(0);
|
|
|
33
42
|
|
|
34
43
|
if ((self = [super init])) {
|
|
35
44
|
_requestID = @(currentRequestId++);
|
|
45
|
+
_devToolsRequestId = devToolsRequestId;
|
|
46
|
+
if (_devToolsRequestId == nil) {
|
|
47
|
+
_devToolsRequestId = [[NSUUID UUID] UUIDString];
|
|
48
|
+
}
|
|
36
49
|
_request = request;
|
|
37
50
|
_handler = handler;
|
|
38
51
|
_callbackQueue = callbackQueue;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#import "RCTNetworking.h"
|
|
9
|
+
|
|
10
|
+
@protocol RCTNetworkingTextResponseHandler <NSObject>
|
|
11
|
+
|
|
12
|
+
- (BOOL)canHandleNetworkingTextResponseForRequest:(NSURLRequest *)request;
|
|
13
|
+
- (void)handleNetworkingResponseText:(NSString *)responseText request:(NSURLRequest *)request;
|
|
14
|
+
|
|
15
|
+
@end
|
|
16
|
+
|
|
17
|
+
@interface RCTNetworking (Internal)
|
|
18
|
+
|
|
19
|
+
- (void)addTextResponseHandler:(id<RCTNetworkingTextResponseHandler>)handler;
|
|
20
|
+
|
|
21
|
+
@end
|
|
@@ -77,12 +77,14 @@ const RCTNetworking = {
|
|
|
77
77
|
}));
|
|
78
78
|
}
|
|
79
79
|
const requestId = generateRequestId();
|
|
80
|
+
const devToolsRequestId =
|
|
81
|
+
global.__NETWORK_REPORTER__?.createDevToolsRequestId();
|
|
80
82
|
NativeNetworkingAndroid.sendRequest(
|
|
81
83
|
method,
|
|
82
84
|
url,
|
|
83
85
|
requestId,
|
|
84
86
|
convertHeadersMapToArray(headers),
|
|
85
|
-
{...body, trackingName},
|
|
87
|
+
{...body, trackingName, devToolsRequestId},
|
|
86
88
|
responseType,
|
|
87
89
|
incrementalUpdates,
|
|
88
90
|
timeout,
|
|
@@ -47,6 +47,9 @@
|
|
|
47
47
|
*/
|
|
48
48
|
- (RCTNetworkTask *)networkTaskWithRequest:(NSURLRequest *)request
|
|
49
49
|
completionBlock:(RCTURLRequestCompletionBlock)completionBlock;
|
|
50
|
+
- (RCTNetworkTask *)networkTaskWithDevToolsRequestId:(NSString *)devToolsRequestId
|
|
51
|
+
request:(NSURLRequest *)request
|
|
52
|
+
completionBlock:(RCTURLRequestCompletionBlock)completionBlock;
|
|
50
53
|
|
|
51
54
|
- (void)addRequestHandler:(id<RCTNetworkingRequestHandler>)handler;
|
|
52
55
|
|
|
@@ -40,6 +40,8 @@ const RCTNetworking = {
|
|
|
40
40
|
withCredentials: boolean,
|
|
41
41
|
) {
|
|
42
42
|
const body = convertRequestBody(data);
|
|
43
|
+
const devToolsRequestId =
|
|
44
|
+
global.__NETWORK_REPORTER__?.createDevToolsRequestId();
|
|
43
45
|
NativeNetworkingIOS.sendRequest(
|
|
44
46
|
{
|
|
45
47
|
method,
|
|
@@ -50,6 +52,7 @@ const RCTNetworking = {
|
|
|
50
52
|
incrementalUpdates,
|
|
51
53
|
timeout,
|
|
52
54
|
withCredentials,
|
|
55
|
+
unstable_devToolsRequestId: devToolsRequestId,
|
|
53
56
|
},
|
|
54
57
|
callback,
|
|
55
58
|
);
|