react-native
Advanced tools
Comparing version 0.79.0-nightly-20250205-b0501a5be to 0.79.0-nightly-20250206-fb8a6a5bb
@@ -20,3 +20,3 @@ /** | ||
patch: 0, | ||
prerelease: 'nightly-20250205-b0501a5be', | ||
prerelease: 'nightly-20250206-fb8a6a5bb', | ||
}; |
@@ -48,2 +48,15 @@ /** | ||
type XHRInterceptor = interface { | ||
requestSent(id: number, url: string, method: string, headers: Object): void, | ||
responseReceived( | ||
id: number, | ||
url: string, | ||
status: number, | ||
headers: Object, | ||
): void, | ||
dataReceived(id: number, data: string): void, | ||
loadingFinished(id: number, encodedDataLength: number): void, | ||
loadingFailed(id: number, error: string): void, | ||
}; | ||
// The native blob module is optional so inject it here if available. | ||
@@ -124,2 +137,3 @@ if (BlobManager.isAvailable) { | ||
static _interceptor: ?XHRInterceptor = null; | ||
static _profiling: boolean = false; | ||
@@ -162,2 +176,6 @@ | ||
static __setInterceptor_DO_NOT_USE(interceptor: ?XHRInterceptor) { | ||
XMLHttpRequest._interceptor = interceptor; | ||
} | ||
static enableProfiling(enableProfiling: boolean): void { | ||
@@ -289,6 +307,16 @@ XMLHttpRequest._profiling = enableProfiling; | ||
// exposed for testing | ||
__didCreateRequest(requestId: number): void { | ||
this._requestId = requestId; | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.requestSent( | ||
requestId, | ||
this._url || '', | ||
this._method || 'GET', | ||
this._headers, | ||
); | ||
} | ||
// exposed for testing | ||
__didUploadProgress( | ||
@@ -328,2 +356,10 @@ requestId: number, | ||
} | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.responseReceived( | ||
requestId, | ||
responseURL || this._url || '', | ||
status, | ||
responseHeaders || {}, | ||
); | ||
} | ||
@@ -339,2 +375,5 @@ } | ||
this.setReadyState(this.LOADING); | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.dataReceived(requestId, response); | ||
} | ||
@@ -362,2 +401,4 @@ | ||
} | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.dataReceived(requestId, responseText); | ||
@@ -386,2 +427,3 @@ this.setReadyState(this.LOADING); | ||
// exposed for testing | ||
__didCompleteResponse( | ||
@@ -412,2 +454,12 @@ requestId: number, | ||
} | ||
if (error) { | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.loadingFailed(requestId, error); | ||
} else { | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.loadingFinished( | ||
requestId, | ||
this._response.length, | ||
); | ||
} | ||
} | ||
@@ -414,0 +466,0 @@ } |
@@ -37,2 +37,15 @@ /** | ||
type XHRInterceptor = interface { | ||
requestSent(id: number, url: string, method: string, headers: Object): void, | ||
responseReceived( | ||
id: number, | ||
url: string, | ||
status: number, | ||
headers: Object, | ||
): void, | ||
dataReceived(id: number, data: string): void, | ||
loadingFinished(id: number, encodedDataLength: number): void, | ||
loadingFailed(id: number, error: string): void, | ||
}; | ||
// The native blob module is optional so inject it here if available. | ||
@@ -92,2 +105,3 @@ if (BlobManager.isAvailable) { | ||
static _interceptor: ?XHRInterceptor = null; | ||
static _profiling: boolean = false; | ||
@@ -140,2 +154,6 @@ | ||
static __setInterceptor_DO_NOT_USE(interceptor: ?XHRInterceptor) { | ||
XMLHttpRequest._interceptor = interceptor; | ||
} | ||
static enableProfiling(enableProfiling: boolean): void { | ||
@@ -267,6 +285,16 @@ XMLHttpRequest._profiling = enableProfiling; | ||
// exposed for testing | ||
__didCreateRequest(requestId: number): void { | ||
this._requestId = requestId; | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.requestSent( | ||
requestId, | ||
this._url || '', | ||
this._method || 'GET', | ||
this._headers, | ||
); | ||
} | ||
// exposed for testing | ||
__didUploadProgress( | ||
@@ -304,2 +332,10 @@ requestId: number, | ||
} | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.responseReceived( | ||
requestId, | ||
responseURL || this._url || '', | ||
status, | ||
responseHeaders || {}, | ||
); | ||
} | ||
@@ -315,2 +351,5 @@ } | ||
this.setReadyState(this.LOADING); | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.dataReceived(requestId, response); | ||
} | ||
@@ -338,2 +377,4 @@ | ||
} | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.dataReceived(requestId, responseText); | ||
@@ -386,2 +427,12 @@ this.setReadyState(this.LOADING); | ||
} | ||
if (error) { | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.loadingFailed(requestId, error); | ||
} else { | ||
XMLHttpRequest._interceptor && | ||
XMLHttpRequest._interceptor.loadingFinished( | ||
requestId, | ||
this._response.length, | ||
); | ||
} | ||
} | ||
@@ -388,0 +439,0 @@ } |
{ | ||
"name": "react-native", | ||
"version": "0.79.0-nightly-20250205-b0501a5be", | ||
"version": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"description": "A framework for building native apps using React", | ||
@@ -111,9 +111,9 @@ "license": "MIT", | ||
"@jest/create-cache-key-function": "^29.6.3", | ||
"@react-native/assets-registry": "0.79.0-nightly-20250205-b0501a5be", | ||
"@react-native/codegen": "0.79.0-nightly-20250205-b0501a5be", | ||
"@react-native/community-cli-plugin": "0.79.0-nightly-20250205-b0501a5be", | ||
"@react-native/gradle-plugin": "0.79.0-nightly-20250205-b0501a5be", | ||
"@react-native/js-polyfills": "0.79.0-nightly-20250205-b0501a5be", | ||
"@react-native/normalize-colors": "0.79.0-nightly-20250205-b0501a5be", | ||
"@react-native/virtualized-lists": "0.79.0-nightly-20250205-b0501a5be", | ||
"@react-native/assets-registry": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"@react-native/codegen": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"@react-native/community-cli-plugin": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"@react-native/gradle-plugin": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"@react-native/js-polyfills": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"@react-native/normalize-colors": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"@react-native/virtualized-lists": "0.79.0-nightly-20250206-fb8a6a5bb", | ||
"abort-controller": "^3.0.0", | ||
@@ -120,0 +120,0 @@ "anser": "^1.4.9", |
@@ -20,4 +20,5 @@ /** | ||
import flattenStyle from '../../../Libraries/StyleSheet/flattenStyle'; | ||
import * as ReactNativeFeatureFlags from '../featureflags/ReactNativeFeatureFlags'; | ||
import nullthrows from 'nullthrows'; | ||
import {useMemo, useState} from 'react'; | ||
import {useInsertionEffect, useMemo, useRef, useState} from 'react'; | ||
@@ -69,2 +70,15 @@ type CompositeKey = { | ||
): AnimatedProps { | ||
// NOTE: This feature flag must be evaluated inside the hook because this | ||
// module factory can be evaluated much sooner, before overrides are set. | ||
const useAnimatedPropsImpl = | ||
ReactNativeFeatureFlags.avoidStateUpdateInAnimatedPropsMemo() | ||
? useAnimatedPropsMemo_ref | ||
: useAnimatedPropsMemo_state; | ||
return useAnimatedPropsImpl(create, props); | ||
}; | ||
function useAnimatedPropsMemo_ref( | ||
create: () => AnimatedProps, | ||
props: $ReadOnly<{[string]: mixed}>, | ||
): AnimatedProps { | ||
const compositeKey = useMemo( | ||
@@ -75,2 +89,33 @@ () => createCompositeKeyForProps(props, allowlist), | ||
const prevRef = useRef<?$ReadOnly<{ | ||
compositeKey: typeof compositeKey, | ||
node: AnimatedProps, | ||
}>>(); | ||
const prev = prevRef.current; | ||
const next = | ||
prev != null && | ||
areCompositeKeysEqual(prev.compositeKey, compositeKey, allowlist) | ||
? prev | ||
: { | ||
compositeKey, | ||
node: create(), | ||
}; | ||
useInsertionEffect(() => { | ||
prevRef.current = next; | ||
}, [next]); | ||
return next.node; | ||
} | ||
function useAnimatedPropsMemo_state( | ||
create: () => AnimatedProps, | ||
props: $ReadOnly<{[string]: mixed}>, | ||
): AnimatedProps { | ||
const compositeKey = useMemo( | ||
() => createCompositeKeyForProps(props, allowlist), | ||
[props], | ||
); | ||
const [state, setState] = useState<{ | ||
@@ -97,3 +142,3 @@ allowlist: ?AnimatedPropsAllowlist, | ||
return state.value; | ||
}; | ||
} | ||
} | ||
@@ -100,0 +145,0 @@ |
@@ -7,3 +7,3 @@ /** | ||
* | ||
* @generated SignedSource<<7cab5c670563229c299d89e62698d469>> | ||
* @generated SignedSource<<189673854f1226119417140b4afd46e4>> | ||
* @flow strict | ||
@@ -34,2 +34,3 @@ */ | ||
animatedShouldUseSingleOp: Getter<boolean>, | ||
avoidStateUpdateInAnimatedPropsMemo: Getter<boolean>, | ||
disableInteractionManager: Getter<boolean>, | ||
@@ -85,3 +86,2 @@ enableAccessToHostTreeInFabric: Getter<boolean>, | ||
lazyAnimationCallbacks: Getter<boolean>, | ||
loadVectorDrawablesOnImages: Getter<boolean>, | ||
traceTurboModulePromiseRejectionsOnAndroid: Getter<boolean>, | ||
@@ -115,2 +115,7 @@ useAlwaysAvailableJSErrorHandling: Getter<boolean>, | ||
/** | ||
* Changes `useAnimatedPropsMemo` to avoid state updates to invalidate the cached `AnimatedProps`. | ||
*/ | ||
export const avoidStateUpdateInAnimatedPropsMemo: Getter<boolean> = createJavaScriptFlagGetter('avoidStateUpdateInAnimatedPropsMemo', false); | ||
/** | ||
* Disables InteractionManager and replaces its scheduler with `setImmediate`. | ||
@@ -304,6 +309,2 @@ */ | ||
/** | ||
* Adds support for loading vector drawable assets in the Image component (only on Android) | ||
*/ | ||
export const loadVectorDrawablesOnImages: Getter<boolean> = createNativeFlagGetter('loadVectorDrawablesOnImages', true); | ||
/** | ||
* Enables storing js caller stack when creating promise in native module. This is useful in case of Promise rejection and tracing the cause. | ||
@@ -310,0 +311,0 @@ */ |
@@ -7,3 +7,3 @@ /** | ||
* | ||
* @generated SignedSource<<d0cefa6c5be56d5eef73d4a48ba7bd95>> | ||
* @generated SignedSource<<8a004cfe15509541b1aa045f219bbaca>> | ||
* @flow strict | ||
@@ -59,3 +59,2 @@ */ | ||
+lazyAnimationCallbacks?: () => boolean; | ||
+loadVectorDrawablesOnImages?: () => boolean; | ||
+traceTurboModulePromiseRejectionsOnAndroid?: () => boolean; | ||
@@ -62,0 +61,0 @@ +useAlwaysAvailableJSErrorHandling?: () => boolean; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
73810808
3911
215251
+ Added@react-native/assets-registry@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/babel-plugin-codegen@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/babel-preset@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/codegen@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/community-cli-plugin@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/debugger-frontend@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/dev-middleware@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/gradle-plugin@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/js-polyfills@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/metro-babel-transformer@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/normalize-colors@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
+ Added@react-native/virtualized-lists@0.79.0-nightly-20250206-fb8a6a5bb(transitive)
- Removed@react-native/assets-registry@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/babel-plugin-codegen@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/babel-preset@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/codegen@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/community-cli-plugin@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/debugger-frontend@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/dev-middleware@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/gradle-plugin@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/js-polyfills@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/metro-babel-transformer@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/normalize-colors@0.79.0-nightly-20250205-b0501a5be(transitive)
- Removed@react-native/virtualized-lists@0.79.0-nightly-20250205-b0501a5be(transitive)
Updated@react-native/assets-registry@0.79.0-nightly-20250206-fb8a6a5bb
Updated@react-native/codegen@0.79.0-nightly-20250206-fb8a6a5bb
Updated@react-native/community-cli-plugin@0.79.0-nightly-20250206-fb8a6a5bb
Updated@react-native/gradle-plugin@0.79.0-nightly-20250206-fb8a6a5bb
Updated@react-native/js-polyfills@0.79.0-nightly-20250206-fb8a6a5bb
Updated@react-native/normalize-colors@0.79.0-nightly-20250206-fb8a6a5bb
Updated@react-native/virtualized-lists@0.79.0-nightly-20250206-fb8a6a5bb