react-native-windows 0.74.10 → 0.75.0-preview.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/.flowconfig +8 -2
  2. package/Common/Common.vcxproj +8 -0
  3. package/Common/Utilities.cpp +2 -2
  4. package/Directory.Build.targets +5 -0
  5. package/Folly/Folly.vcxproj +10 -2
  6. package/Folly/Folly.vcxproj.filters +0 -7
  7. package/Folly/TEMP_UntilFollyUpdate/ConstexprMath.h +970 -0
  8. package/Folly/TEMP_UntilFollyUpdate/json.cpp +1110 -0
  9. package/Folly/TEMP_UntilFollyUpdate/lang/ToAscii.cpp +4 -2
  10. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  11. package/Libraries/Animated/NativeAnimatedHelper.js +4 -0
  12. package/Libraries/Animated/createAnimatedComponent.js +10 -4
  13. package/Libraries/Animated/useAnimatedProps.js +56 -28
  14. package/Libraries/BatchedBridge/MessageQueue.js +1 -0
  15. package/Libraries/Components/Button.js +10 -5
  16. package/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js +11 -2
  17. package/Libraries/Components/Flyout/Flyout.js +10 -10
  18. package/Libraries/Components/Flyout/FlyoutNativeComponent.js +8 -7
  19. package/Libraries/Components/Pressable/Pressable.js +13 -6
  20. package/Libraries/Components/Pressable/Pressable.windows.js +13 -6
  21. package/Libraries/Components/ScrollView/AndroidHorizontalScrollViewNativeComponent.js +4 -0
  22. package/Libraries/Components/ScrollView/ScrollView.js +109 -29
  23. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.js +6 -0
  24. package/Libraries/Components/ScrollView/ScrollViewNativeComponent.windows.js +6 -0
  25. package/Libraries/Components/ScrollView/ScrollViewStickyHeader.js +13 -1
  26. package/Libraries/Components/StatusBar/StatusBar.js +1 -21
  27. package/Libraries/Components/Switch/Switch.windows.js +2 -0
  28. package/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js +0 -15
  29. package/Libraries/Components/TextInput/InputAccessoryView.js +10 -1
  30. package/Libraries/Components/TextInput/RCTTextInputViewConfig.js +0 -12
  31. package/Libraries/Components/TextInput/TextInput.d.ts +0 -19
  32. package/Libraries/Components/TextInput/TextInput.js +20 -73
  33. package/Libraries/Components/TextInput/TextInput.windows.js +21 -75
  34. package/Libraries/Components/TextInput/WindowsTextInputNativeComponent.js +27 -12
  35. package/Libraries/Components/Touchable/Touchable.js +2 -2
  36. package/Libraries/Components/Touchable/TouchableHighlight.d.ts +4 -10
  37. package/Libraries/Components/Touchable/TouchableHighlight.js +3 -1
  38. package/Libraries/Components/Touchable/TouchableHighlight.windows.js +3 -1
  39. package/Libraries/Components/Touchable/TouchableOpacity.d.ts +4 -32
  40. package/Libraries/Components/Touchable/TouchableOpacity.js +3 -1
  41. package/Libraries/Components/Touchable/TouchableOpacity.windows.js +3 -1
  42. package/Libraries/Components/Touchable/TouchableWithoutFeedback.d.ts +8 -0
  43. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +117 -111
  44. package/Libraries/Components/Touchable/TouchableWithoutFeedback.windows.js +129 -110
  45. package/Libraries/Components/View/ReactNativeStyleAttributes.js +6 -0
  46. package/Libraries/Components/View/ReactNativeViewAttributes.js +1 -0
  47. package/Libraries/Components/View/ReactNativeViewAttributes.windows.js +1 -0
  48. package/Libraries/Components/View/View.js +0 -11
  49. package/Libraries/Components/View/View.windows.js +0 -11
  50. package/Libraries/Components/View/ViewAccessibility.js +4 -4
  51. package/Libraries/Components/View/ViewAccessibility.windows.js +4 -4
  52. package/Libraries/Components/View/ViewPropTypes.d.ts +21 -59
  53. package/Libraries/Components/View/ViewPropTypes.js +7 -0
  54. package/Libraries/Components/View/ViewPropTypes.windows.js +7 -0
  55. package/Libraries/Core/Devtools/loadBundleFromServer.js +3 -3
  56. package/Libraries/Core/Devtools/loadBundleFromServer.windows.js +153 -0
  57. package/Libraries/Core/Devtools/parseErrorStack.js +5 -5
  58. package/Libraries/Core/Devtools/parseHermesStack.js +22 -16
  59. package/Libraries/Core/ErrorHandlers.js +116 -0
  60. package/Libraries/Core/ExceptionsManager.js +2 -2
  61. package/Libraries/Core/ReactNativeVersion.js +3 -3
  62. package/Libraries/Core/setUpDeveloperTools.js +3 -1
  63. package/Libraries/Core/setUpPerformance.js +6 -4
  64. package/Libraries/Core/setUpReactDevTools.js +70 -10
  65. package/Libraries/Core/setUpTimers.js +50 -31
  66. package/Libraries/Debugging/DebuggingOverlayRegistry.js +1 -1
  67. package/Libraries/Image/Image.android.js +23 -13
  68. package/Libraries/Image/Image.d.ts +14 -15
  69. package/Libraries/Image/Image.ios.js +21 -11
  70. package/Libraries/Image/Image.windows.js +21 -11
  71. package/Libraries/Image/ImageProps.js +16 -5
  72. package/Libraries/Image/ImageTypes.flow.js +7 -2
  73. package/Libraries/Image/ImageUtils.js +1 -0
  74. package/Libraries/Image/ImageViewNativeComponent.js +2 -1
  75. package/Libraries/Inspector/ElementBox.js +6 -3
  76. package/Libraries/Inspector/ElementProperties.js +1 -1
  77. package/Libraries/Interaction/TouchHistoryMath.js +4 -4
  78. package/Libraries/IntersectionObserver/IntersectionObserverManager.js +6 -26
  79. package/Libraries/JSInspector/NetworkAgent.js +1 -1
  80. package/Libraries/LogBox/Data/LogBoxData.js +39 -29
  81. package/Libraries/LogBox/Data/LogBoxLog.js +114 -2
  82. package/Libraries/LogBox/Data/parseLogBoxLog.js +168 -53
  83. package/Libraries/LogBox/LogBox.js +29 -12
  84. package/Libraries/LogBox/LogBoxNotificationContainer.js +4 -0
  85. package/Libraries/LogBox/UI/LogBoxInspector.js +8 -70
  86. package/Libraries/LogBox/UI/LogBoxInspectorBody.js +87 -0
  87. package/Libraries/LogBox/UI/LogBoxInspectorFooter.js +6 -42
  88. package/Libraries/LogBox/UI/LogBoxInspectorFooterButton.js +58 -0
  89. package/Libraries/LogBox/UI/LogBoxInspectorHeader.js +5 -66
  90. package/Libraries/LogBox/UI/LogBoxInspectorHeader.windows.js +5 -66
  91. package/Libraries/LogBox/UI/LogBoxInspectorHeaderButton.js +76 -0
  92. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.js +8 -5
  93. package/Libraries/LogBox/UI/LogBoxInspectorReactFrames.windows.js +8 -5
  94. package/Libraries/LogBox/UI/LogBoxNotification.js +13 -152
  95. package/Libraries/LogBox/UI/LogBoxNotificationCountBadge.js +63 -0
  96. package/Libraries/LogBox/UI/LogBoxNotificationDismissButton.js +67 -0
  97. package/Libraries/LogBox/UI/LogBoxNotificationMessage.js +57 -0
  98. package/Libraries/NativeComponent/BaseViewConfig.android.js +5 -0
  99. package/Libraries/NativeComponent/BaseViewConfig.ios.js +5 -0
  100. package/Libraries/NativeComponent/BaseViewConfig.windows.js +5 -0
  101. package/Libraries/NativeComponent/NativeComponentRegistry.js +12 -5
  102. package/Libraries/NativeComponent/StaticViewConfigValidator.js +3 -0
  103. package/Libraries/Network/XMLHttpRequest.js +5 -1
  104. package/Libraries/NewAppScreen/components/LearnMoreLinks.js +3 -3
  105. package/Libraries/Pressability/Pressability.js +3 -51
  106. package/Libraries/Pressability/Pressability.windows.js +3 -51
  107. package/Libraries/ReactNative/AppRegistry.d.ts +4 -0
  108. package/Libraries/ReactNative/AppRegistry.js +2 -4
  109. package/Libraries/ReactNative/BridgelessUIManager.js +1 -21
  110. package/Libraries/ReactNative/FabricUIManager.js +0 -51
  111. package/Libraries/ReactNative/ReactFabricPublicInstance/warnForStyleProps.js +1 -0
  112. package/Libraries/ReactNative/RendererImplementation.js +20 -2
  113. package/Libraries/ReactNative/UIManager.d.ts +0 -21
  114. package/Libraries/ReactNative/UIManagerProperties.js +0 -3
  115. package/Libraries/ReactNative/__mocks__/FabricUIManager.js +5 -341
  116. package/Libraries/ReactNative/getNativeComponentAttributes.js +8 -8
  117. package/Libraries/Renderer/implementations/ReactFabric-dev.js +15682 -27088
  118. package/Libraries/Renderer/implementations/ReactFabric-prod.js +5082 -4381
  119. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +3480 -2571
  120. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +15943 -27543
  121. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5303 -4606
  122. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +3450 -2572
  123. package/Libraries/Renderer/shims/ReactFabric.js +2 -2
  124. package/Libraries/Renderer/shims/ReactFeatureFlags.js +2 -2
  125. package/Libraries/Renderer/shims/ReactNative.js +2 -3
  126. package/Libraries/Renderer/shims/ReactNativeTypes.js +24 -3
  127. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +2 -2
  128. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +2 -2
  129. package/Libraries/Share/Share.d.ts +16 -10
  130. package/Libraries/Share/Share.js +14 -15
  131. package/Libraries/StyleSheet/StyleSheet.d.ts +1 -1
  132. package/Libraries/StyleSheet/StyleSheet.js +3 -10
  133. package/Libraries/StyleSheet/StyleSheetTypes.d.ts +21 -21
  134. package/Libraries/StyleSheet/StyleSheetTypes.js +24 -18
  135. package/Libraries/StyleSheet/flattenStyle.js +1 -0
  136. package/Libraries/StyleSheet/processFilter.js +132 -0
  137. package/Libraries/StyleSheet/processTransform.js +18 -3
  138. package/Libraries/Text/Text.js +151 -128
  139. package/Libraries/Text/Text.windows.js +144 -127
  140. package/Libraries/Text/TextNativeComponent.js +5 -4
  141. package/Libraries/Text/TextProps.js +6 -6
  142. package/Libraries/Text/TextProps.windows.js +6 -6
  143. package/Libraries/TurboModule/TurboModuleRegistry.js +2 -1
  144. package/Libraries/Types/CodegenTypes.js +3 -0
  145. package/Libraries/Utilities/{LoadingView.android.js → DevLoadingView.js} +33 -11
  146. package/Libraries/Utilities/Dimensions.js +1 -0
  147. package/Libraries/Utilities/HMRClient.js +36 -8
  148. package/Libraries/Utilities/HMRClientProdShim.js +1 -0
  149. package/Libraries/Utilities/NativePlatformConstantsWin.js +2 -2
  150. package/Libraries/Utilities/Platform.android.js +4 -4
  151. package/Libraries/Utilities/RCTLog.js +1 -0
  152. package/Libraries/Utilities/ReactNativeTestTools.js +12 -24
  153. package/Libraries/Utilities/verifyComponentAttributeEquivalence.js +11 -6
  154. package/Libraries/__tests__/ViewWindows-test.js +6 -6
  155. package/Libraries/promiseRejectionTrackingOptions.js +1 -0
  156. package/Microsoft.ReactNative/Base/FollyIncludes.h +1 -1
  157. package/Microsoft.ReactNative/ComponentView.idl +0 -17
  158. package/Microsoft.ReactNative/Fabric/AbiState.cpp +3 -45
  159. package/Microsoft.ReactNative/Fabric/AbiState.h +0 -6
  160. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.cpp +10 -6
  161. package/Microsoft.ReactNative/Fabric/Composition/ImageComponentView.h +4 -4
  162. package/Microsoft.ReactNative/Fabric/Composition/ReactNativeIsland.cpp +12 -3
  163. package/Microsoft.ReactNative/Fabric/Composition/ScrollViewComponentView.cpp +1 -1
  164. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +7 -12
  165. package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputShadowNode.cpp +1 -2
  166. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +9 -3
  167. package/Microsoft.ReactNative/Fabric/Composition/UriImageManager.h +1 -1
  168. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.cpp +11 -18
  169. package/Microsoft.ReactNative/Fabric/FabricUIManagerModule.h +3 -5
  170. package/Microsoft.ReactNative/Fabric/WindowsImageManager.cpp +23 -11
  171. package/Microsoft.ReactNative/Fabric/WindowsImageManager.h +5 -2
  172. package/Microsoft.ReactNative/Fabric/platform/react/renderer/components/view/HostPlatformViewEventEmitter.cpp +2 -10
  173. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.cpp +107 -36
  174. package/Microsoft.ReactNative/Fabric/platform/react/renderer/textlayoutmanager/TextLayoutManager.h +18 -12
  175. package/Microsoft.ReactNative/Modules/DevSettingsModule.cpp +4 -0
  176. package/Microsoft.ReactNative/Modules/DevSettingsModule.h +1 -0
  177. package/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +1 -2
  178. package/Microsoft.ReactNative/Modules/NativeUIManager.cpp +7 -4
  179. package/Microsoft.ReactNative/Modules/NativeUIManager.h +1 -1
  180. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.cpp +2 -2
  181. package/Microsoft.ReactNative/Modules/PlatformConstantsWinModule.h +3 -3
  182. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.cpp +11 -17
  183. package/Microsoft.ReactNative/ReactHost/ReactInstanceWin.h +1 -1
  184. package/Microsoft.ReactNative/Timer.idl +1 -3
  185. package/Microsoft.ReactNative/Utils/BatchingEventEmitter.cpp +1 -1
  186. package/Microsoft.ReactNative/Utils/LocalBundleReader.cpp +2 -3
  187. package/Microsoft.ReactNative/Utils/ValueUtils.cpp +1 -1
  188. package/Microsoft.ReactNative/Views/DynamicAutomationPeer.cpp +2 -2
  189. package/Microsoft.ReactNative/Views/TextInputViewManager.cpp +1 -1
  190. package/Microsoft.ReactNative/packages.lock.json +45 -72
  191. package/Microsoft.ReactNative.Cxx/JSI/LongLivedJsiValue.h +1 -1
  192. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems +5 -0
  193. package/Microsoft.ReactNative.Cxx/Microsoft.ReactNative.Cxx.vcxitems.filters +1 -0
  194. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.cpp +14 -6
  195. package/Microsoft.ReactNative.Cxx/TurboModuleProvider.h +2 -2
  196. package/Microsoft.ReactNative.Managed/Microsoft.ReactNative.Managed.csproj +1 -1
  197. package/Microsoft.ReactNative.Managed/packages.lock.json +3 -3
  198. package/PropertySheets/ARM64EC.props +13 -0
  199. package/PropertySheets/Application/ARM64EC.props +13 -0
  200. package/PropertySheets/DynamicLibrary/ARM64EC.props +13 -0
  201. package/PropertySheets/External/Microsoft.ReactNative.WindowsSdk.Default.props +4 -4
  202. package/PropertySheets/Generated/PackageVersion.g.props +4 -4
  203. package/PropertySheets/JSEngine.props +2 -0
  204. package/PropertySheets/StaticLibrary/ARM64EC.props +13 -0
  205. package/README.md +21 -21
  206. package/ReactCommon/ReactCommon.vcxproj +11 -1
  207. package/ReactCommon/ReactCommon.vcxproj.filters +19 -12
  208. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.cpp +67 -0
  209. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/JSExecutor.h +180 -0
  210. package/ReactCommon/TEMP_UntilReactCommonUpdate/cxxreact/NativeToJsBridge.cpp +351 -0
  211. package/ReactCommon/TEMP_UntilReactCommonUpdate/jsi/jsi/test/testlib.cpp +6 -3
  212. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Base.h +152 -0
  213. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Bridging.h +2 -1
  214. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/CallbackWrapper.h +13 -15
  215. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/EventEmitter.h +137 -0
  216. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/bridging/Function.h +283 -0
  217. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.cpp +7 -10
  218. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModule.h +162 -0
  219. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleUtils.h +2 -4
  220. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/scrollview/ScrollViewProps.cpp +33 -8
  221. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.cpp +45 -0
  222. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/JSRuntimeFactory.h +67 -0
  223. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/runtime/ReactInstance.cpp +104 -74
  224. package/Scripts/StripAdditionalPlatformsFromNuspec.ps1 +1 -1
  225. package/Scripts/Tfs/Layout-MSRN-Headers.ps1 +10 -6
  226. package/Scripts/rnw-dependencies.ps1 +36 -23
  227. package/Shared/HermesRuntimeHolder.cpp +19 -1
  228. package/Shared/HermesRuntimeHolder.h +8 -1
  229. package/Shared/HermesSamplingProfiler.cpp +1 -2
  230. package/Shared/Networking/WinRTWebSocketResource.cpp +3 -3
  231. package/Shared/OInstance.cpp +1 -2
  232. package/Shared/Shared.vcxitems +21 -15
  233. package/Shared/Shared.vcxitems.filters +8 -3
  234. package/Shared/Threading/BatchingQueueThread.cpp +6 -2
  235. package/Shared/Threading/BatchingQueueThread.h +2 -2
  236. package/Shared/Utils/CppWinrtLessExceptions.h +2 -2
  237. package/codegen/NativeAppStateSpec.g.h +8 -8
  238. package/codegen/NativeBlobModuleSpec.g.h +0 -10
  239. package/codegen/NativeDOMSpec.g.h +136 -0
  240. package/codegen/NativeDevSettingsSpec.g.h +11 -5
  241. package/codegen/NativeIdleCallbacksSpec.g.h +64 -0
  242. package/codegen/NativeIntersectionObserverSpec.g.h +14 -14
  243. package/codegen/NativeMicrotasksSpec.g.h +34 -0
  244. package/codegen/NativePerformanceSpec.g.h +35 -7
  245. package/codegen/NativePlatformConstantsWindowsSpec.g.h +81 -0
  246. package/codegen/NativePushNotificationManagerIOSSpec.g.h +15 -19
  247. package/codegen/NativeReactNativeFeatureFlagsSpec.g.h +111 -39
  248. package/codegen/NativeUIManagerSpec.g.h +5 -17
  249. package/codegen/react/components/rnwcore/Props.cpp +1 -1
  250. package/codegen/react/components/rnwcore/Props.h +16 -12
  251. package/codegen/react/components/rnwcore/States.h +0 -26
  252. package/codegen/rnwcoreJSI-generated.cpp +688 -463
  253. package/codegen/rnwcoreJSI.h +1374 -2867
  254. package/fmt/TEMP_UntilFmtUpdate/core.h +2925 -0
  255. package/fmt/fmt.vcxproj +10 -2
  256. package/jest/mockComponent.js +7 -0
  257. package/jest/renderer.js +25 -14
  258. package/jest/setup.js +19 -13
  259. package/package.json +29 -27
  260. package/rn-get-polyfills.js +1 -0
  261. package/src/private/core/composeStyles.js +27 -0
  262. package/src/private/featureflags/ReactNativeFeatureFlags.js +93 -33
  263. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +23 -4
  264. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +56 -0
  265. package/src/private/fusebox/setUpFuseboxReactDevToolsDispatcher.js +108 -0
  266. package/src/private/specs/modules/NativeBlobModule.js +4 -2
  267. package/src/private/specs/modules/NativeDevSettings.js +1 -0
  268. package/src/private/specs/modules/NativePushNotificationManagerIOS.js +0 -4
  269. package/src/private/specs/modules/NativeUIManager.js +0 -7
  270. package/src/private/webapis/dom/geometry/DOMRectReadOnly.js +24 -24
  271. package/src/private/webapis/dom/nodes/ReactNativeElement.js +11 -14
  272. package/src/private/webapis/dom/nodes/ReadOnlyCharacterData.js +2 -3
  273. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +24 -54
  274. package/src/private/webapis/dom/nodes/ReadOnlyNode.js +5 -13
  275. package/src/private/webapis/dom/nodes/specs/NativeDOM.js +468 -0
  276. package/src/private/webapis/dom/nodes/specs/__mocks__/NativeDOMMock.js +413 -0
  277. package/src/private/webapis/dom/oldstylecollections/DOMRectList.js +4 -4
  278. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +4 -4
  279. package/src/private/webapis/dom/oldstylecollections/NodeList.js +5 -5
  280. package/src/private/webapis/idlecallbacks/specs/NativeIdleCallbacks.js +34 -0
  281. package/src/private/webapis/microtasks/specs/NativeMicrotasks.js +21 -0
  282. package/src/private/webapis/performance/EventCounts.js +1 -1
  283. package/src/private/webapis/performance/MemoryInfo.js +9 -9
  284. package/src/private/webapis/performance/Performance.js +10 -56
  285. package/src/private/webapis/performance/PerformanceObserver.js +30 -22
  286. package/src/private/webapis/performance/RawPerformanceEntry.js +2 -7
  287. package/src/private/webapis/performance/ReactNativeStartupTiming.js +18 -18
  288. package/src/private/webapis/performance/UserTiming.js +63 -0
  289. package/src/private/webapis/performance/{NativePerformance.js → specs/NativePerformance.js} +3 -2
  290. package/src/private/webapis/performance/{NativePerformanceObserver.js → specs/NativePerformanceObserver.js} +2 -2
  291. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformance.js +1 -1
  292. package/src/private/webapis/performance/{__mocks__ → specs/__mocks__}/NativePerformanceObserver.js +3 -4
  293. package/stubs/glog/logging.h +1 -0
  294. package/template/cpp-lib/proj/MyLib.vcxproj +1 -1
  295. package/template/cs-lib/proj/MyLib.csproj +1 -1
  296. package/template/metro.config.js +13 -2
  297. package/templates/cpp-app/template.config.js +1 -1
  298. package/templates/cpp-lib/example/metro.config.js +2 -2
  299. package/templates/cpp-lib/template.config.js +1 -1
  300. package/templates/old/generateWrapper.js +4 -1
  301. package/types/modules/globals.d.ts +4 -0
  302. package/Libraries/Lists/FlatList.windows.js +0 -717
  303. package/Libraries/NativeModules/specs/NativeAnimationsDebugModule.js +0 -13
  304. package/Libraries/Utilities/LoadingView.ios.js +0 -50
  305. package/Libraries/Utilities/LoadingView.js +0 -16
  306. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp +0 -178
  307. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.cpp +0 -39
  308. package/ReactCommon/TEMP_UntilReactCommonUpdate/react/utils/jsi-utils.h +0 -31
  309. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/YGEnums.h +0 -137
  310. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/algorithm/CalculateLayout.cpp +0 -2375
  311. package/ReactCommon/TEMP_UntilReactCommonUpdate/yoga/yoga/enums/ExperimentalFeature.h +0 -40
  312. package/codegen/NativeAnimationsDebugModuleSpec.g.h +0 -40
  313. package/codegen/NativePlatformConstantsWinSpec.g.h +0 -81
  314. package/jest/ReactNativeInternalFeatureFlagsMock.js +0 -13
  315. package/src/private/featureflags/NativeReactNativeFeatureFlags.js +0 -44
  316. package/src/private/featureflags/__tests__/ReactNativeFeatureFlags-test.js +0 -92
  317. package/src/private/specs/modules/NativeAnimationsDebugModule.js +0 -20
  318. package/src/private/webapis/dom/oldstylecollections/__tests__/DOMRectList-test.js +0 -85
  319. package/src/private/webapis/dom/oldstylecollections/__tests__/HTMLCollection-test.js +0 -80
  320. package/src/private/webapis/dom/oldstylecollections/__tests__/NodeList-test.js +0 -161
  321. package/src/private/webapis/performance/__tests__/EventCounts-test.js +0 -116
  322. package/src/private/webapis/performance/__tests__/NativePerformanceMock-test.js +0 -82
  323. package/src/private/webapis/performance/__tests__/NativePerformanceObserverMock-test.js +0 -108
  324. package/src/private/webapis/performance/__tests__/Performance-test.js +0 -117
  325. package/src/private/webapis/performance/__tests__/PerformanceObserver-test.js +0 -208
  326. package/template/metro.devMode.config.js +0 -56
  327. /package/src/private/specs/modules/{NativePlatformConstantsWin.js → NativePlatformConstantsWindows.js} +0 -0
