diff --git a/.ado/jobs/desktop.yml b/.ado/jobs/desktop.yml index 0acf236e2d8..b37b00ed158 100644 --- a/.ado/jobs/desktop.yml +++ b/.ado/jobs/desktop.yml @@ -305,6 +305,7 @@ jobs: # Bundler Invoke-WebRequest -UseBasicParsing -Uri "http://localhost:8081/IntegrationTests/IntegrationTestsApp.bundle?platform=windows&dev=true" + continueOnError: true - task: VSTest@2 displayName: Run Desktop Integration Tests diff --git a/.ado/jobs/e2e-test.yml b/.ado/jobs/e2e-test.yml index aae1bd54e31..0d51d5c2523 100644 --- a/.ado/jobs/e2e-test.yml +++ b/.ado/jobs/e2e-test.yml @@ -14,23 +14,23 @@ parameters: default: - BuildEnvironment: PullRequest Matrix: - - Name: X64Chakra - BuildPlatform: x64 - UseChakra: true + #- Name: X64Chakra + # BuildPlatform: x64 + # UseChakra: true - Name: X64Hermes BuildPlatform: x64 UseChakra: false - BuildEnvironment: Continuous Matrix: - - Name: X64Chakra - BuildPlatform: x64 - UseChakra: true + #- Name: X64Chakra + # BuildPlatform: x64 + # UseChakra: true - Name: X64Hermes BuildPlatform: x64 UseChakra: false - - Name: X86Chakra - BuildPlatform: x86 - UseChakra: true + #- Name: X86Chakra + # BuildPlatform: x86 + # UseChakra: true - Name: X86Hermes BuildPlatform: x86 UseChakra: false diff --git a/change/@office-iss-react-native-win32-2393f54c-703d-4a15-bb87-43de8cb83d42.json b/change/@office-iss-react-native-win32-2393f54c-703d-4a15-bb87-43de8cb83d42.json new file mode 100644 index 00000000000..7a14261f3a9 --- /dev/null +++ b/change/@office-iss-react-native-win32-2393f54c-703d-4a15-bb87-43de8cb83d42.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate RN Nightly Build 0.80.0-nightly-20250317-fc7385c1e", + "packageName": "@office-iss/react-native-win32", + "email": "hmalothu@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-channel-ded36452-34c7-45bb-9bd0-e9d563b1266b.json b/change/@react-native-windows-automation-channel-ded36452-34c7-45bb-9bd0-e9d563b1266b.json new file mode 100644 index 00000000000..1118744df92 --- /dev/null +++ b/change/@react-native-windows-automation-channel-ded36452-34c7-45bb-9bd0-e9d563b1266b.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Integrate RN Nightly Build 0.80.0-nightly-20250317-fc7385c1e", + "packageName": "@react-native-windows/automation-channel", + "email": "hmalothu@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-cli-e327f463-f420-4402-b550-d608bea38b73.json b/change/@react-native-windows-cli-e327f463-f420-4402-b550-d608bea38b73.json new file mode 100644 index 00000000000..567f4259448 --- /dev/null +++ b/change/@react-native-windows-cli-e327f463-f420-4402-b550-d608bea38b73.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate RN Nightly Build 0.80.0-nightly-20250317-fc7385c1e", + "packageName": "@react-native-windows/cli", + "email": "34109996+chiaramooney@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/@rnw-scripts-integrate-rn-69bbd269-37d8-4f31-b9f2-625feed8b11d.json b/change/@rnw-scripts-integrate-rn-69bbd269-37d8-4f31-b9f2-625feed8b11d.json new file mode 100644 index 00000000000..6675ccf4142 --- /dev/null +++ b/change/@rnw-scripts-integrate-rn-69bbd269-37d8-4f31-b9f2-625feed8b11d.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "Integrate RN Nightly Build 0.80.0-nightly-20250317-fc7385c1e", + "packageName": "@rnw-scripts/integrate-rn", + "email": "hmalothu@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-fbfb5e37-1e37-4cf6-95e7-7317e3df4909.json b/change/react-native-windows-fbfb5e37-1e37-4cf6-95e7-7317e3df4909.json new file mode 100644 index 00000000000..d1584a335d9 --- /dev/null +++ b/change/react-native-windows-fbfb5e37-1e37-4cf6-95e7-7317e3df4909.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate RN Nightly Build 0.80.0-nightly-20250317-fc7385c1e", + "packageName": "react-native-windows", + "email": "hmalothu@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/packages/@office-iss/react-native-win32-tester/ReportFullyDrawnView/ReportFullyDrawnView.js b/packages/@office-iss/react-native-win32-tester/ReportFullyDrawnView/ReportFullyDrawnView.js new file mode 100644 index 00000000000..882c04ff694 --- /dev/null +++ b/packages/@office-iss/react-native-win32-tester/ReportFullyDrawnView/ReportFullyDrawnView.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import {View} from 'react-native'; + +export default View; diff --git a/packages/@office-iss/react-native-win32-tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js b/packages/@office-iss/react-native-win32-tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js new file mode 100644 index 00000000000..232e9c07643 --- /dev/null +++ b/packages/@office-iss/react-native-win32-tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {HostComponent} from 'react-native'; +import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes'; + +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{ + ...ViewProps, +}>; + +export type ReportFullyDrawnViewType = HostComponent; + +export default (codegenNativeComponent( + 'RNTReportFullyDrawnView', +): ReportFullyDrawnViewType); diff --git a/packages/@office-iss/react-native-win32-tester/overrides.json b/packages/@office-iss/react-native-win32-tester/overrides.json index 4dbe9a5c677..a4535e235eb 100644 --- a/packages/@office-iss/react-native-win32-tester/overrides.json +++ b/packages/@office-iss/react-native-win32-tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win32/**" ], - "baseVersion": "0.79.0-nightly-20250303-cee63397b", + "baseVersion": "0.80.0-nightly-20250317-fc7385c1e", "overrides": [ { "type": "patch", @@ -42,7 +42,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.win32.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "3cf41a5b5fe9269145523937f8cc190ad154e615" + "baseHash": "39dc13e5f5a3b5fb58b807788ee5021ff6b7889c" } ] } \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32-tester/package.json b/packages/@office-iss/react-native-win32-tester/package.json index 02023b918c4..3a9b9f41338 100644 --- a/packages/@office-iss/react-native-win32-tester/package.json +++ b/packages/@office-iss/react-native-win32-tester/package.json @@ -11,7 +11,7 @@ "validate-overrides": "react-native-platform-override validate" }, "dependencies": { - "@react-native/tester": "0.79.0-main", + "@react-native/tester": "0.80.0-main", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "flow-enums-runtime": "^0.0.6" @@ -19,7 +19,7 @@ "peerDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.288", "react": "19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b" + "react-native": "0.80.0-nightly-20250317-fc7385c1e" }, "devDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.288", @@ -30,7 +30,7 @@ "@types/node": "^18.0.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-platform-override": "^1.9.55", "typescript": "5.0.4" }, diff --git a/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js b/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js index a842c50b0f4..46467462aa6 100644 --- a/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js +++ b/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js @@ -196,6 +196,11 @@ const APIs: Array = ([ category: 'Basic', module: require('../examples/AppState/AppStateExample'), }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, { key: 'BorderExample', category: 'UI', diff --git a/packages/@office-iss/react-native-win32/.flowconfig b/packages/@office-iss/react-native-win32/.flowconfig index 796c26bb08b..4d602b1bee8 100644 --- a/packages/@office-iss/react-native-win32/.flowconfig +++ b/packages/@office-iss/react-native-win32/.flowconfig @@ -28,7 +28,6 @@ /Libraries/Network/RCTNetworking.js /Libraries/Pressability/Pressability.js /Libraries/Pressability/HoverState.js -/Libraries/StyleSheet/StyleSheet.js /Libraries/StyleSheet/PlatformColorValueTypes.js /Libraries/Text/TextProps.js /Libraries/Types/CoreEventTypes.js @@ -136,6 +135,8 @@ module.name_mapper='^@office-iss/react-native-win32/\(.*\)$' -> '\ module.name_mapper='^@react-native/dev-middleware$' -> '/\1' module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\|xml\)$' -> '/Libraries/Image/RelativeImageStub' +react.runtime=automatic + suppress_type=$FlowIssue suppress_type=$FlowFixMe suppress_type=$FlowFixMeProps @@ -167,4 +168,4 @@ untyped-import untyped-type-import [version] -^0.262.0 +^0.265.2 diff --git a/packages/@office-iss/react-native-win32/overrides.json b/packages/@office-iss/react-native-win32/overrides.json index fd3656ae977..83496e56fc6 100644 --- a/packages/@office-iss/react-native-win32/overrides.json +++ b/packages/@office-iss/react-native-win32/overrides.json @@ -7,19 +7,19 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.79.0-nightly-20250303-cee63397b", + "baseVersion": "0.80.0-nightly-20250317-fc7385c1e", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "23e4ec639f146691148b6736f4e84478ae2a5416" + "baseHash": "b8b53bf5315c0b91d0f69c3fe9274797a55b993f" }, { "type": "derived", "file": "src-win/index.win32.js", "baseFile": "packages/react-native/index.js", - "baseHash": "62b4752ea0e271645cc0fff8b54f2c1167284d43" + "baseHash": "7a10369d15e8b09ef772d8f229cbfc712d074cbf" }, { "type": "platform", @@ -29,7 +29,7 @@ "type": "patch", "file": "src-win/Libraries/Alert/Alert.win32.js", "baseFile": "packages/react-native/Libraries/Alert/Alert.js", - "baseHash": "95ce9fad7e029b50ff6f1598e38aa420660913dc" + "baseHash": "bd8f474e454f2b703ca7fb55cb022f24046bc0f8" }, { "type": "derived", @@ -92,8 +92,7 @@ "type": "patch", "file": "src-win/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js", "baseFile": "packages/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.js", - "baseHash": "454f8b04bd6203c70b48aa6ec26e1c05dee42124", - "issue": 0 + "baseHash": "454f8b04bd6203c70b48aa6ec26e1c05dee42124" }, { "type": "copy", @@ -109,7 +108,7 @@ "type": "derived", "file": "src-win/Libraries/Components/TextInput/TextInput.win32.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "eb047724db45395fe5d6487e269a00a198807eb8" + "baseHash": "f762096a46203b6bae385806087b7b7cb5744f16" }, { "type": "patch", @@ -136,8 +135,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Touchable/Touchable.win32.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/Touchable.js", - "baseHash": "5e13ce3ef1cfeb38a1a9695c3013617527c21175", - "issue": 0 + "baseHash": "5e13ce3ef1cfeb38a1a9695c3013617527c21175" }, { "type": "derived", @@ -398,12 +396,6 @@ "type": "platform", "file": "src-win/Libraries/StyleSheet/PlatformColorValueTypesWin32.js" }, - { - "type": "patch", - "file": "src-win/Libraries/StyleSheet/StyleSheet.win32.js", - "baseFile": "packages/react-native/Libraries/StyleSheet/StyleSheet.js", - "baseHash": "6c83ae0478119480b693eeab590fa4ba5af98084" - }, { "type": "derived", "file": "src-win/Libraries/Text/Text.d.ts", @@ -492,7 +484,7 @@ "type": "patch", "file": "src-win/src/private/animated/NativeAnimatedHelper.win32.js", "baseFile": "packages/react-native/src/private/animated/NativeAnimatedHelper.js", - "baseHash": "8c67d57575cccb7281b15ca2591e4edf5c5c36dd", + "baseHash": "c511868b72abd4e0e7d0b07e0453ea56687ffddb", "issue": 11041 }, { diff --git a/packages/@office-iss/react-native-win32/package.json b/packages/@office-iss/react-native-win32/package.json index 245e6ed746b..9d3c17b40b6 100644 --- a/packages/@office-iss/react-native-win32/package.json +++ b/packages/@office-iss/react-native-win32/package.json @@ -26,17 +26,17 @@ "dependencies": { "@babel/runtime": "^7.0.0", "@jest/create-cache-key-function": "^29.7.0", - "@react-native-community/cli": "15.0.0-alpha.2", - "@react-native-community/cli-platform-android": "15.0.0-alpha.2", - "@react-native-community/cli-platform-ios": "15.0.0-alpha.2", + "@react-native-community/cli": "17.0.0", + "@react-native-community/cli-platform-android": "17.0.0", + "@react-native-community/cli-platform-ios": "17.0.0", "@react-native/assets": "1.0.0", - "@react-native/assets-registry": "0.79.0-nightly-20250303-cee63397b", - "@react-native/codegen": "0.79.0-nightly-20250303-cee63397b", - "@react-native/community-cli-plugin": "0.79.0-nightly-20250303-cee63397b", - "@react-native/gradle-plugin": "0.79.0-nightly-20250303-cee63397b", - "@react-native/js-polyfills": "0.79.0-nightly-20250303-cee63397b", - "@react-native/normalize-colors": "0.79.0-nightly-20250303-cee63397b", - "@react-native/virtualized-lists": "0.79.0-nightly-20250303-cee63397b", + "@react-native/assets-registry": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/codegen": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/community-cli-plugin": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/gradle-plugin": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/js-polyfills": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/normalize-colors": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/virtualized-lists": "0.80.0-nightly-20250317-fc7385c1e", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -72,7 +72,7 @@ "devDependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.40", @@ -88,14 +88,14 @@ "just-scripts": "^1.3.3", "prettier": "2.8.8", "react": "19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-platform-override": "^1.9.55", "typescript": "5.0.4" }, "peerDependencies": { "@types/react": "^19.0.0", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b" + "react-native": "0.80.0-nightly-20250317-fc7385c1e" }, "beachball": { "defaultNpmTag": "canary", @@ -112,4 +112,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js index 92e760560dd..c664317274d 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js @@ -18,7 +18,6 @@ import type { import type {ViewProps} from '../View/ViewPropTypes'; import type {TextInputInstance, TextInputType} from './TextInput.flow'; -import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags'; import usePressability from '../../Pressability/usePressability'; import flattenStyle from '../../StyleSheet/flattenStyle'; import StyleSheet, { @@ -69,6 +68,9 @@ else if (Platform.OS === 'win32') { } // Windows] +/** + * @see TextInputProps.onChange + */ export type TextInputChangeEventData = $ReadOnly<{ eventCount: number, target: number, @@ -91,6 +93,9 @@ export type TextInputEvent = NativeSyntheticEvent< }>, >; +/** + * @see TextInputProps.onContentSizeChange + */ export type TextInputContentSizeChangeEventData = $ReadOnly<{ target: number, contentSize: $ReadOnly<{ @@ -106,16 +111,29 @@ export type TargetEvent = $ReadOnly<{ target: number, }>; +/** + * @see TextInputProps.onFocus + */ export type TextInputFocusEventData = TargetEvent; export type TextInputBlurEvent = NativeSyntheticEvent; export type TextInputFocusEvent = NativeSyntheticEvent; +/** + * @see TextInputProps.onScroll + */ +export type TextInputScrollEventData = { + contentOffset: {x: number, y: number}, +}; + type Selection = $ReadOnly<{ start: number, end: number, }>; +/** + * @see TextInputProps.onSelectionChange + */ export type TextInputSelectionChangeEventData = $ReadOnly<{ ...TargetEvent, selection: Selection, @@ -124,7 +142,10 @@ export type TextInputSelectionChangeEventData = $ReadOnly<{ export type TextInputSelectionChangeEvent = NativeSyntheticEvent; -type TextInputKeyPressEventData = $ReadOnly<{ +/** + * @see TextInputProps.onKeyPress + */ +export type TextInputKeyPressEventData = $ReadOnly<{ ...TargetEvent, key: string, target?: ?number, @@ -134,12 +155,30 @@ type TextInputKeyPressEventData = $ReadOnly<{ export type TextInputKeyPressEvent = NativeSyntheticEvent; +/** + * @see TextInputProps.onEndEditing + */ export type TextInputEndEditingEventData = $ReadOnly<{ ...TargetEvent, eventCount: number, text: string, }>; +export type TextInputEndEditingEvent = + NativeSyntheticEvent; + +/** + * @see TextInputProps.onSubmitEditing + */ +export type TextInputSubmitEditingEventData = $ReadOnly<{ + ...TargetEvent, + eventCount: number, + text: string, +}>; + +export type TextInputSubmitEditingEvent = + NativeSyntheticEvent; + export type TextInputEditingEvent = NativeSyntheticEvent; @@ -427,6 +466,21 @@ export type TextInputAndroidProps = $ReadOnly<{ */ disableFullscreenUI?: ?boolean, + /** + * Determines whether the individual fields in your app should be included in a + * view structure for autofill purposes on Android API Level 26+. Defaults to auto. + * To disable auto complete, use `off`. + * + * *Android Only* + * + * The following values work on Android only: + * + * - `auto` - let Android decide + * - `no` - not important for autofill + * - `noExcludeDescendants` - this view and its children aren't important for autofill + * - `yes` - is important for autofill + * - `yesExcludeDescendants` - this view is important for autofill but its children aren't + */ importantForAutofill?: ?( | 'auto' | 'no' @@ -520,12 +574,7 @@ type TextInputWindowsProps = $ReadOnly<{| // Windows] -export type TextInputProps = $ReadOnly<{ - ...$Diff>, - ...TextInputIOSProps, - ...TextInputAndroidProps, - ...TextInputWindowsProps, // [Windows] - +type TextInputBaseProps = $ReadOnly<{ /** * String to be read by screenreaders to indicate an error state. The acceptable parameters * of accessibilityErrorMessage is a string. Setting accessibilityInvalid to true activates @@ -835,7 +884,7 @@ export type TextInputProps = $ReadOnly<{ /** * Callback that is called when text input ends. */ - onEndEditing?: ?(e: TextInputEditingEvent) => mixed, + onEndEditing?: ?(e: TextInputEndEditingEvent) => mixed, /** * Callback that is called when the text input is focused. @@ -877,7 +926,7 @@ export type TextInputProps = $ReadOnly<{ * Callback that is called when the text input's submit button is pressed. * Invalid if `multiline={true}` is specified. */ - onSubmitEditing?: ?(e: TextInputEditingEvent) => mixed, + onSubmitEditing?: ?(e: TextInputSubmitEditingEvent) => mixed, /** * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`. @@ -958,7 +1007,9 @@ export type TextInputProps = $ReadOnly<{ selectionColor?: ?ColorValue, /** - * The text selection handle color. + * When provided it will set the color of the selection handles when highlighting text. + * Unlike the behavior of `selectionColor` the handle color will be set independently + * from the color of the text selection box. * @platform android */ selectionHandleColor?: ?ColorValue, @@ -1033,6 +1084,43 @@ export type TextInputProps = $ReadOnly<{ value?: ?Stringish, }>; +export type TextInputProps = $ReadOnly<{ + ...$Diff>, + ...TextInputIOSProps, + ...TextInputAndroidProps, + ...TextInputBaseProps, + ...TextInputWindowsProps, // [Windows] +}>; + +type TextInputStateType = $ReadOnly<{ + /** + * @deprecated Use currentlyFocusedInput + * Returns the ID of the currently focused text field, if one exists + * If no text field is focused it returns null + */ + currentlyFocusedField: () => ?number, + + /** + * Returns the ref of the currently focused text field, if one exists + * If no text field is focused it returns null + */ + currentlyFocusedInput: () => ?HostInstance, + + /** + * @param textField ref of the text field to focus + * Focuses the specified text field + * noop if the text field was already focused + */ + focusTextInput: (textField: ?HostInstance) => void, + + /** + * @param textField ref of the text field to focus + * Unfocuses the specified text field + * noop if it wasn't focused + */ + blurTextInput: (textField: ?HostInstance) => void, +}>; + type ViewCommands = $NonMaybeType< | typeof AndroidTextInputCommands | typeof RCTMultilineTextInputNativeCommands @@ -1051,7 +1139,7 @@ const emptyFunctionThatReturnsTrue = () => true; * in native and in JavaScript. This is necessary due to the asynchronous nature * of text input events. */ -function useTextInputStateSynchronization_STATE({ +function useTextInputStateSynchronization({ props, mostRecentEventCount, selection, @@ -1127,94 +1215,6 @@ function useTextInputStateSynchronization_STATE({ return {setLastNativeText, setLastNativeSelection}; } -/** - * This hook handles the synchronization between the state of the text input - * in native and in JavaScript. This is necessary due to the asynchronous nature - * of text input events. - */ -function useTextInputStateSynchronization_REFS({ - props, - mostRecentEventCount, - selection, - inputRef, - text, - viewCommands, -}: { - props: TextInputProps, - mostRecentEventCount: number, - selection: ?Selection, - inputRef: React.RefObject, - text?: string, - viewCommands: ViewCommands, -}): { - setLastNativeText: string => void, - setLastNativeSelection: LastNativeSelection => void, -} { - const lastNativeTextRef = useRef(props.value); - const lastNativeSelectionRef = useRef({ - selection: {start: -1, end: -1}, - mostRecentEventCount: mostRecentEventCount, - }); - - // This is necessary in case native updates the text and JS decides - // that the update should be ignored and we should stick with the value - // that we have in JS. - useLayoutEffect(() => { - const nativeUpdate: {text?: string, selection?: Selection} = {}; - - const lastNativeSelection = lastNativeSelectionRef.current.selection; - - if ( - lastNativeTextRef.current !== props.value && - typeof props.value === 'string' - ) { - nativeUpdate.text = props.value; - lastNativeTextRef.current = props.value; - } - - if ( - selection && - lastNativeSelection && - (lastNativeSelection.start !== selection.start || - lastNativeSelection.end !== selection.end) - ) { - nativeUpdate.selection = selection; - lastNativeSelectionRef.current = {selection, mostRecentEventCount}; - } - - if (Object.keys(nativeUpdate).length === 0) { - return; - } - - if (inputRef.current != null) { - viewCommands.setTextAndSelection( - inputRef.current, - mostRecentEventCount, - text, - selection?.start ?? -1, - selection?.end ?? -1, - ); - } - }, [ - mostRecentEventCount, - inputRef, - props.value, - props.defaultValue, - selection, - text, - viewCommands, - ]); - - return { - setLastNativeText: lastNativeText => { - lastNativeTextRef.current = lastNativeText; - }, - setLastNativeSelection: lastNativeSelection => { - lastNativeSelectionRef.current = lastNativeSelection; - }, - }; -} - /** * A foundational component for inputting text into the app via a * keyboard. Props provide configurability for several features, such as @@ -1370,10 +1370,6 @@ function InternalTextInput(props: TextInputProps): React.Node { : RCTSinglelineTextInputNativeCommands); const [mostRecentEventCount, setMostRecentEventCount] = useState(0); - const useTextInputStateSynchronization = - ReactNativeFeatureFlags.useRefsForTextInputState() - ? useTextInputStateSynchronization_REFS - : useTextInputStateSynchronization_STATE; const {setLastNativeText, setLastNativeSelection} = useTextInputStateSynchronization({ props, @@ -1947,7 +1943,7 @@ const autoCompleteWebToTextContentTypeMap = { }; const ExportedForwardRef: component( - ref: React.RefSetter, + ref?: React.RefSetter, ...props: React.ElementConfig ) = React.forwardRef(function TextInput( { @@ -2018,12 +2014,7 @@ ExportedForwardRef.State = { }; export type TextInputComponentStatics = $ReadOnly<{ - State: $ReadOnly<{ - currentlyFocusedInput: typeof TextInputState.currentlyFocusedInput, - currentlyFocusedField: typeof TextInputState.currentlyFocusedField, - focusTextInput: typeof TextInputState.focusTextInput, - blurTextInput: typeof TextInputState.blurTextInput, - }>, + State: TextInputStateType, }>; const styles = StyleSheet.create({ diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/StyleSheet/StyleSheet.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/StyleSheet/StyleSheet.win32.js deleted file mode 100644 index 515ded0fc64..00000000000 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/StyleSheet/StyleSheet.win32.js +++ /dev/null @@ -1,359 +0,0 @@ -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @flow - * @format - */ - -'use strict'; - -import type { - ____ColorValue_Internal, - ____DangerouslyImpreciseStyle_Internal, - ____DangerouslyImpreciseStyleProp_Internal, - ____ImageStyle_Internal, - ____ImageStyleProp_Internal, - ____Styles_Internal, - ____TextStyle_Internal, - ____TextStyleProp_Internal, - ____ViewStyle_Internal, - ____ViewStyleProp_Internal, -} from './StyleSheetTypes'; - -import composeStyles from '../../src/private/styles/composeStyles'; -import flatten from './flattenStyle'; - -const ReactNativeStyleAttributes = - require('../Components/View/ReactNativeStyleAttributes').default; -const PixelRatio = require('../Utilities/PixelRatio').default; -const Platform = require('../Utilities/Platform').default; // [Win32] - -export type {NativeColorValue} from './StyleSheetTypes'; - -/** - * This type should be used as the type for anything that is a color. It is - * most useful when using DynamicColorIOS which can be a string or a dynamic - * color object. - * - * type props = {backgroundColor: ColorValue}; - */ -export type ColorValue = ____ColorValue_Internal; - -/** - * This type should be used as the type for a prop that is passed through - * to a 's `style` prop. This ensures call sites of the component - * can't pass styles that View doesn't support such as `fontSize`.` - * - * type Props = {style: ViewStyleProp} - * const MyComponent = (props: Props) => - */ -export type ViewStyleProp = ____ViewStyleProp_Internal; - -/** - * This type should be used as the type for a prop that is passed through - * to a 's `style` prop. This ensures call sites of the component - * can't pass styles that Text doesn't support such as `resizeMode`.` - * - * type Props = {style: TextStyleProp} - * const MyComponent = (props: Props) => - */ -export type TextStyleProp = ____TextStyleProp_Internal; - -/** - * This type should be used as the type for a prop that is passed through - * to an 's `style` prop. This ensures call sites of the component - * can't pass styles that Image doesn't support such as `fontSize`.` - * - * type Props = {style: ImageStyleProp} - * const MyComponent = (props: Props) => - */ -export type ImageStyleProp = ____ImageStyleProp_Internal; - -/** - * WARNING: You probably shouldn't be using this type. This type - * is similar to the ones above except it allows styles that are accepted - * by all of View, Text, or Image. It is therefore very unsafe to pass this - * through to an underlying component. Using this is almost always a mistake - * and using one of the other more restrictive types is likely the right choice. - */ -export type DangerouslyImpreciseStyleProp = - ____DangerouslyImpreciseStyleProp_Internal; - -/** - * Utility type for getting the values for specific style keys. - * - * The following is bad because position is more restrictive than 'string': - * ``` - * type Props = {position: string}; - * ``` - * - * You should use the following instead: - * - * ``` - * type Props = {position: TypeForStyleKey<'position'>}; - * ``` - * - * This will correctly give you the type 'absolute' | 'relative' - */ -export type TypeForStyleKey< - +key: $Keys<____DangerouslyImpreciseStyle_Internal>, -> = $ElementType<____DangerouslyImpreciseStyle_Internal, key>; - -/** - * This type is an object of the different possible style - * properties that can be specified for View. - * - * Note that this isn't a safe way to type a style prop for a component as - * results from StyleSheet.create return an internal identifier, not - * an object of styles. - * - * If you want to type the style prop of a function, - * consider using ViewStyleProp. - * - * A reasonable usage of this type is for helper functions that return an - * object of styles to pass to a View that can't be precomputed with - * StyleSheet.create. - */ -export type ViewStyle = ____ViewStyle_Internal; - -/** - * This type is an object of the different possible style - * properties that can be specified for Text. - * - * Note that this isn't a safe way to type a style prop for a component as - * results from StyleSheet.create return an internal identifier, not - * an object of styles. - * - * If you want to type the style prop of a function, - * consider using TextStyleProp. - * - * A reasonable usage of this type is for helper functions that return an - * object of styles to pass to a Text that can't be precomputed with - * StyleSheet.create. - */ -export type TextStyle = ____TextStyle_Internal; - -/** - * This type is an object of the different possible style - * properties that can be specified for Image. - * - * Note that this isn't a safe way to type a style prop for a component as - * results from StyleSheet.create return an internal identifier, not - * an object of styles. - * - * If you want to type the style prop of a function, - * consider using ImageStyleProp. - * - * A reasonable usage of this type is for helper functions that return an - * object of styles to pass to an Image that can't be precomputed with - * StyleSheet.create. - */ -export type ImageStyle = ____ImageStyle_Internal; - -/** - * WARNING: You probably shouldn't be using this type. This type is an object - * with all possible style keys and their values. Note that this isn't - * a safe way to type a style prop for a component as results from - * StyleSheet.create return an internal identifier, not an object of styles. - * - * If you want to type the style prop of a function, consider using - * ViewStyleProp, TextStyleProp, or ImageStyleProp. - * - * This should only be used by very core utilities that operate on an object - * containing any possible style value. - */ -export type DangerouslyImpreciseStyle = ____DangerouslyImpreciseStyle_Internal; - -let hairlineWidth: number = - Platform.OS === 'win32' ? 0.5 : PixelRatio.roundToNearestPixel(0.4); // TODO(windows ISS) - Avoid calls to PixelRatio - needs multi window support -if (hairlineWidth === 0) { - hairlineWidth = 1 / PixelRatio.get(); -} - -const absoluteFill: { - +bottom: 0, - +left: 0, - +position: 'absolute', - +right: 0, - +top: 0, -} = { - position: 'absolute', - left: 0, - right: 0, - top: 0, - bottom: 0, -}; -if (__DEV__) { - Object.freeze(absoluteFill); -} - -/** - * A StyleSheet is an abstraction similar to CSS StyleSheets - * - * Create a new StyleSheet: - * - * ``` - * const styles = StyleSheet.create({ - * container: { - * borderRadius: 4, - * borderWidth: 0.5, - * borderColor: '#d6d7da', - * }, - * title: { - * fontSize: 19, - * fontWeight: 'bold', - * }, - * activeTitle: { - * color: 'red', - * }, - * }); - * ``` - * - * Use a StyleSheet: - * - * ``` - * - * - * - * ``` - * - * Code quality: - * - * - By moving styles away from the render function, you're making the code - * easier to understand. - * - Naming the styles is a good way to add meaning to the low level components - * in the render function, and encourage reuse. - * - In most IDEs, using `StyleSheet.create()` will offer static type checking - * and suggestions to help you write valid styles. - * - */ -export default { - /** - * This is defined as the width of a thin line on the platform. It can be - * used as the thickness of a border or division between two elements. - * Example: - * ``` - * { - * borderBottomColor: '#bbb', - * borderBottomWidth: StyleSheet.hairlineWidth - * } - * ``` - * - * This constant will always be a round number of pixels (so a line defined - * by it look crisp) and will try to match the standard width of a thin line - * on the underlying platform. However, you should not rely on it being a - * constant size, because on different platforms and screen densities its - * value may be calculated differently. - * - * A line with hairline width may not be visible if your simulator is downscaled. - */ - hairlineWidth, - - /** - * A very common pattern is to create overlays with position absolute and zero positioning, - * so `absoluteFill` can be used for convenience and to reduce duplication of these repeated - * styles. - */ - absoluteFill: (absoluteFill: any), // TODO: This should be updated after we fix downstream Flow sites. - - /** - * Sometimes you may want `absoluteFill` but with a couple tweaks - `absoluteFillObject` can be - * used to create a customized entry in a `StyleSheet`, e.g.: - * - * const styles = StyleSheet.create({ - * wrapper: { - * ...StyleSheet.absoluteFillObject, - * top: 10, - * backgroundColor: 'transparent', - * }, - * }); - */ - absoluteFillObject: absoluteFill, - - /** - * Combines two styles such that `style2` will override any styles in `style1`. - * If either style is falsy, the other one is returned without allocating an - * array, saving allocations and maintaining reference equality for - * PureComponent checks. - */ - compose: composeStyles, - - /** - * Flattens an array of style objects, into one aggregated style object. - * - * Example: - * ``` - * const styles = StyleSheet.create({ - * listItem: { - * flex: 1, - * fontSize: 16, - * color: 'white' - * }, - * selectedListItem: { - * color: 'green' - * } - * }); - * - * StyleSheet.flatten([styles.listItem, styles.selectedListItem]) - * // returns { flex: 1, fontSize: 16, color: 'green' } - * ``` - */ - flatten, - - /** - * WARNING: EXPERIMENTAL. Breaking changes will probably happen a lot and will - * not be reliably announced. The whole thing might be deleted, who knows? Use - * at your own risk. - * - * Sets a function to use to pre-process a style property value. This is used - * internally to process color and transform values. You should not use this - * unless you really know what you are doing and have exhausted other options. - */ - setStyleAttributePreprocessor( - property: string, - process: (nextProp: mixed) => mixed, - ) { - let value; - - if (ReactNativeStyleAttributes[property] === true) { - value = {process}; - } else if (typeof ReactNativeStyleAttributes[property] === 'object') { - value = {...ReactNativeStyleAttributes[property], process}; - } else { - console.error(`${property} is not a valid style attribute`); - return; - } - - if ( - __DEV__ && - typeof value.process === 'function' && - typeof ReactNativeStyleAttributes[property]?.process === 'function' && - value.process !== ReactNativeStyleAttributes[property]?.process - ) { - console.warn(`Overwriting ${property} style attribute preprocessor`); - } - - ReactNativeStyleAttributes[property] = value; - }, - - /** - * An identity function for creating style sheets. - */ - // $FlowFixMe[unsupported-variance-annotation] - create<+S: ____Styles_Internal>(obj: S): $ReadOnly { - // TODO: This should return S as the return type. But first, - // we need to codemod all the callsites that are typing this - // return value as a number (even though it was opaque). - if (__DEV__) { - for (const key in obj) { - if (obj[key]) { - Object.freeze(obj[key]); - } - } - } - return obj; - }, -}; diff --git a/packages/@office-iss/react-native-win32/src-win/index.win32.js b/packages/@office-iss/react-native-win32/src-win/index.win32.js index e4127732083..383529471a2 100644 --- a/packages/@office-iss/react-native-win32/src-win/index.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/index.win32.js @@ -24,6 +24,8 @@ import typeof useAnimatedValue from './Libraries/Animated/useAnimatedValue'; import typeof AppState from './Libraries/AppState/AppState'; import typeof FocusManager from './Libraries/Utilities/FocusManager'; import typeof NativeModules from './Libraries/BatchedBridge/NativeModules'; +import typeof codegenNativeCommands from './Libraries/Utilities/codegenNativeCommands'; +import typeof codegenNativeComponent from './Libraries/Utilities/codegenNativeComponent'; // Components import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo'; import typeof ActivityIndicator from './Libraries/Components/ActivityIndicator/ActivityIndicator'; @@ -70,7 +72,7 @@ import typeof Networking from './Libraries/Network/RCTNetworking'; import typeof * as Systrace from './Libraries/Performance/Systrace'; import typeof PermissionsAndroid from './Libraries/PermissionsAndroid/PermissionsAndroid'; import typeof PushNotificationIOS from './Libraries/PushNotificationIOS/PushNotificationIOS'; -import typeof AppRegistry from './Libraries/ReactNative/AppRegistry'; +import typeof {AppRegistry} from './Libraries/ReactNative/AppRegistry'; import typeof I18nManager from './Libraries/ReactNative/I18nManager'; import typeof {RootTagContext} from './Libraries/ReactNative/RootTag'; import typeof UIManager from './Libraries/ReactNative/UIManager'; @@ -108,14 +110,6 @@ const invariant = require('invariant'); import typeof {ColorGradientWin32} from './Libraries/StyleSheet/PlatformColorValueTypesWin32'; module.exports = { - // Components - get AccessibilityInfo(): AccessibilityInfo { - return require('./Libraries/Components/AccessibilityInfo/AccessibilityInfo') - .default; - }, - get registerCallableModule(): registerCallableModule { - return require('./Libraries/Core/registerCallableModule').default; - }, // #region Components get ActivityIndicator(): ActivityIndicator { return require('./Libraries/Components/ActivityIndicator/ActivityIndicator') @@ -142,14 +136,14 @@ module.exports = { return require('./Libraries/Components/TextInput/InputAccessoryView') .default; }, - get experimental_LayoutConformance(): LayoutConformance { - return require('./Libraries/Components/LayoutConformance/LayoutConformance') - .default; - }, get KeyboardAvoidingView(): KeyboardAvoidingView { return require('./Libraries/Components/Keyboard/KeyboardAvoidingView') .default; }, + get experimental_LayoutConformance(): LayoutConformance { + return require('./Libraries/Components/LayoutConformance/LayoutConformance') + .default; + }, get Modal(): Modal { return require('./Libraries/Modal/Modal').default; }, @@ -221,8 +215,12 @@ module.exports = { get VirtualizedSectionList(): VirtualizedSectionList { return require('./Libraries/Lists/VirtualizedSectionList').default; }, - - // APIs + // #endregion + // #region APIs + get AccessibilityInfo(): AccessibilityInfo { + return require('./Libraries/Components/AccessibilityInfo/AccessibilityInfo') + .default; + }, get ActionSheetIOS(): ActionSheetIOS { return require('./Libraries/ActionSheetIOS/ActionSheetIOS').default; }, @@ -240,7 +238,7 @@ module.exports = { return require('./Libraries/Utilities/Appearance'); }, get AppRegistry(): AppRegistry { - return require('./Libraries/ReactNative/AppRegistry').default; + return require('./Libraries/ReactNative/AppRegistry').AppRegistry; }, get AppState(): AppState { return require('./Libraries/AppState/AppState').default; @@ -257,6 +255,15 @@ module.exports = { ); return require('./Libraries/Components/Clipboard/Clipboard').default; }, + get codegenNativeCommands(): codegenNativeCommands { + return require('./Libraries/Utilities/codegenNativeCommands').default; + }, + get codegenNativeComponent(): codegenNativeComponent { + return require('./Libraries/Utilities/codegenNativeComponent').default; + }, + get DeviceEventEmitter(): RCTDeviceEventEmitter { + return require('./Libraries/EventEmitter/RCTDeviceEventEmitter').default; + }, get DeviceInfo(): DeviceInfo { return require('./Libraries/Utilities/DeviceInfo').default; }, @@ -269,6 +276,10 @@ module.exports = { get Dimensions(): Dimensions { return require('./Libraries/Utilities/Dimensions').default; }, + get DynamicColorIOS(): DynamicColorIOS { + return require('./Libraries/StyleSheet/PlatformColorValueTypesIOS') + .DynamicColorIOS; + }, get Easing(): Easing { return require('./Libraries/Animated/Easing').default; }, @@ -296,6 +307,9 @@ module.exports = { get LogBox(): LogBox { return require('./Libraries/LogBox/LogBox').default; }, + get NativeAppEventEmitter(): RCTNativeAppEventEmitter { + return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; + }, get NativeDialogManagerAndroid(): NativeDialogManagerAndroid { return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid') .default; @@ -303,6 +317,9 @@ module.exports = { get NativeEventEmitter(): NativeEventEmitter { return require('./Libraries/EventEmitter/NativeEventEmitter').default; }, + get NativeModules(): NativeModules { + return require('./Libraries/BatchedBridge/NativeModules').default; + }, get Networking(): Networking { return require('./Libraries/Network/RCTNetworking').default; }, @@ -315,6 +332,13 @@ module.exports = { get PixelRatio(): PixelRatio { return require('./Libraries/Utilities/PixelRatio').default; }, + get Platform(): Platform { + return require('./Libraries/Utilities/Platform').default; + }, + get PlatformColor(): PlatformColor { + return require('./Libraries/StyleSheet/PlatformColorValueTypes') + .PlatformColor; + }, get PushNotificationIOS(): PushNotificationIOS { warnOnce( 'pushNotificationIOS-moved', @@ -326,6 +350,20 @@ module.exports = { .default; }, // $FlowFixMe[value-as-type] + get processColor(): processColor { + return require('./Libraries/StyleSheet/processColor').default; + }, + get registerCallableModule(): registerCallableModule { + return require('./Libraries/Core/registerCallableModule').default; + }, + get requireNativeComponent(): ( + uiViewClassName: string, + ) => HostComponent { + return require('./Libraries/ReactNative/requireNativeComponent').default; + }, + get RootTagContext(): RootTagContext { + return require('./Libraries/ReactNative/RootTag').RootTagContext; + }, get Settings(): Settings { return require('./Libraries/Settings/Settings').default; }, @@ -355,6 +393,12 @@ module.exports = { return require('./Libraries/ReactNative/RendererProxy') .unstable_batchedUpdates; }, + get unstable_enableLogBox(): () => void { + return () => + console.warn( + 'LogBox is enabled by default so there is no need to call unstable_enableLogBox() anymore. This is a no op and will be removed in the next version.', + ); + }, get useAnimatedValue(): useAnimatedValue { return require('./Libraries/Animated/useAnimatedValue').default; }, @@ -370,45 +414,6 @@ module.exports = { get Vibration(): Vibration { return require('./Libraries/Vibration/Vibration').default; }, - - // Plugins - get DeviceEventEmitter(): RCTDeviceEventEmitter { - return require('./Libraries/EventEmitter/RCTDeviceEventEmitter').default; - }, - get DynamicColorIOS(): DynamicColorIOS { - return require('./Libraries/StyleSheet/PlatformColorValueTypesIOS') - .DynamicColorIOS; - }, - get NativeAppEventEmitter(): RCTNativeAppEventEmitter { - return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; - }, - get NativeModules(): NativeModules { - return require('./Libraries/BatchedBridge/NativeModules').default; - }, - get Platform(): Platform { - return require('./Libraries/Utilities/Platform').default; - }, - get PlatformColor(): PlatformColor { - return require('./Libraries/StyleSheet/PlatformColorValueTypes') - .PlatformColor; - }, - get processColor(): processColor { - return require('./Libraries/StyleSheet/processColor').default; - }, - get requireNativeComponent(): ( - uiViewClassName: string, - ) => HostComponent { - return require('./Libraries/ReactNative/requireNativeComponent').default; - }, - get RootTagContext(): RootTagContext { - return require('./Libraries/ReactNative/RootTag').RootTagContext; - }, - get unstable_enableLogBox(): () => void { - return () => - console.warn( - 'LogBox is enabled by default so there is no need to call unstable_enableLogBox() anymore. This is a no op and will be removed in the next version.', - ); - }, // Win32 Types (Typescript components exported as flow any) get ColorGradientWin32(): ColorGradientWin32 { return require('./Libraries/StyleSheet/PlatformColorValueTypesWin32') diff --git a/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js b/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js index 71e99918396..e950c294954 100644 --- a/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/src/private/animated/NativeAnimatedHelper.win32.js @@ -57,6 +57,8 @@ const eventListenerAnimationFinishedCallbacks: { let globalEventEmitterGetValueListener: ?EventSubscription = null; let globalEventEmitterAnimationFinishedListener: ?EventSubscription = null; +const shouldSignalBatch = ReactNativeFeatureFlags.animatedShouldSignalBatch(); + function createNativeOperations(): $NonMaybeType { const methodNames = [ 'createAnimatedNode', // 1 @@ -106,6 +108,11 @@ function createNativeOperations(): $NonMaybeType { if (queueOperations || queue.length !== 0) { // $FlowExpectedError[incompatible-call] - Dynamism. queue.push(() => method(...args)); + } else if (shouldSignalBatch) { + // $FlowExpectedError[incompatible-call] - Dynamism. + queue.push(() => method(...args)); + clearImmediate(flushQueueImmediate); + flushQueueImmediate = setImmediate(API.flushQueue); } else { // $FlowExpectedError[incompatible-call] - Dynamism. method(...args); @@ -138,21 +145,25 @@ const API = { }) as $NonMaybeType['getValue'], setWaitingForIdentifier(id: string): void { + if (shouldSignalBatch) { + return; + } + waitingForQueuedOperations.add(id); queueOperations = true; if ( ReactNativeFeatureFlags.animatedShouldDebounceQueueFlush() && flushQueueImmediate ) { - if (ReactNativeFeatureFlags.enableAnimatedClearImmediateFix()) { - clearImmediate(flushQueueImmediate); - } else { - clearTimeout(flushQueueImmediate); - } + clearImmediate(flushQueueImmediate); } }, unsetWaitingForIdentifier(id: string): void { + if (shouldSignalBatch) { + return; + } + waitingForQueuedOperations.delete(id); if (waitingForQueuedOperations.size === 0) { @@ -209,7 +220,7 @@ const API = { return; } - if (Platform.OS === 'android') { + if (Platform.OS === 'android' || shouldSignalBatch) { NativeAnimatedModule?.startOperationBatch?.(); } @@ -218,7 +229,7 @@ const API = { } queue.length = 0; - if (Platform.OS === 'android') { + if (Platform.OS === 'android' || shouldSignalBatch) { NativeAnimatedModule?.finishOperationBatch?.(); } }) as () => void, diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index b4cf58e627a..35580141005 100644 --- a/packages/@react-native-windows/automation-channel/package.json +++ b/packages/@react-native-windows/automation-channel/package.json @@ -22,7 +22,7 @@ "jsonrpc-lite": "^2.2.0" }, "devDependencies": { - "@react-native-community/cli": "15.0.0-alpha.2", + "@react-native-community/cli": "17.0.0", "@rnw-scripts/eslint-config": "1.2.36", "@rnw-scripts/just-task": "2.3.53", "@rnw-scripts/ts-config": "2.0.5", @@ -32,7 +32,7 @@ "just-scripts": "^1.3.2", "prettier": "2.8.8", "react": "19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964", "typescript": "5.0.4" }, @@ -44,4 +44,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/cli/package.json b/packages/@react-native-windows/cli/package.json index d5b0acea29b..419750b1a02 100644 --- a/packages/@react-native-windows/cli/package.json +++ b/packages/@react-native-windows/cli/package.json @@ -40,8 +40,8 @@ "xpath": "^0.0.27" }, "devDependencies": { - "@react-native-community/cli-doctor": "15.0.0-alpha.2", - "@react-native-community/cli-types": "15.0.0-alpha.2", + "@react-native-community/cli-doctor": "17.0.0", + "@react-native-community/cli-types": "17.0.0", "@rnw-scripts/eslint-config": "1.2.36", "@rnw-scripts/jest-unittest-config": "1.5.11", "@rnw-scripts/just-task": "2.3.53", @@ -88,4 +88,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/tester/ReportFullyDrawnView/ReportFullyDrawnView.js b/packages/@react-native-windows/tester/ReportFullyDrawnView/ReportFullyDrawnView.js new file mode 100644 index 00000000000..882c04ff694 --- /dev/null +++ b/packages/@react-native-windows/tester/ReportFullyDrawnView/ReportFullyDrawnView.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import {View} from 'react-native'; + +export default View; diff --git a/packages/@react-native-windows/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js b/packages/@react-native-windows/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js new file mode 100644 index 00000000000..232e9c07643 --- /dev/null +++ b/packages/@react-native-windows/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {HostComponent} from 'react-native'; +import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes'; + +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{ + ...ViewProps, +}>; + +export type ReportFullyDrawnViewType = HostComponent; + +export default (codegenNativeComponent( + 'RNTReportFullyDrawnView', +): ReportFullyDrawnViewType); diff --git a/packages/@react-native-windows/tester/overrides.json b/packages/@react-native-windows/tester/overrides.json index 6b024616fa9..3294ad030f6 100644 --- a/packages/@react-native-windows/tester/overrides.json +++ b/packages/@react-native-windows/tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win/**" ], - "baseVersion": "0.79.0-nightly-20250303-cee63397b", + "baseVersion": "0.80.0-nightly-20250317-fc7385c1e", "overrides": [ { "type": "derived", @@ -91,7 +91,7 @@ "type": "patch", "file": "src/js/examples/Modal/ModalPresentation.windows.js", "baseFile": "packages/rn-tester/js/examples/Modal/ModalPresentation.js", - "baseHash": "dd016bc7cd48220dc8f0d50523c0282e019c89e6" + "baseHash": "85f44b8ecf18784f6a0088df636b2b9742546b09" }, { "type": "patch", @@ -104,7 +104,7 @@ "type": "derived", "file": "src/js/examples/Text/TextExample.windows.js", "baseFile": "packages/rn-tester/js/examples/Text/TextExample.android.js", - "baseHash": "57b504a530b7ecfe38ebfa4092aa2c8554726e74" + "baseHash": "b40001649bf2c261009213ba56c7bc0bf2998419" }, { "type": "derived", @@ -129,8 +129,7 @@ "type": "patch", "file": "src/js/examples/TurboModule/SampleTurboModuleExample.windows.js", "baseFile": "packages/rn-tester/js/examples/TurboModule/SampleTurboModuleExample.js", - "baseHash": "5cfdbaaa81a57c5611955cce6f484eca7ad7a355", - "issue": 0 + "baseHash": "5cfdbaaa81a57c5611955cce6f484eca7ad7a355" }, { "type": "patch", @@ -149,7 +148,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.windows.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "3cf41a5b5fe9269145523937f8cc190ad154e615" + "baseHash": "39dc13e5f5a3b5fb58b807788ee5021ff6b7889c" } ] } \ No newline at end of file diff --git a/packages/@react-native-windows/tester/package.json b/packages/@react-native-windows/tester/package.json index 09ed5b1895a..76206656756 100644 --- a/packages/@react-native-windows/tester/package.json +++ b/packages/@react-native-windows/tester/package.json @@ -19,12 +19,12 @@ "peerDependencies": { "@react-native-picker/picker": "2.4.10", "react": "19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964", "react-native-xaml": "^0.0.78" }, "devDependencies": { - "@react-native/tester": "0.79.0-main", + "@react-native/tester": "0.80.0-main", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", "@rnw-scripts/just-task": "2.3.53", @@ -32,7 +32,7 @@ "@types/node": "^18.0.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-platform-override": "^1.9.55", "react-native-windows": "^0.0.0-canary.964", "typescript": "5.0.4" diff --git a/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js b/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js index 19a521e4d1d..947224c7040 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Modal/ModalPresentation.windows.js @@ -80,7 +80,7 @@ function ModalPresentation() { const [currentOrientation, setCurrentOrientation] = useState('unknown'); type OrientationChangeEvent = Parameters< - $NonMaybeType['onOrientationChange']>, + $NonMaybeType, >[0]; const onOrientationChange = (event: OrientationChangeEvent) => setCurrentOrientation(event.nativeEvent.orientation); diff --git a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js index f121074d58a..cfe99739eb6 100644 --- a/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/Text/TextExample.windows.js @@ -523,7 +523,7 @@ function MaxFontSizeMultiplierExample(props: {}): React.Node { function NumberOfLinesExample(props: {}): React.Node { return ( - <> + + + The hotdog should be truncated. The hotdog should be truncated. The + hotdog should be truncated. The hotdog should be truncated. The hotdog + should be truncated. The hotdog should be truncated. The hotdog should + be truncated. The hotdog should be truncated. The hotdog should be + truncated. The hotdog should be truncated. + No maximum lines specified no matter now much I write here. If I keep writing it{"'"}ll just keep going and going - + ); } diff --git a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js index c0a3793fafe..4daee8a0138 100644 --- a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js +++ b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js @@ -264,6 +264,11 @@ const APIs: Array = ([ category: 'Basic', module: require('../examples/AppState/AppStateExample'), }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, { key: 'BorderExample', category: 'UI', diff --git a/packages/@react-native/monorepo/overrides.json b/packages/@react-native/monorepo/overrides.json index 5d2ea50b580..7fbc4d3683c 100644 --- a/packages/@react-native/monorepo/overrides.json +++ b/packages/@react-native/monorepo/overrides.json @@ -1,11 +1,11 @@ { - "baseVersion": "0.79.0-nightly-20250303-cee63397b", + "baseVersion": "0.80.0-nightly-20250317-fc7385c1e", "overrides": [ { "type": "patch", "file": "package.json", "baseFile": "package.json", - "baseHash": "fd52075bc7dc43ff71facb9d5753b570c78f6d03" + "baseHash": "da7558bb52890862f9c6727ab5bb309fde106c1b" } ] } \ No newline at end of file diff --git a/packages/@react-native/monorepo/package.json b/packages/@react-native/monorepo/package.json index 866ab71f0c0..db55114540c 100644 --- a/packages/@react-native/monorepo/package.json +++ b/packages/@react-native/monorepo/package.json @@ -47,10 +47,9 @@ "@babel/preset-env": "^7.25.3", "@babel/preset-flow": "^7.24.7", "@definitelytyped/dtslint": "^0.0.127", - "@jest/create-cache-key-function": "^29.6.3", - "@pkgjs/parseargs": "^0.11.0", - "@react-native/metro-babel-transformer": "0.79.0-nightly-20250303-cee63397b", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@jest/create-cache-key-function": "^29.7.0", + "@react-native/metro-babel-transformer": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@tsconfig/node18": "1.0.1", "@types/react": "^19.0.0", "@typescript-eslint/parser": "^7.1.1", @@ -62,6 +61,8 @@ "chalk": "^4.0.0", "clang-format": "^1.8.0", "connect": "^3.6.5", + "debug": "^4.4.0", + "deep-equal": "1.1.1", "eslint": "^8.57.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-babel": "^5.3.1", @@ -76,7 +77,7 @@ "eslint-plugin-redundant-undefined": "^0.4.0", "eslint-plugin-relay": "^1.8.3", "flow-api-translator": "0.25.1", - "flow-bin": "^0.262.0", + "flow-bin": "^0.265.2", "glob": "^7.1.1", "hermes-eslint": "0.24.0", "hermes-transform": "0.24.0", @@ -85,10 +86,9 @@ "jest-diff": "^29.7.0", "jest-junit": "^10.0.0", "jest-snapshot": "^29.7.0", - "jscodeshift": "^0.14.0", - "metro-babel-register": "^0.81.0", - "metro-memory-fs": "^0.81.0", - "metro-transform-plugins": "^0.81.0", + "metro-babel-register": "^0.82.0", + "metro-memory-fs": "^0.82.0", + "metro-transform-plugins": "^0.82.0", "micromatch": "^4.0.4", "node-fetch": "^2.2.0", "nullthrows": "^1.1.1", diff --git a/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnView.js b/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnView.js new file mode 100644 index 00000000000..882c04ff694 --- /dev/null +++ b/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnView.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import {View} from 'react-native'; + +export default View; diff --git a/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js b/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js new file mode 100644 index 00000000000..232e9c07643 --- /dev/null +++ b/packages/@react-native/tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js @@ -0,0 +1,24 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict-local + * @format + */ + +import type {HostComponent} from 'react-native'; +import type {ViewProps} from 'react-native/Libraries/Components/View/ViewPropTypes'; + +import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; + +type NativeProps = $ReadOnly<{ + ...ViewProps, +}>; + +export type ReportFullyDrawnViewType = HostComponent; + +export default (codegenNativeComponent( + 'RNTReportFullyDrawnView', +): ReportFullyDrawnViewType); diff --git a/packages/@react-native/tester/js/RNTesterAppShared.js b/packages/@react-native/tester/js/RNTesterAppShared.js index e41e6cd640d..ef69b0b2fc4 100644 --- a/packages/@react-native/tester/js/RNTesterAppShared.js +++ b/packages/@react-native/tester/js/RNTesterAppShared.js @@ -26,6 +26,7 @@ import { getExamplesListWithRecentlyUsed, initialNavigationState, } from './utils/testerStateUtils'; +import ReportFullyDrawnView from '../ReportFullyDrawnView/ReportFullyDrawnView'; import * as React from 'react'; import { BackHandler, @@ -298,6 +299,7 @@ const RNTesterApp = ({ handleNavBarPress={handleNavBarPress} /> + ); }; diff --git a/packages/@react-native/tester/js/components/RNTesterModuleList.js b/packages/@react-native/tester/js/components/RNTesterModuleList.js index 699d9c8e7ff..0af3c21d7c6 100644 --- a/packages/@react-native/tester/js/components/RNTesterModuleList.js +++ b/packages/@react-native/tester/js/components/RNTesterModuleList.js @@ -61,8 +61,8 @@ const renderSectionHeader = ({section}: {section: any, ...}) => ( ); -const RNTesterModuleList: React.ComponentType = React.memo( - ({sections, handleModuleCardPress}) => { +const RNTesterModuleList: React.ComponentType = React.memo( + ({sections, handleModuleCardPress}: any) => { const filter = ({example, filterRegex, category}: any) => filterRegex.test(example.module.title) && (!category || example.category === category); diff --git a/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js b/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js index e90c85f4dd4..63093f86fdc 100644 --- a/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js +++ b/packages/@react-native/tester/js/examples/Modal/ModalPresentation.js @@ -80,7 +80,7 @@ function ModalPresentation() { const [currentOrientation, setCurrentOrientation] = useState('unknown'); type OrientationChangeEvent = Parameters< - $NonMaybeType['onOrientationChange']>, + $NonMaybeType, >[0]; const onOrientationChange = (event: OrientationChangeEvent) => setCurrentOrientation(event.nativeEvent.orientation); diff --git a/packages/@react-native/tester/js/examples/ScrollView/ScrollViewExample.js b/packages/@react-native/tester/js/examples/ScrollView/ScrollViewExample.js index 6ec79751e73..c0d44afaa77 100644 --- a/packages/@react-native/tester/js/examples/ScrollView/ScrollViewExample.js +++ b/packages/@react-native/tester/js/examples/ScrollView/ScrollViewExample.js @@ -457,6 +457,16 @@ const examples: Array = [ return ; }, }, + { + name: 'touchableChildrenOverflowingContainerHorizontal', + title: + ' touchable children overflow content container (horizontal = true)\n', + description: + "Children that overflow ScrollView's content container should still receive touch events", + render() { + return ; + }, + }, ]; if (Platform.OS === 'ios') { @@ -1352,6 +1362,56 @@ function ClippingExampleHorizontal() { ); } +function TouchableItem({index}: {index: number}) { + const [pressed, setPressed] = useState(false); + + return ( + setPressed(p => !p)} + testID={`touchable_item_${index}`} + style={{ + position: 'relative', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + flexGrow: 1, + flexShrink: 1, + flexBasis: '25%', + margin: 5, + backgroundColor: pressed ? 'gray' : 'lightgray', + }}> + Item {index} + + ); +} + +function ChildrenWithTouchEventsOverflowingContainerHorizontal() { + return ( + + + + + + + + ); +} + class Item extends React.PureComponent<{ msg?: string, style?: ViewStyleProp, diff --git a/packages/@react-native/tester/js/examples/Text/TextExample.android.js b/packages/@react-native/tester/js/examples/Text/TextExample.android.js index 15cdfec2979..0c5445c461f 100644 --- a/packages/@react-native/tester/js/examples/Text/TextExample.android.js +++ b/packages/@react-native/tester/js/examples/Text/TextExample.android.js @@ -12,6 +12,7 @@ import type {RNTesterModule} from '../../types/RNTesterTypes'; +import hotdog from '../../assets/hotdog.jpg'; import RNTesterText from '../../components/RNTesterText'; import TextLegend from '../../components/TextLegend'; import TextAdjustsDynamicLayoutExample from './TextAdjustsDynamicLayoutExample'; @@ -20,6 +21,7 @@ import TextInlineViewsExample from './TextInlineViewsExample'; const TextInlineView = require('../../components/TextInlineView'); const React = require('react'); const { + Image, LayoutAnimation, StyleSheet, Text, @@ -515,7 +517,7 @@ function MaxFontSizeMultiplierExample(props: {}): React.Node { function NumberOfLinesExample(props: {}): React.Node { return ( - <> + Maximum of one line no matter now much I write here. If I keep writing it{"'"}ll just truncate after one line @@ -532,11 +534,19 @@ function NumberOfLinesExample(props: {}): React.Node { RNTesterText of two lines no matter now much I write here. If I keep writing it{"'"}ll just truncate after two lines + + The hotdog should be truncated. The hotdog should be truncated. The + hotdog should be truncated. The hotdog should be truncated. The hotdog + should be truncated. The hotdog should be truncated. The hotdog should + be truncated. The hotdog should be truncated. The hotdog should be + truncated. The hotdog should be truncated. + + No maximum lines specified no matter now much I write here. If I keep writing it{"'"}ll just keep going and going - + ); } diff --git a/packages/@react-native/tester/js/examples/Text/TextExample.ios.js b/packages/@react-native/tester/js/examples/Text/TextExample.ios.js index 6d80e60dbe3..3d98b57dd01 100644 --- a/packages/@react-native/tester/js/examples/Text/TextExample.ios.js +++ b/packages/@react-native/tester/js/examples/Text/TextExample.ios.js @@ -12,6 +12,7 @@ import type {RNTesterModule} from '../../types/RNTesterTypes'; +import hotdog from '../../assets/hotdog.jpg'; import RNTesterText from '../../components/RNTesterText'; import TextLegend from '../../components/TextLegend'; import TextInlineViewsExample from './TextInlineViewsExample'; @@ -20,6 +21,7 @@ const TextInlineView = require('../../components/TextInlineView'); const React = require('react'); const { Button, + Image, LayoutAnimation, Platform, Text, @@ -1103,9 +1105,10 @@ const examples = [ }, { title: 'numberOfLines attribute', + name: 'numberOfLines', render: function (): React.Node { return ( - + Maximum of one line, no matter how much I write here. If I keep writing, it{"'"}ll just truncate after one line. @@ -1114,6 +1117,14 @@ const examples = [ Maximum of two lines, no matter how much I write here. If I keep writing, it{"'"}ll just truncate after two lines. + + The hotdog should be truncated. The hotdog should be truncated. The + hotdog should be truncated. The hotdog should be truncated. The + hotdog should be truncated. The hotdog should be truncated. The + hotdog should be truncated. The hotdog should be truncated. The + hotdog should be truncated. The hotdog should be truncated. + + No maximum lines specified, no matter how much I write here. If I keep writing, it{"'"}ll just keep going and going. diff --git a/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js b/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js index 8a9cc05b4ae..b6ef5e9db9b 100644 --- a/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js +++ b/packages/@react-native/tester/js/examples/TextInput/TextInputSharedExamples.js @@ -866,6 +866,7 @@ function DynamicContentWidth() { Uncontrolled: Controlled: + {`href: ${parsedUrl.href}`} + {`hash: ${parsedUrl.hash}`} + {`host: ${parsedUrl.host}`} + {`hostname: ${parsedUrl.hostname}`} + {`password: ${parsedUrl.password}`} + {`username: ${parsedUrl.username}`} + {`pathname: ${parsedUrl.pathname}`} + {`port: ${parsedUrl.port}`} + {`search: ${parsedUrl.search}`} + + ); +} + +const styles = StyleSheet.create({ + container: { + padding: 10, + }, +}); + +exports.title = 'URL'; +exports.category = 'Basic'; +exports.description = 'URL Parameters test'; +exports.examples = [ + { + title: 'completeURL', + description: 'URL with username,password,port,and queryparams', + render(): React.Node { + return ( + + ); + }, + }, + { + title: 'basicURL', + description: 'Basic URL without username, password, or port', + render(): React.Node { + return ; + }, + }, + { + title: 'queryParamsURL', + description: 'URL with query parameters', + render(): React.Node { + return ( + + ); + }, + }, + { + title: 'authAndPortURL', + description: 'URL with username, password, and port', + render(): React.Node { + return ( + + ); + }, + }, +] as Array; diff --git a/packages/@react-native/tester/js/utils/RNTesterList.android.js b/packages/@react-native/tester/js/utils/RNTesterList.android.js index ed6a37a9beb..18afb70b6e8 100644 --- a/packages/@react-native/tester/js/utils/RNTesterList.android.js +++ b/packages/@react-native/tester/js/utils/RNTesterList.android.js @@ -189,6 +189,11 @@ const APIs: Array = ([ category: 'Basic', module: require('../examples/AppState/AppStateExample'), }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, { key: 'BorderExample', category: 'UI', diff --git a/packages/@react-native/tester/js/utils/RNTesterList.ios.js b/packages/@react-native/tester/js/utils/RNTesterList.ios.js index 134bd94bc94..0790a03c0ce 100644 --- a/packages/@react-native/tester/js/utils/RNTesterList.ios.js +++ b/packages/@react-native/tester/js/utils/RNTesterList.ios.js @@ -194,6 +194,11 @@ const APIs: Array = ([ key: 'AppStateExample', module: require('../examples/AppState/AppStateExample'), }, + { + key: 'URLExample', + category: 'Basic', + module: require('../examples/Urls/UrlExample'), + }, { key: 'BorderExample', module: require('../examples/Border/BorderExample').default, diff --git a/packages/@react-native/tester/overrides.json b/packages/@react-native/tester/overrides.json index 187c5911b6a..626a4c72ffd 100644 --- a/packages/@react-native/tester/overrides.json +++ b/packages/@react-native/tester/overrides.json @@ -1,5 +1,5 @@ { - "baseVersion": "0.79.0-nightly-20250303-cee63397b", + "baseVersion": "0.80.0-nightly-20250317-fc7385c1e", "overrides": [ { "type": "copy", @@ -12,7 +12,7 @@ "type": "copy", "directory": "js/components", "baseDirectory": "packages/rn-tester/js/components", - "baseHash": "117e82a127facc2e88e576cab7140219eb9e51b3", + "baseHash": "55955c658c2583b3dd9a1ebd954ec6c8fb27be03", "issue": 4054 }, { @@ -236,7 +236,7 @@ "type": "copy", "directory": "js/examples/Modal", "baseDirectory": "packages/rn-tester/js/examples/Modal", - "baseHash": "47bd80a8fbdc88e70bca4e11ccea9e130d4dc45a", + "baseHash": "6f7b3e5f779970df44071279b741476f194e38d4", "issue": 4054 }, { @@ -292,8 +292,7 @@ "type": "copy", "directory": "js/examples/Performance", "baseDirectory": "packages/rn-tester/js/examples/Performance", - "baseHash": "92bfefb1a48b340fb9728044cd7647464e357997", - "issue": 0 + "baseHash": "92bfefb1a48b340fb9728044cd7647464e357997" }, { "type": "copy", @@ -383,7 +382,7 @@ "type": "copy", "directory": "js/examples/ScrollView", "baseDirectory": "packages/rn-tester/js/examples/ScrollView", - "baseHash": "3d1688893a2bf80a0dc4d8d5aa0eb87c52539c38", + "baseHash": "1dbe14827aa2ce436656ba7dbad7390302d2e9b2", "issue": 4054 }, { @@ -439,7 +438,7 @@ "type": "copy", "directory": "js/examples/Text", "baseDirectory": "packages/rn-tester/js/examples/Text", - "baseHash": "3448bb4b09f3ec11e2923f7fa2463c611ef85006", + "baseHash": "9f90a3af870c1efe28bc29b30abf3cb874820978", "issue": 4054 }, { @@ -481,7 +480,7 @@ "type": "patch", "file": "js/examples/TextInput/TextInputSharedExamples.js", "baseFile": "packages/rn-tester/js/examples/TextInput/TextInputSharedExamples.js", - "baseHash": "c7f206359cb110517a643604f46c96e8a2e13f27", + "baseHash": "c6ff0d7ecf6b0db88ec76b4b4fc8dfe142337dd6", "issue": 14291 }, { @@ -526,6 +525,12 @@ "baseHash": "ba8d337f59715ce8fbd05f6cbc79def6ea14334c", "issue": 4054 }, + { + "type": "copy", + "file": "js/examples/Urls/UrlExample.js", + "baseFile": "packages/rn-tester/js/examples/Urls/UrlExample.js", + "baseHash": "2dc9c4108dc6983696bd0fcdf619d653f99545e6" + }, { "type": "copy", "directory": "js/examples/Vibration", @@ -572,7 +577,7 @@ "type": "copy", "file": "js/RNTesterAppShared.js", "baseFile": "packages/rn-tester/js/RNTesterAppShared.js", - "baseHash": "8381b2c2e97bd18b48ac04c7a058a636d0b58a90", + "baseHash": "697f8ac4ce6f03a546df3ac60e8293bd862184d2", "issue": 4054 }, { @@ -586,14 +591,14 @@ "type": "patch", "file": "js/utils/RNTesterList.android.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "3cf41a5b5fe9269145523937f8cc190ad154e615", + "baseHash": "39dc13e5f5a3b5fb58b807788ee5021ff6b7889c", "issue": 13228 }, { "type": "patch", "file": "js/utils/RNTesterList.ios.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.ios.js", - "baseHash": "7a41161f07e9302f5c3091d0e4a8acb4f6ef01e0", + "baseHash": "7ca1b93dcc72ef3ff5e8856d6fa3ccd906a63e96", "issue": 13228 }, { @@ -656,8 +661,20 @@ "type": "patch", "file": "package.json", "baseFile": "packages/rn-tester/package.json", - "baseHash": "465eafe4a4aa8296d839eb7f0e01b1966cc38044", + "baseHash": "e30b0f85845127e6de68e618be83e69bf210596f", "issue": 13228 + }, + { + "type": "copy", + "file": "ReportFullyDrawnView/ReportFullyDrawnView.js", + "baseFile": "packages/rn-tester/ReportFullyDrawnView/ReportFullyDrawnView.js", + "baseHash": "2f2b868b9b4870303f8665e55293cce4ed6b8d3f" + }, + { + "type": "copy", + "file": "ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js", + "baseFile": "packages/rn-tester/ReportFullyDrawnView/ReportFullyDrawnViewNativeComponent.js", + "baseHash": "6bf9a8a646111c9613a511281686d8cec6c964ca" } ] } \ No newline at end of file diff --git a/packages/@react-native/tester/package.json b/packages/@react-native/tester/package.json index f9befd27972..dc4dde03cc9 100644 --- a/packages/@react-native/tester/package.json +++ b/packages/@react-native/tester/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/tester", - "version": "0.79.0-main", + "version": "0.80.0-main", "private": true, "description": "React Native tester app.", "license": "MIT", @@ -26,7 +26,7 @@ "e2e-test-ios": "./scripts/maestro-test-ios.sh" }, "dependencies": { - "@react-native/popup-menu-android": "0.79.0-nightly-20250123-d1028885e", + "@react-native/popup-menu-android": "0.80.0-nightly-20250317-fc7385c1e", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "nullthrows": "^1.1.1" @@ -49,9 +49,9 @@ } }, "devDependencies": { - "@react-native-community/cli": "15.0.0-alpha.2", - "@react-native-community/cli-platform-android": "15.0.0-alpha.2", - "@react-native-community/cli-platform-ios": "15.0.0-alpha.2", + "@react-native-community/cli": "17.0.0", + "@react-native-community/cli-platform-android": "17.0.0", + "@react-native-community/cli-platform-ios": "17.0.0", "commander": "^12.0.0", "listr2": "^6.4.1", "rxjs": "npm:@react-native-community/rxjs@6.5.4-custom" diff --git a/packages/@rnw-scripts/babel-react-native-config/package.json b/packages/@rnw-scripts/babel-react-native-config/package.json index 4c1e4083f26..92cd81e0f76 100644 --- a/packages/@rnw-scripts/babel-react-native-config/package.json +++ b/packages/@rnw-scripts/babel-react-native-config/package.json @@ -11,16 +11,16 @@ }, "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.79.0-nightly-20250303-cee63397b", + "@react-native/babel-preset": "0.80.0-nightly-20250317-fc7385c1e", "babel-plugin-transform-flow-enums": "^0.0.2" }, "devDependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.79.0-nightly-20250303-cee63397b", + "@react-native/babel-preset": "0.80.0-nightly-20250317-fc7385c1e", "eslint": "^8.19.0", "prettier": "2.8.8" }, "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/@rnw-scripts/integrate-rn/package.json b/packages/@rnw-scripts/integrate-rn/package.json index f9348d98484..5a722b00b09 100644 --- a/packages/@rnw-scripts/integrate-rn/package.json +++ b/packages/@rnw-scripts/integrate-rn/package.json @@ -19,7 +19,7 @@ "integrate-rn": "./bin.js" }, "dependencies": { - "@react-native-community/template": "0.78.0-nightly-2025110-200ade2", + "@react-native-community/template": "0.79.0-nightly-202536-45e44d1", "@react-native-windows/find-repo-root": "^0.0.0-canary.94", "@react-native-windows/fs": "^0.0.0-canary.65", "@react-native-windows/package-utils": "^0.0.0-canary.91", @@ -61,4 +61,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/@rnw-scripts/metro-dev-config/package.json b/packages/@rnw-scripts/metro-dev-config/package.json index 92ac2e0b2a2..5f07d38d342 100644 --- a/packages/@rnw-scripts/metro-dev-config/package.json +++ b/packages/@rnw-scripts/metro-dev-config/package.json @@ -17,7 +17,7 @@ "lint:fix": "rnw-scripts lint:fix" }, "dependencies": { - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnx-kit/metro-config": "^1.3.5", "@rnx-kit/metro-plugin-duplicates-checker": "^2.1.0", "@rnx-kit/metro-serializer": "^1.0.11", @@ -33,4 +33,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/e2e-test-app-fabric/package.json b/packages/e2e-test-app-fabric/package.json index 7a01099c4ab..e8707075488 100644 --- a/packages/e2e-test-app-fabric/package.json +++ b/packages/e2e-test-app-fabric/package.json @@ -20,7 +20,7 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964" }, "devDependencies": { @@ -29,10 +29,10 @@ "@babel/preset-env": "^7.25.3", "@babel/preset-typescript": "^7.8.3", "@babel/runtime": "^7.20.0", - "@react-native-community/cli": "15.0.0-alpha.2", + "@react-native-community/cli": "17.0.0", "@react-native-windows/automation": "^0.3.386", "@react-native-windows/automation-commands": "^0.1.407", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-node-config": "2.3.2", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", @@ -55,4 +55,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file 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 204104d7ef8..ba9c75eeb8d 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 @@ -6182,6 +6182,87 @@ exports[`Home UIA Tree Dump TurboModule 1`] = ` } `; +exports[`Home UIA Tree Dump URL 1`] = ` +{ + "Automation Tree": { + "AutomationId": "URL", + "ControlType": 50026, + "IsKeyboardFocusable": true, + "LocalizedControlType": "group", + "Name": "URL URL Parameters test", + "__Children": [ + { + "AutomationId": "", + "ControlType": 50020, + "LocalizedControlType": "text", + "Name": "URL", + "TextRangePattern.GetText": "URL", + }, + { + "AutomationId": "", + "ControlType": 50020, + "LocalizedControlType": "text", + "Name": "URL Parameters test", + "TextRangePattern.GetText": "URL Parameters test", + }, + ], + }, + "Component Tree": { + "Type": "Microsoft.ReactNative.Composition.ViewComponentView", + "_Props": { + "AccessibilityLabel": "URL URL Parameters test", + "TestId": "URL", + }, + "__Children": [ + { + "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", + "_Props": {}, + }, + { + "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", + "_Props": {}, + }, + ], + }, + "Visual Tree": { + "Brush": { + "Brush Type": "ColorBrush", + "Color": "rgba(255, 255, 255, 255)", + }, + "Comment": "URL", + "Offset": "0, 0, 0", + "Size": "966, 78", + "Visual Type": "SpriteVisual", + "__Children": [ + { + "Offset": "16, 16, 0", + "Size": "32, 25", + "Visual Type": "SpriteVisual", + "__Children": [ + { + "Offset": "0, 0, 0", + "Size": "32, 25", + "Visual Type": "SpriteVisual", + }, + ], + }, + { + "Offset": "16, 45, 0", + "Size": "934, 17", + "Visual Type": "SpriteVisual", + "__Children": [ + { + "Offset": "0, 0, 0", + "Size": "934, 17", + "Visual Type": "SpriteVisual", + }, + ], + }, + ], + }, +} +`; + exports[`Home UIA Tree Dump View 1`] = ` { "Automation Tree": { @@ -6317,12 +6398,12 @@ exports[`Home UIA Tree Dump WebSocket 1`] = ` "__Children": [ { "Offset": "16, 16, 0", - "Size": "89, 25", + "Size": "89, 24", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "89, 25", + "Size": "89, 24", "Visual Type": "SpriteVisual", }, ], diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap index 6fb1eb024cd..13f58ae7d1e 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/TextComponentTest.test.ts.snap @@ -258,7 +258,7 @@ exports[`Text Tests Text can be selectable 1`] = ` "Visual Tree": { "Comment": "text-selectable", "Offset": "0, 0, 0", - "Size": "916, 19", + "Size": "916, 20", "Visual Type": "SpriteVisual", }, } @@ -391,7 +391,7 @@ exports[`Text Tests Text can have advanced borders 1`] = ` "Visual Tree": { "Comment": "advanced-borders", "Offset": "0, 0, 0", - "Size": "916, 98", + "Size": "916, 97", "Visual Type": "SpriteVisual", "__Children": [ { @@ -482,12 +482,12 @@ exports[`Text Tests Text can have advanced borders 1`] = ` }, { "Offset": "0, 38, 0", - "Size": "916, 40", + "Size": "916, 39", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "916, 40", + "Size": "916, 39", "Visual Type": "SpriteVisual", "__Children": [ { @@ -523,7 +523,7 @@ exports[`Text Tests Text can have advanced borders 1`] = ` "Color": "rgba(0, 0, 255, 255)", }, "Offset": "-10, 20, 0", - "Size": "10, 14", + "Size": "10, 13", "Visual Type": "SpriteVisual", }, { @@ -559,7 +559,7 @@ exports[`Text Tests Text can have advanced borders 1`] = ` "Color": "rgba(0, 0, 255, 255)", }, "Offset": "0, 22, 0", - "Size": "20, 10", + "Size": "20, 9", "Visual Type": "SpriteVisual", }, ], @@ -568,12 +568,12 @@ exports[`Text Tests Text can have advanced borders 1`] = ` }, { "Offset": "0, 77, 0", - "Size": "916, 21", + "Size": "916, 22", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "916, 21", + "Size": "916, 22", "Visual Type": "SpriteVisual", "__Children": [ { @@ -609,7 +609,7 @@ exports[`Text Tests Text can have advanced borders 1`] = ` "Color": "rgba(0, 128, 0, 255)", }, "Offset": "-1, 4, 0", - "Size": "1, 13", + "Size": "1, 14", "Visual Type": "SpriteVisual", }, { @@ -645,7 +645,7 @@ exports[`Text Tests Text can have advanced borders 1`] = ` "Color": "rgba(0, 128, 0, 255)", }, "Offset": "0, 4, 0", - "Size": "1, 13", + "Size": "1, 14", "Visual Type": "SpriteVisual", }, ], @@ -740,7 +740,7 @@ exports[`Text Tests Text can have borders 1`] = ` "Visual Tree": { "Comment": "text-border", "Offset": "0, 0, 0", - "Size": "916, 384", + "Size": "916, 385", "Visual Type": "SpriteVisual", "__Children": [ { @@ -853,12 +853,12 @@ exports[`Text Tests Text can have borders 1`] = ` }, { "Offset": "0, 365, 0", - "Size": "916, 20", + "Size": "916, 19", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "916, 20", + "Size": "916, 19", "Visual Type": "SpriteVisual", }, ], @@ -953,12 +953,12 @@ exports[`Text Tests Text can have inline views/images 1`] = ` "Visual Tree": { "Comment": "text-view", "Offset": "0, 0, 0", - "Size": "916, 27", + "Size": "916, 26", "Visual Type": "SpriteVisual", "__Children": [ { - "Offset": "229, 0, 0", - "Size": "26, 19", + "Offset": "0, 0, 0", + "Size": "0, 0", "Visual Type": "SpriteVisual", "__Children": [ { @@ -967,19 +967,19 @@ exports[`Text Tests Text can have inline views/images 1`] = ` "Color": "rgba(70, 130, 180, 255)", }, "Offset": "0, 0, 0", - "Size": "26, 19", + "Size": "0, 0", "Visual Type": "SpriteVisual", }, ], }, { - "Offset": "384, 0, 0", - "Size": "34, 23", + "Offset": "0, 0, 0", + "Size": "0, 0", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "34, 23", + "Size": "0, 0", "Visual Type": "SpriteVisual", }, ], @@ -1037,7 +1037,7 @@ exports[`Text Tests Text can have nested views 1`] = ` "Visual Tree": { "Comment": "text-nested-view", "Offset": "0, 0, 0", - "Size": "916, 41", + "Size": "916, 40", "Visual Type": "SpriteVisual", "__Children": [ { @@ -1063,8 +1063,8 @@ exports[`Text Tests Text can have nested views 1`] = ` "Visual Type": "SpriteVisual", "__Children": [ { - "Offset": "125, 0, 0", - "Size": "21, 19", + "Offset": "0, 0, 0", + "Size": "0, 0", "Visual Type": "SpriteVisual", "__Children": [ { @@ -1073,7 +1073,7 @@ exports[`Text Tests Text can have nested views 1`] = ` "Color": "rgba(255, 0, 0, 255)", }, "Offset": "0, 0, 0", - "Size": "21, 19", + "Size": "0, 0", "Visual Type": "SpriteVisual", }, ], @@ -1105,7 +1105,7 @@ exports[`Text Tests Text can have shadows 1`] = ` "Visual Tree": { "Comment": "text-shadow", "Offset": "0, 0, 0", - "Size": "916, 27", + "Size": "916, 28", "Visual Type": "SpriteVisual", }, } @@ -1223,17 +1223,17 @@ exports[`Text Tests Texts can clip inline View/Images 1`] = ` "Visual Tree": { "Comment": "text-view-images-clipped", "Offset": "0, 0, 0", - "Size": "916, 222", + "Size": "916, 223", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "916, 20", + "Size": "916, 19", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "916, 20", + "Size": "916, 19", "Visual Type": "SpriteVisual", }, ], @@ -1249,8 +1249,8 @@ exports[`Text Tests Texts can clip inline View/Images 1`] = ` "Visual Type": "SpriteVisual", "__Children": [ { - "Offset": "0, 19, 0", - "Size": "51, 19", + "Offset": "0, 0, 0", + "Size": "0, 0", "Visual Type": "SpriteVisual", "__Children": [ { @@ -1259,14 +1259,14 @@ exports[`Text Tests Texts can clip inline View/Images 1`] = ` "Color": "rgba(255, 0, 0, 255)", }, "Offset": "0, 0, 0", - "Size": "51, 19", + "Size": "0, 0", "Visual Type": "SpriteVisual", }, ], }, { - "Offset": "1, 20, 0", - "Size": "48, 98", + "Offset": "0, 0, 0", + "Size": "0, 0", "Visual Type": "SpriteVisual", "__Children": [ { @@ -1275,7 +1275,7 @@ exports[`Text Tests Texts can clip inline View/Images 1`] = ` "Color": "rgba(70, 130, 180, 255)", }, "Offset": "0, 0, 0", - "Size": "48, 98", + "Size": "0, 0", "Visual Type": "SpriteVisual", }, ], @@ -1286,12 +1286,12 @@ exports[`Text Tests Texts can clip inline View/Images 1`] = ` }, { "Offset": "0, 103, 0", - "Size": "916, 19", + "Size": "916, 20", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "916, 19", + "Size": "916, 20", "Visual Type": "SpriteVisual", }, ], @@ -1307,13 +1307,13 @@ exports[`Text Tests Texts can clip inline View/Images 1`] = ` "Visual Type": "SpriteVisual", "__Children": [ { - "Offset": "0, 19, 0", - "Size": "51, 19", + "Offset": "0, 0, 0", + "Size": "0, 0", "Visual Type": "SpriteVisual", "__Children": [ { "Offset": "0, 0, 0", - "Size": "51, 19", + "Size": "0, 0", "Visual Type": "SpriteVisual", }, ], diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap b/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap index 3d3eb0fd2c7..3228f9b04c5 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/ViewComponentTest.test.ts.snap @@ -452,12 +452,10 @@ exports[`View Tests Views can have backface visibility 1`] = ` { "Type": "Microsoft.ReactNative.Composition.ViewComponentView", "_Props": {}, - "__Children": [ - { - "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", - "_Props": {}, - }, - ], + }, + { + "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", + "_Props": {}, }, { "Type": "Microsoft.ReactNative.Composition.ParagraphComponentView", @@ -540,20 +538,18 @@ exports[`View Tests Views can have backface visibility 1`] = ` "Offset": "0, 0, 0", "Size": "150, 150", "Visual Type": "SpriteVisual", - "__Children": [ - { - "Offset": "10, 56, 0", - "Size": "130, 38", - "Visual Type": "SpriteVisual", - "__Children": [ - { - "Offset": "0, 0, 0", - "Size": "130, 38", - "Visual Type": "SpriteVisual", - }, - ], - }, - ], + }, + ], + }, + { + "Offset": "393, 85, 0", + "Size": "130, 38", + "Visual Type": "SpriteVisual", + "__Children": [ + { + "Offset": "0, 0, 0", + "Size": "130, 38", + "Visual Type": "SpriteVisual", }, ], }, diff --git a/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap b/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap index d2763ba1f8b..956fba84c1b 100644 --- a/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap +++ b/packages/e2e-test-app-fabric/test/__snapshots__/snapshotPages.test.js.snap @@ -51681,6 +51681,113 @@ exports[`snapshotAllPages ScrollView 22`] = ` `; +exports[`snapshotAllPages ScrollView 23`] = ` + + + + + + Item + 1 + + + + + Item + 2 + + + + + Item + 3 + + + + + +`; + exports[`snapshotAllPages ScrollViewAnimated 1`] = ` , + , + , + + + The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. The hotdog should be truncated. + , -] + + `; exports[`snapshotAllPages Text 28`] = ` @@ -78433,6 +78557,7 @@ exports[`snapshotAllPages TextInput 20`] = ` "fontSize": 16, } } + testID="dynamic-width-uncontrolled-textinput" /> `; +exports[`snapshotAllPages URL 1`] = ` + + + href: https://username:password@reactnative.dev:8080/docs/path?query=testQuery&key=value#fragment + + + hash: #fragment + + + host: reactnative.dev:8080 + + + hostname: reactnative.dev + + + password: password + + + username: username + + + pathname: /docs/path + + + port: 8080 + + + search: ?query=testQuery&key=value + + +`; + +exports[`snapshotAllPages URL 2`] = ` + + + href: https://reactnative.dev/docs/path + + + hash: + + + host: reactnative.dev + + + hostname: reactnative.dev + + + password: + + + username: + + + pathname: /docs/path + + + port: + + + search: + + +`; + +exports[`snapshotAllPages URL 3`] = ` + + + href: https://reactnative.dev/docs/path?query=testQuery&key=value + + + hash: + + + host: reactnative.dev + + + hostname: reactnative.dev + + + password: + + + username: + + + pathname: /docs/path + + + port: + + + search: ?query=testQuery&key=value + + +`; + +exports[`snapshotAllPages URL 4`] = ` + + + href: https://username:password@reactnative.dev:8080/docs/path + + + hash: + + + host: reactnative.dev:8080 + + + hostname: reactnative.dev + + + password: password + + + username: username + + + pathname: /docs/path + + + port: 8080 + + + search: + + +`; + exports[`snapshotAllPages View 1`] = ` = 18" } -} +} \ No newline at end of file diff --git a/packages/integration-test-app/package.json b/packages/integration-test-app/package.json index bc2ff6165fb..53bdb8e554d 100644 --- a/packages/integration-test-app/package.json +++ b/packages/integration-test-app/package.json @@ -17,7 +17,7 @@ "@typescript-eslint/parser": "^7.1.1", "chai": "^4.2.0", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964" }, "devDependencies": { @@ -27,8 +27,8 @@ "@babel/preset-typescript": "^7.11.5", "@babel/traverse": "^7.11.5", "@babel/types": "^7.11.5", - "@react-native-community/cli": "15.0.0-alpha.2", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native-community/cli": "17.0.0", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-node-config": "2.3.2", "@rnw-scripts/eslint-config": "^1.2.36", "@rnw-scripts/just-task": "^2.3.53", @@ -51,4 +51,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/playground/package.json b/packages/playground/package.json index 2e7a1f48864..6802a801510 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -15,14 +15,14 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/runtime": "^7.20.0", - "@react-native-community/cli": "15.0.0-alpha.2", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native-community/cli": "17.0.0", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", "@rnw-scripts/just-task": "2.3.53", @@ -39,4 +39,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json index 93723a1cfd8..43787b2b7ff 100644 --- a/packages/sample-app-fabric/package.json +++ b/packages/sample-app-fabric/package.json @@ -16,7 +16,7 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964" }, "devDependencies": { @@ -26,8 +26,8 @@ "@babel/preset-typescript": "^7.8.3", "@babel/runtime": "^7.20.0", "@jest/globals": "^29.7.0", - "@react-native-community/cli": "15.0.0-alpha.2", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native-community/cli": "17.0.0", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-node-config": "2.3.2", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", @@ -48,4 +48,4 @@ "engines": { "node": ">=18" } -} +} \ No newline at end of file diff --git a/packages/sample-apps/package.json b/packages/sample-apps/package.json index c44dc6f5b20..5b40bca19ba 100644 --- a/packages/sample-apps/package.json +++ b/packages/sample-apps/package.json @@ -16,17 +16,17 @@ "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964" }, "devDependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", "@babel/runtime": "^7.20.0", - "@react-native-community/cli": "15.0.0-alpha.2", + "@react-native-community/cli": "17.0.0", "@react-native-windows/cli": "0.0.0-canary.265", "@react-native-windows/codegen": "0.0.0-canary.123", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", "@rnw-scripts/just-task": "2.3.53", @@ -50,4 +50,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/packages/sample-custom-component/package.json b/packages/sample-custom-component/package.json index d00f86b5afa..2d300184aa0 100644 --- a/packages/sample-custom-component/package.json +++ b/packages/sample-custom-component/package.json @@ -22,7 +22,7 @@ "dependencies": { "@types/react": "^19.0.0", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-windows": "^0.0.0-canary.964" }, "devDependencies": { @@ -31,8 +31,8 @@ "@babel/preset-env": "^7.25.3", "@babel/preset-typescript": "^7.8.3", "@babel/runtime": "^7.20.0", - "@react-native-community/cli": "15.0.0-alpha.2", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native-community/cli": "17.0.0", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-node-config": "2.3.2", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", @@ -53,4 +53,4 @@ "engines": { "node": ">=18" } -} +} \ No newline at end of file diff --git a/vnext/.flowconfig b/vnext/.flowconfig index 7eda757fb5b..bb17f27754c 100644 --- a/vnext/.flowconfig +++ b/vnext/.flowconfig @@ -130,6 +130,8 @@ module.name_mapper='^react-native-windows/\(.*\)$' -> '/\1' module.name_mapper='^@react-native/dev-middleware$' -> '/\1' module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\|xml\)$' -> '/Libraries/Image/RelativeImageStub' +react.runtime=automatic + suppress_type=$FlowIssue suppress_type=$FlowFixMe suppress_type=$FlowFixMeProps @@ -160,4 +162,4 @@ untyped-import untyped-type-import [version] -^0.262.0 +^0.265.2 diff --git a/vnext/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp b/vnext/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp index 3de025771cf..0c440fc3cad 100644 --- a/vnext/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/AbiComponentDescriptor.cpp @@ -89,12 +89,6 @@ facebook::react::Props::Shared AbiComponentDescriptor::cloneProps( return ShadowNodeT::defaultSharedProps(); } - if constexpr (std::is_base_of_v) { - if (facebook::react::ReactNativeFeatureFlags::excludeYogaFromRawProps()) { - rawProps.filterYogaStylePropsInDynamicConversion(); - } - } - rawProps.parse(rawPropsParser_); // Call old-style constructor diff --git a/vnext/ReactCommon/ReactCommon.vcxproj b/vnext/ReactCommon/ReactCommon.vcxproj index 6164251f380..b493506ad92 100644 --- a/vnext/ReactCommon/ReactCommon.vcxproj +++ b/vnext/ReactCommon/ReactCommon.vcxproj @@ -121,6 +121,7 @@ + @@ -182,6 +183,7 @@ + Create diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp index 31ec1f84144..4bf25095cc3 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp @@ -9,11 +9,11 @@ #include "RAMBundleRegistry.h" -#include #include #include #include +#include #include namespace facebook::react { @@ -24,7 +24,10 @@ std::string JSExecutor::getSyntheticBundlePath( if (bundleId == RAMBundleRegistry::MAIN_BUNDLE_ID) { return bundlePath; } - return folly::to("seg-", bundleId, ".js"); + + std::array buffer{}; + std::snprintf(buffer.data(), buffer.size(), "seg-%u.js", bundleId); + return buffer.data(); } double JSExecutor::performanceNow() { diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp index 344efffb526..beccdecaa6c 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp @@ -11,7 +11,11 @@ #include "Base64.h" #include "Utf8.h" +#include + +#include #include +#include namespace facebook::react::jsinspector_modern { @@ -268,7 +272,16 @@ bool NetworkIOAgent::handleRequest( } if (InspectorFlags::getInstance().getNetworkInspectionEnabled()) { + // @cdp Network.enable support is experimental. if (req.method == "Network.enable") { + NetworkReporter::getInstance().enableDebugging(); + frontendChannel_(cdp::jsonResult(req.id)); + return true; + } + + // @cdp Network.disable support is experimental. + if (req.method == "Network.disable") { + NetworkReporter::getInstance().disableDebugging(); frontendChannel_(cdp::jsonResult(req.id)); return true; } diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h index 2f8e4976801..e36ee1c4474 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h @@ -12,12 +12,9 @@ #include "ScopedExecutor.h" #include -#include -#include #include #include #include -#include namespace facebook::react::jsinspector_modern { diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h index 94907338f5c..080da1ed286 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h @@ -10,6 +10,7 @@ #include #include +#include // [Windows] - Full relative path needed to find file #include namespace facebook::react { @@ -136,58 +137,13 @@ class CSSTokenizer { constexpr CSSToken consumeNumber() { // https://www.w3.org/TR/css-syntax-3/#consume-number // https://www.w3.org/TR/css-syntax-3/#convert-a-string-to-a-number - int32_t signPart = 1; // [Windows] - if (peek() == '+' || peek() == '-') { - if (peek() == '-') { - signPart = -1; // [Windows] - } - advance(); - } - - double intPart = 0; - while (isDigit(peek())) { - intPart = intPart * 10 + (peek() - '0'); - advance(); - } + auto* b = remainingCharacters_.data(); + auto* e = b + remainingCharacters_.size(); - double fractionalPart = 0; - int32_t fractionDigits = 0; - if (peek() == '.') { - advance(); - while (isDigit(peek())) { - fractionalPart = fractionalPart * 10 + (peek() - '0'); - fractionDigits++; - advance(); - } - } - - int32_t exponentSign = 1; // [Windows] - double exponentPart = 0; - if ((peek() == 'e' || peek() == 'E') && - (isDigit(peek(1)) || - ((peek(1) == '+' || peek(1) == '-') && isDigit(peek(2))))) { - advance(); - if (peek() == '+' || peek() == '-') { - if (peek() == '-') { - exponentSign = -1; // [Windows] - } - advance(); - } - - while (isDigit(peek())) { - exponentPart = exponentPart * 10 + (peek() - '0'); - advance(); - } - } float value; - if (exponentPart == 0 && fractionalPart == 0) { - value = static_cast(signPart * intPart); - } else { - value = static_cast( - signPart * - (intPart + (fractionalPart * std::pow(10, -fractionDigits))) * - std::pow(10, exponentSign * exponentPart)); - } + fast_float::parse_options options{ + fast_float::chars_format::general}; + auto [ptr, ec] = fast_float::from_chars_advanced(b, e, value, options); consumeRunningValue(); return {CSSTokenType::Number, value}; @@ -274,4 +230,4 @@ class CSSTokenizer { std::string_view remainingCharacters_; size_t position_{0}; }; -} // namespace facebook::react +} // namespace facebook::react \ No newline at end of file diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp index 78876d42a7a..fae0521341a 100644 --- a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp @@ -329,7 +329,7 @@ void ReactInstance::registerSegment( << segmentId; runtimeScheduler_->scheduleWork([=](jsi::Runtime& runtime) { TraceSection s("ReactInstance::registerSegment"); - const auto tag = folly::to(segmentId); + auto tag = std::to_string(segmentId); auto script = JSBigFileString::fromPath(segmentPath); if (script->size() == 0) { throw std::invalid_argument( diff --git a/vnext/Scripts/creaternwapp.cmd b/vnext/Scripts/creaternwapp.cmd index cfeceaf9124..61540c27fdb 100644 --- a/vnext/Scripts/creaternwapp.cmd +++ b/vnext/Scripts/creaternwapp.cmd @@ -114,7 +114,7 @@ for /f "delims=" %%a in ('npm show react@%R_VERSION% version') do @set R_VERSION set RNCLI_TEMPLATE= if not "x%RN_VERSION:nightly=%"=="x%RN_VERSION%" ( @echo creaternwapp.cmd Override @react-native-community/template version - set RNCLI_TEMPLATE=--template "@react-native-community/template@^%RN_VERSION:~0,4%.0" + set RNCLI_TEMPLATE=--template "@react-native-community/template@^%RN_VERSION:~0,4%.0-" ) @echo creaternwapp.cmd: Creating base RN app project with: npx --yes @react-native-community/cli@latest init %APP_NAME% --version %RN_VERSION% %RNCLI_TEMPLATE% --verbose --skip-install --install-pods false --skip-git-init true diff --git a/vnext/Shared/Shared.vcxitems b/vnext/Shared/Shared.vcxitems index 0bb372c02b3..eac731ab7c8 100644 --- a/vnext/Shared/Shared.vcxitems +++ b/vnext/Shared/Shared.vcxitems @@ -555,6 +555,7 @@ + diff --git a/vnext/Shared/Shared.vcxitems.filters b/vnext/Shared/Shared.vcxitems.filters index 26156838da0..a36a5684a90 100644 --- a/vnext/Shared/Shared.vcxitems.filters +++ b/vnext/Shared/Shared.vcxitems.filters @@ -343,6 +343,7 @@ + diff --git a/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h b/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h index 18918f8d199..dd43b8b1c01 100644 --- a/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h +++ b/vnext/codegen/NativeReactNativeFeatureFlagsSpec.g.h @@ -19,22 +19,22 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS static constexpr auto methods = std::tuple{ SyncMethod{0, L"commonTestFlag"}, SyncMethod{1, L"commonTestFlagWithoutNativeImplementation"}, - SyncMethod{2, L"disableMountItemReorderingAndroid"}, - SyncMethod{3, L"enableAccumulatedUpdatesInRawPropsAndroid"}, - SyncMethod{4, L"enableBridgelessArchitecture"}, - SyncMethod{5, L"enableCppPropsIteratorSetter"}, - SyncMethod{6, L"enableEagerRootViewAttachment"}, - SyncMethod{7, L"enableFabricLogs"}, - SyncMethod{8, L"enableFabricRenderer"}, - SyncMethod{9, L"enableIOSViewClipToPaddingBox"}, - SyncMethod{10, L"enableImagePrefetchingAndroid"}, - SyncMethod{11, L"enableJSRuntimeGCOnMemoryPressureOnIOS"}, - SyncMethod{12, L"enableLayoutAnimationsOnAndroid"}, - SyncMethod{13, L"enableLayoutAnimationsOnIOS"}, - SyncMethod{14, L"enableLongTaskAPI"}, - SyncMethod{15, L"enableNativeCSSParsing"}, - SyncMethod{16, L"enableNewBackgroundAndBorderDrawables"}, - SyncMethod{17, L"enablePreciseSchedulingForPremountItemsOnAndroid"}, + SyncMethod{2, L"animatedShouldSignalBatch"}, + SyncMethod{3, L"disableMountItemReorderingAndroid"}, + SyncMethod{4, L"enableAccumulatedUpdatesInRawPropsAndroid"}, + SyncMethod{5, L"enableBridgelessArchitecture"}, + SyncMethod{6, L"enableCppPropsIteratorSetter"}, + SyncMethod{7, L"enableEagerRootViewAttachment"}, + SyncMethod{8, L"enableFabricLogs"}, + SyncMethod{9, L"enableFabricRenderer"}, + SyncMethod{10, L"enableIOSViewClipToPaddingBox"}, + SyncMethod{11, L"enableImagePrefetchingAndroid"}, + SyncMethod{12, L"enableJSRuntimeGCOnMemoryPressureOnIOS"}, + SyncMethod{13, L"enableLayoutAnimationsOnAndroid"}, + SyncMethod{14, L"enableLayoutAnimationsOnIOS"}, + SyncMethod{15, L"enableLongTaskAPI"}, + SyncMethod{16, L"enableNativeCSSParsing"}, + SyncMethod{17, L"enableNewBackgroundAndBorderDrawables"}, SyncMethod{18, L"enablePropsUpdateReconciliationAndroid"}, SyncMethod{19, L"enableReportEventPaintTime"}, SyncMethod{20, L"enableSynchronousStateUpdates"}, @@ -43,24 +43,23 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS SyncMethod{23, L"enableViewRecycling"}, SyncMethod{24, L"enableViewRecyclingForText"}, SyncMethod{25, L"enableViewRecyclingForView"}, - SyncMethod{26, L"excludeYogaFromRawProps"}, - SyncMethod{27, L"fixDifferentiatorEmittingUpdatesWithWrongParentTag"}, - SyncMethod{28, L"fixMappingOfEventPrioritiesBetweenFabricAndReact"}, - SyncMethod{29, L"fixMountingCoordinatorReportedPendingTransactionsOnAndroid"}, - SyncMethod{30, L"fuseboxEnabledRelease"}, - SyncMethod{31, L"fuseboxNetworkInspectionEnabled"}, - SyncMethod{32, L"lazyAnimationCallbacks"}, - SyncMethod{33, L"removeTurboModuleManagerDelegateMutex"}, - SyncMethod{34, L"throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS"}, - SyncMethod{35, L"traceTurboModulePromiseRejectionsOnAndroid"}, - SyncMethod{36, L"useAlwaysAvailableJSErrorHandling"}, - SyncMethod{37, L"useEditTextStockAndroidFocusBehavior"}, - SyncMethod{38, L"useFabricInterop"}, - SyncMethod{39, L"useNativeViewConfigsInBridgelessMode"}, - SyncMethod{40, L"useOptimizedEventBatchingOnAndroid"}, - SyncMethod{41, L"useRawPropsJsiValue"}, - SyncMethod{42, L"useTurboModuleInterop"}, - SyncMethod{43, L"useTurboModules"}, + SyncMethod{26, L"fixDifferentiatorEmittingUpdatesWithWrongParentTag"}, + SyncMethod{27, L"fixMappingOfEventPrioritiesBetweenFabricAndReact"}, + SyncMethod{28, L"fixMountingCoordinatorReportedPendingTransactionsOnAndroid"}, + SyncMethod{29, L"fuseboxEnabledRelease"}, + SyncMethod{30, L"fuseboxNetworkInspectionEnabled"}, + SyncMethod{31, L"lazyAnimationCallbacks"}, + SyncMethod{32, L"removeTurboModuleManagerDelegateMutex"}, + SyncMethod{33, L"throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS"}, + SyncMethod{34, L"traceTurboModulePromiseRejectionsOnAndroid"}, + SyncMethod{35, L"useAlwaysAvailableJSErrorHandling"}, + SyncMethod{36, L"useEditTextStockAndroidFocusBehavior"}, + SyncMethod{37, L"useFabricInterop"}, + SyncMethod{38, L"useNativeViewConfigsInBridgelessMode"}, + SyncMethod{39, L"useOptimizedEventBatchingOnAndroid"}, + SyncMethod{40, L"useRawPropsJsiValue"}, + SyncMethod{41, L"useTurboModuleInterop"}, + SyncMethod{42, L"useTurboModules"}, }; template @@ -79,84 +78,84 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS " REACT_SYNC_METHOD(commonTestFlagWithoutNativeImplementation) static bool commonTestFlagWithoutNativeImplementation() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 2, + "animatedShouldSignalBatch", + " REACT_SYNC_METHOD(animatedShouldSignalBatch) bool animatedShouldSignalBatch() noexcept { /* implementation */ }\n" + " REACT_SYNC_METHOD(animatedShouldSignalBatch) static bool animatedShouldSignalBatch() noexcept { /* implementation */ }\n"); + REACT_SHOW_METHOD_SPEC_ERRORS( + 3, "disableMountItemReorderingAndroid", " REACT_SYNC_METHOD(disableMountItemReorderingAndroid) bool disableMountItemReorderingAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(disableMountItemReorderingAndroid) static bool disableMountItemReorderingAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 3, + 4, "enableAccumulatedUpdatesInRawPropsAndroid", " REACT_SYNC_METHOD(enableAccumulatedUpdatesInRawPropsAndroid) bool enableAccumulatedUpdatesInRawPropsAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableAccumulatedUpdatesInRawPropsAndroid) static bool enableAccumulatedUpdatesInRawPropsAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 4, + 5, "enableBridgelessArchitecture", " REACT_SYNC_METHOD(enableBridgelessArchitecture) bool enableBridgelessArchitecture() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableBridgelessArchitecture) static bool enableBridgelessArchitecture() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 5, + 6, "enableCppPropsIteratorSetter", " REACT_SYNC_METHOD(enableCppPropsIteratorSetter) bool enableCppPropsIteratorSetter() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableCppPropsIteratorSetter) static bool enableCppPropsIteratorSetter() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 6, + 7, "enableEagerRootViewAttachment", " REACT_SYNC_METHOD(enableEagerRootViewAttachment) bool enableEagerRootViewAttachment() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableEagerRootViewAttachment) static bool enableEagerRootViewAttachment() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 7, + 8, "enableFabricLogs", " REACT_SYNC_METHOD(enableFabricLogs) bool enableFabricLogs() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableFabricLogs) static bool enableFabricLogs() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 8, + 9, "enableFabricRenderer", " REACT_SYNC_METHOD(enableFabricRenderer) bool enableFabricRenderer() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableFabricRenderer) static bool enableFabricRenderer() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 9, + 10, "enableIOSViewClipToPaddingBox", " REACT_SYNC_METHOD(enableIOSViewClipToPaddingBox) bool enableIOSViewClipToPaddingBox() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableIOSViewClipToPaddingBox) static bool enableIOSViewClipToPaddingBox() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 10, + 11, "enableImagePrefetchingAndroid", " REACT_SYNC_METHOD(enableImagePrefetchingAndroid) bool enableImagePrefetchingAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableImagePrefetchingAndroid) static bool enableImagePrefetchingAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 11, + 12, "enableJSRuntimeGCOnMemoryPressureOnIOS", " REACT_SYNC_METHOD(enableJSRuntimeGCOnMemoryPressureOnIOS) bool enableJSRuntimeGCOnMemoryPressureOnIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableJSRuntimeGCOnMemoryPressureOnIOS) static bool enableJSRuntimeGCOnMemoryPressureOnIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 12, + 13, "enableLayoutAnimationsOnAndroid", " REACT_SYNC_METHOD(enableLayoutAnimationsOnAndroid) bool enableLayoutAnimationsOnAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableLayoutAnimationsOnAndroid) static bool enableLayoutAnimationsOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 13, + 14, "enableLayoutAnimationsOnIOS", " REACT_SYNC_METHOD(enableLayoutAnimationsOnIOS) bool enableLayoutAnimationsOnIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableLayoutAnimationsOnIOS) static bool enableLayoutAnimationsOnIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 14, + 15, "enableLongTaskAPI", " REACT_SYNC_METHOD(enableLongTaskAPI) bool enableLongTaskAPI() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableLongTaskAPI) static bool enableLongTaskAPI() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 15, + 16, "enableNativeCSSParsing", " REACT_SYNC_METHOD(enableNativeCSSParsing) bool enableNativeCSSParsing() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableNativeCSSParsing) static bool enableNativeCSSParsing() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 16, + 17, "enableNewBackgroundAndBorderDrawables", " REACT_SYNC_METHOD(enableNewBackgroundAndBorderDrawables) bool enableNewBackgroundAndBorderDrawables() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(enableNewBackgroundAndBorderDrawables) static bool enableNewBackgroundAndBorderDrawables() noexcept { /* implementation */ }\n"); - REACT_SHOW_METHOD_SPEC_ERRORS( - 17, - "enablePreciseSchedulingForPremountItemsOnAndroid", - " REACT_SYNC_METHOD(enablePreciseSchedulingForPremountItemsOnAndroid) bool enablePreciseSchedulingForPremountItemsOnAndroid() noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(enablePreciseSchedulingForPremountItemsOnAndroid) static bool enablePreciseSchedulingForPremountItemsOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 18, "enablePropsUpdateReconciliationAndroid", @@ -199,91 +198,86 @@ struct ReactNativeFeatureFlagsSpec : winrt::Microsoft::ReactNative::TurboModuleS " REACT_SYNC_METHOD(enableViewRecyclingForView) static bool enableViewRecyclingForView() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( 26, - "excludeYogaFromRawProps", - " REACT_SYNC_METHOD(excludeYogaFromRawProps) bool excludeYogaFromRawProps() noexcept { /* implementation */ }\n" - " REACT_SYNC_METHOD(excludeYogaFromRawProps) static bool excludeYogaFromRawProps() noexcept { /* implementation */ }\n"); - REACT_SHOW_METHOD_SPEC_ERRORS( - 27, "fixDifferentiatorEmittingUpdatesWithWrongParentTag", " REACT_SYNC_METHOD(fixDifferentiatorEmittingUpdatesWithWrongParentTag) bool fixDifferentiatorEmittingUpdatesWithWrongParentTag() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fixDifferentiatorEmittingUpdatesWithWrongParentTag) static bool fixDifferentiatorEmittingUpdatesWithWrongParentTag() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 28, + 27, "fixMappingOfEventPrioritiesBetweenFabricAndReact", " REACT_SYNC_METHOD(fixMappingOfEventPrioritiesBetweenFabricAndReact) bool fixMappingOfEventPrioritiesBetweenFabricAndReact() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fixMappingOfEventPrioritiesBetweenFabricAndReact) static bool fixMappingOfEventPrioritiesBetweenFabricAndReact() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 29, + 28, "fixMountingCoordinatorReportedPendingTransactionsOnAndroid", " REACT_SYNC_METHOD(fixMountingCoordinatorReportedPendingTransactionsOnAndroid) bool fixMountingCoordinatorReportedPendingTransactionsOnAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fixMountingCoordinatorReportedPendingTransactionsOnAndroid) static bool fixMountingCoordinatorReportedPendingTransactionsOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 30, + 29, "fuseboxEnabledRelease", " REACT_SYNC_METHOD(fuseboxEnabledRelease) bool fuseboxEnabledRelease() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fuseboxEnabledRelease) static bool fuseboxEnabledRelease() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 31, + 30, "fuseboxNetworkInspectionEnabled", " REACT_SYNC_METHOD(fuseboxNetworkInspectionEnabled) bool fuseboxNetworkInspectionEnabled() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(fuseboxNetworkInspectionEnabled) static bool fuseboxNetworkInspectionEnabled() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 32, + 31, "lazyAnimationCallbacks", " REACT_SYNC_METHOD(lazyAnimationCallbacks) bool lazyAnimationCallbacks() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(lazyAnimationCallbacks) static bool lazyAnimationCallbacks() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 33, + 32, "removeTurboModuleManagerDelegateMutex", " REACT_SYNC_METHOD(removeTurboModuleManagerDelegateMutex) bool removeTurboModuleManagerDelegateMutex() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(removeTurboModuleManagerDelegateMutex) static bool removeTurboModuleManagerDelegateMutex() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 34, + 33, "throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS", " REACT_SYNC_METHOD(throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS) bool throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS) static bool throwExceptionInsteadOfDeadlockOnTurboModuleSetupDuringSyncRenderIOS() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 35, + 34, "traceTurboModulePromiseRejectionsOnAndroid", " REACT_SYNC_METHOD(traceTurboModulePromiseRejectionsOnAndroid) bool traceTurboModulePromiseRejectionsOnAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(traceTurboModulePromiseRejectionsOnAndroid) static bool traceTurboModulePromiseRejectionsOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 36, + 35, "useAlwaysAvailableJSErrorHandling", " REACT_SYNC_METHOD(useAlwaysAvailableJSErrorHandling) bool useAlwaysAvailableJSErrorHandling() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useAlwaysAvailableJSErrorHandling) static bool useAlwaysAvailableJSErrorHandling() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 37, + 36, "useEditTextStockAndroidFocusBehavior", " REACT_SYNC_METHOD(useEditTextStockAndroidFocusBehavior) bool useEditTextStockAndroidFocusBehavior() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useEditTextStockAndroidFocusBehavior) static bool useEditTextStockAndroidFocusBehavior() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 38, + 37, "useFabricInterop", " REACT_SYNC_METHOD(useFabricInterop) bool useFabricInterop() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useFabricInterop) static bool useFabricInterop() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 39, + 38, "useNativeViewConfigsInBridgelessMode", " REACT_SYNC_METHOD(useNativeViewConfigsInBridgelessMode) bool useNativeViewConfigsInBridgelessMode() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useNativeViewConfigsInBridgelessMode) static bool useNativeViewConfigsInBridgelessMode() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 40, + 39, "useOptimizedEventBatchingOnAndroid", " REACT_SYNC_METHOD(useOptimizedEventBatchingOnAndroid) bool useOptimizedEventBatchingOnAndroid() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useOptimizedEventBatchingOnAndroid) static bool useOptimizedEventBatchingOnAndroid() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 41, + 40, "useRawPropsJsiValue", " REACT_SYNC_METHOD(useRawPropsJsiValue) bool useRawPropsJsiValue() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useRawPropsJsiValue) static bool useRawPropsJsiValue() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 42, + 41, "useTurboModuleInterop", " REACT_SYNC_METHOD(useTurboModuleInterop) bool useTurboModuleInterop() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useTurboModuleInterop) static bool useTurboModuleInterop() noexcept { /* implementation */ }\n"); REACT_SHOW_METHOD_SPEC_ERRORS( - 43, + 42, "useTurboModules", " REACT_SYNC_METHOD(useTurboModules) bool useTurboModules() noexcept { /* implementation */ }\n" " REACT_SYNC_METHOD(useTurboModules) static bool useTurboModules() noexcept { /* implementation */ }\n"); diff --git a/vnext/codegen/react/components/rnwcore/EventEmitters.cpp b/vnext/codegen/react/components/rnwcore/EventEmitters.cpp index adcd150d680..b606e786965 100644 --- a/vnext/codegen/react/components/rnwcore/EventEmitters.cpp +++ b/vnext/codegen/react/components/rnwcore/EventEmitters.cpp @@ -14,117 +14,117 @@ namespace facebook::react { -void AndroidDrawerLayoutEventEmitter::onDrawerSlide(OnDrawerSlide $event) const { - dispatchEvent("drawerSlide", [$event=std::move($event)](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); - $payload.setProperty(runtime, "offset", $event.offset); - return $payload; +void AndroidDrawerLayoutEventEmitter::onDrawerSlide(OnDrawerSlide event) const { + dispatchEvent("drawerSlide", [event=std::move(event)](jsi::Runtime &runtime) { + auto payload = jsi::Object(runtime); + payload.setProperty(runtime, "offset", event.offset); + return payload; }); } -void AndroidDrawerLayoutEventEmitter::onDrawerStateChanged(OnDrawerStateChanged $event) const { - dispatchEvent("drawerStateChanged", [$event=std::move($event)](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); - $payload.setProperty(runtime, "drawerState", $event.drawerState); - return $payload; +void AndroidDrawerLayoutEventEmitter::onDrawerStateChanged(OnDrawerStateChanged event) const { + dispatchEvent("drawerStateChanged", [event=std::move(event)](jsi::Runtime &runtime) { + auto payload = jsi::Object(runtime); + payload.setProperty(runtime, "drawerState", event.drawerState); + return payload; }); } -void AndroidDrawerLayoutEventEmitter::onDrawerOpen(OnDrawerOpen $event) const { +void AndroidDrawerLayoutEventEmitter::onDrawerOpen(OnDrawerOpen event) const { dispatchEvent("drawerOpen", [](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); + auto payload = jsi::Object(runtime); - return $payload; + return payload; }); } -void AndroidDrawerLayoutEventEmitter::onDrawerClose(OnDrawerClose $event) const { +void AndroidDrawerLayoutEventEmitter::onDrawerClose(OnDrawerClose event) const { dispatchEvent("drawerClose", [](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); + auto payload = jsi::Object(runtime); - return $payload; + return payload; }); } -void AndroidSwipeRefreshLayoutEventEmitter::onRefresh(OnRefresh $event) const { +void AndroidSwipeRefreshLayoutEventEmitter::onRefresh(OnRefresh event) const { dispatchEvent("refresh", [](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); + auto payload = jsi::Object(runtime); - return $payload; + return payload; }); } -void AndroidSwitchEventEmitter::onChange(OnChange $event) const { - dispatchEvent("change", [$event=std::move($event)](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); - $payload.setProperty(runtime, "value", $event.value); -$payload.setProperty(runtime, "target", $event.target); - return $payload; +void AndroidSwitchEventEmitter::onChange(OnChange event) const { + dispatchEvent("change", [event=std::move(event)](jsi::Runtime &runtime) { + auto payload = jsi::Object(runtime); + payload.setProperty(runtime, "value", event.value); +payload.setProperty(runtime, "target", event.target); + return payload; }); } -void PullToRefreshViewEventEmitter::onRefresh(OnRefresh $event) const { +void PullToRefreshViewEventEmitter::onRefresh(OnRefresh event) const { dispatchEvent("refresh", [](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); + auto payload = jsi::Object(runtime); - return $payload; + return payload; }); } -void ModalHostViewEventEmitter::onRequestClose(OnRequestClose $event) const { +void ModalHostViewEventEmitter::onRequestClose(OnRequestClose event) const { dispatchEvent("requestClose", [](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); + auto payload = jsi::Object(runtime); - return $payload; + return payload; }); } -void ModalHostViewEventEmitter::onShow(OnShow $event) const { +void ModalHostViewEventEmitter::onShow(OnShow event) const { dispatchEvent("show", [](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); + auto payload = jsi::Object(runtime); - return $payload; + return payload; }); } -void ModalHostViewEventEmitter::onDismiss(OnDismiss $event) const { +void ModalHostViewEventEmitter::onDismiss(OnDismiss event) const { dispatchEvent("dismiss", [](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); + auto payload = jsi::Object(runtime); - return $payload; + return payload; }); } -void ModalHostViewEventEmitter::onOrientationChange(OnOrientationChange $event) const { - dispatchEvent("orientationChange", [$event=std::move($event)](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); - $payload.setProperty(runtime, "orientation", toString($event.orientation)); - return $payload; +void ModalHostViewEventEmitter::onOrientationChange(OnOrientationChange event) const { + dispatchEvent("orientationChange", [event=std::move(event)](jsi::Runtime &runtime) { + auto payload = jsi::Object(runtime); + payload.setProperty(runtime, "orientation", toString(event.orientation)); + return payload; }); } -void SwitchEventEmitter::onChange(OnChange $event) const { - dispatchEvent("change", [$event=std::move($event)](jsi::Runtime &runtime) { - auto $payload = jsi::Object(runtime); - $payload.setProperty(runtime, "value", $event.value); -$payload.setProperty(runtime, "target", $event.target); - return $payload; +void SwitchEventEmitter::onChange(OnChange event) const { + dispatchEvent("change", [event=std::move(event)](jsi::Runtime &runtime) { + auto payload = jsi::Object(runtime); + payload.setProperty(runtime, "value", event.value); +payload.setProperty(runtime, "target", event.target); + return payload; }); } diff --git a/vnext/codegen/rnwcoreJSI-generated.cpp b/vnext/codegen/rnwcoreJSI-generated.cpp index 75de3b43ef4..a00b4a1bb74 100644 --- a/vnext/codegen/rnwcoreJSI-generated.cpp +++ b/vnext/codegen/rnwcoreJSI-generated.cpp @@ -21,6 +21,11 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_commonT rt ); } +static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_animatedShouldSignalBatch(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { + return static_cast(&turboModule)->animatedShouldSignalBatch( + rt + ); +} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableMountItemReorderingAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->disableMountItemReorderingAndroid( rt @@ -96,11 +101,6 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableN rt ); } -static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePreciseSchedulingForPremountItemsOnAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->enablePreciseSchedulingForPremountItemsOnAndroid( - rt - ); -} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePropsUpdateReconciliationAndroid(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->enablePropsUpdateReconciliationAndroid( rt @@ -141,11 +141,6 @@ static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableV rt ); } -static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_excludeYogaFromRawProps(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { - return static_cast(&turboModule)->excludeYogaFromRawProps( - rt - ); -} static jsi::Value __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fixDifferentiatorEmittingUpdatesWithWrongParentTag(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) { return static_cast(&turboModule)->fixDifferentiatorEmittingUpdatesWithWrongParentTag( rt @@ -236,6 +231,7 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI : TurboModule("NativeReactNativeFeatureFlagsCxx", jsInvoker) { methodMap_["commonTestFlag"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_commonTestFlag}; methodMap_["commonTestFlagWithoutNativeImplementation"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_commonTestFlagWithoutNativeImplementation}; + methodMap_["animatedShouldSignalBatch"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_animatedShouldSignalBatch}; methodMap_["disableMountItemReorderingAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_disableMountItemReorderingAndroid}; methodMap_["enableAccumulatedUpdatesInRawPropsAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableAccumulatedUpdatesInRawPropsAndroid}; methodMap_["enableBridgelessArchitecture"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableBridgelessArchitecture}; @@ -251,7 +247,6 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI methodMap_["enableLongTaskAPI"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableLongTaskAPI}; methodMap_["enableNativeCSSParsing"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNativeCSSParsing}; methodMap_["enableNewBackgroundAndBorderDrawables"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableNewBackgroundAndBorderDrawables}; - methodMap_["enablePreciseSchedulingForPremountItemsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePreciseSchedulingForPremountItemsOnAndroid}; methodMap_["enablePropsUpdateReconciliationAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enablePropsUpdateReconciliationAndroid}; methodMap_["enableReportEventPaintTime"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableReportEventPaintTime}; methodMap_["enableSynchronousStateUpdates"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableSynchronousStateUpdates}; @@ -260,7 +255,6 @@ NativeReactNativeFeatureFlagsCxxSpecJSI::NativeReactNativeFeatureFlagsCxxSpecJSI methodMap_["enableViewRecycling"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableViewRecycling}; methodMap_["enableViewRecyclingForText"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableViewRecyclingForText}; methodMap_["enableViewRecyclingForView"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_enableViewRecyclingForView}; - methodMap_["excludeYogaFromRawProps"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_excludeYogaFromRawProps}; methodMap_["fixDifferentiatorEmittingUpdatesWithWrongParentTag"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fixDifferentiatorEmittingUpdatesWithWrongParentTag}; methodMap_["fixMappingOfEventPrioritiesBetweenFabricAndReact"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fixMappingOfEventPrioritiesBetweenFabricAndReact}; methodMap_["fixMountingCoordinatorReportedPendingTransactionsOnAndroid"] = MethodMetadata {0, __hostFunction_NativeReactNativeFeatureFlagsCxxSpecJSI_fixMountingCoordinatorReportedPendingTransactionsOnAndroid}; diff --git a/vnext/codegen/rnwcoreJSI.h b/vnext/codegen/rnwcoreJSI.h index d03a6000dbd..be9d85a1794 100644 --- a/vnext/codegen/rnwcoreJSI.h +++ b/vnext/codegen/rnwcoreJSI.h @@ -22,6 +22,7 @@ namespace facebook::react { public: virtual bool commonTestFlag(jsi::Runtime &rt) = 0; virtual bool commonTestFlagWithoutNativeImplementation(jsi::Runtime &rt) = 0; + virtual bool animatedShouldSignalBatch(jsi::Runtime &rt) = 0; virtual bool disableMountItemReorderingAndroid(jsi::Runtime &rt) = 0; virtual bool enableAccumulatedUpdatesInRawPropsAndroid(jsi::Runtime &rt) = 0; virtual bool enableBridgelessArchitecture(jsi::Runtime &rt) = 0; @@ -37,7 +38,6 @@ namespace facebook::react { virtual bool enableLongTaskAPI(jsi::Runtime &rt) = 0; virtual bool enableNativeCSSParsing(jsi::Runtime &rt) = 0; virtual bool enableNewBackgroundAndBorderDrawables(jsi::Runtime &rt) = 0; - virtual bool enablePreciseSchedulingForPremountItemsOnAndroid(jsi::Runtime &rt) = 0; virtual bool enablePropsUpdateReconciliationAndroid(jsi::Runtime &rt) = 0; virtual bool enableReportEventPaintTime(jsi::Runtime &rt) = 0; virtual bool enableSynchronousStateUpdates(jsi::Runtime &rt) = 0; @@ -46,7 +46,6 @@ namespace facebook::react { virtual bool enableViewRecycling(jsi::Runtime &rt) = 0; virtual bool enableViewRecyclingForText(jsi::Runtime &rt) = 0; virtual bool enableViewRecyclingForView(jsi::Runtime &rt) = 0; - virtual bool excludeYogaFromRawProps(jsi::Runtime &rt) = 0; virtual bool fixDifferentiatorEmittingUpdatesWithWrongParentTag(jsi::Runtime &rt) = 0; virtual bool fixMappingOfEventPrioritiesBetweenFabricAndReact(jsi::Runtime &rt) = 0; virtual bool fixMountingCoordinatorReportedPendingTransactionsOnAndroid(jsi::Runtime &rt) = 0; @@ -110,6 +109,14 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::commonTestFlagWithoutNativeImplementation, jsInvoker_, instance_); } + bool animatedShouldSignalBatch(jsi::Runtime &rt) override { + static_assert( + bridging::getParameterCount(&T::animatedShouldSignalBatch) == 1, + "Expected animatedShouldSignalBatch(...) to have 1 parameters"); + + return bridging::callFromJs( + rt, &T::animatedShouldSignalBatch, jsInvoker_, instance_); + } bool disableMountItemReorderingAndroid(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::disableMountItemReorderingAndroid) == 1, @@ -230,14 +237,6 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::enableNewBackgroundAndBorderDrawables, jsInvoker_, instance_); } - bool enablePreciseSchedulingForPremountItemsOnAndroid(jsi::Runtime &rt) override { - static_assert( - bridging::getParameterCount(&T::enablePreciseSchedulingForPremountItemsOnAndroid) == 1, - "Expected enablePreciseSchedulingForPremountItemsOnAndroid(...) to have 1 parameters"); - - return bridging::callFromJs( - rt, &T::enablePreciseSchedulingForPremountItemsOnAndroid, jsInvoker_, instance_); - } bool enablePropsUpdateReconciliationAndroid(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::enablePropsUpdateReconciliationAndroid) == 1, @@ -302,14 +301,6 @@ class JSI_EXPORT NativeReactNativeFeatureFlagsCxxSpec : public TurboModule { return bridging::callFromJs( rt, &T::enableViewRecyclingForView, jsInvoker_, instance_); } - bool excludeYogaFromRawProps(jsi::Runtime &rt) override { - static_assert( - bridging::getParameterCount(&T::excludeYogaFromRawProps) == 1, - "Expected excludeYogaFromRawProps(...) to have 1 parameters"); - - return bridging::callFromJs( - rt, &T::excludeYogaFromRawProps, jsInvoker_, instance_); - } bool fixDifferentiatorEmittingUpdatesWithWrongParentTag(jsi::Runtime &rt) override { static_assert( bridging::getParameterCount(&T::fixDifferentiatorEmittingUpdatesWithWrongParentTag) == 1, diff --git a/vnext/overrides.json b/vnext/overrides.json index 2c17eb23962..7644472fd40 100644 --- a/vnext/overrides.json +++ b/vnext/overrides.json @@ -8,13 +8,13 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.79.0-nightly-20250303-cee63397b", + "baseVersion": "0.80.0-nightly-20250317-fc7385c1e", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "23e4ec639f146691148b6736f4e84478ae2a5416" + "baseHash": "b8b53bf5315c0b91d0f69c3fe9274797a55b993f" }, { "type": "derived", @@ -44,7 +44,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp", "baseFile": "packages/react-native/ReactCommon/cxxreact/JSExecutor.cpp", - "baseHash": "f6420ce2d56117dc241a9a9dd08b6184fb6b1447", + "baseHash": "eeaefdb8689f30047c3907fbb706c49a43e1cdfa", "issue": 13172 }, { @@ -72,14 +72,14 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.cpp", "baseFile": "packages/react-native/ReactCommon/jsinspector-modern/NetworkIOAgent.cpp", - "baseHash": "a0bea220f9bdcbbe4d1cf0eab62b09f46d88081b", + "baseHash": "a93ab8657c51bd7691b80ad7f909ad232c36dad5", "issue": 13587 }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/jsinspector-modern/NetworkIOAgent.h", "baseFile": "packages/react-native/ReactCommon/jsinspector-modern/NetworkIOAgent.h", - "baseHash": "3575887bdd97425ce5968fc9a45a5ead2463c8f3", + "baseHash": "08efa2256dc40edb4e4f348b85e4c53ca8eb2681", "issue": 13587 }, { @@ -161,7 +161,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/css/CSSTokenizer.h", "baseFile": "packages/react-native/ReactCommon/react/renderer/css/CSSTokenizer.h", - "baseHash": "9690fcea2fdb52334fc96c27db02c43a1b4b98a5", + "baseHash": "b23b75c8666ff6efa7606a3f7c9a3f7806129755", "issue": 14665 }, { @@ -182,7 +182,7 @@ "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp", "baseFile": "packages/react-native/ReactCommon/react/runtime/ReactInstance.cpp", - "baseHash": "651098ef1888fbabab0a70d8e542f46c35d09d7a", + "baseHash": "55c16545281db580d9767455089926aae00c65cb", "issue": 13172 }, { @@ -196,7 +196,7 @@ "type": "derived", "file": "src-win/index.windows.js", "baseFile": "packages/react-native/index.js", - "baseHash": "62b4752ea0e271645cc0fff8b54f2c1167284d43" + "baseHash": "7a10369d15e8b09ef772d8f229cbfc712d074cbf" }, { "type": "platform", @@ -252,7 +252,7 @@ "type": "patch", "file": "src-win/Libraries/Alert/Alert.windows.js", "baseFile": "packages/react-native/Libraries/Alert/Alert.js", - "baseHash": "95ce9fad7e029b50ff6f1598e38aa420660913dc" + "baseHash": "bd8f474e454f2b703ca7fb55cb022f24046bc0f8" }, { "type": "platform", @@ -364,7 +364,7 @@ "type": "patch", "file": "src-win/Libraries/Components/TextInput/TextInput.windows.js", "baseFile": "packages/react-native/Libraries/Components/TextInput/TextInput.js", - "baseHash": "eb047724db45395fe5d6487e269a00a198807eb8" + "baseHash": "f762096a46203b6bae385806087b7b7cb5744f16" }, { "type": "patch", @@ -382,8 +382,7 @@ "type": "patch", "file": "src-win/Libraries/Components/Touchable/Touchable.windows.js", "baseFile": "packages/react-native/Libraries/Components/Touchable/Touchable.js", - "baseHash": "5e13ce3ef1cfeb38a1a9695c3013617527c21175", - "issue": 0 + "baseHash": "5e13ce3ef1cfeb38a1a9695c3013617527c21175" }, { "type": "derived", @@ -511,14 +510,13 @@ "type": "patch", "file": "src-win/Libraries/Modal/Modal.d.ts", "baseFile": "packages/react-native/Libraries/Modal/Modal.d.ts", - "baseHash": "aeebd34b8cccade2637e310a63a1e9a41f149f64", - "issue": 0 + "baseHash": "aeebd34b8cccade2637e310a63a1e9a41f149f64" }, { "type": "derived", "file": "src-win/Libraries/Modal/Modal.windows.js", "baseFile": "packages/react-native/Libraries/Modal/Modal.js", - "baseHash": "c3936520f4d839c5cd5ede287c0c41a7427286c6" + "baseHash": "dab3191508232552315a5326970bd8d2c7f25e55" }, { "type": "derived", @@ -634,12 +632,17 @@ "baseFile": "packages/react-native/src/private/debugging/ReactDevToolsSettingsManager.android.js", "baseHash": "1e0309d141da6c7a6a9afa571aae831ca221bbe2" }, + { + "type": "patch", + "file": "src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js", + "baseFile": "packages/react-native/src/private/featureflags/ReactNativeFeatureFlagsBase.js", + "baseHash": "32823af7188e2935b7fbf1cb368ab9ad94b38d4f" + }, { "type": "patch", "file": "src-win/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js", "baseFile": "packages/react-native/src/private/specs_DEPRECATED/components/RCTModalHostViewNativeComponent.js", - "baseHash": "b68cd3eb3257f988de7a238ebd5e6424769531a7", - "issue": 0 + "baseHash": "b68cd3eb3257f988de7a238ebd5e6424769531a7" }, { "type": "platform", diff --git a/vnext/package.json b/vnext/package.json index e5c5272a669..f5016c3fbb1 100644 --- a/vnext/package.json +++ b/vnext/package.json @@ -23,18 +23,18 @@ "dependencies": { "@babel/runtime": "^7.0.0", "@jest/create-cache-key-function": "^29.7.0", - "@react-native-community/cli": "15.0.0-alpha.2", - "@react-native-community/cli-platform-android": "15.0.0-alpha.2", - "@react-native-community/cli-platform-ios": "15.0.0-alpha.2", + "@react-native-community/cli": "17.0.0", + "@react-native-community/cli-platform-android": "17.0.0", + "@react-native-community/cli-platform-ios": "17.0.0", "@react-native-windows/cli": "0.0.0-canary.265", "@react-native/assets": "1.0.0", - "@react-native/assets-registry": "0.79.0-nightly-20250303-cee63397b", - "@react-native/codegen": "0.79.0-nightly-20250303-cee63397b", - "@react-native/community-cli-plugin": "0.79.0-nightly-20250303-cee63397b", - "@react-native/gradle-plugin": "0.79.0-nightly-20250303-cee63397b", - "@react-native/js-polyfills": "0.79.0-nightly-20250303-cee63397b", - "@react-native/normalize-colors": "0.79.0-nightly-20250303-cee63397b", - "@react-native/virtualized-lists": "0.79.0-nightly-20250303-cee63397b", + "@react-native/assets-registry": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/codegen": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/community-cli-plugin": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/gradle-plugin": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/js-polyfills": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/normalize-colors": "0.80.0-nightly-20250317-fc7385c1e", + "@react-native/virtualized-lists": "0.80.0-nightly-20250317-fc7385c1e", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -49,8 +49,8 @@ "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", - "metro-runtime": "^0.81.0", - "metro-source-map": "^0.81.0", + "metro-runtime": "^0.82.0", + "metro-source-map": "^0.82.0", "mkdirp": "^0.5.1", "nullthrows": "^1.1.1", "pretty-format": "^29.7.0", @@ -68,7 +68,7 @@ }, "devDependencies": { "@react-native-windows/codegen": "0.0.0-canary.123", - "@react-native/metro-config": "0.79.0-nightly-20250303-cee63397b", + "@react-native/metro-config": "0.80.0-nightly-20250317-fc7385c1e", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.36", "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.40", @@ -83,7 +83,7 @@ "just-scripts": "^1.3.3", "prettier": "2.8.8", "react": "19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b", + "react-native": "0.80.0-nightly-20250317-fc7385c1e", "react-native-platform-override": "^1.9.55", "react-refresh": "^0.14.0", "typescript": "5.0.4" @@ -91,7 +91,7 @@ "peerDependencies": { "@types/react": "^19.0.0", "react": "^19.0.0", - "react-native": "0.79.0-nightly-20250303-cee63397b" + "react-native": "0.80.0-nightly-20250317-fc7385c1e" }, "beachball": { "defaultNpmTag": "canary", @@ -150,4 +150,4 @@ "engines": { "node": ">= 18" } -} +} \ No newline at end of file diff --git a/vnext/src-win/Libraries/Alert/Alert.windows.js b/vnext/src-win/Libraries/Alert/Alert.windows.js index 9c4c379c78d..e9d0cf7bf12 100644 --- a/vnext/src-win/Libraries/Alert/Alert.windows.js +++ b/vnext/src-win/Libraries/Alert/Alert.windows.js @@ -116,12 +116,15 @@ class Alert { if (action === constants.buttonClicked) { if (buttonKey === constants.buttonNeutral) { // $FlowFixMe[incompatible-type] + // $FlowFixMe[incompatible-use] buttonNeutral.onPress && buttonNeutral.onPress(); } else if (buttonKey === constants.buttonNegative) { // $FlowFixMe[incompatible-type] + // $FlowFixMe[incompatible-use] buttonNegative.onPress && buttonNegative.onPress(); } else if (buttonKey === constants.buttonPositive) { // $FlowFixMe[incompatible-type] + // $FlowFixMe[incompatible-use] buttonPositive.onPress && buttonPositive.onPress(); } } else if (action === constants.dismissed) { diff --git a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js index aa9bd400b9e..78cc5a2aba2 100644 --- a/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js +++ b/vnext/src-win/Libraries/Components/TextInput/TextInput.windows.js @@ -20,7 +20,6 @@ import type { import type {TextInputInstance, TextInputType} from './TextInput.flow'; import type {HandledKeyboardEvent, ViewProps} from '../View/ViewPropTypes'; -import * as ReactNativeFeatureFlags from '../../../src/private/featureflags/ReactNativeFeatureFlags'; import usePressability from '../../Pressability/usePressability'; import flattenStyle from '../../StyleSheet/flattenStyle'; import StyleSheet, { @@ -70,6 +69,9 @@ else if (Platform.OS === 'windows') { } // Windows] +/** + * @see TextInputProps.onChange + */ export type TextInputChangeEventData = $ReadOnly<{ eventCount: number, target: number, @@ -92,6 +94,9 @@ export type TextInputEvent = NativeSyntheticEvent< }>, >; +/** + * @see TextInputProps.onContentSizeChange + */ export type TextInputContentSizeChangeEventData = $ReadOnly<{ target: number, contentSize: $ReadOnly<{ @@ -107,16 +112,29 @@ export type TargetEvent = $ReadOnly<{ target: number, }>; +/** + * @see TextInputProps.onFocus + */ export type TextInputFocusEventData = TargetEvent; export type TextInputBlurEvent = NativeSyntheticEvent; export type TextInputFocusEvent = NativeSyntheticEvent; +/** + * @see TextInputProps.onScroll + */ +export type TextInputScrollEventData = { + contentOffset: {x: number, y: number}, +}; + type Selection = $ReadOnly<{ start: number, end: number, }>; +/** + * @see TextInputProps.onSelectionChange + */ export type TextInputSelectionChangeEventData = $ReadOnly<{ ...TargetEvent, selection: Selection, @@ -125,7 +143,10 @@ export type TextInputSelectionChangeEventData = $ReadOnly<{ export type TextInputSelectionChangeEvent = NativeSyntheticEvent; -type TextInputKeyPressEventData = $ReadOnly<{ +/** + * @see TextInputProps.onKeyPress + */ +export type TextInputKeyPressEventData = $ReadOnly<{ ...TargetEvent, key: string, target?: ?number, @@ -135,12 +156,30 @@ type TextInputKeyPressEventData = $ReadOnly<{ export type TextInputKeyPressEvent = NativeSyntheticEvent; +/** + * @see TextInputProps.onEndEditing + */ export type TextInputEndEditingEventData = $ReadOnly<{ ...TargetEvent, eventCount: number, text: string, }>; +export type TextInputEndEditingEvent = + NativeSyntheticEvent; + +/** + * @see TextInputProps.onSubmitEditing + */ +export type TextInputSubmitEditingEventData = $ReadOnly<{ + ...TargetEvent, + eventCount: number, + text: string, +}>; + +export type TextInputSubmitEditingEvent = + NativeSyntheticEvent; + export type TextInputEditingEvent = NativeSyntheticEvent; @@ -428,6 +467,21 @@ export type TextInputAndroidProps = $ReadOnly<{ */ disableFullscreenUI?: ?boolean, + /** + * Determines whether the individual fields in your app should be included in a + * view structure for autofill purposes on Android API Level 26+. Defaults to auto. + * To disable auto complete, use `off`. + * + * *Android Only* + * + * The following values work on Android only: + * + * - `auto` - let Android decide + * - `no` - not important for autofill + * - `noExcludeDescendants` - this view and its children aren't important for autofill + * - `yes` - is important for autofill + * - `yesExcludeDescendants` - this view is important for autofill but its children aren't + */ importantForAutofill?: ?( | 'auto' | 'no' @@ -554,12 +608,7 @@ type TextInputWindowsProps = $ReadOnly<{| // Windows] -export type TextInputProps = $ReadOnly<{ - ...$Diff>, - ...TextInputIOSProps, - ...TextInputAndroidProps, - ...TextInputWindowsProps, // [Windows] - +type TextInputBaseProps = $ReadOnly<{ /** * String to be read by screenreaders to indicate an error state. The acceptable parameters * of accessibilityErrorMessage is a string. Setting accessibilityInvalid to true activates @@ -869,7 +918,7 @@ export type TextInputProps = $ReadOnly<{ /** * Callback that is called when text input ends. */ - onEndEditing?: ?(e: TextInputEditingEvent) => mixed, + onEndEditing?: ?(e: TextInputEndEditingEvent) => mixed, /** * Callback that is called when the text input is focused. @@ -911,7 +960,7 @@ export type TextInputProps = $ReadOnly<{ * Callback that is called when the text input's submit button is pressed. * Invalid if `multiline={true}` is specified. */ - onSubmitEditing?: ?(e: TextInputEditingEvent) => mixed, + onSubmitEditing?: ?(e: TextInputSubmitEditingEvent) => mixed, /** * Invoked on content scroll with `{ nativeEvent: { contentOffset: { x, y } } }`. @@ -992,7 +1041,9 @@ export type TextInputProps = $ReadOnly<{ selectionColor?: ?ColorValue, /** - * The text selection handle color. + * When provided it will set the color of the selection handles when highlighting text. + * Unlike the behavior of `selectionColor` the handle color will be set independently + * from the color of the text selection box. * @platform android */ selectionHandleColor?: ?ColorValue, @@ -1067,6 +1118,43 @@ export type TextInputProps = $ReadOnly<{ value?: ?Stringish, }>; +export type TextInputProps = $ReadOnly<{ + ...$Diff>, + ...TextInputIOSProps, + ...TextInputAndroidProps, + ...TextInputBaseProps, + ...TextInputWindowsProps, // [Windows] +}>; + +type TextInputStateType = $ReadOnly<{ + /** + * @deprecated Use currentlyFocusedInput + * Returns the ID of the currently focused text field, if one exists + * If no text field is focused it returns null + */ + currentlyFocusedField: () => ?number, + + /** + * Returns the ref of the currently focused text field, if one exists + * If no text field is focused it returns null + */ + currentlyFocusedInput: () => ?HostInstance, + + /** + * @param textField ref of the text field to focus + * Focuses the specified text field + * noop if the text field was already focused + */ + focusTextInput: (textField: ?HostInstance) => void, + + /** + * @param textField ref of the text field to focus + * Unfocuses the specified text field + * noop if it wasn't focused + */ + blurTextInput: (textField: ?HostInstance) => void, +}>; + type ViewCommands = $NonMaybeType< | typeof AndroidTextInputCommands | typeof RCTMultilineTextInputNativeCommands @@ -1085,7 +1173,7 @@ const emptyFunctionThatReturnsTrue = () => true; * in native and in JavaScript. This is necessary due to the asynchronous nature * of text input events. */ -function useTextInputStateSynchronization_STATE({ +function useTextInputStateSynchronization({ props, mostRecentEventCount, selection, @@ -1161,94 +1249,6 @@ function useTextInputStateSynchronization_STATE({ return {setLastNativeText, setLastNativeSelection}; } -/** - * This hook handles the synchronization between the state of the text input - * in native and in JavaScript. This is necessary due to the asynchronous nature - * of text input events. - */ -function useTextInputStateSynchronization_REFS({ - props, - mostRecentEventCount, - selection, - inputRef, - text, - viewCommands, -}: { - props: TextInputProps, - mostRecentEventCount: number, - selection: ?Selection, - inputRef: React.RefObject, - text?: string, - viewCommands: ViewCommands, -}): { - setLastNativeText: string => void, - setLastNativeSelection: LastNativeSelection => void, -} { - const lastNativeTextRef = useRef(props.value); - const lastNativeSelectionRef = useRef({ - selection: {start: -1, end: -1}, - mostRecentEventCount: mostRecentEventCount, - }); - - // This is necessary in case native updates the text and JS decides - // that the update should be ignored and we should stick with the value - // that we have in JS. - useLayoutEffect(() => { - const nativeUpdate: {text?: string, selection?: Selection} = {}; - - const lastNativeSelection = lastNativeSelectionRef.current.selection; - - if ( - lastNativeTextRef.current !== props.value && - typeof props.value === 'string' - ) { - nativeUpdate.text = props.value; - lastNativeTextRef.current = props.value; - } - - if ( - selection && - lastNativeSelection && - (lastNativeSelection.start !== selection.start || - lastNativeSelection.end !== selection.end) - ) { - nativeUpdate.selection = selection; - lastNativeSelectionRef.current = {selection, mostRecentEventCount}; - } - - if (Object.keys(nativeUpdate).length === 0) { - return; - } - - if (inputRef.current != null) { - viewCommands.setTextAndSelection( - inputRef.current, - mostRecentEventCount, - text, - selection?.start ?? -1, - selection?.end ?? -1, - ); - } - }, [ - mostRecentEventCount, - inputRef, - props.value, - props.defaultValue, - selection, - text, - viewCommands, - ]); - - return { - setLastNativeText: lastNativeText => { - lastNativeTextRef.current = lastNativeText; - }, - setLastNativeSelection: lastNativeSelection => { - lastNativeSelectionRef.current = lastNativeSelection; - }, - }; -} - /** * A foundational component for inputting text into the app via a * keyboard. Props provide configurability for several features, such as @@ -1411,10 +1411,6 @@ function InternalTextInput(props: TextInputProps): React.Node { : RCTSinglelineTextInputNativeCommands); const [mostRecentEventCount, setMostRecentEventCount] = useState(0); - const useTextInputStateSynchronization = - ReactNativeFeatureFlags.useRefsForTextInputState() - ? useTextInputStateSynchronization_REFS - : useTextInputStateSynchronization_STATE; const {setLastNativeText, setLastNativeSelection} = useTextInputStateSynchronization({ props, @@ -2014,7 +2010,7 @@ const autoCompleteWebToTextContentTypeMap = { }; const ExportedForwardRef: component( - ref: React.RefSetter, + ref?: React.RefSetter, ...props: React.ElementConfig ) = React.forwardRef(function TextInput( { @@ -2085,12 +2081,7 @@ ExportedForwardRef.State = { }; export type TextInputComponentStatics = $ReadOnly<{ - State: $ReadOnly<{ - currentlyFocusedInput: typeof TextInputState.currentlyFocusedInput, - currentlyFocusedField: typeof TextInputState.currentlyFocusedField, - focusTextInput: typeof TextInputState.focusTextInput, - blurTextInput: typeof TextInputState.blurTextInput, - }>, + State: TextInputStateType, }>; const styles = StyleSheet.create({ diff --git a/vnext/src-win/Libraries/Modal/Modal.windows.js b/vnext/src-win/Libraries/Modal/Modal.windows.js index 2030dedc8e7..26f0be2a9c7 100644 --- a/vnext/src-win/Libraries/Modal/Modal.windows.js +++ b/vnext/src-win/Libraries/Modal/Modal.windows.js @@ -8,6 +8,7 @@ * @flow strict-local */ +import type {HostInstance} from '../../src/private/types/HostInstance'; import type {ViewProps} from '../Components/View/ViewPropTypes'; import type {RootTag} from '../ReactNative/RootTag'; import type {DirectEventHandler} from '../Types/CodegenTypes'; @@ -15,7 +16,6 @@ import type {DirectEventHandler} from '../Types/CodegenTypes'; import NativeEventEmitter from '../EventEmitter/NativeEventEmitter'; import {type ColorValue} from '../StyleSheet/StyleSheet'; import {type EventSubscription} from '../vendor/emitter/EventEmitter'; -import ModalInjection from './ModalInjection'; import NativeModalManager from './NativeModalManager'; import RCTModalHostView from './RCTModalHostViewNativeComponent'; import VirtualizedLists from '@react-native/virtualized-lists'; @@ -36,6 +36,8 @@ type ModalEventDefinitions = { modalDismissed: [{modalID: number}], }; +export type PublicModalInstance = HostInstance; + const ModalEventEmitter = (Platform.OS === 'ios' || Platform.OS === 'windows') && // [Windows] NativeModalManager != null @@ -104,6 +106,11 @@ export type ModalBaseProps = { * Defaults to `white` if not provided and transparent is `false`. Ignored if `transparent` is `true`. */ backdropColor?: ColorValue, + + /** + * A ref to the native Modal component. + */ + modalRef?: React.RefSetter, }; export type ModalPropsIOS = { @@ -321,6 +328,7 @@ class Modal extends React.Component { onRequestClose={this.props.onRequestClose} onShow={this.props.onShow} onDismiss={onDismiss} + ref={this.props.modalRef} visible={this.props.visible} statusBarTranslucent={this.props.statusBarTranslucent} navigationBarTranslucent={this.props.navigationBarTranslucent} @@ -368,10 +376,25 @@ const styles = StyleSheet.create({ }, }); -// $FlowFixMe[prop-missing] -const ExportedModal: React.AbstractComponent< - React.ElementConfig, - // $FlowFixMe[incompatible-type-arg] -> = ModalInjection.unstable_Modal ?? Modal; +type ModalRefProps = $ReadOnly<{ + ref?: React.RefSetter, +}>; + +// NOTE: This wrapper component is necessary because `Modal` is a class +// component and we need to map `ref` to a differently named prop. This can be +// removed when `Modal` is a functional component. +function Wrapper({ + ref, + ...props +}: { + ...ModalRefProps, + ...ModalProps, +}): React.Node { + return ; +} + +Wrapper.displayName = 'Modal'; +// $FlowExpectedError[prop-missing] +Wrapper.Context = VirtualizedListContextResetter; -export default ExportedModal; +export default Wrapper; diff --git a/vnext/src-win/index.windows.js b/vnext/src-win/index.windows.js index 43bcc600df9..15bc5fac189 100644 --- a/vnext/src-win/index.windows.js +++ b/vnext/src-win/index.windows.js @@ -23,6 +23,8 @@ import typeof Easing from './Libraries/Animated/Easing'; import typeof useAnimatedValue from './Libraries/Animated/useAnimatedValue'; import typeof AppState from './Libraries/AppState/AppState'; import typeof NativeModules from './Libraries/BatchedBridge/NativeModules'; +import typeof codegenNativeCommands from './Libraries/Utilities/codegenNativeCommands'; +import typeof codegenNativeComponent from './Libraries/Utilities/codegenNativeComponent'; // Components import typeof AccessibilityInfo from './Libraries/Components/AccessibilityInfo/AccessibilityInfo'; import typeof ActivityIndicator from './Libraries/Components/ActivityIndicator/ActivityIndicator'; @@ -51,7 +53,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 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'; @@ -73,7 +75,7 @@ import typeof Networking from './Libraries/Network/RCTNetworking'; import typeof * as Systrace from './Libraries/Performance/Systrace'; import typeof PermissionsAndroid from './Libraries/PermissionsAndroid/PermissionsAndroid'; import typeof PushNotificationIOS from './Libraries/PushNotificationIOS/PushNotificationIOS'; -import typeof AppRegistry from './Libraries/ReactNative/AppRegistry'; +import typeof {AppRegistry} from './Libraries/ReactNative/AppRegistry'; import typeof I18nManager from './Libraries/ReactNative/I18nManager'; import typeof {RootTagContext} from './Libraries/ReactNative/RootTag'; import typeof UIManager from './Libraries/ReactNative/UIManager'; @@ -109,14 +111,7 @@ const warnOnce = require('./Libraries/Utilities/warnOnce').default; const invariant = require('invariant'); module.exports = { - get registerCallableModule(): RegisterCallableModule { - return require('./Libraries/Core/registerCallableModule').default; - }, - // Components - get AccessibilityInfo(): AccessibilityInfo { - return require('./Libraries/Components/AccessibilityInfo/AccessibilityInfo') - .default; - }, + // #region Components get ActivityIndicator(): ActivityIndicator { return require('./Libraries/Components/ActivityIndicator/ActivityIndicator') .default; @@ -142,14 +137,14 @@ module.exports = { return require('./Libraries/Components/TextInput/InputAccessoryView') .default; }, - get experimental_LayoutConformance(): LayoutConformance { - return require('./Libraries/Components/LayoutConformance/LayoutConformance') - .default; - }, get KeyboardAvoidingView(): KeyboardAvoidingView { return require('./Libraries/Components/Keyboard/KeyboardAvoidingView') .default; }, + get experimental_LayoutConformance(): LayoutConformance { + return require('./Libraries/Components/LayoutConformance/LayoutConformance') + .default; + }, get Modal(): Modal { return require('./Libraries/Modal/Modal').default; }, @@ -219,8 +214,12 @@ module.exports = { get VirtualizedSectionList(): VirtualizedSectionList { return require('./Libraries/Lists/VirtualizedSectionList').default; }, - - // APIs + // #endregion + // #region APIs + get AccessibilityInfo(): AccessibilityInfo { + return require('./Libraries/Components/AccessibilityInfo/AccessibilityInfo') + .default; + }, get ActionSheetIOS(): ActionSheetIOS { return require('./Libraries/ActionSheetIOS/ActionSheetIOS').default; }, @@ -236,7 +235,7 @@ module.exports = { return require('./Libraries/Utilities/Appearance'); }, get AppRegistry(): AppRegistry { - return require('./Libraries/ReactNative/AppRegistry').default; + return require('./Libraries/ReactNative/AppRegistry').AppRegistry; }, get AppState(): AppState { return require('./Libraries/AppState/AppState').default; @@ -253,6 +252,15 @@ module.exports = { ); return require('./Libraries/Components/Clipboard/Clipboard').default; }, + get codegenNativeCommands(): codegenNativeCommands { + return require('./Libraries/Utilities/codegenNativeCommands').default; + }, + get codegenNativeComponent(): codegenNativeComponent { + return require('./Libraries/Utilities/codegenNativeComponent').default; + }, + get DeviceEventEmitter(): RCTDeviceEventEmitter { + return require('./Libraries/EventEmitter/RCTDeviceEventEmitter').default; + }, get DeviceInfo(): DeviceInfo { return require('./Libraries/Utilities/DeviceInfo').default; }, @@ -265,6 +273,10 @@ module.exports = { get Dimensions(): Dimensions { return require('./Libraries/Utilities/Dimensions').default; }, + get DynamicColorIOS(): DynamicColorIOS { + return require('./Libraries/StyleSheet/PlatformColorValueTypesIOS') + .DynamicColorIOS; + }, get Easing(): Easing { return require('./Libraries/Animated/Easing').default; }, @@ -289,6 +301,9 @@ module.exports = { get LogBox(): LogBox { return require('./Libraries/LogBox/LogBox').default; }, + get NativeAppEventEmitter(): RCTNativeAppEventEmitter { + return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; + }, get NativeDialogManagerAndroid(): NativeDialogManagerAndroid { return require('./Libraries/NativeModules/specs/NativeDialogManagerAndroid') .default; @@ -296,6 +311,9 @@ module.exports = { get NativeEventEmitter(): NativeEventEmitter { return require('./Libraries/EventEmitter/NativeEventEmitter').default; }, + get NativeModules(): NativeModules { + return require('./Libraries/BatchedBridge/NativeModules').default; + }, get Networking(): Networking { return require('./Libraries/Network/RCTNetworking').default; }, @@ -308,6 +326,13 @@ module.exports = { get PixelRatio(): PixelRatio { return require('./Libraries/Utilities/PixelRatio').default; }, + get Platform(): Platform { + return require('./Libraries/Utilities/Platform').default; + }, + get PlatformColor(): PlatformColor { + return require('./Libraries/StyleSheet/PlatformColorValueTypes') + .PlatformColor; + }, get PushNotificationIOS(): PushNotificationIOS { warnOnce( 'pushNotificationIOS-moved', @@ -318,6 +343,20 @@ module.exports = { return require('./Libraries/PushNotificationIOS/PushNotificationIOS') .default; }, + get processColor(): processColor { + return require('./Libraries/StyleSheet/processColor').default; + }, + get registerCallableModule(): registerCallableModule { + return require('./Libraries/Core/registerCallableModule').default; + }, + get requireNativeComponent(): ( + uiViewClassName: string, + ) => HostComponent { + return require('./Libraries/ReactNative/requireNativeComponent').default; + }, + get RootTagContext(): RootTagContext { + return require('./Libraries/ReactNative/RootTag').RootTagContext; + }, get Settings(): Settings { return require('./Libraries/Settings/Settings').default; }, @@ -347,6 +386,12 @@ module.exports = { return require('./Libraries/ReactNative/RendererProxy') .unstable_batchedUpdates; }, + get unstable_enableLogBox(): () => void { + return () => + console.warn( + 'LogBox is enabled by default so there is no need to call unstable_enableLogBox() anymore. This is a no op and will be removed in the next version.', + ); + }, get useAnimatedValue(): useAnimatedValue { return require('./Libraries/Animated/useAnimatedValue').default; }, @@ -363,45 +408,6 @@ module.exports = { return require('./Libraries/Vibration/Vibration').default; }, - // Plugins - get DeviceEventEmitter(): RCTDeviceEventEmitter { - return require('./Libraries/EventEmitter/RCTDeviceEventEmitter').default; - }, - get DynamicColorIOS(): DynamicColorIOS { - return require('./Libraries/StyleSheet/PlatformColorValueTypesIOS') - .DynamicColorIOS; - }, - get NativeAppEventEmitter(): RCTNativeAppEventEmitter { - return require('./Libraries/EventEmitter/RCTNativeAppEventEmitter').default; - }, - get NativeModules(): NativeModules { - return require('./Libraries/BatchedBridge/NativeModules').default; - }, - get Platform(): Platform { - return require('./Libraries/Utilities/Platform').default; - }, - get PlatformColor(): PlatformColor { - return require('./Libraries/StyleSheet/PlatformColorValueTypes') - .PlatformColor; - }, - get processColor(): processColor { - return require('./Libraries/StyleSheet/processColor').default; - }, - get requireNativeComponent(): ( - uiViewClassName: string, - ) => HostComponent { - return require('./Libraries/ReactNative/requireNativeComponent').default; - }, - get RootTagContext(): RootTagContext { - return require('./Libraries/ReactNative/RootTag').RootTagContext; - }, - get unstable_enableLogBox(): () => void { - return () => - console.warn( - 'LogBox is enabled by default so there is no need to call unstable_enableLogBox() anymore. This is a no op and will be removed in the next version.', - ); - }, - // Additional windows exports (Typescript components exported as flow any) get DatePicker(): any { invariant( diff --git a/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js b/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js new file mode 100644 index 00000000000..fa942d44b74 --- /dev/null +++ b/vnext/src-win/src/private/featureflags/ReactNativeFeatureFlagsBase.js @@ -0,0 +1,118 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @flow strict + * @format + */ + +import type { + ReactNativeFeatureFlagsJsOnly, + ReactNativeFeatureFlagsJsOnlyOverrides, +} from './ReactNativeFeatureFlags'; + +import NativeReactNativeFeatureFlags from './specs/NativeReactNativeFeatureFlags'; + +const accessedFeatureFlags: Set = new Set(); +let overrides: ?ReactNativeFeatureFlagsJsOnlyOverrides; + +export type Getter = () => T; + +// This defines the types for the overrides object, whose methods also receive +// the default value as a parameter. +export type OverridesFor = Partial<{ + [key in keyof T]: (ReturnType) => ReturnType, +}>; + +function createGetter( + configName: string, + customValueGetter: Getter, + defaultValue: T, +): Getter { + let cachedValue: ?T; + + return () => { + if (cachedValue == null) { + cachedValue = customValueGetter() ?? defaultValue; + } + return cachedValue; + }; +} + +export function createJavaScriptFlagGetter< + K: $Keys, +>( + configName: K, + defaultValue: ReturnType, +): Getter> { + return createGetter( + configName, + () => { + accessedFeatureFlags.add(configName); + return overrides?.[configName]?.(defaultValue); + }, + defaultValue, + ); +} + +type NativeFeatureFlags = $NonMaybeType; + +export function createNativeFlagGetter>( + configName: K, + defaultValue: ReturnType<$NonMaybeType>, + skipUnavailableNativeModuleError: boolean = false, +): Getter>> { + return createGetter( + configName, + () => { + maybeLogUnavailableNativeModuleError(configName); + return NativeReactNativeFeatureFlags?.[configName]?.(); + }, + defaultValue, + ); +} + +export function getOverrides(): ?ReactNativeFeatureFlagsJsOnlyOverrides { + return overrides; +} + +export function setOverrides( + newOverrides: ReactNativeFeatureFlagsJsOnlyOverrides, +): void { + if (overrides != null) { + throw new Error('Feature flags cannot be overridden more than once'); + } + + if (accessedFeatureFlags.size > 0) { + const accessedFeatureFlagsStr = Array.from(accessedFeatureFlags).join(', '); + throw new Error( + `Feature flags were accessed before being overridden: ${accessedFeatureFlagsStr}`, + ); + } + + overrides = newOverrides; +} + +const reportedConfigNames: Set = new Set(); +const hasTurboModules = + global.RN$Bridgeless === true || global.__turboModuleProxy != null; + +const isFabric = global.nativeFabricUIManager; // [Windows] + +function maybeLogUnavailableNativeModuleError(configName: string): void { + if ( + !NativeReactNativeFeatureFlags && + // Don't log more than once per config + !reportedConfigNames.has(configName) && + // Don't log in the legacy architecture. + hasTurboModules && + isFabric // [Windows] - condition still yields true for legacy apps on Windows, must add UIManager check + ) { + reportedConfigNames.add(configName); + console.error( + `Could not access feature flag '${configName}' because native module method was not available`, + ); + } +} diff --git a/vnext/stubs/double-conversion/double-conversion.h b/vnext/stubs/double-conversion/double-conversion.h index 4c91cf68cb8..df66e9160d2 100644 --- a/vnext/stubs/double-conversion/double-conversion.h +++ b/vnext/stubs/double-conversion/double-conversion.h @@ -25,9 +25,11 @@ class StringBuilder { return m_ss.str().length(); } - void Finalize() { + char *Finalize() { std::string str = m_ss.str(); memcpy(m_buffer, str.c_str(), str.length()); + m_buffer[str.length()] = '\0'; // IMPORTANT: Add null terminator + return m_buffer; // Returns char* that will convert to std::string } char *m_buffer; diff --git a/yarn.lock b/yarn.lock index 30b99d76022..83cf5351836 100644 --- a/yarn.lock +++ b/yarn.lock @@ -55,7 +55,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.5.tgz#7d0658ec1a8420fc866d1df1b03bea0e79934c82" integrity sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg== -"@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.22.0", "@babel/core@^7.23.9", "@babel/core@^7.24.7", "@babel/core@^7.25.2": +"@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.22.0", "@babel/core@^7.23.9", "@babel/core@^7.25.2": version "7.27.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.4.tgz#cc1fc55d0ce140a1828d1dd2a2eba285adbfb3ce" integrity sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g== @@ -311,7 +311,7 @@ "@babel/template" "^7.27.2" "@babel/types" "^7.27.3" -"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7", "@babel/parser@^7.25.3", "@babel/parser@^7.25.9", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.25.9", "@babel/parser@^7.27.2", "@babel/parser@^7.27.4", "@babel/parser@^7.27.5": version "7.27.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.5.tgz#ed22f871f110aa285a6fd934a0efed621d118826" integrity sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg== @@ -603,7 +603,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-class-properties@^7.24.7", "@babel/plugin-transform-class-properties@^7.25.4", "@babel/plugin-transform-class-properties@^7.27.1": +"@babel/plugin-transform-class-properties@^7.25.4", "@babel/plugin-transform-class-properties@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== @@ -751,7 +751,7 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8", "@babel/plugin-transform-modules-commonjs@^7.27.1": +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.8", "@babel/plugin-transform-modules-commonjs@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== @@ -831,7 +831,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8", "@babel/plugin-transform-optional-chaining@^7.27.1": +"@babel/plugin-transform-optional-chaining@^7.24.8", "@babel/plugin-transform-optional-chaining@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== @@ -1118,17 +1118,6 @@ "@babel/plugin-transform-modules-commonjs" "^7.27.1" "@babel/plugin-transform-typescript" "^7.27.1" -"@babel/register@7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939" - integrity sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - "@babel/register@^7.13.16", "@babel/register@^7.24.6": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.25.9.tgz#1c465acf7dc983d70ccc318eb5b887ecb04f021b" @@ -1512,7 +1501,7 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/create-cache-key-function@^29.2.1", "@jest/create-cache-key-function@^29.6.3", "@jest/create-cache-key-function@^29.7.0": +"@jest/create-cache-key-function@^29.2.1", "@jest/create-cache-key-function@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== @@ -1949,11 +1938,6 @@ dependencies: "@octokit/openapi-types" "^12.11.0" -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - "@puppeteer/browsers@2.4.1": version "2.4.1" resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.4.1.tgz#7afd271199cc920ece2ff25109278be0a3e8a225" @@ -1987,45 +1971,58 @@ optionalDependencies: npmlog "2 || ^3.1.0 || ^4.0.0" -"@react-native-community/cli-clean@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-15.0.0-alpha.2.tgz#c6598086cd1432deaa2bed82f6d2833feb112091" - integrity sha512-QNq5lZpoxGHIneKBB1S8hSpvgFYGST7CP1GWrgrmOaIieNFsh2oWhTePzGyxUgxr0i0qzolmWwuwqqyIPMUSyQ== +"@react-native-community/cli-clean@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-17.0.0.tgz#f2c12dedc4a400ed51fbb7c6953f1ae5ae85b7ed" + integrity sha512-mQUdUDYmQ/1FeYh+bQHsflmWPXqBrxe7ixvEhUFhbYocnM8nkYHrSnq8W8V4+8C7I/3jP2VUk4q1SSxFUqk3KA== + dependencies: + "@react-native-community/cli-tools" "17.0.0" + chalk "^4.1.2" + execa "^5.0.0" + fast-glob "^3.3.2" + +"@react-native-community/cli-config-android@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config-android/-/cli-config-android-17.0.0.tgz#e361124de00d7b4e0cdea68570806fc27760257b" + integrity sha512-XwWgcjvpjhqeUQrs04UCmmVLLMHBpsXE+CfjgGK/BPtMsaD76N5OvD94WlbQs0okVYmGngOudoE9XFb5wcnHrA== + dependencies: + "@react-native-community/cli-tools" "17.0.0" + chalk "^4.1.2" + fast-glob "^3.3.2" + fast-xml-parser "^4.4.1" + +"@react-native-community/cli-config-apple@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config-apple/-/cli-config-apple-17.0.0.tgz#1fac39d2aa0df21016fd1b494bb04141c5ac4934" + integrity sha512-eMVe4aK2fsS0PcSWx7eI5snLP6J+N6jS4v625F+6K9GRzmxHF7cMFk3feFEmjreQxQm84OeZrJwnRnqhbnImIg== dependencies: - "@react-native-community/cli-tools" "15.0.0-alpha.2" + "@react-native-community/cli-tools" "17.0.0" chalk "^4.1.2" execa "^5.0.0" fast-glob "^3.3.2" -"@react-native-community/cli-config@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-15.0.0-alpha.2.tgz#fe535e9174593041ec0c8e6abbb9cb4127195315" - integrity sha512-gkmVP7s5sR74HOz2unPsRdNTEmwQyzpeEcB2OI3g35WAyccpYO7OpmpE1PlQ0O9qKdQlQJKbL7fq2DhqswVAdg== +"@react-native-community/cli-config@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-17.0.0.tgz#bc91bdc09ae625699af5f8b06b9a6faa53b2f0ca" + integrity sha512-/Wb5zNmcdY4JzHKlHUqyDRXApFYCzxdi7CUIdIFOEaRaUYoKYtp0fUq2Y+US89phLMBO8x5s2IHc6dlFnaErGg== dependencies: - "@react-native-community/cli-tools" "15.0.0-alpha.2" + "@react-native-community/cli-tools" "17.0.0" chalk "^4.1.2" cosmiconfig "^9.0.0" deepmerge "^4.3.0" fast-glob "^3.3.2" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-15.0.0-alpha.2.tgz#8ee14142c270c83fb5072050cad4f97e99ec5e5a" - integrity sha512-odOFpsOgbCc2si2+D16eyeY4h4u3qu12XssRGV8VqvhKLh0khQ/wA6y01/1ghy1sA0Pus1LyBwFEix6X3epXBw== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-doctor@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-15.0.0-alpha.2.tgz#d83c4146111c5f3c2e2468d6cdcb4e76ed0e4e37" - integrity sha512-kcBwSUMmD0AGP+kvlxTkzGlMLxOqCZIJ6pBbpnTPAhSjYrvYzHNZTTYqeggcACR7mlERot0t6tJvXeGHP1s59g== +"@react-native-community/cli-doctor@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-17.0.0.tgz#520e29d813e3772cdcd2534b27f9d422556f4f13" + integrity sha512-EqzjvVm1h9qf9iL8qxWxIcgSq3X2me6N8UN/oT9apSspf8QbWu2xTQQT2kHibFt37FTUsK/v3VgPKcMLnpZdrg== dependencies: - "@react-native-community/cli-config" "15.0.0-alpha.2" - "@react-native-community/cli-platform-android" "15.0.0-alpha.2" - "@react-native-community/cli-platform-apple" "15.0.0-alpha.2" - "@react-native-community/cli-platform-ios" "15.0.0-alpha.2" - "@react-native-community/cli-tools" "15.0.0-alpha.2" + "@react-native-community/cli-config" "17.0.0" + "@react-native-community/cli-platform-android" "17.0.0" + "@react-native-community/cli-platform-apple" "17.0.0" + "@react-native-community/cli-platform-ios" "17.0.0" + "@react-native-community/cli-tools" "17.0.0" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" @@ -2034,91 +2031,88 @@ node-stream-zip "^1.9.1" ora "^5.4.1" semver "^7.5.2" - strip-ansi "^5.2.0" wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-platform-android@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-15.0.0-alpha.2.tgz#479f743086fb3c853d9a8038e26035d25776db7c" - integrity sha512-cKHbENaYreKCRtF8cSgTX3mn8XeupTVNzF57tWtOq6Prs+9Bd8ZsOylFZEvkyb3wY1S+BFDAXebAGzbL9ZlY3w== +"@react-native-community/cli-platform-android@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-17.0.0.tgz#9b89a6f0171005cff2161762d36e17b55cabd708" + integrity sha512-bgn7FHf45DCtm7U8ZCXt6pTZ+f+Uzg8WtYgGoXpzOtFSeXgqmeuhHRyFP2ZSeUDDSVuHsJTgxQC13A2+mUnkvQ== dependencies: - "@react-native-community/cli-tools" "15.0.0-alpha.2" + "@react-native-community/cli-config-android" "17.0.0" + "@react-native-community/cli-tools" "17.0.0" chalk "^4.1.2" execa "^5.0.0" - fast-glob "^3.3.2" - fast-xml-parser "^4.4.1" logkitty "^0.7.1" -"@react-native-community/cli-platform-apple@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-15.0.0-alpha.2.tgz#561272ec7bf6cbedf8737cf1b71566b63e9b704b" - integrity sha512-eXE6KES4mNWQA1c/d+aWQnNsgjD7rdrsMAH4t0xOhXn4XWCw1FF6Y7PjUY8fi784RFIzEYB2xiVMvWQsC6BmAQ== +"@react-native-community/cli-platform-apple@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-17.0.0.tgz#bcd88cd74a2c7cd709f9f48209795cc46dacd035" + integrity sha512-2wJzZNDx3fzp0nDy/A/IKjhXrH/ouVMhEvzMD4kjbBp2v4CqASggKXcyFxqTeXccepl/anRcU0IIFlsfaNBACg== dependencies: - "@react-native-community/cli-tools" "15.0.0-alpha.2" + "@react-native-community/cli-config-apple" "17.0.0" + "@react-native-community/cli-tools" "17.0.0" chalk "^4.1.2" execa "^5.0.0" - fast-glob "^3.3.2" fast-xml-parser "^4.4.1" - ora "^5.4.1" -"@react-native-community/cli-platform-ios@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-15.0.0-alpha.2.tgz#c237e561d60d3aa463d51327b37e6943910f7bb5" - integrity sha512-7teqYOMf7SnBmUbSeGklDS2lJCpAa1LKzmy/L8vFiayWImUTJHKzkJyZNzhmiLSImcibFYVH7uaD2DWuFNcrOQ== +"@react-native-community/cli-platform-ios@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-17.0.0.tgz#a19130e78d7b2bb87328c233654e9c33d4507195" + integrity sha512-WV/YvMUcy/CUi4W/C8WO9wnWWOH+kIsR5Y/bFtRdsjIP0FIWncWAUi8cSyCTWW9G0rOA1Cy5afHpdE8A9G/B/w== dependencies: - "@react-native-community/cli-platform-apple" "15.0.0-alpha.2" + "@react-native-community/cli-platform-apple" "17.0.0" -"@react-native-community/cli-server-api@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-15.0.0-alpha.2.tgz#37dcfe41cc7204e01290c616c9262e5e71f70424" - integrity sha512-e4bHsl/J006+coMTOpj6i44QPDat/X2s1sc3rqQkFL5vHIduB+Z6IyDI+W9F5uHrJhtQukE5NdajkjcXyjGLVA== +"@react-native-community/cli-server-api@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-17.0.0.tgz#a1f8fa5281c22d436cdf24fddc4b591186ca59c4" + integrity sha512-D4LILojRwbtsSAoV6Db6Fp7/FJ+mIeaKHlGmr5AZrelge/0u5quj2JQo2VS+TM5+9rvJOezVsd8k2VYX/ByccQ== dependencies: - "@react-native-community/cli-debugger-ui" "15.0.0-alpha.2" - "@react-native-community/cli-tools" "15.0.0-alpha.2" + "@react-native-community/cli-tools" "17.0.0" + body-parser "^1.20.3" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" nocache "^3.0.1" + open "^6.2.0" pretty-format "^26.6.2" serve-static "^1.13.1" ws "^6.2.3" -"@react-native-community/cli-tools@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-15.0.0-alpha.2.tgz#0c02c61a30730814925d6c1e08d43b57ec083f24" - integrity sha512-XzjIFizlqLtwHqhFJHbYfedFOIebFEt1bdLSsHi2HSiZQlltW8KTwWiHC1VHfoEpePErvP2/jsx/dZtX7wNNSw== +"@react-native-community/cli-tools@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-17.0.0.tgz#c46bae5e5ffeee7067d0e55d2ee1de128e310ac3" + integrity sha512-mVXH7U/uXd7yizqm2iE+W4SSVc4FGYYEafAu29HihA+FHttonqdg35zVAnIX2FKbyla+TotR1ACNSgo7KFDq+w== dependencies: + "@vscode/sudo-prompt" "^9.0.0" appdirsjs "^1.2.4" chalk "^4.1.2" execa "^5.0.0" find-up "^5.0.0" + launch-editor "^2.9.1" mime "^2.4.1" - open "^6.2.0" ora "^5.4.1" + prompts "^2.4.2" semver "^7.5.2" - shell-quote "^1.7.3" - sudo-prompt "^9.0.0" -"@react-native-community/cli-types@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-15.0.0-alpha.2.tgz#12d62c7e928115758bbb7de6ded3d21a57dbb7b9" - integrity sha512-5gLZKQLG4ejrMEzdBw0KaGcX7jTTpWoGypxqL+8sQ7Pkenklfsr1RJRFxv+hzO/yX9psMFMgZUXluLajWwuvcg== +"@react-native-community/cli-types@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-17.0.0.tgz#954c8a555fe8be0fabf6420fc4f06daa30ec6283" + integrity sha512-NMOHp+PsA6WF4eCY+06U9X1VU4cjwKPzjbid3hzAQL9OwwcKQVqHTBjAU8xvVPGFQHWz8P/ZwpAwm2TT0k7jrA== dependencies: joi "^17.2.1" -"@react-native-community/cli@15.0.0-alpha.2": - version "15.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-15.0.0-alpha.2.tgz#e465127a176a9eac3f0c1e4a16bd1830627fbbfb" - integrity sha512-Yf7kupKmEuytelafCNeNug4ZAC0i7GPgKVyXfRhwVtVp5ykXtWcng2bqPa4YRl4fgWgu5JhoOQhVMEV1cUDzAA== - dependencies: - "@react-native-community/cli-clean" "15.0.0-alpha.2" - "@react-native-community/cli-config" "15.0.0-alpha.2" - "@react-native-community/cli-debugger-ui" "15.0.0-alpha.2" - "@react-native-community/cli-doctor" "15.0.0-alpha.2" - "@react-native-community/cli-server-api" "15.0.0-alpha.2" - "@react-native-community/cli-tools" "15.0.0-alpha.2" - "@react-native-community/cli-types" "15.0.0-alpha.2" +"@react-native-community/cli@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-17.0.0.tgz#457ab42611ff1193968415e8731c2c3d283b213e" + integrity sha512-c2SiCEGh0rK3BgCfTmWon968LJuJhWc3ZhDNh5MGvaMk0RuYt2K5MSXbSQ5kaRI1xdgzhXteDnoQlDp1PnyejQ== + dependencies: + "@react-native-community/cli-clean" "17.0.0" + "@react-native-community/cli-config" "17.0.0" + "@react-native-community/cli-doctor" "17.0.0" + "@react-native-community/cli-server-api" "17.0.0" + "@react-native-community/cli-tools" "17.0.0" + "@react-native-community/cli-types" "17.0.0" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -2129,38 +2123,38 @@ prompts "^2.4.2" semver "^7.5.2" -"@react-native-community/template@0.78.0-nightly-2025110-200ade2": - version "0.78.0-nightly-2025110-200ade2" - resolved "https://registry.yarnpkg.com/@react-native-community/template/-/template-0.78.0-nightly-2025110-200ade2.tgz#cd1a2a8a43018b57af180bdd1c8abe7d0af5e47b" - integrity sha512-fJLD2X5NPSosyn1cD52D0LgfSxqrHWyEmJep837YbSbcJsur6R6PSlv8ia/Z+3e7KN3LAaegzBaZ1gyZUzVb2w== +"@react-native-community/template@0.79.0-nightly-202536-45e44d1": + version "0.79.0-nightly-202536-45e44d1" + resolved "https://registry.yarnpkg.com/@react-native-community/template/-/template-0.79.0-nightly-202536-45e44d1.tgz#4dcfd523ff31ac3d28db1aed991b834fc04d90eb" + integrity sha512-PNMFXGQ+kl5Te3xEoIx9fwXAYwgNxy7sYIXVByrytV4S8AIzKDXOQdkM3S7CnpADykB4GdSO6GrpEz5gvu7Hrw== "@react-native-picker/picker@^2.5.1": version "2.11.0" resolved "https://registry.yarnpkg.com/@react-native-picker/picker/-/picker-2.11.0.tgz#4587fbce6a382adedad74311e96ee10bb2b2d63a" integrity sha512-QuZU6gbxmOID5zZgd/H90NgBnbJ3VV6qVzp6c7/dDrmWdX8S0X5YFYgDcQFjE3dRen9wB9FWnj2VVdPU64adSg== -"@react-native/assets-registry@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.79.0-nightly-20250303-cee63397b.tgz#1d5f66cc3618c81219728bfc38da1a6e9d44982a" - integrity sha512-v3vrkYFnVL1huzRl2V9MzuTNlkfp73r3kvpItaONdicwFkRApYCGCdkn+s4HmRWuwsv0167Xg79vimBf0zD4mw== +"@react-native/assets-registry@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.80.0-nightly-20250317-fc7385c1e.tgz#b02eb0d9f725aa9298ba79eaa65fb7c9c876478a" + integrity sha512-xdJJptt/Gq/ptr3pwFrwnJbwP+kGyI0iAkCfA5lQ0IgSeK90ezRWxFd1VRMjRBThLaKPYEb9zK8HIG7WRJ0lUw== "@react-native/assets@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== -"@react-native/babel-plugin-codegen@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.0-nightly-20250303-cee63397b.tgz#e00dce8bdd920c6fc159746a45073f5230a82157" - integrity sha512-jkvrpgs4a0tpZ5MnmhXfgnQnuXXPAU18q8OwHDPzOaMzZrxc8FeytI0bhWWm1cI3J7DMk7+PRSJ2Wqr330Hw5Q== +"@react-native/babel-plugin-codegen@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.80.0-nightly-20250317-fc7385c1e.tgz#9b850531cd98f61b81695e565f5e9cf0925b713c" + integrity sha512-f+MgbLl+CReAnD8XlAqp/8Uxv5EateuvidhEgouOjt6N8e/JAFt7dCd8uDhrKOM0xuuzYCvhOxZtnDvMhU2Now== dependencies: "@babel/traverse" "^7.25.3" - "@react-native/codegen" "0.79.0-nightly-20250303-cee63397b" + "@react-native/codegen" "0.80.0-nightly-20250317-fc7385c1e" -"@react-native/babel-preset@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.79.0-nightly-20250303-cee63397b.tgz#cbe7d5d192f6f0e77488fa7a70b9860dd5a86966" - integrity sha512-j6se0dRDqI7vBXbH1aSQ95dIbWefzznHcSFVHFBwvbrJsEag+1uOg+Ejwjf2dRBSn4nVQvKQe6DGT3dP2SjTsg== +"@react-native/babel-preset@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.80.0-nightly-20250317-fc7385c1e.tgz#078fb221a1a74c04e4dc03b45e0f432e4dbd2e00" + integrity sha512-JcDp9L9vVBhegZq6FLFG9WmQGyi43+1EWBFXkAJTGuGzx93zEORhEVjdye/CgwTX4hVKd09o2NeQ289wFekBSQ== dependencies: "@babel/core" "^7.25.2" "@babel/plugin-proposal-export-default-from" "^7.24.7" @@ -2203,54 +2197,52 @@ "@babel/plugin-transform-typescript" "^7.25.2" "@babel/plugin-transform-unicode-regex" "^7.24.7" "@babel/template" "^7.25.0" - "@react-native/babel-plugin-codegen" "0.79.0-nightly-20250303-cee63397b" + "@react-native/babel-plugin-codegen" "0.80.0-nightly-20250317-fc7385c1e" babel-plugin-syntax-hermes-parser "0.25.1" babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" -"@react-native/codegen@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.79.0-nightly-20250303-cee63397b.tgz#14e2ef8ca15c7d917a650583b234748e3ab5f38d" - integrity sha512-OZqJVz9OqEI0K5JePMt/81mgbjMoF2xQawGHRpZQ2mxoNO6t2kvnrF48koxJoR1ZRS6Cd04ANwueIh0c1FZtQw== +"@react-native/codegen@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.80.0-nightly-20250317-fc7385c1e.tgz#21907ee35992d142294fac55a82e7503ad8dd672" + integrity sha512-78b17vFGQDCDxVwpLvjuyNnTqZOMRa3ZiqVWrprpPDls+SNeUcJ5xhKHmHDvaImRpfq5KqDeAQjUl9FM5U/KIA== dependencies: - "@babel/parser" "^7.25.3" glob "^7.1.1" hermes-parser "0.25.1" invariant "^2.2.4" - jscodeshift "^17.0.0" nullthrows "^1.1.1" yargs "^17.6.2" -"@react-native/community-cli-plugin@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.0-nightly-20250303-cee63397b.tgz#74bb4ad8f4c0dfc85fd1a4aafc0637055ca7a37f" - integrity sha512-5cZo70Jzo85/F3JiTx2+3iqX4mQRUIKvPg7xIzN3K6eHfhxiOSgw89VyOuLwR4ONUwNU8KoTjn8415q2L9GScQ== +"@react-native/community-cli-plugin@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.80.0-nightly-20250317-fc7385c1e.tgz#2f4f3b3b1981fee3b83cc618606a2991d2b663e5" + integrity sha512-CKCrev9kmpQ6KHq4mQBfTfV7I+fl8doOI3jRND0OSl9REQBnXpcyGXpqi8ZE56QftAJhRTOnUX1BZCeBUpnEtQ== dependencies: - "@react-native/dev-middleware" "0.79.0-nightly-20250303-cee63397b" + "@react-native/dev-middleware" "0.80.0-nightly-20250317-fc7385c1e" chalk "^4.0.0" - debug "^2.2.0" + debug "^4.4.0" invariant "^2.2.4" - metro "^0.81.0" - metro-config "^0.81.0" - metro-core "^0.81.0" + metro "^0.82.0" + metro-config "^0.82.0" + metro-core "^0.82.0" semver "^7.1.3" -"@react-native/debugger-frontend@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.79.0-nightly-20250303-cee63397b.tgz#11946f4790cdfff351e1aed3dc956006f0881fb2" - integrity sha512-hHFJpRuCoVGzvlJxBdZFl6SKdG1GCwQY+hlxyWs60+DW9hwDmWE+rz9WBU9+6zw5pnmKTEpd/zZWz3MrTWWkUA== +"@react-native/debugger-frontend@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.80.0-nightly-20250317-fc7385c1e.tgz#132bd6c9d523e5fad7dbde008c6cdb55dda39389" + integrity sha512-eoCXz9DJTpd3AM8tgUP9MsUOFQmKqPLhRSJL4fnhtDGMimSGLO+KldSIvKQwel9I2SpbGWOpcEsordiyYPtaUw== -"@react-native/dev-middleware@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.79.0-nightly-20250303-cee63397b.tgz#7fd19b43d316184c3d28955cf55cdc99242c220f" - integrity sha512-cur4/nRU21rgFbv8u0QlBNMPeSoiH7nQlsSxDUs+guMkkUiVxDB1C3abYUvs51NQidLOyg7ABkVqBKwUSeZF8w== +"@react-native/dev-middleware@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.80.0-nightly-20250317-fc7385c1e.tgz#93e277a25012a96c8afba29e19e4ae8fa841101e" + integrity sha512-68PgpUlaebdGaTO7jM4VHXmSTgqE3SX9R/LKNgsZyPYqC38UgNT1EI2l6d2oRh1r57Muc7Y55zErk470XVaRXw== dependencies: "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.79.0-nightly-20250303-cee63397b" + "@react-native/debugger-frontend" "0.80.0-nightly-20250317-fc7385c1e" chrome-launcher "^0.15.2" chromium-edge-launcher "^0.2.0" connect "^3.6.5" - debug "^2.2.0" + debug "^4.4.0" invariant "^2.2.4" nullthrows "^1.1.1" open "^7.0.3" @@ -2280,52 +2272,52 @@ resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.79.0-nightly-20250123-d1028885e.tgz#7983608a83b724ab2f31d2e84e67fb5f9a7ad3b1" integrity sha512-vYrjxRh3wvL9MmmmsO52keyONK8O7CqayB1gvgSf/EeptcnnCpd0YdJ06NU54aB3zh6p+k4vkxHliNFqpBTFBg== -"@react-native/gradle-plugin@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.79.0-nightly-20250303-cee63397b.tgz#90b61e57a79007bcce5bf58d64f1b7a724489379" - integrity sha512-Fw5RsMDDODT4YUtxt53ytTpgfBPhDD/lehRhYVyO4Ud6bN6oUiS8lBdZWKo/7B3mwDh9OEt0ppeBOYTZwirRZA== +"@react-native/gradle-plugin@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.80.0-nightly-20250317-fc7385c1e.tgz#c9460e245374a2f6f68db6e93895bc74e4e63517" + integrity sha512-FfUMIsuySTIKECPPSixWo/xIn2YSkR7VjIscRes2BOpd2OCqEuSkVtAwQ4giVqkssuV1Eh3Z0cJOhEcidKxCXw== -"@react-native/js-polyfills@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.79.0-nightly-20250303-cee63397b.tgz#20f5b19d244185686262153d0bc93f327f84c9d7" - integrity sha512-uPQt+6fE39CpOksFfQIj+suThswQxxLJUf2aaJHZvvTClbXqVrFhjGoCADZ+XSIqrbIK1MIsYA6kCtMCuGmSgA== +"@react-native/js-polyfills@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.80.0-nightly-20250317-fc7385c1e.tgz#6e08f926c19e8e3a47a81bb89f8e02d253bcae51" + integrity sha512-hku4R9HxtBscv68ge0szC9dCOT3uonbz9qyIkEuWIr1kRZg53fK+ibgC7KrFfvhJdRsqqxIRaveQ/4LCntZ88Q== -"@react-native/metro-babel-transformer@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.79.0-nightly-20250303-cee63397b.tgz#4f345cf45fbf86e71de30ee7fa3e59cc30d7cc6d" - integrity sha512-bGJeKZaQLGeaOJGB9tNfVCTNe+AvFBCC4+4Jo3UPwLG3WJ1Mf2L9UPHtkF/+M26kMaN9onNE+qnoVZ+2eLd3Ew== +"@react-native/metro-babel-transformer@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.80.0-nightly-20250317-fc7385c1e.tgz#e01d877f40182c5d82c4e60d6247c232afb7b183" + integrity sha512-My/mmJEQWVaxo35D01rbJeDs8TwOuNw90IHhAxBprOMPZKb65a/RBk+6DmSN+n3Z15C1kS4eLZ1lfabMPte/RQ== dependencies: "@babel/core" "^7.25.2" - "@react-native/babel-preset" "0.79.0-nightly-20250303-cee63397b" + "@react-native/babel-preset" "0.80.0-nightly-20250317-fc7385c1e" hermes-parser "0.25.1" nullthrows "^1.1.1" -"@react-native/metro-config@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.79.0-nightly-20250303-cee63397b.tgz#5f709afb51fa2732dac79288a28c0ce35fab3729" - integrity sha512-7/3ibNtaarKIHX/eT//qSmHIrKHI/yvzNyhUpVRtVzi3LIXCD8fkQB/wGowvx6dPjUVaSLBR/aC+p8gsAfn6PA== +"@react-native/metro-config@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.80.0-nightly-20250317-fc7385c1e.tgz#da0f71924a569709a0ca20b183db868ef19d73c3" + integrity sha512-XKcW+Rp+02vy6P5CI+877mlB877/oBf4HZPY/zjJx5arDxR0NzaQSPWXfB9MIMYbIv+3RoH4/nEZ6UeSZ7qAUg== dependencies: - "@react-native/js-polyfills" "0.79.0-nightly-20250303-cee63397b" - "@react-native/metro-babel-transformer" "0.79.0-nightly-20250303-cee63397b" - metro-config "^0.81.0" - metro-runtime "^0.81.0" + "@react-native/js-polyfills" "0.80.0-nightly-20250317-fc7385c1e" + "@react-native/metro-babel-transformer" "0.80.0-nightly-20250317-fc7385c1e" + metro-config "^0.82.0" + metro-runtime "^0.82.0" -"@react-native/normalize-colors@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.79.0-nightly-20250303-cee63397b.tgz#39ab0aae6aa677d9bedbfd63696a20d2e591f622" - integrity sha512-IgyPFEoOkAd8nvP970tavgqrwQwVI/JHnkqfREU9gi//HSq/RzLSwq6nT5VLIIzdHl0HuoZNotPiPbAxpyOTeQ== +"@react-native/normalize-colors@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.80.0-nightly-20250317-fc7385c1e.tgz#9192423f143ba416287e895b91a0e6dc2b178f9c" + integrity sha512-8mqZH9FG0wmBzEIH8OFTKcxXpUm4k7r5HStTxqAztxTjpTfRvJTLKxB9DcPukGAsdRkMSBAPKgxjWV+zREEVYA== -"@react-native/popup-menu-android@0.79.0-nightly-20250123-d1028885e": - version "0.79.0-nightly-20250123-d1028885e" - resolved "https://registry.yarnpkg.com/@react-native/popup-menu-android/-/popup-menu-android-0.79.0-nightly-20250123-d1028885e.tgz#d7f5ed675e66bee93b2d4580bc17ff21c3e3c167" - integrity sha512-APMAasySWMiPgkFbTDJZpVF6eJFwIVzoQqQ2oSDWH9IZ3dGnr7wZUW4IH2DKqwpNHZqYup7QPQMG+q627FqFtA== +"@react-native/popup-menu-android@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/popup-menu-android/-/popup-menu-android-0.80.0-nightly-20250317-fc7385c1e.tgz#9c3162c6d0e3e62e17969fdf227c538a32cc288a" + integrity sha512-HUWs9TQgD92Z2ARm5/ynK63PnMiGTKtnJtG+MPyVmyULDyOu57zdJMsCUJzFRe4696iVVvM2THSUU4n7ySDStQ== dependencies: nullthrows "^1.1.1" -"@react-native/virtualized-lists@0.79.0-nightly-20250303-cee63397b": - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.79.0-nightly-20250303-cee63397b.tgz#9831d218b32908af6f7284bdd299dcfeb12d61ac" - integrity sha512-NA6DLMv6QygQL/OrOwAANPtrw3TR2RAPyB0HRexa2SsoryTP7RnO5YXnPAay8RRZfEeGEZp9AXo1OKPu+6nyug== +"@react-native/virtualized-lists@0.80.0-nightly-20250317-fc7385c1e": + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.80.0-nightly-20250317-fc7385c1e.tgz#470866c04f98375e450445217e70815c4e77710d" + integrity sha512-w+lelo+0h3bjlfdNfOD+sEb5VpvaJc/oz0/IdtIWNa0iAeOKWxBdwyJuPTjg+ZAJtp7MQD+SXZaHF7Mov7vvag== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" @@ -3245,6 +3237,11 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@vscode/sudo-prompt@^9.0.0": + version "9.3.1" + resolved "https://registry.yarnpkg.com/@vscode/sudo-prompt/-/sudo-prompt-9.3.1.tgz#c562334bc6647733649fd42afc96c0eea8de3b65" + integrity sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA== + "@vue/compiler-core@3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.12.tgz#bd70b7dabd12b0b6f31bc53418ba3da77994c437" @@ -3771,13 +3768,6 @@ ast-types@^0.13.4: dependencies: tslib "^2.0.1" -ast-types@^0.16.1: - version "0.16.1" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.16.1.tgz#7a9da1617c9081bc121faafe91711b4c8bb81da2" - integrity sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg== - dependencies: - tslib "^2.0.1" - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -3983,13 +3973,6 @@ babel-plugin-replace-ts-export-assignment@^0.0.2: resolved "https://registry.yarnpkg.com/babel-plugin-replace-ts-export-assignment/-/babel-plugin-replace-ts-export-assignment-0.0.2.tgz#927a30ba303fcf271108980a8d4f80a693e1d53f" integrity sha512-BiTEG2Ro+O1spuheL5nB289y37FFmz0ISE6GjpNCG2JuA/WNcuEHSYw01+vN8quGf208sID3FnZFDwVyqX18YQ== -babel-plugin-syntax-hermes-parser@0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.24.0.tgz#79d0c73daae7bd7d4b07f64ee281c75aa48845cf" - integrity sha512-J4wETqz7ehbyYl2uge65zsfr0Ue+0yJYYMMkGAWpZc0fB02z4JAcx+mJEXVU14yiihGwqVUlR7oS4/gDYOxUdA== - dependencies: - hermes-parser "0.24.0" - babel-plugin-syntax-hermes-parser@0.25.1: version "0.25.1" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz#58b539df973427fcfbb5176a3aec7e5dee793cb0" @@ -3997,6 +3980,13 @@ babel-plugin-syntax-hermes-parser@0.25.1: dependencies: hermes-parser "0.25.1" +babel-plugin-syntax-hermes-parser@0.28.1: + version "0.28.1" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.28.1.tgz#9e80a774ddb8038307a62316486669c668fb3568" + integrity sha512-meT17DOuUElMNsL5LZN56d+KBp22hb0EfxWfuPUeoSi54e40v1W4C2V36P75FpsH9fVEfDKpw5Nnkahc8haSsQ== + dependencies: + hermes-parser "0.28.1" + babel-plugin-transform-define@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/babel-plugin-transform-define/-/babel-plugin-transform-define-2.1.4.tgz#8f7088211176a55a72788d584ceea9f691a021c1" @@ -4142,6 +4132,24 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +body-parser@^1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -4263,6 +4271,14 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" @@ -4274,6 +4290,24 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -4787,6 +4821,11 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== +content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -4974,6 +5013,13 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, d dependencies: ms "^2.1.3" +debug@^4.4.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -4998,6 +5044,18 @@ deep-eql@^4.1.3: dependencies: type-detect "^4.0.0" +deep-equal@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + deep-extend@~0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -5062,11 +5120,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg== - depcheck@^1.4.1: version "1.4.7" resolved "https://registry.yarnpkg.com/depcheck/-/depcheck-1.4.7.tgz#57976e2fa43625f477efc0f19ad868ef94f8a26c" @@ -5199,6 +5252,15 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" @@ -5382,6 +5444,11 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" @@ -5415,6 +5482,13 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" +es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" @@ -6157,10 +6231,10 @@ flow-bin@^0.261.2: resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.261.2.tgz#8558c965950f8e38872ea21f66bf04932da2380b" integrity sha512-lTYA05K4obAjyrrX4in3sLZyAECSFCDwQiGpZHJLm8ldCk+qcW11Wcxq/CdvyQAOPR7Kpb5BPRSaj4hwEXIAUw== -flow-bin@^0.262.0: - version "0.262.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.262.0.tgz#612f7cb96c51d9fe7e6819ab9d582f19e5674554" - integrity sha512-B7l0NcpQ3uZuaWs07aQCjG+8fcxF/awbEmuf1p/6a/ZnQjPBB5uIzWmTuxdnrQns5/2orCpC37k9FJuRP7Aj3g== +flow-bin@^0.265.2: + version "0.265.3" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.265.3.tgz#cbaad2115f4622e34920981dc79949824c27f421" + integrity sha512-08PjO2kjuQxy8MxYJNCzmgRpAe1uqTf7kQ+U32QTavRzTD/7IJASYKFEEvCkVNHlhSy8CTJsN+AQdHsXVqChIw== flow-enums-runtime@^0.0.6: version "0.0.6" @@ -6369,6 +6443,22 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-monorepo-packages@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/get-monorepo-packages/-/get-monorepo-packages-1.3.0.tgz#4fd82bff2290765b9ef2e08856c9f1e63f21b5eb" @@ -6387,6 +6477,14 @@ get-port@^5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -6578,6 +6676,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + got@^11.0.2: version "11.8.6" resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" @@ -6672,6 +6775,11 @@ has-symbols@^1.0.2, has-symbols@^1.0.3: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" @@ -6738,6 +6846,11 @@ hermes-estree@0.25.1: resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== +hermes-estree@0.28.1: + version "0.28.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.28.1.tgz#631e6db146b06e62fc1c630939acf4a3c77d1b24" + integrity sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ== + hermes-parser@0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.21.1.tgz#b2ab42b6ee1bed8c659ed61a03d3f61a63183ada" @@ -6766,6 +6879,13 @@ hermes-parser@0.25.1: dependencies: hermes-estree "0.25.1" +hermes-parser@0.28.1: + version "0.28.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.28.1.tgz#17b9e6377f334b6870a1f6da2e123fdcd0b605ac" + integrity sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg== + dependencies: + hermes-estree "0.28.1" + hermes-transform@0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/hermes-transform/-/hermes-transform-0.24.0.tgz#bf7693978b8f2d94f79c3a6700018b21ec08233e" @@ -6918,7 +7038,7 @@ husky@^4.2.5: slash "^3.0.0" which-pm-runs "^1.0.0" -iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -7074,6 +7194,14 @@ ip-address@^9.0.5: jsbn "1.1.0" sprintf-js "^1.1.3" +is-arguments@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" + integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" @@ -7264,6 +7392,16 @@ is-primitive@^3.0.1: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-3.0.1.tgz#98c4db1abff185485a657fc2905052b940524d05" integrity sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w== +is-regex@^1.0.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -7833,7 +7971,7 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-validate@^29.6.3, jest-validate@^29.7.0: +jest-validate@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== @@ -7859,7 +7997,7 @@ jest-watcher@^29.7.0: jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^29.6.3, jest-worker@^29.7.0: +jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== @@ -7960,30 +8098,6 @@ jscodeshift@^0.14.0: temp "^0.8.4" write-file-atomic "^2.3.0" -jscodeshift@^17.0.0: - version "17.1.1" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-17.1.1.tgz#03d81c8d32bd7100c2f092cf2a38bd9ae88379c6" - integrity sha512-4vq5B1sD37aa9qed3zWq2XQPun5XjxebIv+Folr57lt8B4HLGDHEz1UG7pfcxzSaelzPbcY7yZSs033/S0i6wQ== - dependencies: - "@babel/core" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/plugin-transform-class-properties" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" - "@babel/preset-flow" "^7.24.7" - "@babel/preset-typescript" "^7.24.7" - "@babel/register" "^7.24.6" - flow-parser "0.*" - graceful-fs "^4.2.4" - micromatch "^4.0.7" - neo-async "^2.5.0" - picocolors "^1.0.1" - recast "^0.23.9" - tmp "^0.2.3" - write-file-atomic "^5.0.1" - jsesc@^3.0.2, jsesc@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" @@ -8198,6 +8312,14 @@ last-run@^2.0.0: resolved "https://registry.yarnpkg.com/last-run/-/last-run-2.0.0.tgz#f82dcfbfce6e63d041bd83d64c82e34cdba6572e" integrity sha512-j+y6WhTLN4Itnf9j5ZQos1BGPCS8DAwmgMroR3OzfxAsBxam0hMw7J8M3KqZl0pLQJ1jNnwIexg5DYpC/ctwEQ== +launch-editor@^2.9.1: + version "2.10.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.10.0.tgz#5ca3edfcb9667df1e8721310f3a40f1127d4bc42" + integrity sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + lazystream@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" @@ -8550,6 +8672,16 @@ marky@^1.2.2: resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + mem@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -8583,117 +8715,114 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -metro-babel-register@^0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.81.0.tgz#05e9deda5633e38aceb7120b1865cbbc63c5b8ef" - integrity sha512-CU9D49k9ti02ebHXuYlbDNPdBj0C4SnCDIGk328epmcO0p++WzFSWWO92cGc7i0HqKyzgeMskPGJV825Eh7zSg== +metro-babel-register@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-babel-register/-/metro-babel-register-0.82.4.tgz#39322d00c58b0df6f647b7deb7a018aafc74770f" + integrity sha512-xLVgl8x3rv5rlOnaRmJsNBM8ezkPDfazulRRFgUK3WZE1ZAHLjgMGgJQJa/mPxNVglvQ0KAYZxfBzJ9UY2U33A== dependencies: "@babel/core" "^7.25.2" "@babel/plugin-proposal-export-namespace-from" "^7.18.9" "@babel/plugin-transform-flow-strip-types" "^7.25.2" "@babel/plugin-transform-modules-commonjs" "^7.24.8" "@babel/preset-typescript" "^7.24.7" - "@babel/register" "7.22.5" + "@babel/register" "^7.24.6" babel-plugin-replace-ts-export-assignment "^0.0.2" - babel-plugin-syntax-hermes-parser "0.24.0" + babel-plugin-syntax-hermes-parser "0.28.1" babel-plugin-transform-flow-enums "^0.0.2" escape-string-regexp "^1.0.5" flow-enums-runtime "^0.0.6" -metro-babel-transformer@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.81.0.tgz#cf468eafea52e4d8a77844eb7257f8a76e9d9d94" - integrity sha512-Dc0QWK4wZIeHnyZ3sevWGTnnSkIDDn/SWyfrn99zbKbDOCoCYy71PAn9uCRrP/hduKLJQOy+tebd63Rr9D8tXg== +metro-babel-transformer@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.82.4.tgz#1ac029add8f75d0048c54efc266c0a78791f52b2" + integrity sha512-4juJahGRb1gmNbQq48lNinB6WFNfb6m0BQqi/RQibEltNiqTCxew/dBspI2EWA4xVCd3mQWGfw0TML4KurQZnQ== dependencies: "@babel/core" "^7.25.2" flow-enums-runtime "^0.0.6" - hermes-parser "0.24.0" + hermes-parser "0.28.1" nullthrows "^1.1.1" -metro-cache-key@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.81.0.tgz#5db34fa1a323a2310205bda7abd0df9614e36f45" - integrity sha512-qX/IwtknP9bQZL78OK9xeSvLM/xlGfrs6SlUGgHvrxtmGTRSsxcyqxR+c+7ch1xr05n62Gin/O44QKg5V70rNQ== +metro-cache-key@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.82.4.tgz#21f850008fa2570a51e3958574ea5a791574752e" + integrity sha512-2JCTqcpF+f2OghOpe/+x+JywfzDkrHdAqinPFWmK2ezNAU/qX0jBFaTETogPibFivxZJil37w9Yp6syX8rFUng== dependencies: flow-enums-runtime "^0.0.6" -metro-cache@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.81.0.tgz#90470d10d190ad708f04c6e337eec2c7cddb3db0" - integrity sha512-DyuqySicHXkHUDZFVJmh0ygxBSx6pCKUrTcSgb884oiscV/ROt1Vhye+x+OIHcsodyA10gzZtrVtxIFV4l9I4g== +metro-cache@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.82.4.tgz#f44557f8b33f5d7b7ba4ccba2880c111e9884329" + integrity sha512-vX0ylSMGtORKiZ4G8uP6fgfPdDiCWvLZUGZ5zIblSGylOX6JYhvExl0Zg4UA9pix/SSQu5Pnp9vdODMFsNIxhw== dependencies: exponential-backoff "^3.1.1" flow-enums-runtime "^0.0.6" - metro-core "0.81.0" + https-proxy-agent "^7.0.5" + metro-core "0.82.4" -metro-config@0.81.0, metro-config@^0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.81.0.tgz#8f8074033cb7e9ddb5b0459642adf6880bc9fbc1" - integrity sha512-6CinEaBe3WLpRlKlYXXu8r1UblJhbwD6Gtnoib5U8j6Pjp7XxMG9h/DGMeNp9aGLDu1OieUqiXpFo7O0/rR5Kg== +metro-config@0.82.4, metro-config@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.82.4.tgz#d42fa8b6a4d53493c34d217bbc6c13ee4817355c" + integrity sha512-Ki3Wumr3hKHGDS7RrHsygmmRNc/PCJrvkLn0+BWWxmbOmOcMMJDSmSI+WRlT8jd5VPZFxIi4wg+sAt5yBXAK0g== dependencies: connect "^3.6.5" cosmiconfig "^5.0.5" flow-enums-runtime "^0.0.6" - jest-validate "^29.6.3" - metro "0.81.0" - metro-cache "0.81.0" - metro-core "0.81.0" - metro-runtime "0.81.0" + jest-validate "^29.7.0" + metro "0.82.4" + metro-cache "0.82.4" + metro-core "0.82.4" + metro-runtime "0.82.4" -metro-core@0.81.0, metro-core@^0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.81.0.tgz#d0b634f9cf97849b7730c59457ab7a439811d4c8" - integrity sha512-CVkM5YCOAFkNMvJai6KzA0RpztzfEKRX62/PFMOJ9J7K0uq/UkOFLxcgpcncMIrfy0PbfEj811b69tjULUQe1Q== +metro-core@0.82.4, metro-core@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.82.4.tgz#f7f498929ac066dafe704c3598a990eeb2acdc8c" + integrity sha512-Xo4ozbxPg2vfgJGCgXZ8sVhC2M0lhTqD+tsKO2q9aelq/dCjnnSb26xZKcQO80CQOQUL7e3QWB7pLFGPjZm31A== dependencies: flow-enums-runtime "^0.0.6" lodash.throttle "^4.1.1" - metro-resolver "0.81.0" + metro-resolver "0.82.4" -metro-file-map@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.81.0.tgz#af0ccf4f8db4fd8429f78f231faa49dde2c402c3" - integrity sha512-zMDI5uYhQCyxbye/AuFx/pAbsz9K+vKL7h1ShUXdN2fz4VUPiyQYRsRqOoVG1DsiCgzd5B6LW0YW77NFpjDQeg== +metro-file-map@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.82.4.tgz#186d737088433dd290c5974d9d96d7e62d36e4f9" + integrity sha512-eO7HD1O3aeNsbEe6NBZvx1lLJUrxgyATjnDmb7bm4eyF6yWOQot9XVtxTDLNifECuvsZ4jzRiTInrbmIHkTdGA== dependencies: - anymatch "^3.0.3" - debug "^2.2.0" + debug "^4.4.0" fb-watchman "^2.0.0" flow-enums-runtime "^0.0.6" graceful-fs "^4.2.4" invariant "^2.2.4" - jest-worker "^29.6.3" + jest-worker "^29.7.0" micromatch "^4.0.4" - node-abort-controller "^3.1.1" nullthrows "^1.1.1" walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" -metro-memory-fs@^0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.81.0.tgz#f11ac95bb294f3fd4c933cf93ab9ee6da626d352" - integrity sha512-hbmyOuVigPU81Kd+CUCq7tXgEkrHmteWG1WJHTEwldoLHuYUzSeaoE8LlLUbqPF+OPW0asYx/cTDrfNM8KCuqw== +metro-memory-fs@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-memory-fs/-/metro-memory-fs-0.82.4.tgz#4be4e9ec6317ed482fd553d7f666ac306a6f4b6f" + integrity sha512-IyCnG2MKNs2vUBX3YbTBEmYCTfrGUySkcDAdcstPPU9vuYl1v+X/btuUi7VEGocIZ9k/jkmy+Fnke9pPakzLcA== dependencies: flow-enums-runtime "^0.0.6" -metro-minify-terser@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.81.0.tgz#8b0abe977d63a99b99fa94d53678ef3170d5b659" - integrity sha512-U2ramh3W822ZR1nfXgIk+emxsf5eZSg10GbQrT0ZizImK8IZ5BmJY+BHRIkQgHzWFpExOVxC7kWbGL1bZALswA== +metro-minify-terser@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.82.4.tgz#3750c14e7a25eba591f6c75eed995f6751030618" + integrity sha512-W79Mi6BUwWVaM8Mc5XepcqkG+TSsCyyo//dmTsgYfJcsmReQorRFodil3bbJInETvjzdnS1mCsUo9pllNjT1Hg== dependencies: flow-enums-runtime "^0.0.6" terser "^5.15.0" -metro-resolver@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.81.0.tgz#141f4837e1e0c5a1810ea02f2d9be3c9f6cf3766" - integrity sha512-Uu2Q+buHhm571cEwpPek8egMbdSTqmwT/5U7ZVNpK6Z2ElQBBCxd7HmFAslKXa7wgpTO2FAn6MqGeERbAtVDUA== +metro-resolver@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.82.4.tgz#936a2300fa577183a1e0e6f7cc405e52f9276f0e" + integrity sha512-uWoHzOBGQTPT5PjippB8rRT3iI9CTgFA9tRiLMzrseA5o7YAlgvfTdY9vFk2qyk3lW3aQfFKWkmqENryPRpu+Q== dependencies: flow-enums-runtime "^0.0.6" -metro-runtime@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.81.0.tgz#63af9b3fec15d1f307d89ef4881f5ba2c592291e" - integrity sha512-6oYB5HOt37RuGz2eV4A6yhcl+PUTwJYLDlY9vhT+aVjbUWI6MdBCf69vc4f5K5Vpt+yOkjy+2LDwLS0ykWFwYw== +metro-runtime@0.82.4, metro-runtime@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.82.4.tgz#70e0b871683fdb594f2a7c03403b6350deca086b" + integrity sha512-vVyFO7H+eLXRV2E7YAUYA7aMGBECGagqxmFvC2hmErS7oq90BbPVENfAHbUWq1vWH+MRiivoRxdxlN8gBoF/dw== dependencies: "@babel/runtime" "^7.25.0" flow-enums-runtime "^0.0.6" @@ -8706,22 +8835,6 @@ metro-runtime@^0.81.0: "@babel/runtime" "^7.25.0" flow-enums-runtime "^0.0.6" -metro-source-map@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.81.0.tgz#ca83964124bb227d5f0bdb1ee304dbfe635f869e" - integrity sha512-TzsVxhH83dyxg4A4+L1nzNO12I7ps5IHLjKGZH3Hrf549eiZivkdjYiq/S5lOB+p2HiQ+Ykcwtmcja95LIC62g== - dependencies: - "@babel/traverse" "^7.25.3" - "@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3" - "@babel/types" "^7.25.2" - flow-enums-runtime "^0.0.6" - invariant "^2.2.4" - metro-symbolicate "0.81.0" - nullthrows "^1.1.1" - ob1 "0.81.0" - source-map "^0.5.6" - vlq "^1.0.0" - metro-source-map@0.81.2, metro-source-map@^0.81.0: version "0.81.2" resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.81.2.tgz#d47950419351bd684820c7ca8b53ee2b69772605" @@ -8738,17 +8851,20 @@ metro-source-map@0.81.2, metro-source-map@^0.81.0: source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.81.0.tgz#b7b1eae8bfd6ad2a922fa2bcb9f2144e464adafb" - integrity sha512-C/1rWbNTPYp6yzID8IPuQPpVGzJ2rbWYBATxlvQ9dfK5lVNoxcwz77hjcY8ISLsRRR15hyd/zbjCNKPKeNgE1Q== +metro-source-map@0.82.4, metro-source-map@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.82.4.tgz#ddd9bdf3a5864ee8f0b296ed11e46bdc2de321ac" + integrity sha512-9jzDQJ0FPas1FuQFtwmBHsez2BfhFNufMowbOMeG3ZaFvzeziE8A0aJwILDS3U+V5039ssCQFiQeqDgENWvquA== dependencies: + "@babel/traverse" "^7.25.3" + "@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3" + "@babel/types" "^7.25.2" flow-enums-runtime "^0.0.6" invariant "^2.2.4" - metro-source-map "0.81.0" + metro-symbolicate "0.82.4" nullthrows "^1.1.1" + ob1 "0.82.4" source-map "^0.5.6" - through2 "^2.0.1" vlq "^1.0.0" metro-symbolicate@0.81.2: @@ -8763,10 +8879,22 @@ metro-symbolicate@0.81.2: source-map "^0.5.6" vlq "^1.0.0" -metro-transform-plugins@0.81.0, metro-transform-plugins@^0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.81.0.tgz#614c0e50593df545487b3f3383fed810c608fb32" - integrity sha512-uErLAPBvttGCrmGSCa0dNHlOTk3uJFVEVWa5WDg6tQ79PRmuYRwzUgLhVzn/9/kyr75eUX3QWXN79Jvu4txt6Q== +metro-symbolicate@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.82.4.tgz#76603b0ec2ad8fe5f174aa76485cc46228547a91" + integrity sha512-LwEwAtdsx7z8rYjxjpLWxuFa2U0J6TS6ljlQM4WAATKa4uzV8unmnRuN2iNBWTmRqgNR77mzmI2vhwD4QSCo+w== + dependencies: + flow-enums-runtime "^0.0.6" + invariant "^2.2.4" + metro-source-map "0.82.4" + nullthrows "^1.1.1" + source-map "^0.5.6" + vlq "^1.0.0" + +metro-transform-plugins@0.82.4, metro-transform-plugins@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.82.4.tgz#9d3bb855126e0a63ac2ccf012ed2bc7829209e8c" + integrity sha512-NoWQRPHupVpnDgYguiEcm7YwDhnqW02iWWQjO2O8NsNP09rEMSq99nPjARWfukN7+KDh6YjLvTIN20mj3dk9kw== dependencies: "@babel/core" "^7.25.2" "@babel/generator" "^7.25.0" @@ -8775,29 +8903,29 @@ metro-transform-plugins@0.81.0, metro-transform-plugins@^0.81.0: flow-enums-runtime "^0.0.6" nullthrows "^1.1.1" -metro-transform-worker@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.81.0.tgz#43e63c95014f36786f0e1a132c778c6392950de7" - integrity sha512-HrQ0twiruhKy0yA+9nK5bIe3WQXZcC66PXTvRIos61/EASLAP2DzEmW7IxN/MGsfZegN2UzqL2CG38+mOB45vg== +metro-transform-worker@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.82.4.tgz#cf7db4ef89301ab6658f7a0988fd030e28f86b28" + integrity sha512-kPI7Ad/tdAnI9PY4T+2H0cdgGeSWWdiPRKuytI806UcN4VhFL6OmYa19/4abYVYF+Cd2jo57CDuwbaxRfmXDhw== dependencies: "@babel/core" "^7.25.2" "@babel/generator" "^7.25.0" "@babel/parser" "^7.25.3" "@babel/types" "^7.25.2" flow-enums-runtime "^0.0.6" - metro "0.81.0" - metro-babel-transformer "0.81.0" - metro-cache "0.81.0" - metro-cache-key "0.81.0" - metro-minify-terser "0.81.0" - metro-source-map "0.81.0" - metro-transform-plugins "0.81.0" + metro "0.82.4" + metro-babel-transformer "0.82.4" + metro-cache "0.82.4" + metro-cache-key "0.82.4" + metro-minify-terser "0.82.4" + metro-source-map "0.82.4" + metro-transform-plugins "0.82.4" nullthrows "^1.1.1" -metro@0.81.0, metro@^0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.81.0.tgz#cffe9b7d597728dee8b57903ca155417b7c13a4f" - integrity sha512-kzdzmpL0gKhEthZ9aOV7sTqvg6NuTxDV8SIm9pf9sO8VVEbKrQk5DNcwupOUjgPPFAuKUc2NkT0suyT62hm2xg== +metro@0.82.4, metro@^0.82.0: + version "0.82.4" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.82.4.tgz#e4fb4552f1387610b0b2873ed07d4cd59754d636" + integrity sha512-/gFmw3ux9CPG5WUmygY35hpyno28zi/7OUn6+OFfbweA8l0B+PPqXXLr0/T6cf5nclCcH0d22o+02fICaShVxw== dependencies: "@babel/code-frame" "^7.24.7" "@babel/core" "^7.25.2" @@ -8810,39 +8938,37 @@ metro@0.81.0, metro@^0.81.0: chalk "^4.0.0" ci-info "^2.0.0" connect "^3.6.5" - debug "^2.2.0" - denodeify "^1.2.1" + debug "^4.4.0" error-stack-parser "^2.0.6" flow-enums-runtime "^0.0.6" graceful-fs "^4.2.4" - hermes-parser "0.24.0" + hermes-parser "0.28.1" image-size "^1.0.2" invariant "^2.2.4" - jest-worker "^29.6.3" + jest-worker "^29.7.0" jsc-safe-url "^0.2.2" lodash.throttle "^4.1.1" - metro-babel-transformer "0.81.0" - metro-cache "0.81.0" - metro-cache-key "0.81.0" - metro-config "0.81.0" - metro-core "0.81.0" - metro-file-map "0.81.0" - metro-resolver "0.81.0" - metro-runtime "0.81.0" - metro-source-map "0.81.0" - metro-symbolicate "0.81.0" - metro-transform-plugins "0.81.0" - metro-transform-worker "0.81.0" + metro-babel-transformer "0.82.4" + metro-cache "0.82.4" + metro-cache-key "0.82.4" + metro-config "0.82.4" + metro-core "0.82.4" + metro-file-map "0.82.4" + metro-resolver "0.82.4" + metro-runtime "0.82.4" + metro-source-map "0.82.4" + metro-symbolicate "0.82.4" + metro-transform-plugins "0.82.4" + metro-transform-worker "0.82.4" mime-types "^2.1.27" nullthrows "^1.1.1" serialize-error "^2.1.0" source-map "^0.5.6" - strip-ansi "^6.0.0" throat "^5.0.0" ws "^7.5.10" yargs "^17.6.2" -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.7, micromatch@^4.0.8: +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -8860,7 +8986,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -9107,11 +9233,6 @@ nocache@^3.0.1: resolved "https://registry.yarnpkg.com/nocache/-/nocache-3.0.4.tgz#5b37a56ec6e09fc7d401dceaed2eab40c8bfdf79" integrity sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw== -node-abort-controller@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" - integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== - node-dir@^0.1.17: version "0.1.17" resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" @@ -9252,13 +9373,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -ob1@0.81.0: - version "0.81.0" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.81.0.tgz#dc3154cca7aa9c2eb58f5ac63e9ee23ff4c6f520" - integrity sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ== - dependencies: - flow-enums-runtime "^0.0.6" - ob1@0.81.2: version "0.81.2" resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.81.2.tgz#1c144d5ed63a0d1778bec32bf8a56c93397911ed" @@ -9266,6 +9380,13 @@ ob1@0.81.2: dependencies: flow-enums-runtime "^0.0.6" +ob1@0.82.4: + version "0.82.4" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.82.4.tgz#60f04f61b8ab96e1f818eb856b35c97bbef44726" + integrity sha512-n9S8e4l5TvkrequEAMDidl4yXesruWTNTzVkeaHSGywoTOIwTzZzKw7Z670H3eaXDZui5MJXjWGNzYowVZIxCA== + dependencies: + flow-enums-runtime "^0.0.6" + object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -9276,6 +9397,14 @@ object-inspect@^1.13.1: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== +object-is@^1.0.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -9687,7 +9816,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== -picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: +picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -9707,7 +9836,7 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -pirates@^4.0.4, pirates@^4.0.5, pirates@^4.0.6: +pirates@^4.0.4, pirates@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== @@ -9963,6 +10092,13 @@ qrcode@^1.5.0: pngjs "^5.0.0" yargs "^15.3.1" +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -9990,6 +10126,16 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + react-clone-referenced-element@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.1.1.tgz#8d76727dc0459788e461741e804a512d20757381" @@ -10030,19 +10176,19 @@ react-native-xaml@^0.0.78: dependencies: "@types/react" "*" -react-native@0.79.0-nightly-20250303-cee63397b: - version "0.79.0-nightly-20250303-cee63397b" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.79.0-nightly-20250303-cee63397b.tgz#7ca4ee8e894ca3fa3f6d733cdf1bf35346b0c66f" - integrity sha512-iF/BRQYIl9QvhYC+B1Q0CDi1GPgApPDQFE3bN2s11kTA5vNAy6FU/1w1NwUU4F5XNeTVSPdoaDyB8xEWmMvRzw== +react-native@0.80.0-nightly-20250317-fc7385c1e: + version "0.80.0-nightly-20250317-fc7385c1e" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.80.0-nightly-20250317-fc7385c1e.tgz#8df65db4db298334ed4ebacbce51fb69e312849f" + integrity sha512-Vgwuf27mnlPhsn8NvsjooyV3yA9HumLjk+AswRRtebysLS5Cu0MJmhvCYhSm045aAWl3asdRwX2Q5E/baSI+ng== dependencies: "@jest/create-cache-key-function" "^29.7.0" - "@react-native/assets-registry" "0.79.0-nightly-20250303-cee63397b" - "@react-native/codegen" "0.79.0-nightly-20250303-cee63397b" - "@react-native/community-cli-plugin" "0.79.0-nightly-20250303-cee63397b" - "@react-native/gradle-plugin" "0.79.0-nightly-20250303-cee63397b" - "@react-native/js-polyfills" "0.79.0-nightly-20250303-cee63397b" - "@react-native/normalize-colors" "0.79.0-nightly-20250303-cee63397b" - "@react-native/virtualized-lists" "0.79.0-nightly-20250303-cee63397b" + "@react-native/assets-registry" "0.80.0-nightly-20250317-fc7385c1e" + "@react-native/codegen" "0.80.0-nightly-20250317-fc7385c1e" + "@react-native/community-cli-plugin" "0.80.0-nightly-20250317-fc7385c1e" + "@react-native/gradle-plugin" "0.80.0-nightly-20250317-fc7385c1e" + "@react-native/js-polyfills" "0.80.0-nightly-20250317-fc7385c1e" + "@react-native/normalize-colors" "0.80.0-nightly-20250317-fc7385c1e" + "@react-native/virtualized-lists" "0.80.0-nightly-20250317-fc7385c1e" abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" @@ -10057,8 +10203,8 @@ react-native@0.79.0-nightly-20250303-cee63397b: invariant "^2.2.4" jest-environment-node "^29.7.0" memoize-one "^5.0.0" - metro-runtime "^0.81.0" - metro-source-map "^0.81.0" + metro-runtime "^0.82.0" + metro-source-map "^0.82.0" nullthrows "^1.1.1" pretty-format "^29.7.0" promise "^8.3.0" @@ -10098,7 +10244,7 @@ read-yaml-file@^2.1.0: js-yaml "^4.0.0" strip-bom "^4.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -10159,17 +10305,6 @@ recast@^0.21.0: source-map "~0.6.1" tslib "^2.0.1" -recast@^0.23.9: - version "0.23.9" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.9.tgz#587c5d3a77c2cfcb0c18ccce6da4361528c2587b" - integrity sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q== - dependencies: - ast-types "^0.16.1" - esprima "~4.0.0" - source-map "~0.6.1" - tiny-invariant "^1.3.3" - tslib "^2.0.1" - rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -10219,6 +10354,18 @@ regenerator-runtime@^0.13.2: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regexp.prototype.flags@^1.2.0: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" + regexp.prototype.flags@^1.5.2: version "1.5.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" @@ -10644,7 +10791,7 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-length@^1.2.1: +set-function-length@^1.2.1, set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -10710,7 +10857,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1, shell-quote@^1.7.3, shell-quote@^1.8.1: +shell-quote@^1.6.1, shell-quote@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== @@ -10744,7 +10891,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1, signal-exit@^4.1.0: +signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -11145,11 +11292,6 @@ strnum@^1.0.5: resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== -sudo-prompt@^9.0.0: - version "9.2.1" - resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.2.1.tgz#77efb84309c9ca489527a4e749f287e6bdd52afd" - integrity sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw== - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -11301,24 +11443,11 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -through2@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -tiny-invariant@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" - integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== - tinybench@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-3.1.0.tgz#ec68451ff05233cf3de12c46f39f06011897109a" @@ -11331,7 +11460,7 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@^0.2.1, tmp@^0.2.3: +tmp@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== @@ -11501,6 +11630,14 @@ type-fest@^4.39.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.40.0.tgz#62bc09caccb99a75e1ad6b9b4653e8805e5e1eee" integrity sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw== +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + typed-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" @@ -11696,7 +11833,7 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unpipe@~1.0.0: +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== @@ -12060,14 +12197,6 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -write-file-atomic@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" - integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^4.0.1" - ws@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.4.tgz#c7bea9f1cfb5f410de50e70e82662e562113f9a7" @@ -12134,11 +12263,6 @@ xpath@^0.0.27: resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.27.tgz#dd3421fbdcc5646ac32c48531b4d7e9d0c2cfa92" integrity sha512-fg03WRxtkCV6ohClePNAECYsmpKKTv5L8y/X3Dn1hQrec3POx2jHZ/0P2qQ6HvsrU1BmeqXcof3NGGueG6LxwQ== -xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"