From 8a4ddab2c20240f6a2e7018573049cd58fcd4d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Tue, 30 Jul 2024 10:08:22 -0700 Subject: [PATCH] Move MutationObserver to react-native/src/private (#45791) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/45791 Changelog: [internal] These files are safe to move because they haven't been enabled in OSS and people shouldn't be importing them directly. Reviewed By: rshest Differential Revision: D60377869 fbshipit-source-id: 02bc0335385859c0589a494de9b59b0c2ebc06f6 --- .../NativeMutationObserver.js | 13 ---- .../__snapshots__/public-api-test.js.snap | 77 ------------------- .../Libraries/__tests__/public-api-test.js | 2 +- .../private/setup}/setUpMutationObserver.js | 4 +- .../mutationobserver}/MutationObserver.js | 2 +- .../MutationObserverManager.js | 10 +-- .../mutationobserver}/MutationRecord.js | 10 +-- .../specs}/NativeMutationObserver.js | 4 +- .../__mocks__/NativeMutationObserver.js | 10 +-- .../MutationObserverExample.js | 2 +- .../VCTrackerExample.js | 2 +- 11 files changed, 22 insertions(+), 114 deletions(-) delete mode 100644 packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js rename packages/react-native/{Libraries/Core => src/private/setup}/setUpMutationObserver.js (63%) rename packages/react-native/{Libraries/MutationObserver => src/private/webapis/mutationobserver}/MutationObserver.js (98%) rename packages/react-native/{Libraries/MutationObserver => src/private/webapis/mutationobserver}/MutationObserverManager.js (95%) rename packages/react-native/{Libraries/MutationObserver => src/private/webapis/mutationobserver}/MutationRecord.js (85%) rename packages/react-native/src/private/{specs/modules => webapis/mutationobserver/specs}/NativeMutationObserver.js (89%) rename packages/react-native/{Libraries/MutationObserver => src/private/webapis/mutationobserver/specs}/__mocks__/NativeMutationObserver.js (95%) diff --git a/packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js b/packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js deleted file mode 100644 index c348917049f..00000000000 --- a/packages/react-native/Libraries/MutationObserver/NativeMutationObserver.js +++ /dev/null @@ -1,13 +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 strict-local - * @format - */ - -export * from '../../src/private/specs/modules/NativeMutationObserver'; -import NativeMutationObserver from '../../src/private/specs/modules/NativeMutationObserver'; -export default NativeMutationObserver; diff --git a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap index 52243299f13..a4bff2c9f5c 100644 --- a/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap +++ b/packages/react-native/Libraries/__tests__/__snapshots__/public-api-test.js.snap @@ -6393,83 +6393,6 @@ declare export default typeof RCTModalHostViewNativeComponent; " `; -exports[`public API should not change unintentionally Libraries/MutationObserver/MutationObserver.js 1`] = ` -"export type MutationObserverCallback = ( - mutationRecords: $ReadOnlyArray, - observer: MutationObserver -) => mixed; -type MutationObserverInit = $ReadOnly<{ - subtree?: boolean, - childList: true, - attributes?: boolean, - attributeFilter?: $ReadOnlyArray, - attributeOldValue?: boolean, - characterData?: boolean, - characterDataOldValue?: boolean, -}>; -declare export default class MutationObserver { - _callback: MutationObserverCallback; - _observationTargets: Set; - _mutationObserverId: ?MutationObserverId; - constructor(callback: MutationObserverCallback): void; - observe(target: ReactNativeElement, options?: MutationObserverInit): void; - _unobserve(target: ReactNativeElement): void; - disconnect(): void; - _getOrCreateMutationObserverId(): MutationObserverId; - __getObserverID(): ?MutationObserverId; -} -" -`; - -exports[`public API should not change unintentionally Libraries/MutationObserver/MutationObserverManager.js 1`] = ` -"export type MutationObserverId = number; -declare export function registerObserver( - observer: MutationObserver, - callback: MutationObserverCallback -): MutationObserverId; -declare export function unregisterObserver( - mutationObserverId: MutationObserverId -): void; -declare export function observe({ - mutationObserverId: MutationObserverId, - target: ReactNativeElement, - subtree: boolean, -}): void; -declare export function unobserve( - mutationObserverId: number, - target: ReactNativeElement -): void; -" -`; - -exports[`public API should not change unintentionally Libraries/MutationObserver/MutationRecord.js 1`] = ` -"export type MutationType = \\"attributes\\" | \\"characterData\\" | \\"childList\\"; -declare export default class MutationRecord { - _target: ReactNativeElement; - _addedNodes: NodeList; - _removedNodes: NodeList; - constructor(nativeRecord: NativeMutationRecord): void; - get addedNodes(): NodeList; - get attributeName(): string | null; - get nextSibling(): ReadOnlyNode | null; - get oldValue(): mixed | null; - get previousSibling(): ReadOnlyNode | null; - get removedNodes(): NodeList; - get target(): ReactNativeElement; - get type(): MutationType; -} -declare export function createMutationRecord( - entry: NativeMutationRecord -): MutationRecord; -" -`; - -exports[`public API should not change unintentionally Libraries/MutationObserver/NativeMutationObserver.js 1`] = ` -"export * from \\"../../src/private/specs/modules/NativeMutationObserver\\"; -declare export default typeof NativeMutationObserver; -" -`; - exports[`public API should not change unintentionally Libraries/NativeComponent/BaseViewConfig.js.flow 1`] = ` "declare const PlatformBaseViewConfig: PartialViewConfigWithoutName; declare export default typeof PlatformBaseViewConfig; diff --git a/packages/react-native/Libraries/__tests__/public-api-test.js b/packages/react-native/Libraries/__tests__/public-api-test.js index b19acbcb52d..2f5252983e0 100644 --- a/packages/react-native/Libraries/__tests__/public-api-test.js +++ b/packages/react-native/Libraries/__tests__/public-api-test.js @@ -41,7 +41,7 @@ const FILES_WITH_KNOWN_ERRORS = new Set([ 'Libraries/Core/setUpErrorHandling.js', 'Libraries/Core/setUpGlobals.js', 'src/private/setup/setUpIntersectionObserver.js', - 'Libraries/Core/setUpMutationObserver.js', + 'src/private/setup/setUpMutationObserver.js', 'Libraries/Core/setUpNavigator.js', 'Libraries/Core/setUpPerformance.js', 'Libraries/Core/setUpPerformanceObserver.js', diff --git a/packages/react-native/Libraries/Core/setUpMutationObserver.js b/packages/react-native/src/private/setup/setUpMutationObserver.js similarity index 63% rename from packages/react-native/Libraries/Core/setUpMutationObserver.js rename to packages/react-native/src/private/setup/setUpMutationObserver.js index 6e34a2e5882..00e1b7fd7fd 100644 --- a/packages/react-native/Libraries/Core/setUpMutationObserver.js +++ b/packages/react-native/src/private/setup/setUpMutationObserver.js @@ -8,9 +8,9 @@ * @format */ -import {polyfillGlobal} from '../Utilities/PolyfillFunctions'; +import {polyfillGlobal} from '../../../Libraries/Utilities/PolyfillFunctions'; polyfillGlobal( 'MutationObserver', - () => require('../MutationObserver/MutationObserver').default, + () => require('../webapis/mutationobserver/MutationObserver').default, ); diff --git a/packages/react-native/Libraries/MutationObserver/MutationObserver.js b/packages/react-native/src/private/webapis/mutationobserver/MutationObserver.js similarity index 98% rename from packages/react-native/Libraries/MutationObserver/MutationObserver.js rename to packages/react-native/src/private/webapis/mutationobserver/MutationObserver.js index 679a7b26b2c..1ee166b78cd 100644 --- a/packages/react-native/Libraries/MutationObserver/MutationObserver.js +++ b/packages/react-native/src/private/webapis/mutationobserver/MutationObserver.js @@ -13,7 +13,7 @@ import type {MutationObserverId} from './MutationObserverManager'; import type MutationRecord from './MutationRecord'; -import ReactNativeElement from '../../src/private/webapis/dom/nodes/ReactNativeElement'; +import ReactNativeElement from '../dom/nodes/ReactNativeElement'; import * as MutationObserverManager from './MutationObserverManager'; export type MutationObserverCallback = ( diff --git a/packages/react-native/Libraries/MutationObserver/MutationObserverManager.js b/packages/react-native/src/private/webapis/mutationobserver/MutationObserverManager.js similarity index 95% rename from packages/react-native/Libraries/MutationObserver/MutationObserverManager.js rename to packages/react-native/src/private/webapis/mutationobserver/MutationObserverManager.js index ced78e9a050..3d2c5d9eb7e 100644 --- a/packages/react-native/Libraries/MutationObserver/MutationObserverManager.js +++ b/packages/react-native/src/private/webapis/mutationobserver/MutationObserverManager.js @@ -18,20 +18,20 @@ * the notifications together. */ -import type ReactNativeElement from '../../src/private/webapis/dom/nodes/ReactNativeElement'; +import type ReactNativeElement from '../dom/nodes/ReactNativeElement'; import type MutationObserver, { MutationObserverCallback, } from './MutationObserver'; import type MutationRecord from './MutationRecord'; +import * as Systrace from '../../../../Libraries/Performance/Systrace'; +import warnOnce from '../../../../Libraries/Utilities/warnOnce'; import { getPublicInstanceFromInternalInstanceHandle, getShadowNode, -} from '../../src/private/webapis/dom/nodes/ReadOnlyNode'; -import * as Systrace from '../Performance/Systrace'; -import warnOnce from '../Utilities/warnOnce'; +} from '../dom/nodes/ReadOnlyNode'; import {createMutationRecord} from './MutationRecord'; -import NativeMutationObserver from './NativeMutationObserver'; +import NativeMutationObserver from './specs/NativeMutationObserver'; export type MutationObserverId = number; diff --git a/packages/react-native/Libraries/MutationObserver/MutationRecord.js b/packages/react-native/src/private/webapis/mutationobserver/MutationRecord.js similarity index 85% rename from packages/react-native/Libraries/MutationObserver/MutationRecord.js rename to packages/react-native/src/private/webapis/mutationobserver/MutationRecord.js index 0616ee97f3c..d41c623dafb 100644 --- a/packages/react-native/Libraries/MutationObserver/MutationRecord.js +++ b/packages/react-native/src/private/webapis/mutationobserver/MutationRecord.js @@ -10,13 +10,11 @@ // flowlint unsafe-getters-setters:off -import type ReactNativeElement from '../../src/private/webapis/dom/nodes/ReactNativeElement'; -import type ReadOnlyNode from '../../src/private/webapis/dom/nodes/ReadOnlyNode'; -import type {NativeMutationRecord} from './NativeMutationObserver'; +import type ReactNativeElement from '../dom/nodes/ReactNativeElement'; +import type ReadOnlyNode from '../dom/nodes/ReadOnlyNode'; +import type {NativeMutationRecord} from './specs/NativeMutationObserver'; -import NodeList, { - createNodeList, -} from '../../src/private/webapis/dom/oldstylecollections/NodeList'; +import NodeList, {createNodeList} from '../dom/oldstylecollections/NodeList'; export type MutationType = 'attributes' | 'characterData' | 'childList'; diff --git a/packages/react-native/src/private/specs/modules/NativeMutationObserver.js b/packages/react-native/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js similarity index 89% rename from packages/react-native/src/private/specs/modules/NativeMutationObserver.js rename to packages/react-native/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js index 714db50a3ba..6dff8652154 100644 --- a/packages/react-native/src/private/specs/modules/NativeMutationObserver.js +++ b/packages/react-native/src/private/webapis/mutationobserver/specs/NativeMutationObserver.js @@ -8,9 +8,9 @@ * @format */ -import type {TurboModule} from '../../../../Libraries/TurboModule/RCTExport'; +import type {TurboModule} from '../../../../../Libraries/TurboModule/RCTExport'; -import * as TurboModuleRegistry from '../../../../Libraries/TurboModule/TurboModuleRegistry'; +import * as TurboModuleRegistry from '../../../../../Libraries/TurboModule/TurboModuleRegistry'; export type MutationObserverId = number; diff --git a/packages/react-native/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js b/packages/react-native/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js similarity index 95% rename from packages/react-native/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js rename to packages/react-native/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js index 779674081e3..0c6a93ae6c1 100644 --- a/packages/react-native/Libraries/MutationObserver/__mocks__/NativeMutationObserver.js +++ b/packages/react-native/src/private/webapis/mutationobserver/specs/__mocks__/NativeMutationObserver.js @@ -15,12 +15,12 @@ * JavaScript as an integration test using only public APIs. */ -import type {NodeSet} from '../../ReactNative/FabricUIManager'; -import type {RootTag} from '../../ReactNative/RootTag'; +import type {NodeSet} from '../../../../../../Libraries/ReactNative/FabricUIManager'; +import type {RootTag} from '../../../../../../Libraries/ReactNative/RootTag'; import type { InternalInstanceHandle, Node, -} from '../../Renderer/shims/ReactNativeTypes'; +} from '../../../../../../Libraries/Renderer/shims/ReactNativeTypes'; import type { MutationObserverId, NativeMutationObserverObserveOptions, @@ -28,14 +28,14 @@ import type { Spec, } from '../NativeMutationObserver'; -import ReadOnlyNode from '../../../src/private/webapis/dom/nodes/ReadOnlyNode'; import { type NodeMock, type UIManagerCommitHook, fromNode, getFabricUIManager, getNodeInChildSet, -} from '../../ReactNative/__mocks__/FabricUIManager'; +} from '../../../../../../Libraries/ReactNative/__mocks__/FabricUIManager'; +import ReadOnlyNode from '../../../dom/nodes/ReadOnlyNode'; import invariant from 'invariant'; import nullthrows from 'nullthrows'; diff --git a/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js b/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js index d71f9dd8c4e..0a22a03ccfb 100644 --- a/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js +++ b/packages/rn-tester/js/examples/MutationObserver/MutationObserverExample.js @@ -15,8 +15,8 @@ import {RNTesterThemeContext} from '../../components/RNTesterTheme'; import * as React from 'react'; import {type ElementRef, useContext, useEffect, useRef, useState} from 'react'; import {Pressable, ScrollView, StyleSheet, Text, View} from 'react-native'; -import MutationObserver from 'react-native/Libraries/MutationObserver/MutationObserver'; import ReadOnlyElement from 'react-native/src/private/webapis/dom/nodes/ReadOnlyElement'; +import MutationObserver from 'react-native/src/private/webapis/mutationobserver/MutationObserver'; export const name = 'MutationObserver Example'; export const title = name; diff --git a/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js b/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js index f4aed1b5ff7..99e6545c2aa 100644 --- a/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js +++ b/packages/rn-tester/js/examples/MutationObserver/VisualCompletionExample/VCTrackerExample.js @@ -11,9 +11,9 @@ import type DOMRectReadOnly from 'react-native/src/private/webapis/dom/geometry/DOMRectReadOnly'; import type ReadOnlyNode from 'react-native/src/private/webapis/dom/nodes/ReadOnlyNode'; -import MutationObserver from 'react-native/Libraries/MutationObserver/MutationObserver'; import ReactNativeElement from 'react-native/src/private/webapis/dom/nodes/ReactNativeElement'; import IntersectionObserver from 'react-native/src/private/webapis/intersectionobserver/IntersectionObserver'; +import MutationObserver from 'react-native/src/private/webapis/mutationobserver/MutationObserver'; export type VisualElement = { time: number,