@@ -1,40 +0,0 @@
1
- /*
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- // @generated by enums.py
9
- // clang-format off
10
- #pragma once
11
-
12
- #include <cstdint>
13
- #include <yoga/YGEnums.h>
14
- #include <yoga/enums/YogaEnums.h>
15
-
16
- namespace facebook::yoga {
17
-
18
- enum class ExperimentalFeature : uint8_t {
19
- WebFlexBasis = YGExperimentalFeatureWebFlexBasis,
20
- CallMeasureCallbackOnAllNodes = YGExperimentalFeatureCallMeasureCallbackOnAllNodes, // Used just for NetUI - Keep at end of list
21
- };
22
-
23
- template <>
24
- constexpr int32_t ordinalCount<ExperimentalFeature>() {
25
- return 2;
26
- }
27
-
28
- constexpr ExperimentalFeature scopedEnum(YGExperimentalFeature unscoped) {
29
- return static_cast<ExperimentalFeature>(unscoped);
30
- }
31
-
32
- constexpr YGExperimentalFeature unscopedEnum(ExperimentalFeature scoped) {
33
- return static_cast<YGExperimentalFeature>(scoped);
34
- }
35
-
36
- inline const char* toString(ExperimentalFeature e) {
37
- return YGExperimentalFeatureToString(unscopedEnum(e));
38
- }
39
-
40
- } // namespace facebook::yoga
@@ -1,40 +0,0 @@
1
-
2
- /*
3
- * This file is auto-generated from a NativeModule spec file in js.
4
- *
5
- * This is a C++ Spec class that should be used with MakeTurboModuleProvider to register native modules
6
- * in a way that also verifies at compile time that the native module matches the interface required
7
- * by the TurboModule JS spec.
8
- */
9
- #pragma once
10
-
11
- #include <NativeModules.h>
12
- #include <tuple>
13
-
14
- namespace Microsoft::ReactNativeSpecs {
15
-
16
-
17
- struct AnimationsDebugModuleSpec : winrt::Microsoft::ReactNative::TurboModuleSpec {
18
- static constexpr auto methods = std::tuple{
19
- Method<void() noexcept>{0, L"startRecordingFps"},
20
- Method<void(double) noexcept>{1, L"stopRecordingFps"},
21
- };
22
-
23
- template <class TModule>
24
- static constexpr void ValidateModule() noexcept {
25
- constexpr auto methodCheckResults = CheckMethods<TModule, AnimationsDebugModuleSpec>();
26
-
27
- REACT_SHOW_METHOD_SPEC_ERRORS(
28
- 0,
29
- "startRecordingFps",
30
- " REACT_METHOD(startRecordingFps) void startRecordingFps() noexcept { /* implementation */ }\n"
31
- " REACT_METHOD(startRecordingFps) static void startRecordingFps() noexcept { /* implementation */ }\n");
32
- REACT_SHOW_METHOD_SPEC_ERRORS(
33
- 1,
34
- "stopRecordingFps",
35
- " REACT_METHOD(stopRecordingFps) void stopRecordingFps(double animationStopTimeMs) noexcept { /* implementation */ }\n"
36
- " REACT_METHOD(stopRecordingFps) static void stopRecordingFps(double animationStopTimeMs) noexcept { /* implementation */ }\n");
37
- }
38
- };
39
-
40
- } // namespace Microsoft::ReactNativeSpecs
@@ -1,81 +0,0 @@
1
-
2
- /*
3
- * This file is auto-generated from a NativeModule spec file in js.
4
- *
5
- * This is a C++ Spec class that should be used with MakeTurboModuleProvider to register native modules
6
- * in a way that also verifies at compile time that the native module matches the interface required
7
- * by the TurboModule JS spec.
8
- */
9
- #pragma once
10
-
11
- #include <NativeModules.h>
12
- #include <tuple>
13
-
14
- namespace Microsoft::ReactNativeSpecs {
15
-
16
- struct PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeVersion {
17
- double major;
18
- double minor;
19
- double patch;
20
- std::optional<std::string> prerelease;
21
- };
22
-
23
- struct PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeWindowsVersion {
24
- double major;
25
- double minor;
26
- double patch;
27
- };
28
-
29
- struct PlatformConstantsWinSpec_PlatformConstantsWindows {
30
- bool isTesting;
31
- std::optional<bool> isDisableAnimations;
32
- PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeVersion reactNativeVersion;
33
- PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeWindowsVersion reactNativeWindowsVersion;
34
- double osVersion;
35
- };
36
-
37
-
38
- inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeVersion*) noexcept {
39
- winrt::Microsoft::ReactNative::FieldMap fieldMap {
40
- {L"major", &PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeVersion::major},
41
- {L"minor", &PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeVersion::minor},
42
- {L"patch", &PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeVersion::patch},
43
- {L"prerelease", &PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeVersion::prerelease},
44
- };
45
- return fieldMap;
46
- }
47
-
48
- inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeWindowsVersion*) noexcept {
49
- winrt::Microsoft::ReactNative::FieldMap fieldMap {
50
- {L"major", &PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeWindowsVersion::major},
51
- {L"minor", &PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeWindowsVersion::minor},
52
- {L"patch", &PlatformConstantsWinSpec_PlatformConstantsWindows_reactNativeWindowsVersion::patch},
53
- };
54
- return fieldMap;
55
- }
56
-
57
- inline winrt::Microsoft::ReactNative::FieldMap GetStructInfo(PlatformConstantsWinSpec_PlatformConstantsWindows*) noexcept {
58
- winrt::Microsoft::ReactNative::FieldMap fieldMap {
59
- {L"isTesting", &PlatformConstantsWinSpec_PlatformConstantsWindows::isTesting},
60
- {L"isDisableAnimations", &PlatformConstantsWinSpec_PlatformConstantsWindows::isDisableAnimations},
61
- {L"reactNativeVersion", &PlatformConstantsWinSpec_PlatformConstantsWindows::reactNativeVersion},
62
- {L"reactNativeWindowsVersion", &PlatformConstantsWinSpec_PlatformConstantsWindows::reactNativeWindowsVersion},
63
- {L"osVersion", &PlatformConstantsWinSpec_PlatformConstantsWindows::osVersion},
64
- };
65
- return fieldMap;
66
- }
67
-
68
- struct PlatformConstantsWinSpec : winrt::Microsoft::ReactNative::TurboModuleSpec {
69
- static constexpr auto methods = std::tuple{
70
-
71
- };
72
-
73
- template <class TModule>
74
- static constexpr void ValidateModule() noexcept {
75
- constexpr auto methodCheckResults = CheckMethods<TModule, PlatformConstantsWinSpec>();
76
-
77
-
78
- }
79
- };
80
-
81
- } // namespace Microsoft::ReactNativeSpecs
@@ -1,13 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- * @flow strict
9
- */
10
-
11
- 'use strict';
12
-
13
- module.exports = {};
@@ -1,44 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @generated SignedSource<<8f82962343a5146622f36c2de071ff6a>>
8
- * @flow strict-local
9
- */
10
-
11
- /**
12
- * IMPORTANT: Do NOT modify this file directly.
13
- *
14
- * To change the definition of the flags, edit
15
- * packages/react-native/scripts/featureflags/ReactNativeFeatureFlags.config.js.
16
- *
17
- * To regenerate this code, run the following script from the repo root:
18
- * yarn featureflags-update
19
- */
20
-
21
- import type {TurboModule} from '../../../Libraries/TurboModule/RCTExport';
22
-
23
- import * as TurboModuleRegistry from '../../../Libraries/TurboModule/TurboModuleRegistry';
24
-
25
- export interface Spec extends TurboModule {
26
- +commonTestFlag?: () => boolean;
27
- +androidEnablePendingFabricTransactions?: () => boolean;
28
- +batchRenderingUpdatesInEventLoop?: () => boolean;
29
- +destroyFabricSurfacesInReactInstanceManager?: () => boolean;
30
- +enableBackgroundExecutor?: () => boolean;
31
- +useModernRuntimeScheduler?: () => boolean;
32
- +enableMicrotasks?: () => boolean;
33
- +enableSpannableBuildingUnification?: () => boolean;
34
- +enableCustomDrawOrderFabric?: () => boolean;
35
- +enableFixForClippedSubviewsCrash?: () => boolean;
36
- +inspectorEnableCxxInspectorPackagerConnection?: () => boolean;
37
- +inspectorEnableModernCDPRegistry?: () => boolean;
38
- }
39
-
40
- const NativeReactNativeFeatureFlags: ?Spec = TurboModuleRegistry.get<Spec>(
41
- 'NativeReactNativeFeatureFlagsCxx',
42
- );
43
-
44
- export default NativeReactNativeFeatureFlags;
@@ -1,92 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- describe('ReactNativeFeatureFlags', () => {
13
- beforeEach(() => {
14
- jest.resetModules();
15
- });
16
-
17
- it('should provide default values for common flags if the native module is NOT available', () => {
18
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
19
- expect(ReactNativeFeatureFlags.commonTestFlag()).toBe(false);
20
- });
21
-
22
- it('should access and cache common flags from the native module if it is available', () => {
23
- const commonTestFlagFn = jest.fn(() => true);
24
-
25
- jest.doMock('../NativeReactNativeFeatureFlags', () => ({
26
- __esModule: true,
27
- default: {
28
- commonTestFlag: commonTestFlagFn,
29
- },
30
- }));
31
-
32
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
33
-
34
- expect(commonTestFlagFn).toHaveBeenCalledTimes(0);
35
-
36
- expect(ReactNativeFeatureFlags.commonTestFlag()).toBe(true);
37
- expect(commonTestFlagFn).toHaveBeenCalledTimes(1);
38
-
39
- expect(ReactNativeFeatureFlags.commonTestFlag()).toBe(true);
40
- expect(commonTestFlagFn).toHaveBeenCalledTimes(1);
41
- });
42
-
43
- it('should provide default values for JS-only flags', () => {
44
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
45
- expect(ReactNativeFeatureFlags.jsOnlyTestFlag()).toBe(false);
46
- });
47
-
48
- it('should access and cache overridden JS-only flags', () => {
49
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
50
-
51
- const jsOnlyTestFlagFn = jest.fn(() => true);
52
- ReactNativeFeatureFlags.override({
53
- jsOnlyTestFlag: jsOnlyTestFlagFn,
54
- });
55
-
56
- expect(jsOnlyTestFlagFn).toHaveBeenCalledTimes(0);
57
-
58
- expect(ReactNativeFeatureFlags.jsOnlyTestFlag()).toBe(true);
59
- expect(jsOnlyTestFlagFn).toHaveBeenCalledTimes(1);
60
-
61
- expect(ReactNativeFeatureFlags.jsOnlyTestFlag()).toBe(true);
62
- expect(jsOnlyTestFlagFn).toHaveBeenCalledTimes(1);
63
- });
64
-
65
- it('should throw an error if any of the flags has been accessed before overridding', () => {
66
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
67
-
68
- ReactNativeFeatureFlags.commonTestFlag();
69
-
70
- expect(() =>
71
- ReactNativeFeatureFlags.override({
72
- jsOnlyTestFlag: () => true,
73
- }),
74
- ).toThrow(
75
- 'Feature flags were accessed before being overridden: commonTestFlag',
76
- );
77
- });
78
-
79
- it('should throw an error when trying to set overrides twice', () => {
80
- const ReactNativeFeatureFlags = require('../ReactNativeFeatureFlags');
81
-
82
- ReactNativeFeatureFlags.override({
83
- jsOnlyTestFlag: () => true,
84
- });
85
-
86
- expect(() =>
87
- ReactNativeFeatureFlags.override({
88
- jsOnlyTestFlag: () => false,
89
- }),
90
- ).toThrow('Feature flags cannot be overridden more than once');
91
- });
92
- });
@@ -1,20 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict
8
- * @format
9
- */
10
-
11
- import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport';
12
-
13
- import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry';
14
-
15
- export interface Spec extends TurboModule {
16
- +startRecordingFps: () => void;
17
- +stopRecordingFps: (animationStopTimeMs: number) => void;
18
- }
19
-
20
- export default (TurboModuleRegistry.get<Spec>('AnimationsDebugModule'): ?Spec);
@@ -1,85 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- import DOMRectReadOnly from '../../geometry/DOMRectReadOnly';
13
- import {createDOMRectList} from '../DOMRectList';
14
-
15
- const domRectA = new DOMRectReadOnly();
16
- const domRectB = new DOMRectReadOnly();
17
- const domRectC = new DOMRectReadOnly();
18
-
19
- describe('DOMRectList', () => {
20
- it('provides an array-like interface', () => {
21
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
22
-
23
- expect(collection[0]).toBe(domRectA);
24
- expect(collection[1]).toBe(domRectB);
25
- expect(collection[2]).toBe(domRectC);
26
- expect(collection[3]).toBe(undefined);
27
- expect(collection.length).toBe(3);
28
- });
29
-
30
- it('is immutable (loose mode)', () => {
31
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
32
-
33
- collection[0] = new DOMRectReadOnly();
34
- expect(collection[0]).toBe(domRectA);
35
-
36
- // $FlowExpectedError[cannot-write]
37
- collection.length = 100;
38
- expect(collection.length).toBe(3);
39
- });
40
-
41
- it('is immutable (strict mode)', () => {
42
- 'use strict';
43
-
44
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
45
-
46
- expect(() => {
47
- collection[0] = new DOMRectReadOnly();
48
- }).toThrow(TypeError);
49
- expect(collection[0]).toBe(domRectA);
50
-
51
- expect(() => {
52
- // $FlowExpectedError[cannot-write]
53
- collection.length = 100;
54
- }).toThrow(TypeError);
55
- expect(collection.length).toBe(3);
56
- });
57
-
58
- it('can be converted to an array through common methods', () => {
59
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
60
-
61
- expect(Array.from(collection)).toEqual([domRectA, domRectB, domRectC]);
62
- expect([...collection]).toEqual([domRectA, domRectB, domRectC]);
63
- });
64
-
65
- it('can be traversed with for-of', () => {
66
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
67
-
68
- let i = 0;
69
- for (const value of collection) {
70
- expect(value).toBe(collection[i]);
71
- i++;
72
- }
73
- });
74
-
75
- describe('item()', () => {
76
- it('returns elements at the specified position, or null', () => {
77
- const collection = createDOMRectList([domRectA, domRectB, domRectC]);
78
-
79
- expect(collection.item(0)).toBe(domRectA);
80
- expect(collection.item(1)).toBe(domRectB);
81
- expect(collection.item(2)).toBe(domRectC);
82
- expect(collection.item(3)).toBe(null);
83
- });
84
- });
85
- });
@@ -1,80 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- import {createHTMLCollection} from '../HTMLCollection';
13
-
14
- describe('HTMLCollection', () => {
15
- it('provides an array-like interface', () => {
16
- const collection = createHTMLCollection(['a', 'b', 'c']);
17
-
18
- expect(collection[0]).toBe('a');
19
- expect(collection[1]).toBe('b');
20
- expect(collection[2]).toBe('c');
21
- expect(collection[3]).toBe(undefined);
22
- expect(collection.length).toBe(3);
23
- });
24
-
25
- it('is immutable (loose mode)', () => {
26
- const collection = createHTMLCollection(['a', 'b', 'c']);
27
-
28
- collection[0] = 'replacement';
29
- expect(collection[0]).toBe('a');
30
-
31
- // $FlowExpectedError[cannot-write]
32
- collection.length = 100;
33
- expect(collection.length).toBe(3);
34
- });
35
-
36
- it('is immutable (strict mode)', () => {
37
- 'use strict';
38
-
39
- const collection = createHTMLCollection(['a', 'b', 'c']);
40
-
41
- expect(() => {
42
- collection[0] = 'replacement';
43
- }).toThrow(TypeError);
44
- expect(collection[0]).toBe('a');
45
-
46
- expect(() => {
47
- // $FlowExpectedError[cannot-write]
48
- collection.length = 100;
49
- }).toThrow(TypeError);
50
- expect(collection.length).toBe(3);
51
- });
52
-
53
- it('can be converted to an array through common methods', () => {
54
- const collection = createHTMLCollection(['a', 'b', 'c']);
55
-
56
- expect(Array.from(collection)).toEqual(['a', 'b', 'c']);
57
- expect([...collection]).toEqual(['a', 'b', 'c']);
58
- });
59
-
60
- it('can be traversed with for-of', () => {
61
- const collection = createHTMLCollection(['a', 'b', 'c']);
62
-
63
- let i = 0;
64
- for (const value of collection) {
65
- expect(value).toBe(collection[i]);
66
- i++;
67
- }
68
- });
69
-
70
- describe('item()', () => {
71
- it('returns elements at the specified position, or null', () => {
72
- const collection = createHTMLCollection(['a', 'b', 'c']);
73
-
74
- expect(collection.item(0)).toBe('a');
75
- expect(collection.item(1)).toBe('b');
76
- expect(collection.item(2)).toBe('c');
77
- expect(collection.item(3)).toBe(null);
78
- });
79
- });
80
- });
@@ -1,161 +0,0 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @flow strict-local
8
- * @format
9
- * @oncall react_native
10
- */
11
-
12
- import {createNodeList} from '../NodeList';
13
-
14
- describe('NodeList', () => {
15
- it('provides an array-like interface', () => {
16
- const collection = createNodeList(['a', 'b', 'c']);
17
-
18
- expect(collection[0]).toBe('a');
19
- expect(collection[1]).toBe('b');
20
- expect(collection[2]).toBe('c');
21
- expect(collection[3]).toBe(undefined);
22
- expect(collection.length).toBe(3);
23
- });
24
-
25
- it('provides indexed access through the item method', () => {
26
- const collection = createNodeList(['a', 'b', 'c']);
27
-
28
- expect(collection.item(0)).toBe('a');
29
- expect(collection.item(1)).toBe('b');
30
- expect(collection.item(2)).toBe('c');
31
- expect(collection.item(3)).toBe(null);
32
- });
33
-
34
- it('is immutable (loose mode)', () => {
35
- const collection = createNodeList(['a', 'b', 'c']);
36
-
37
- collection[0] = 'replacement';
38
- expect(collection[0]).toBe('a');
39
-
40
- // $FlowExpectedError[cannot-write]
41
- collection.length = 100;
42
- expect(collection.length).toBe(3);
43
- });
44
-
45
- it('is immutable (strict mode)', () => {
46
- 'use strict';
47
-
48
- const collection = createNodeList(['a', 'b', 'c']);
49
-
50
- expect(() => {
51
- collection[0] = 'replacement';
52
- }).toThrow(TypeError);
53
- expect(collection[0]).toBe('a');
54
-
55
- expect(() => {
56
- // $FlowExpectedError[cannot-write]
57
- collection.length = 100;
58
- }).toThrow(TypeError);
59
- expect(collection.length).toBe(3);
60
- });
61
-
62
- it('can be converted to an array through common methods', () => {
63
- const collection = createNodeList(['a', 'b', 'c']);
64
-
65
- expect(Array.from(collection)).toEqual(['a', 'b', 'c']);
66
- expect([...collection]).toEqual(['a', 'b', 'c']);
67
- });
68
-
69
- it('can be traversed with for-of', () => {
70
- const collection = createNodeList(['a', 'b', 'c']);
71
-
72
- let i = 0;
73
- for (const value of collection) {
74
- expect(value).toBe(collection[i]);
75
- i++;
76
- }
77
- });
78
-
79
- describe('keys()', () => {
80
- it('returns an iterator for keys', () => {
81
- const collection = createNodeList(['a', 'b', 'c']);
82
-
83
- const keys = collection.keys();
84
- expect(keys.next()).toEqual({value: 0, done: false});
85
- expect(keys.next()).toEqual({value: 1, done: false});
86
- expect(keys.next()).toEqual({value: 2, done: false});
87
- expect(keys.next()).toEqual({done: true});
88
-
89
- let i = 0;
90
- for (const key of collection.keys()) {
91
- expect(key).toBe(i);
92
- i++;
93
- }
94
- });
95
- });
96
-
97
- describe('values()', () => {
98
- it('returns an iterator for values', () => {
99
- const collection = createNodeList(['a', 'b', 'c']);
100
-
101
- const values = collection.values();
102
- expect(values.next()).toEqual({value: 'a', done: false});
103
- expect(values.next()).toEqual({value: 'b', done: false});
104
- expect(values.next()).toEqual({value: 'c', done: false});
105
- expect(values.next()).toEqual({done: true});
106
-
107
- let i = 0;
108
- for (const value of collection.values()) {
109
- expect(value).toBe(collection[i]);
110
- i++;
111
- }
112
- });
113
- });
114
-
115
- describe('entries()', () => {
116
- it('returns an iterator for entries', () => {
117
- const collection = createNodeList(['a', 'b', 'c']);
118
-
119
- const entries = collection.entries();
120
- expect(entries.next()).toEqual({value: [0, 'a'], done: false});
121
- expect(entries.next()).toEqual({value: [1, 'b'], done: false});
122
- expect(entries.next()).toEqual({value: [2, 'c'], done: false});
123
- expect(entries.next()).toEqual({done: true});
124
-
125
- let i = 0;
126
- for (const entry of collection.entries()) {
127
- expect(entry).toEqual([i, collection[i]]);
128
- i++;
129
- }
130
- });
131
- });
132
-
133
- describe('forEach()', () => {
134
- it('iterates over the elements like array.forEach (implicit `this`)', () => {
135
- const collection = createNodeList(['a', 'b', 'c']);
136
-
137
- let i = 0;
138
- collection.forEach(function (this: mixed, value, index, list) {
139
- expect(value).toBe(collection[i]);
140
- expect(index).toBe(i);
141
- expect(list).toBe(collection);
142
- expect(this).toBe(window);
143
- i++;
144
- });
145
- });
146
-
147
- it('iterates over the elements like array.forEach (explicit `this`)', () => {
148
- const collection = createNodeList(['a', 'b', 'c']);
149
-
150
- let i = 0;
151
- const explicitThis = {id: 'foo'};
152
- collection.forEach(function (this: mixed, value, index, list) {
153
- expect(value).toBe(collection[i]);
154
- expect(index).toBe(i);
155
- expect(list).toBe(collection);
156
- expect(this).toBe(explicitThis);
157
- i++;
158
- }, explicitThis);
159
- });
160
- });
161
- });