Copy disabled (too large)
Download .txt
Showing preview only (61,760K chars total). Download the full file to get everything.
Repository: facebook/react-native
Branch: main
Commit: 0e65df9152d9
Files: 7392
Total size: 56.9 MB
Directory structure:
gitextract_q2tq5gs6/
├── .babelrc
├── .bundle/
│ └── config
├── .clang-format
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .flowconfig
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ ├── debugger_bug_report.yml
│ │ └── new_architecture_bug_report.yml
│ ├── ISSUE_TEMPLATE.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── RELEASE_TEMPLATE.md
│ ├── SUPPORT.md
│ ├── actions/
│ │ ├── build-android/
│ │ │ └── action.yml
│ │ ├── build-fantom-runner/
│ │ │ └── action.yml
│ │ ├── build-npm-package/
│ │ │ └── action.yml
│ │ ├── create-release/
│ │ │ └── action.yml
│ │ ├── diff-js-api-changes/
│ │ │ └── action.yml
│ │ ├── maestro-android/
│ │ │ └── action.yml
│ │ ├── maestro-ios/
│ │ │ └── action.yml
│ │ ├── post-pr-comment/
│ │ │ └── action.yml
│ │ ├── prepare-hermes-v1-app/
│ │ │ └── action.yml
│ │ ├── prepare-ios-tests/
│ │ │ └── action.yml
│ │ ├── run-fantom-tests/
│ │ │ └── action.yml
│ │ ├── setup-gradle/
│ │ │ └── action.yml
│ │ ├── setup-node/
│ │ │ └── action.yml
│ │ ├── setup-xcode/
│ │ │ └── action.yml
│ │ ├── test-ios-helloworld/
│ │ │ └── action.yml
│ │ ├── test-ios-rntester/
│ │ │ └── action.yml
│ │ ├── test-js/
│ │ │ └── action.yml
│ │ └── yarn-install/
│ │ └── action.yml
│ ├── workflow-scripts/
│ │ ├── __tests__/
│ │ │ ├── createDraftRelease-test.js
│ │ │ ├── extractIssueOncalls-test.js
│ │ │ ├── generateChangelog-test.js
│ │ │ ├── publishTemplate-test.js
│ │ │ ├── verifyArtifactsAreOnMaven-test.js
│ │ │ ├── verifyPublishedPackage-test.js
│ │ │ └── verifyReleaseOnNpm-test.js
│ │ ├── actOnLabel.js
│ │ ├── addDescriptiveLabels.js
│ │ ├── analyze_scripts.sh
│ │ ├── checkBranchTarget.js
│ │ ├── checkForReproducer.js
│ │ ├── createDraftRelease.js
│ │ ├── exec_swallow_error.sh
│ │ ├── extractIssueOncalls.js
│ │ ├── generateChangelog.js
│ │ ├── hermes-v1.patch
│ │ ├── lint_files.sh
│ │ ├── maestro-android.js
│ │ ├── maestro-ios.js
│ │ ├── publishTemplate.js
│ │ ├── selectLatestHermesV1Version.js
│ │ ├── utils.js
│ │ ├── validatePRBody.js
│ │ ├── verifyArtifactsAreOnMaven.js
│ │ ├── verifyPublishedPackage.js
│ │ ├── verifyReleaseOnNpm.js
│ │ └── verifyVersion.js
│ └── workflows/
│ ├── analyze-pr.yml
│ ├── api-changes.yml
│ ├── autorebase.yml
│ ├── bump-podfile-lock.yml
│ ├── cache-reaper.yml
│ ├── check-for-reproducer.yml
│ ├── close-pr.yml
│ ├── create-draft-release.yml
│ ├── create-release.yml
│ ├── generate-changelog.yml
│ ├── monitor-new-issues.yml
│ ├── needs-attention.yml
│ ├── nightly.yml
│ ├── on-issue-labeled.yml
│ ├── prebuild-ios-core.yml
│ ├── prebuild-ios-dependencies.yml
│ ├── publish-bumped-packages.yml
│ ├── publish-release.yml
│ ├── retry-workflow.yml
│ ├── stale-bot.yml
│ ├── test-all.yml
│ ├── validate-cxx-api-snapshots.yml
│ └── validate-dotslash-artifacts.yml
├── .gitignore
├── .markdownlint-cli2.mjs
├── .prettierignore
├── .prettierrc.js
├── CHANGELOG-0.5x.md
├── CHANGELOG-0.6x.md
├── CHANGELOG-0.7x.md
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── ECOSYSTEM.md
├── Gemfile
├── LICENSE
├── README.md
├── __docs__/
│ ├── GUIDELINES.md
│ ├── README-template.md
│ └── README.md
├── build.gradle.kts
├── flow-typed/
│ ├── environment/
│ │ └── node.js
│ └── npm/
│ ├── @expo/
│ │ └── spawn-async_v1.x.x.js
│ ├── @isaacs/
│ │ └── ttlcache_1.x.x.js
│ ├── @octokit/
│ │ └── rest_v22.x.x.js
│ ├── @react-native-community/
│ │ ├── cli-server-api_v19.x.x.js
│ │ └── cli-types_v19.x.x.js
│ ├── @tsconfig/
│ │ └── node22_v22.x.x.js
│ ├── actual-request-url_v1.x.x.js
│ ├── ansi-regex_v5.x.x.js
│ ├── babel-traverse_v7.x.x.js
│ ├── babel-types_v7.x.x.js
│ ├── babel_v7.x.x.js
│ ├── base64-js_v1.x.x.js
│ ├── chrome-launcher_v0.15.x.js
│ ├── chromium-edge-launcher_v0.2.x.js
│ ├── commander_v12.x.x.js
│ ├── connect_v3.x.x.js
│ ├── cross-spawn_v7.x.x.js
│ ├── debug_v4.4.x.js
│ ├── deep-equal_v1.x.x.js
│ ├── electron-packager_v18.x.x.js
│ ├── electron_v36.x.x.js
│ ├── execa_v5.x.x.js
│ ├── fb-dotslash_v0.x.x.js
│ ├── ini_v5.x.x.js
│ ├── jest-diff_v29.x.x.js
│ ├── jest-snapshot_v29.x.x.js
│ ├── jest.js
│ ├── jsonc-parser_v2.2.x.js
│ ├── listr2_v8.x.x.js
│ ├── listr_v14.x.x.js
│ ├── node-fetch_v2.x.x.js
│ ├── open_v7.x.x.js
│ ├── pretty-format_v29.x.x.js
│ ├── promise_v8.x.x.js
│ ├── react-dom_v17.x.x.js
│ ├── react-test-renderer_v16.x.x.js
│ ├── rxjs_v6.x.x.js
│ ├── selfsigned_v2.x.x.js
│ ├── semver_v7.x.x.js
│ ├── serve-static_v1.x.x.js
│ ├── shelljs_v0.x.x.js
│ ├── signedsource_v1.x.x.js
│ ├── stacktrace-parser_v0.1.x.js
│ ├── tinybench_v4.1.x.js
│ ├── tinyglobby_v0.2.x.js
│ ├── typescript_v5.x.x.js
│ ├── undici_v6.x.x.js
│ ├── wait-for-expect_v3.x.x.js
│ ├── ws_v7.x.x.js
│ └── yargs_v17.x.x.js
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── jest/
│ └── preprocessor.js
├── jest.config.js
├── package.json
├── packages/
│ ├── assets/
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ └── path-support-test.js
│ │ ├── package.json
│ │ ├── path-support.js
│ │ └── registry.js
│ ├── babel-plugin-codegen/
│ │ ├── README.md
│ │ ├── __test_fixtures__/
│ │ │ ├── failures.js
│ │ │ └── fixtures.js
│ │ ├── __tests__/
│ │ │ ├── __snapshots__/
│ │ │ │ └── index-test.js.snap
│ │ │ └── index-test.js
│ │ ├── index.js
│ │ └── package.json
│ ├── community-cli-plugin/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src/
│ │ ├── commands/
│ │ │ ├── bundle/
│ │ │ │ ├── __mocks__/
│ │ │ │ │ └── sign.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── filterPlatformAssetScales-test.js
│ │ │ │ │ ├── getAssetDestPathAndroid-test.js
│ │ │ │ │ └── getAssetDestPathIOS-test.js
│ │ │ │ ├── assetCatalogIOS.js
│ │ │ │ ├── assetPathUtils.js
│ │ │ │ ├── buildBundle.js
│ │ │ │ ├── createKeepFileAsync.js
│ │ │ │ ├── filterPlatformAssetScales.js
│ │ │ │ ├── getAssetDestPathAndroid.js
│ │ │ │ ├── getAssetDestPathIOS.js
│ │ │ │ ├── index.js
│ │ │ │ └── saveAssets.js
│ │ │ └── start/
│ │ │ ├── OpenDebuggerKeyboardHandler.js
│ │ │ ├── attachKeyHandlers.js
│ │ │ ├── index.js
│ │ │ ├── middleware.js
│ │ │ └── runServer.js
│ │ ├── index.flow.js
│ │ ├── index.js
│ │ └── utils/
│ │ ├── createDevMiddlewareLogger.js
│ │ ├── errors.js
│ │ ├── isDevServerRunning.js
│ │ ├── loadMetroConfig.js
│ │ ├── metroPlatformResolver.js
│ │ ├── parseKeyValueParamArray.js
│ │ └── version.js
│ ├── core-cli-utils/
│ │ ├── .eslintrc.json
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src/
│ │ ├── index.flow.js
│ │ ├── index.js
│ │ ├── private/
│ │ │ ├── android.js
│ │ │ ├── app.js
│ │ │ ├── apple.js
│ │ │ ├── clean.js
│ │ │ ├── types.js
│ │ │ └── utils.js
│ │ └── public/
│ │ ├── version.flow.js
│ │ └── version.js
│ ├── debugger-frontend/
│ │ ├── BUILD_INFO
│ │ ├── README.md
│ │ ├── dist/
│ │ │ └── third-party/
│ │ │ ├── LICENSE
│ │ │ └── front_end/
│ │ │ ├── Images/
│ │ │ │ ├── Images.js
│ │ │ │ ├── chromeLeft.avif
│ │ │ │ ├── chromeMiddle.avif
│ │ │ │ ├── chromeRight.avif
│ │ │ │ ├── cssoverview_icons_2x.avif
│ │ │ │ └── nodeIcon.avif
│ │ │ ├── Tests.js
│ │ │ ├── application_tokens.css
│ │ │ ├── core/
│ │ │ │ ├── common/
│ │ │ │ │ └── common.js
│ │ │ │ ├── dom_extension/
│ │ │ │ │ └── dom_extension.js
│ │ │ │ ├── host/
│ │ │ │ │ └── host.js
│ │ │ │ ├── i18n/
│ │ │ │ │ ├── i18n.js
│ │ │ │ │ └── locales/
│ │ │ │ │ ├── en-US.json
│ │ │ │ │ └── zh.json
│ │ │ │ ├── platform/
│ │ │ │ │ └── platform.js
│ │ │ │ ├── protocol_client/
│ │ │ │ │ └── protocol_client.js
│ │ │ │ ├── rn_experiments/
│ │ │ │ │ └── rn_experiments.js
│ │ │ │ ├── root/
│ │ │ │ │ └── root.js
│ │ │ │ └── sdk/
│ │ │ │ ├── sdk-meta.js
│ │ │ │ └── sdk.js
│ │ │ ├── design_system_tokens.css
│ │ │ ├── device_mode_emulation_frame.html
│ │ │ ├── devtools_app.html
│ │ │ ├── devtools_compatibility.js
│ │ │ ├── emulated_devices/
│ │ │ │ └── optimized/
│ │ │ │ ├── MotoG4-landscape.avif
│ │ │ │ ├── MotoG4-portrait.avif
│ │ │ │ ├── Nexus5X-landscape.avif
│ │ │ │ ├── Nexus5X-portrait.avif
│ │ │ │ ├── Nexus6P-landscape.avif
│ │ │ │ ├── Nexus6P-portrait.avif
│ │ │ │ ├── google-nest-hub-horizontal.avif
│ │ │ │ ├── google-nest-hub-max-horizontal.avif
│ │ │ │ ├── google-nexus-5-horizontal-default-1x.avif
│ │ │ │ ├── google-nexus-5-horizontal-default-2x.avif
│ │ │ │ ├── google-nexus-5-horizontal-keyboard-1x.avif
│ │ │ │ ├── google-nexus-5-horizontal-keyboard-2x.avif
│ │ │ │ ├── google-nexus-5-horizontal-navigation-1x.avif
│ │ │ │ ├── google-nexus-5-horizontal-navigation-2x.avif
│ │ │ │ ├── google-nexus-5-vertical-default-1x.avif
│ │ │ │ ├── google-nexus-5-vertical-default-2x.avif
│ │ │ │ ├── google-nexus-5-vertical-keyboard-1x.avif
│ │ │ │ ├── google-nexus-5-vertical-keyboard-2x.avif
│ │ │ │ ├── google-nexus-5-vertical-navigation-1x.avif
│ │ │ │ ├── google-nexus-5-vertical-navigation-2x.avif
│ │ │ │ ├── google-nexus-5x-horizontal-default-1x.avif
│ │ │ │ ├── google-nexus-5x-horizontal-default-2x.avif
│ │ │ │ ├── google-nexus-5x-horizontal-keyboard-1x.avif
│ │ │ │ ├── google-nexus-5x-horizontal-keyboard-2x.avif
│ │ │ │ ├── google-nexus-5x-horizontal-navigation-1x.avif
│ │ │ │ ├── google-nexus-5x-horizontal-navigation-2x.avif
│ │ │ │ ├── google-nexus-5x-vertical-default-1x.avif
│ │ │ │ ├── google-nexus-5x-vertical-default-2x.avif
│ │ │ │ ├── google-nexus-5x-vertical-keyboard-1x.avif
│ │ │ │ ├── google-nexus-5x-vertical-keyboard-2x.avif
│ │ │ │ ├── google-nexus-5x-vertical-navigation-1x.avif
│ │ │ │ ├── google-nexus-5x-vertical-navigation-2x.avif
│ │ │ │ ├── iPad-landscape.avif
│ │ │ │ ├── iPad-portrait.avif
│ │ │ │ ├── iPhone5-landscape.avif
│ │ │ │ ├── iPhone5-portrait.avif
│ │ │ │ ├── iPhone6-landscape.avif
│ │ │ │ ├── iPhone6-portrait.avif
│ │ │ │ ├── iPhone6Plus-landscape.avif
│ │ │ │ └── iPhone6Plus-portrait.avif
│ │ │ ├── entrypoints/
│ │ │ │ ├── device_mode_emulation_frame/
│ │ │ │ │ └── device_mode_emulation_frame.js
│ │ │ │ ├── devtools_app/
│ │ │ │ │ └── devtools_app.js
│ │ │ │ ├── formatter_worker/
│ │ │ │ │ ├── FormatterActions.js
│ │ │ │ │ ├── formatter_worker-entrypoint.js
│ │ │ │ │ └── formatter_worker.js
│ │ │ │ ├── heap_snapshot_worker/
│ │ │ │ │ ├── heap_snapshot_worker-entrypoint.js
│ │ │ │ │ └── heap_snapshot_worker.js
│ │ │ │ ├── inspector/
│ │ │ │ │ └── inspector.js
│ │ │ │ ├── inspector_main/
│ │ │ │ │ ├── inspector_main-meta.js
│ │ │ │ │ └── inspector_main.js
│ │ │ │ ├── js_app/
│ │ │ │ │ └── js_app.js
│ │ │ │ ├── lighthouse_worker/
│ │ │ │ │ └── lighthouse_worker.js
│ │ │ │ ├── main/
│ │ │ │ │ ├── main-meta.js
│ │ │ │ │ └── main.js
│ │ │ │ ├── ndb_app/
│ │ │ │ │ └── ndb_app.js
│ │ │ │ ├── node_app/
│ │ │ │ │ └── node_app.js
│ │ │ │ ├── rehydrated_devtools_app/
│ │ │ │ │ └── rehydrated_devtools_app.js
│ │ │ │ ├── rn_fusebox/
│ │ │ │ │ └── rn_fusebox.js
│ │ │ │ ├── shell/
│ │ │ │ │ └── shell.js
│ │ │ │ ├── wasmparser_worker/
│ │ │ │ │ ├── wasmparser_worker-entrypoint.js
│ │ │ │ │ └── wasmparser_worker.js
│ │ │ │ └── worker_app/
│ │ │ │ └── worker_app.js
│ │ │ ├── inspector.html
│ │ │ ├── integration_test_runner.html
│ │ │ ├── js_app.html
│ │ │ ├── legacy_test_runner/
│ │ │ │ ├── legacy_test_runner.js
│ │ │ │ └── test_runner/
│ │ │ │ └── test_runner.js
│ │ │ ├── models/
│ │ │ │ ├── ai_assistance/
│ │ │ │ │ └── ai_assistance.js
│ │ │ │ ├── autofill_manager/
│ │ │ │ │ └── autofill_manager.js
│ │ │ │ ├── bindings/
│ │ │ │ │ └── bindings.js
│ │ │ │ ├── breakpoints/
│ │ │ │ │ └── breakpoints.js
│ │ │ │ ├── cpu_profile/
│ │ │ │ │ └── cpu_profile.js
│ │ │ │ ├── crux-manager/
│ │ │ │ │ └── crux-manager.js
│ │ │ │ ├── emulation/
│ │ │ │ │ └── emulation.js
│ │ │ │ ├── extensions/
│ │ │ │ │ └── extensions.js
│ │ │ │ ├── formatter/
│ │ │ │ │ └── formatter.js
│ │ │ │ ├── har/
│ │ │ │ │ └── har.js
│ │ │ │ ├── heap_snapshot_model/
│ │ │ │ │ └── heap_snapshot_model.js
│ │ │ │ ├── issues_manager/
│ │ │ │ │ ├── descriptions/
│ │ │ │ │ │ ├── CoepCoopSandboxedIframeCannotNavigateToCoopPage.md
│ │ │ │ │ │ ├── CoepCorpNotSameOrigin.md
│ │ │ │ │ │ ├── CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md
│ │ │ │ │ │ ├── CoepCorpNotSameSite.md
│ │ │ │ │ │ ├── CoepFrameResourceNeedsCoepHeader.md
│ │ │ │ │ │ ├── CompatibilityModeQuirks.md
│ │ │ │ │ │ ├── CookieAttributeValueExceedsMaxSize.md
│ │ │ │ │ │ ├── LowTextContrast.md
│ │ │ │ │ │ ├── SameSiteExcludeContextDowngradeRead.md
│ │ │ │ │ │ ├── SameSiteExcludeContextDowngradeSet.md
│ │ │ │ │ │ ├── SameSiteExcludeNavigationContextDowngrade.md
│ │ │ │ │ │ ├── SameSiteInvalidSameParty.md
│ │ │ │ │ │ ├── SameSiteNoneInsecureErrorRead.md
│ │ │ │ │ │ ├── SameSiteNoneInsecureErrorSet.md
│ │ │ │ │ │ ├── SameSiteNoneInsecureWarnRead.md
│ │ │ │ │ │ ├── SameSiteNoneInsecureWarnSet.md
│ │ │ │ │ │ ├── SameSiteUnspecifiedLaxAllowUnsafeRead.md
│ │ │ │ │ │ ├── SameSiteUnspecifiedLaxAllowUnsafeSet.md
│ │ │ │ │ │ ├── SameSiteWarnCrossDowngradeRead.md
│ │ │ │ │ │ ├── SameSiteWarnCrossDowngradeSet.md
│ │ │ │ │ │ ├── SameSiteWarnStrictLaxDowngradeStrict.md
│ │ │ │ │ │ ├── arInsecureContext.md
│ │ │ │ │ │ ├── arInvalidInfoHeader.md
│ │ │ │ │ │ ├── arInvalidRegisterOsSourceHeader.md
│ │ │ │ │ │ ├── arInvalidRegisterOsTriggerHeader.md
│ │ │ │ │ │ ├── arInvalidRegisterSourceHeader.md
│ │ │ │ │ │ ├── arInvalidRegisterTriggerHeader.md
│ │ │ │ │ │ ├── arNavigationRegistrationUniqueScopeAlreadySet.md
│ │ │ │ │ │ ├── arNavigationRegistrationWithoutTransientUserActivation.md
│ │ │ │ │ │ ├── arNoRegisterOsSourceHeader.md
│ │ │ │ │ │ ├── arNoRegisterOsTriggerHeader.md
│ │ │ │ │ │ ├── arNoRegisterSourceHeader.md
│ │ │ │ │ │ ├── arNoRegisterTriggerHeader.md
│ │ │ │ │ │ ├── arNoWebOrOsSupport.md
│ │ │ │ │ │ ├── arOsSourceIgnored.md
│ │ │ │ │ │ ├── arOsTriggerIgnored.md
│ │ │ │ │ │ ├── arPermissionPolicyDisabled.md
│ │ │ │ │ │ ├── arSourceAndTriggerHeaders.md
│ │ │ │ │ │ ├── arSourceIgnored.md
│ │ │ │ │ │ ├── arTriggerIgnored.md
│ │ │ │ │ │ ├── arUntrustworthyReportingOrigin.md
│ │ │ │ │ │ ├── arWebAndOsHeaders.md
│ │ │ │ │ │ ├── bounceTrackingMitigations.md
│ │ │ │ │ │ ├── clientHintMetaTagAllowListInvalidOrigin.md
│ │ │ │ │ │ ├── clientHintMetaTagModifiedHTML.md
│ │ │ │ │ │ ├── cookieCrossSiteRedirectDowngrade.md
│ │ │ │ │ │ ├── cookieExcludeBlockedWithinRelatedWebsiteSet.md
│ │ │ │ │ │ ├── cookieExcludeDomainNonAscii.md
│ │ │ │ │ │ ├── cookieExcludePortMismatch.md
│ │ │ │ │ │ ├── cookieExcludeSchemeMismatch.md
│ │ │ │ │ │ ├── cookieExcludeThirdPartyPhaseoutRead.md
│ │ │ │ │ │ ├── cookieExcludeThirdPartyPhaseoutSet.md
│ │ │ │ │ │ ├── cookieWarnDomainNonAscii.md
│ │ │ │ │ │ ├── cookieWarnMetadataGrantRead.md
│ │ │ │ │ │ ├── cookieWarnMetadataGrantSet.md
│ │ │ │ │ │ ├── cookieWarnThirdPartyPhaseoutRead.md
│ │ │ │ │ │ ├── cookieWarnThirdPartyPhaseoutSet.md
│ │ │ │ │ │ ├── corsAllowCredentialsRequired.md
│ │ │ │ │ │ ├── corsDisabledScheme.md
│ │ │ │ │ │ ├── corsDisallowedByMode.md
│ │ │ │ │ │ ├── corsHeaderDisallowedByPreflightResponse.md
│ │ │ │ │ │ ├── corsInsecurePrivateNetwork.md
│ │ │ │ │ │ ├── corsInvalidHeaderValues.md
│ │ │ │ │ │ ├── corsLocalNetworkAccessPermissionDenied.md
│ │ │ │ │ │ ├── corsMethodDisallowedByPreflightResponse.md
│ │ │ │ │ │ ├── corsNoCorsRedirectModeNotFollow.md
│ │ │ │ │ │ ├── corsOriginMismatch.md
│ │ │ │ │ │ ├── corsPreflightAllowPrivateNetworkError.md
│ │ │ │ │ │ ├── corsPreflightResponseInvalid.md
│ │ │ │ │ │ ├── corsPrivateNetworkPermissionDenied.md
│ │ │ │ │ │ ├── corsRedirectContainsCredentials.md
│ │ │ │ │ │ ├── corsWildcardOriginNotAllowed.md
│ │ │ │ │ │ ├── cspEvalViolation.md
│ │ │ │ │ │ ├── cspInlineViolation.md
│ │ │ │ │ │ ├── cspTrustedTypesPolicyViolation.md
│ │ │ │ │ │ ├── cspTrustedTypesSinkViolation.md
│ │ │ │ │ │ ├── cspURLViolation.md
│ │ │ │ │ │ ├── deprecation.md
│ │ │ │ │ │ ├── federatedAuthRequestAccountsHttpNotFound.md
│ │ │ │ │ │ ├── federatedAuthRequestAccountsInvalidResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestAccountsNoResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestApprovalDeclined.md
│ │ │ │ │ │ ├── federatedAuthRequestCanceled.md
│ │ │ │ │ │ ├── federatedAuthRequestClientMetadataHttpNotFound.md
│ │ │ │ │ │ ├── federatedAuthRequestClientMetadataInvalidResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestClientMetadataNoResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestErrorFetchingSignin.md
│ │ │ │ │ │ ├── federatedAuthRequestErrorIdToken.md
│ │ │ │ │ │ ├── federatedAuthRequestIdTokenHttpNotFound.md
│ │ │ │ │ │ ├── federatedAuthRequestIdTokenInvalidRequest.md
│ │ │ │ │ │ ├── federatedAuthRequestIdTokenInvalidResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestIdTokenNoResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestInvalidSigninResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestManifestHttpNotFound.md
│ │ │ │ │ │ ├── federatedAuthRequestManifestInvalidResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestManifestNoResponse.md
│ │ │ │ │ │ ├── federatedAuthRequestTooManyRequests.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestInvalidAccountsResponse.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestNoAccountSharingPermission.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestNoApiPermission.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotIframe.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotSameOrigin.md
│ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotSignedInWithIdp.md
│ │ │ │ │ │ ├── fetchingPartitionedBlobURL.md
│ │ │ │ │ │ ├── genericFormAriaLabelledByToNonExistingId.md
│ │ │ │ │ │ ├── genericFormAutocompleteAttributeEmptyError.md
│ │ │ │ │ │ ├── genericFormDuplicateIdForInputError.md
│ │ │ │ │ │ ├── genericFormEmptyIdAndNameAttributesForInputError.md
│ │ │ │ │ │ ├── genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md
│ │ │ │ │ │ ├── genericFormInputHasWrongButWellIntendedAutocompleteValueError.md
│ │ │ │ │ │ ├── genericFormInputWithNoLabelError.md
│ │ │ │ │ │ ├── genericFormLabelForMatchesNonExistingIdError.md
│ │ │ │ │ │ ├── genericFormLabelForNameError.md
│ │ │ │ │ │ ├── genericFormLabelHasNeitherForNorNestedInput.md
│ │ │ │ │ │ ├── genericResponseWasBlockedByORB.md
│ │ │ │ │ │ ├── heavyAd.md
│ │ │ │ │ │ ├── mixedContent.md
│ │ │ │ │ │ ├── navigatingPartitionedBlobURL.md
│ │ │ │ │ │ ├── placeholderDescriptionForInvisibleIssues.md
│ │ │ │ │ │ ├── propertyRuleInvalidNameIssue.md
│ │ │ │ │ │ ├── propertyRuleIssue.md
│ │ │ │ │ │ ├── selectElementAccessibilityDisallowedOptGroupChild.md
│ │ │ │ │ │ ├── selectElementAccessibilityDisallowedSelectChild.md
│ │ │ │ │ │ ├── selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md
│ │ │ │ │ │ ├── selectElementAccessibilityInteractiveContentLegendChild.md
│ │ │ │ │ │ ├── selectElementAccessibilityInteractiveContentOptionChild.md
│ │ │ │ │ │ ├── selectElementAccessibilityNonPhrasingContentOptionChild.md
│ │ │ │ │ │ ├── sharedArrayBuffer.md
│ │ │ │ │ │ ├── sharedDictionaryUseErrorCrossOriginNoCorsRequest.md
│ │ │ │ │ │ ├── sharedDictionaryUseErrorDictionaryLoadFailure.md
│ │ │ │ │ │ ├── sharedDictionaryUseErrorMatchingDictionaryNotUsed.md
│ │ │ │ │ │ ├── sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorCossOriginNoCorsRequest.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorDisallowedBySettings.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorExpiredResponse.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorFeatureDisabled.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorInsufficientResources.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorInvalidMatchField.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorInvalidStructuredHeader.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNavigationRequest.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNoMatchField.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonListMatchDestField.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonSecureContext.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonStringIdField.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonStringInMatchDestList.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonStringMatchField.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonTokenTypeField.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorRequestAborted.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorShuttingDown.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorTooLongIdField.md
│ │ │ │ │ │ ├── sharedDictionaryWriteErrorUnsupportedType.md
│ │ │ │ │ │ ├── sriInvalidSignatureHeader.md
│ │ │ │ │ │ ├── sriInvalidSignatureInputHeader.md
│ │ │ │ │ │ ├── sriMissingSignatureHeader.md
│ │ │ │ │ │ ├── sriMissingSignatureInputHeader.md
│ │ │ │ │ │ ├── sriSignatureHeaderValueIsIncorrectLength.md
│ │ │ │ │ │ ├── sriSignatureHeaderValueIsNotByteSequence.md
│ │ │ │ │ │ ├── sriSignatureHeaderValueIsParameterized.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidComponentName.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidComponentType.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidDerivedComponentParameter.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidHeaderComponentParameter.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidParameter.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderKeyIdLength.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderMissingLabel.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderMissingRequiredParameters.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderValueMissingComponents.md
│ │ │ │ │ │ ├── sriSignatureInputHeaderValueNotInnerList.md
│ │ │ │ │ │ ├── sriValidationFailedIntegrityMismatch.md
│ │ │ │ │ │ ├── sriValidationFailedInvalidLength.md
│ │ │ │ │ │ ├── sriValidationFailedSignatureExpired.md
│ │ │ │ │ │ ├── sriValidationFailedSignatureMismatch.md
│ │ │ │ │ │ ├── stylesheetLateImport.md
│ │ │ │ │ │ └── stylesheetRequestFailed.md
│ │ │ │ │ └── issues_manager.js
│ │ │ │ ├── javascript_metadata/
│ │ │ │ │ └── javascript_metadata.js
│ │ │ │ ├── live-metrics/
│ │ │ │ │ ├── live-metrics.js
│ │ │ │ │ └── web-vitals-injected/
│ │ │ │ │ ├── spec/
│ │ │ │ │ │ └── spec.js
│ │ │ │ │ └── web-vitals-injected.generated.js
│ │ │ │ ├── logs/
│ │ │ │ │ ├── logs-meta.js
│ │ │ │ │ └── logs.js
│ │ │ │ ├── persistence/
│ │ │ │ │ ├── persistence-meta.js
│ │ │ │ │ └── persistence.js
│ │ │ │ ├── project_settings/
│ │ │ │ │ └── project_settings.js
│ │ │ │ ├── react_native/
│ │ │ │ │ └── react_native.js
│ │ │ │ ├── source_map_scopes/
│ │ │ │ │ └── source_map_scopes.js
│ │ │ │ ├── text_utils/
│ │ │ │ │ └── text_utils.js
│ │ │ │ ├── trace/
│ │ │ │ │ ├── extras/
│ │ │ │ │ │ └── extras.js
│ │ │ │ │ ├── handlers/
│ │ │ │ │ │ └── handlers.js
│ │ │ │ │ ├── helpers/
│ │ │ │ │ │ └── helpers.js
│ │ │ │ │ ├── insights/
│ │ │ │ │ │ └── insights.js
│ │ │ │ │ ├── lantern/
│ │ │ │ │ │ ├── core/
│ │ │ │ │ │ │ └── core.js
│ │ │ │ │ │ ├── graph/
│ │ │ │ │ │ │ └── graph.js
│ │ │ │ │ │ ├── lantern.js
│ │ │ │ │ │ ├── metrics/
│ │ │ │ │ │ │ └── metrics.js
│ │ │ │ │ │ ├── simulation/
│ │ │ │ │ │ │ └── simulation.js
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ └── types.js
│ │ │ │ │ ├── trace.js
│ │ │ │ │ └── types/
│ │ │ │ │ └── types.js
│ │ │ │ ├── workspace/
│ │ │ │ │ └── workspace.js
│ │ │ │ └── workspace_diff/
│ │ │ │ └── workspace_diff.js
│ │ │ ├── ndb_app.html
│ │ │ ├── node_app.html
│ │ │ ├── panels/
│ │ │ │ ├── accessibility/
│ │ │ │ │ ├── accessibility-meta.js
│ │ │ │ │ └── accessibility.js
│ │ │ │ ├── ai_assistance/
│ │ │ │ │ ├── ai_assistance-meta.js
│ │ │ │ │ └── ai_assistance.js
│ │ │ │ ├── animation/
│ │ │ │ │ ├── animation-meta.js
│ │ │ │ │ └── animation.js
│ │ │ │ ├── application/
│ │ │ │ │ ├── application-meta.js
│ │ │ │ │ ├── application.js
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ └── preloading/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ └── helper/
│ │ │ │ │ └── helper.js
│ │ │ │ ├── autofill/
│ │ │ │ │ ├── autofill-meta.js
│ │ │ │ │ └── autofill.js
│ │ │ │ ├── browser_debugger/
│ │ │ │ │ ├── browser_debugger-meta.js
│ │ │ │ │ └── browser_debugger.js
│ │ │ │ ├── changes/
│ │ │ │ │ ├── changes-meta.js
│ │ │ │ │ └── changes.js
│ │ │ │ ├── common/
│ │ │ │ │ └── common.js
│ │ │ │ ├── console/
│ │ │ │ │ ├── console-meta.js
│ │ │ │ │ └── console.js
│ │ │ │ ├── console_counters/
│ │ │ │ │ ├── console_counters-meta.js
│ │ │ │ │ └── console_counters.js
│ │ │ │ ├── coverage/
│ │ │ │ │ ├── coverage-meta.js
│ │ │ │ │ └── coverage.js
│ │ │ │ ├── css_overview/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── css_overview-meta.js
│ │ │ │ │ └── css_overview.js
│ │ │ │ ├── developer_resources/
│ │ │ │ │ ├── developer_resources-meta.js
│ │ │ │ │ └── developer_resources.js
│ │ │ │ ├── elements/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── elements-meta.js
│ │ │ │ │ └── elements.js
│ │ │ │ ├── emulation/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── emulation-meta.js
│ │ │ │ │ └── emulation.js
│ │ │ │ ├── event_listeners/
│ │ │ │ │ └── event_listeners.js
│ │ │ │ ├── explain/
│ │ │ │ │ ├── explain-meta.js
│ │ │ │ │ └── explain.js
│ │ │ │ ├── issues/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── issues-meta.js
│ │ │ │ │ └── issues.js
│ │ │ │ ├── js_timeline/
│ │ │ │ │ ├── js_timeline-meta.js
│ │ │ │ │ └── js_timeline.js
│ │ │ │ ├── layer_viewer/
│ │ │ │ │ ├── layer_viewer-meta.js
│ │ │ │ │ └── layer_viewer.js
│ │ │ │ ├── layers/
│ │ │ │ │ ├── layers-meta.js
│ │ │ │ │ └── layers.js
│ │ │ │ ├── lighthouse/
│ │ │ │ │ ├── lighthouse-meta.js
│ │ │ │ │ └── lighthouse.js
│ │ │ │ ├── linear_memory_inspector/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── linear_memory_inspector-meta.js
│ │ │ │ │ └── linear_memory_inspector.js
│ │ │ │ ├── media/
│ │ │ │ │ ├── media-meta.js
│ │ │ │ │ └── media.js
│ │ │ │ ├── mobile_throttling/
│ │ │ │ │ ├── mobile_throttling-meta.js
│ │ │ │ │ └── mobile_throttling.js
│ │ │ │ ├── network/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── forward/
│ │ │ │ │ │ └── forward.js
│ │ │ │ │ ├── network-meta.js
│ │ │ │ │ └── network.js
│ │ │ │ ├── performance_monitor/
│ │ │ │ │ ├── performance_monitor-meta.js
│ │ │ │ │ └── performance_monitor.js
│ │ │ │ ├── profiler/
│ │ │ │ │ ├── profiler-meta.js
│ │ │ │ │ └── profiler.js
│ │ │ │ ├── protocol_monitor/
│ │ │ │ │ ├── protocol_monitor-meta.js
│ │ │ │ │ └── protocol_monitor.js
│ │ │ │ ├── react_devtools/
│ │ │ │ │ ├── react_devtools.js
│ │ │ │ │ ├── react_devtools_components-meta.js
│ │ │ │ │ └── react_devtools_profiler-meta.js
│ │ │ │ ├── recorder/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── controllers/
│ │ │ │ │ │ └── controllers.js
│ │ │ │ │ ├── converters/
│ │ │ │ │ │ └── converters.js
│ │ │ │ │ ├── extensions/
│ │ │ │ │ │ └── extensions.js
│ │ │ │ │ ├── injected/
│ │ │ │ │ │ ├── injected.generated.js
│ │ │ │ │ │ └── injected.js
│ │ │ │ │ ├── models/
│ │ │ │ │ │ └── models.js
│ │ │ │ │ ├── recorder-actions/
│ │ │ │ │ │ └── recorder-actions.js
│ │ │ │ │ ├── recorder-meta.js
│ │ │ │ │ ├── recorder.js
│ │ │ │ │ └── util/
│ │ │ │ │ └── util.js
│ │ │ │ ├── rn_welcome/
│ │ │ │ │ ├── rn_welcome-meta.js
│ │ │ │ │ └── rn_welcome.js
│ │ │ │ ├── screencast/
│ │ │ │ │ ├── screencast-meta.js
│ │ │ │ │ └── screencast.js
│ │ │ │ ├── search/
│ │ │ │ │ └── search.js
│ │ │ │ ├── security/
│ │ │ │ │ ├── security-meta.js
│ │ │ │ │ └── security.js
│ │ │ │ ├── sensors/
│ │ │ │ │ ├── sensors-meta.js
│ │ │ │ │ └── sensors.js
│ │ │ │ ├── settings/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── emulation/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── components.js
│ │ │ │ │ │ ├── emulation-meta.js
│ │ │ │ │ │ ├── emulation.js
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── settings-meta.js
│ │ │ │ │ └── settings.js
│ │ │ │ ├── snippets/
│ │ │ │ │ └── snippets.js
│ │ │ │ ├── sources/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── components.js
│ │ │ │ │ ├── sources-meta.js
│ │ │ │ │ └── sources.js
│ │ │ │ ├── timeline/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── components.js
│ │ │ │ │ │ └── insights/
│ │ │ │ │ │ └── insights.js
│ │ │ │ │ ├── extensions/
│ │ │ │ │ │ └── extensions.js
│ │ │ │ │ ├── overlays/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── components.js
│ │ │ │ │ │ └── overlays.js
│ │ │ │ │ ├── timeline-meta.js
│ │ │ │ │ ├── timeline.js
│ │ │ │ │ └── utils/
│ │ │ │ │ └── utils.js
│ │ │ │ ├── utils/
│ │ │ │ │ └── utils.js
│ │ │ │ ├── web_audio/
│ │ │ │ │ ├── graph_visualizer/
│ │ │ │ │ │ └── graph_visualizer.js
│ │ │ │ │ ├── web_audio-meta.js
│ │ │ │ │ └── web_audio.js
│ │ │ │ ├── webauthn/
│ │ │ │ │ ├── webauthn-meta.js
│ │ │ │ │ └── webauthn.js
│ │ │ │ └── whats_new/
│ │ │ │ ├── resources/
│ │ │ │ │ └── WNDT.md
│ │ │ │ ├── whats_new-meta.js
│ │ │ │ └── whats_new.js
│ │ │ ├── rehydrated_devtools_app.html
│ │ │ ├── rn_fusebox.html
│ │ │ ├── services/
│ │ │ │ ├── puppeteer/
│ │ │ │ │ └── puppeteer.js
│ │ │ │ ├── trace_bounds/
│ │ │ │ │ └── trace_bounds.js
│ │ │ │ ├── tracing/
│ │ │ │ │ └── tracing.js
│ │ │ │ └── window_bounds/
│ │ │ │ └── window_bounds.js
│ │ │ ├── third_party/
│ │ │ │ ├── acorn/
│ │ │ │ │ └── acorn.js
│ │ │ │ ├── chromium/
│ │ │ │ │ └── client-variations/
│ │ │ │ │ └── client-variations.js
│ │ │ │ ├── codemirror.next/
│ │ │ │ │ ├── chunk/
│ │ │ │ │ │ ├── angular.js
│ │ │ │ │ │ ├── codemirror.js
│ │ │ │ │ │ ├── cpp.js
│ │ │ │ │ │ ├── java.js
│ │ │ │ │ │ ├── legacy.js
│ │ │ │ │ │ ├── less.js
│ │ │ │ │ │ ├── markdown.js
│ │ │ │ │ │ ├── php.js
│ │ │ │ │ │ ├── python.js
│ │ │ │ │ │ ├── sass.js
│ │ │ │ │ │ ├── svelte.js
│ │ │ │ │ │ ├── vue.js
│ │ │ │ │ │ ├── wast.js
│ │ │ │ │ │ └── xml.js
│ │ │ │ │ └── codemirror.next.js
│ │ │ │ ├── csp_evaluator/
│ │ │ │ │ └── csp_evaluator.js
│ │ │ │ ├── diff/
│ │ │ │ │ └── diff.js
│ │ │ │ ├── i18n/
│ │ │ │ │ └── i18n.js
│ │ │ │ ├── intl-messageformat/
│ │ │ │ │ └── intl-messageformat.js
│ │ │ │ ├── json5/
│ │ │ │ │ └── json5.js
│ │ │ │ ├── legacy-javascript/
│ │ │ │ │ └── legacy-javascript.js
│ │ │ │ ├── lighthouse/
│ │ │ │ │ ├── lighthouse-dt-bundle.js
│ │ │ │ │ └── report/
│ │ │ │ │ └── report.js
│ │ │ │ ├── lit/
│ │ │ │ │ └── lit.js
│ │ │ │ ├── marked/
│ │ │ │ │ └── marked.js
│ │ │ │ ├── puppeteer/
│ │ │ │ │ └── puppeteer.js
│ │ │ │ ├── puppeteer-replay/
│ │ │ │ │ └── puppeteer-replay.js
│ │ │ │ ├── react-devtools/
│ │ │ │ │ └── react-devtools.js
│ │ │ │ ├── third-party-web/
│ │ │ │ │ └── third-party-web.js
│ │ │ │ ├── wasmparser/
│ │ │ │ │ └── wasmparser.js
│ │ │ │ └── web-vitals/
│ │ │ │ └── web-vitals.js
│ │ │ ├── ui/
│ │ │ │ ├── components/
│ │ │ │ │ ├── adorners/
│ │ │ │ │ │ └── adorners.js
│ │ │ │ │ ├── buttons/
│ │ │ │ │ │ └── buttons.js
│ │ │ │ │ ├── cards/
│ │ │ │ │ │ └── cards.js
│ │ │ │ │ ├── chrome_link/
│ │ │ │ │ │ └── chrome_link.js
│ │ │ │ │ ├── code_highlighter/
│ │ │ │ │ │ └── code_highlighter.js
│ │ │ │ │ ├── dialogs/
│ │ │ │ │ │ └── dialogs.js
│ │ │ │ │ ├── diff_view/
│ │ │ │ │ │ └── diff_view.js
│ │ │ │ │ ├── expandable_list/
│ │ │ │ │ │ └── expandable_list.js
│ │ │ │ │ ├── floating_button/
│ │ │ │ │ │ └── floating_button.js
│ │ │ │ │ ├── helpers/
│ │ │ │ │ │ └── helpers.js
│ │ │ │ │ ├── highlighting/
│ │ │ │ │ │ └── highlighting.js
│ │ │ │ │ ├── icon_button/
│ │ │ │ │ │ └── icon_button.js
│ │ │ │ │ ├── input/
│ │ │ │ │ │ └── input.js
│ │ │ │ │ ├── issue_counter/
│ │ │ │ │ │ └── issue_counter.js
│ │ │ │ │ ├── legacy_wrapper/
│ │ │ │ │ │ └── legacy_wrapper.js
│ │ │ │ │ ├── linkifier/
│ │ │ │ │ │ └── linkifier.js
│ │ │ │ │ ├── markdown_view/
│ │ │ │ │ │ └── markdown_view.js
│ │ │ │ │ ├── menus/
│ │ │ │ │ │ └── menus.js
│ │ │ │ │ ├── node_text/
│ │ │ │ │ │ └── node_text.js
│ │ │ │ │ ├── panel_feedback/
│ │ │ │ │ │ └── panel_feedback.js
│ │ │ │ │ ├── panel_introduction_steps/
│ │ │ │ │ │ └── panel_introduction_steps.js
│ │ │ │ │ ├── render_coordinator/
│ │ │ │ │ │ └── render_coordinator.js
│ │ │ │ │ ├── report_view/
│ │ │ │ │ │ └── report_view.js
│ │ │ │ │ ├── request_link_icon/
│ │ │ │ │ │ └── request_link_icon.js
│ │ │ │ │ ├── settings/
│ │ │ │ │ │ └── settings.js
│ │ │ │ │ ├── spinners/
│ │ │ │ │ │ └── spinners.js
│ │ │ │ │ ├── srgb_overlay/
│ │ │ │ │ │ └── srgb_overlay.js
│ │ │ │ │ ├── suggestion_input/
│ │ │ │ │ │ └── suggestion_input.js
│ │ │ │ │ ├── survey_link/
│ │ │ │ │ │ └── survey_link.js
│ │ │ │ │ ├── switch/
│ │ │ │ │ │ └── switch.js
│ │ │ │ │ ├── text_editor/
│ │ │ │ │ │ └── text_editor.js
│ │ │ │ │ ├── text_prompt/
│ │ │ │ │ │ └── text_prompt.js
│ │ │ │ │ ├── tooltips/
│ │ │ │ │ │ └── tooltips.js
│ │ │ │ │ └── tree_outline/
│ │ │ │ │ └── tree_outline.js
│ │ │ │ ├── legacy/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── color_picker/
│ │ │ │ │ │ │ └── color_picker.js
│ │ │ │ │ │ ├── cookie_table/
│ │ │ │ │ │ │ └── cookie_table.js
│ │ │ │ │ │ ├── data_grid/
│ │ │ │ │ │ │ └── data_grid.js
│ │ │ │ │ │ ├── inline_editor/
│ │ │ │ │ │ │ └── inline_editor.js
│ │ │ │ │ │ ├── object_ui/
│ │ │ │ │ │ │ ├── object_ui-meta.js
│ │ │ │ │ │ │ └── object_ui.js
│ │ │ │ │ │ ├── perf_ui/
│ │ │ │ │ │ │ ├── perf_ui-meta.js
│ │ │ │ │ │ │ └── perf_ui.js
│ │ │ │ │ │ ├── quick_open/
│ │ │ │ │ │ │ ├── quick_open-meta.js
│ │ │ │ │ │ │ └── quick_open.js
│ │ │ │ │ │ ├── source_frame/
│ │ │ │ │ │ │ ├── source_frame-meta.js
│ │ │ │ │ │ │ └── source_frame.js
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ └── utils.js
│ │ │ │ │ ├── legacy.js
│ │ │ │ │ └── theme_support/
│ │ │ │ │ └── theme_support.js
│ │ │ │ ├── lit/
│ │ │ │ │ └── lit.js
│ │ │ │ └── visual_logging/
│ │ │ │ └── visual_logging.js
│ │ │ └── worker_app.html
│ │ ├── index.js
│ │ └── package.json
│ ├── debugger-shell/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ ├── __snapshots__/
│ │ │ │ └── dotslash-test.js.snap
│ │ │ ├── dotslash-file-simulating-data-corruption.jsonc
│ │ │ ├── dotslash-file-simulating-network-error.jsonc
│ │ │ ├── dotslash-file-with-missing-platforms.jsonc
│ │ │ ├── dotslash-test.js
│ │ │ └── electron-dependency-test.js
│ │ ├── bin/
│ │ │ └── react-native-devtools
│ │ ├── package.json
│ │ └── src/
│ │ ├── electron/
│ │ │ ├── BuildInfo.js
│ │ │ ├── BuildInfo.js.tpl
│ │ │ ├── MainInstanceEntryPoint.js
│ │ │ ├── SettingsStore.js
│ │ │ ├── index.flow.js
│ │ │ ├── index.js
│ │ │ ├── preload.js
│ │ │ └── resources/
│ │ │ └── icon.icns
│ │ ├── index.js
│ │ └── node/
│ │ ├── __tests__/
│ │ │ └── debugger-shell-test.js
│ │ ├── index.flow.js
│ │ ├── index.js
│ │ └── private/
│ │ └── LaunchUtils.js
│ ├── dev-middleware/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src/
│ │ ├── __tests__/
│ │ │ ├── FetchUtils.js
│ │ │ ├── InspectorDebuggerUtils.js
│ │ │ ├── InspectorDeviceUtils.js
│ │ │ ├── InspectorProtocolUtils.js
│ │ │ ├── InspectorProxyCdpRewritingHacks-test.js
│ │ │ ├── InspectorProxyCdpTransport-test.js
│ │ │ ├── InspectorProxyConcurrentSessions-test.js
│ │ │ ├── InspectorProxyCustomMessageHandler-test.js
│ │ │ ├── InspectorProxyDeviceHandoff-test.js
│ │ │ ├── InspectorProxyHttpApi-test.js
│ │ │ ├── InspectorProxyReactNativeReloads-test.js
│ │ │ ├── ResourceUtils.js
│ │ │ ├── ServerUtils.js
│ │ │ ├── StandaloneFuseboxShell-test.js
│ │ │ ├── __snapshots__/
│ │ │ │ └── InspectorProxyHttpApi-test.js.snap
│ │ │ ├── embedderScriptStub-test.js
│ │ │ ├── getBaseUrlFromRequest-test.js
│ │ │ └── getDevToolsFrontendUrl-test.js
│ │ ├── createDevMiddleware.js
│ │ ├── index.flow.js
│ │ ├── index.js
│ │ ├── inspector-proxy/
│ │ │ ├── CdpDebugLogging.js
│ │ │ ├── CustomMessageHandler.js
│ │ │ ├── Device.js
│ │ │ ├── DeviceEventReporter.js
│ │ │ ├── EventLoopPerfTracker.js
│ │ │ ├── InspectorProxy.js
│ │ │ ├── InspectorProxyHeartbeat.js
│ │ │ ├── __docs__/
│ │ │ │ └── README.md
│ │ │ ├── cdp-types/
│ │ │ │ ├── messages.js
│ │ │ │ └── protocol.js
│ │ │ └── types.js
│ │ ├── middleware/
│ │ │ └── openDebuggerMiddleware.js
│ │ ├── types/
│ │ │ ├── DevToolLauncher.js
│ │ │ ├── EventReporter.js
│ │ │ ├── Experiments.js
│ │ │ ├── Logger.js
│ │ │ └── ReadonlyURL.js
│ │ └── utils/
│ │ ├── DefaultToolLauncher.js
│ │ ├── __mocks__/
│ │ │ └── DefaultToolLauncher.js
│ │ ├── getBaseUrlFromRequest.js
│ │ └── getDevToolsFrontendUrl.js
│ ├── eslint-config-react-native/
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ └── prettier-config-test.js
│ │ ├── flat.js
│ │ ├── index.js
│ │ ├── package.json
│ │ └── shared.js
│ ├── eslint-plugin-react-native/
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ ├── eslint-tester.js
│ │ │ ├── no-deep-imports-test.js
│ │ │ └── platform-colors-test.js
│ │ ├── index.js
│ │ ├── no-deep-imports.js
│ │ ├── package.json
│ │ ├── platform-colors.js
│ │ └── utils.js
│ ├── eslint-plugin-specs/
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ ├── eslint-tester.js
│ │ │ └── react-native-modules-test.js
│ │ ├── index.js
│ │ ├── package.json
│ │ ├── postpack.js
│ │ ├── prepack.js
│ │ ├── react-native-modules.js
│ │ └── with-babel-register/
│ │ ├── disk-cache.js
│ │ └── index.js
│ ├── gradle-plugin/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── build.gradle.kts
│ │ ├── gradle/
│ │ │ ├── libs.versions.toml
│ │ │ └── wrapper/
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── package.json
│ │ ├── react-native-gradle-plugin/
│ │ │ ├── README.md
│ │ │ ├── build.gradle.kts
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── facebook/
│ │ │ │ └── react/
│ │ │ │ ├── ReactExtension.kt
│ │ │ │ ├── ReactPlugin.kt
│ │ │ │ ├── ReactRootProjectPlugin.kt
│ │ │ │ ├── TaskConfiguration.kt
│ │ │ │ ├── internal/
│ │ │ │ │ └── PrivateReactExtension.kt
│ │ │ │ ├── tasks/
│ │ │ │ │ ├── BundleHermesCTask.kt
│ │ │ │ │ ├── GenerateAutolinkingNewArchitecturesFileTask.kt
│ │ │ │ │ ├── GenerateCodegenArtifactsTask.kt
│ │ │ │ │ ├── GenerateCodegenSchemaTask.kt
│ │ │ │ │ ├── GenerateEntryPointTask.kt
│ │ │ │ │ ├── GeneratePackageListTask.kt
│ │ │ │ │ └── internal/
│ │ │ │ │ ├── BuildCodegenCLITask.kt
│ │ │ │ │ ├── CustomExecTask.kt
│ │ │ │ │ ├── PrepareBoostTask.kt
│ │ │ │ │ ├── PrepareGflagsTask.kt
│ │ │ │ │ ├── PrepareGlogTask.kt
│ │ │ │ │ ├── PreparePrefabHeadersTask.kt
│ │ │ │ │ └── utils/
│ │ │ │ │ └── PrefabPreprocessingEntry.kt
│ │ │ │ └── utils/
│ │ │ │ ├── AgpConfiguratorUtils.kt
│ │ │ │ ├── BackwardCompatUtils.kt
│ │ │ │ ├── DependencyUtils.kt
│ │ │ │ ├── FileUtils.kt
│ │ │ │ ├── JdkConfiguratorUtils.kt
│ │ │ │ ├── NdkConfiguratorUtils.kt
│ │ │ │ ├── PathUtils.kt
│ │ │ │ ├── ProjectUtils.kt
│ │ │ │ └── PropertyUtils.kt
│ │ │ └── test/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── facebook/
│ │ │ └── react/
│ │ │ ├── ReactExtensionTest.kt
│ │ │ ├── TestReactExtension.kt
│ │ │ ├── model/
│ │ │ │ └── ModelAutolinkingDependenciesJsonTest.kt
│ │ │ ├── tasks/
│ │ │ │ ├── BundleHermesCTaskTest.kt
│ │ │ │ ├── GenerateAutolinkingNewArchitecturesFileTaskTest.kt
│ │ │ │ ├── GenerateCodegenArtifactsTaskTest.kt
│ │ │ │ ├── GenerateCodegenSchemaTaskTest.kt
│ │ │ │ ├── GenerateEntryPointTaskTest.kt
│ │ │ │ ├── GeneratePackageListTaskTest.kt
│ │ │ │ └── internal/
│ │ │ │ ├── BuildCodegenCLITaskTest.kt
│ │ │ │ ├── CustomExecTaskTest.kt
│ │ │ │ ├── PrepareBoostTaskTest.kt
│ │ │ │ ├── PrepareGflagsTaskTest.kt
│ │ │ │ ├── PrepareGlogTaskTest.kt
│ │ │ │ ├── PreparePrefabHeadersTaskTest.kt
│ │ │ │ └── utils/
│ │ │ │ └── PrefabPreprocessingEntryTest.kt
│ │ │ ├── tests/
│ │ │ │ └── TaskTestUtils.kt
│ │ │ └── utils/
│ │ │ ├── AgpConfiguratorUtilsTest.kt
│ │ │ ├── BackwardCompatUtilsTest.kt
│ │ │ ├── DependencyUtilsTest.kt
│ │ │ ├── FileUtilsTest.kt
│ │ │ ├── NdkConfiguratorUtilsTest.kt
│ │ │ ├── PathUtilsTest.kt
│ │ │ └── ProjectUtilsTest.kt
│ │ ├── settings-plugin/
│ │ │ ├── build.gradle.kts
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── facebook/
│ │ │ │ └── react/
│ │ │ │ ├── ReactSettingsExtension.kt
│ │ │ │ └── ReactSettingsPlugin.kt
│ │ │ └── test/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── facebook/
│ │ │ └── react/
│ │ │ └── ReactSettingsExtensionTest.kt
│ │ ├── settings.gradle.kts
│ │ ├── shared/
│ │ │ ├── build.gradle.kts
│ │ │ └── src/
│ │ │ ├── main/
│ │ │ │ └── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── facebook/
│ │ │ │ └── react/
│ │ │ │ ├── model/
│ │ │ │ │ ├── ModelAutolinkingAndroidProjectJson.kt
│ │ │ │ │ ├── ModelAutolinkingConfigJson.kt
│ │ │ │ │ ├── ModelAutolinkingDependenciesJson.kt
│ │ │ │ │ ├── ModelAutolinkingDependenciesPlatformAndroidJson.kt
│ │ │ │ │ ├── ModelAutolinkingDependenciesPlatformJson.kt
│ │ │ │ │ ├── ModelAutolinkingProjectJson.kt
│ │ │ │ │ ├── ModelCodegenConfig.kt
│ │ │ │ │ ├── ModelCodegenConfigAndroid.kt
│ │ │ │ │ └── ModelPackageJson.kt
│ │ │ │ └── utils/
│ │ │ │ ├── JsonUtils.kt
│ │ │ │ ├── KotlinStdlibCompatUtils.kt
│ │ │ │ ├── Os.kt
│ │ │ │ └── TaskUtils.kt
│ │ │ └── test/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── facebook/
│ │ │ └── react/
│ │ │ └── utils/
│ │ │ ├── JsonUtilsTest.kt
│ │ │ ├── KotlinStdlibCompatUtilsTest.kt
│ │ │ ├── OsTest.kt
│ │ │ └── TaskUtilsTest.kt
│ │ └── shared-testutil/
│ │ ├── build.gradle.kts
│ │ └── src/
│ │ └── main/
│ │ └── kotlin/
│ │ └── com/
│ │ └── facebook/
│ │ └── react/
│ │ └── tests/
│ │ ├── OsRule.kt
│ │ └── WithOs.kt
│ ├── jest-preset/
│ │ ├── README.md
│ │ ├── jest/
│ │ │ ├── MockNativeMethods.js
│ │ │ ├── RefreshControlMock.js
│ │ │ ├── __tests__/
│ │ │ │ └── setup-test.js
│ │ │ ├── assetFileTransformer.js
│ │ │ ├── local-setup.js
│ │ │ ├── mock.js
│ │ │ ├── mockComponent.js
│ │ │ ├── mockNativeComponent.js
│ │ │ ├── mocks/
│ │ │ │ ├── AccessibilityInfo.js
│ │ │ │ ├── ActivityIndicator.js
│ │ │ │ ├── AppState.js
│ │ │ │ ├── Clipboard.js
│ │ │ │ ├── Image.js
│ │ │ │ ├── InitializeCore.js
│ │ │ │ ├── Linking.js
│ │ │ │ ├── Modal.js
│ │ │ │ ├── NativeComponentRegistry.js
│ │ │ │ ├── NativeModules.js
│ │ │ │ ├── RefreshControl.js
│ │ │ │ ├── RendererProxy.js
│ │ │ │ ├── ScrollView.js
│ │ │ │ ├── Text.js
│ │ │ │ ├── TextInput.js
│ │ │ │ ├── UIManager.js
│ │ │ │ ├── Vibration.js
│ │ │ │ ├── View.js
│ │ │ │ ├── ViewNativeComponent.js
│ │ │ │ ├── requireNativeComponent.js
│ │ │ │ └── useColorScheme.js
│ │ │ ├── react-native-env.js
│ │ │ ├── renderer.js
│ │ │ ├── resolver.js
│ │ │ └── setup.js
│ │ ├── jest-preset.js
│ │ └── package.json
│ ├── metro-config/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src/
│ │ ├── index.flow.js
│ │ └── index.js
│ ├── new-app-screen/
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src/
│ │ ├── Links.js
│ │ ├── NewAppScreen.js
│ │ ├── Theme.js
│ │ ├── index.d.ts
│ │ └── index.js
│ ├── normalize-color/
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ └── normalizeColor-test.js
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ └── package.json
│ ├── polyfills/
│ │ ├── README.md
│ │ ├── __tests__/
│ │ │ ├── consoleTable-itest.js
│ │ │ └── consoleTimeStamp-itest.js
│ │ ├── console.js
│ │ ├── error-guard.js
│ │ ├── index.js
│ │ └── package.json
│ ├── react-native/
│ │ ├── .doxygen.config.template
│ │ ├── LICENSE
│ │ ├── Libraries/
│ │ │ ├── ActionSheetIOS/
│ │ │ │ ├── ActionSheetIOS.d.ts
│ │ │ │ ├── ActionSheetIOS.js
│ │ │ │ ├── NativeActionSheetManager.js
│ │ │ │ └── React-RCTActionSheet.podspec
│ │ │ ├── Alert/
│ │ │ │ ├── Alert.d.ts
│ │ │ │ ├── Alert.js
│ │ │ │ ├── NativeAlertManager.js
│ │ │ │ ├── RCTAlertManager.android.js
│ │ │ │ ├── RCTAlertManager.ios.js
│ │ │ │ ├── RCTAlertManager.js
│ │ │ │ └── RCTAlertManager.js.flow
│ │ │ ├── Animated/
│ │ │ │ ├── Animated.d.ts
│ │ │ │ ├── Animated.js
│ │ │ │ ├── Animated.js.flow
│ │ │ │ ├── AnimatedEvent.js
│ │ │ │ ├── AnimatedExports.js
│ │ │ │ ├── AnimatedExports.js.flow
│ │ │ │ ├── AnimatedImplementation.js
│ │ │ │ ├── AnimatedMock.js
│ │ │ │ ├── AnimatedPlatformConfig.js
│ │ │ │ ├── Easing.d.ts
│ │ │ │ ├── Easing.js
│ │ │ │ ├── NativeAnimatedAllowlist.js
│ │ │ │ ├── NativeAnimatedModule.js
│ │ │ │ ├── NativeAnimatedTurboModule.js
│ │ │ │ ├── SpringConfig.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── Animated-benchmark-itest.js
│ │ │ │ │ ├── Animated-itest.js
│ │ │ │ │ ├── Animated-test.js
│ │ │ │ │ ├── Animated-web-test.js
│ │ │ │ │ ├── AnimatedBackend-benchmark-itest.js
│ │ │ │ │ ├── AnimatedBackend-itest.js
│ │ │ │ │ ├── AnimatedBackendSuspense-itest.js
│ │ │ │ │ ├── AnimatedMock-test.js
│ │ │ │ │ ├── AnimatedObject-test.js
│ │ │ │ │ ├── AnimatedProps-test.js
│ │ │ │ │ ├── AnimatedValue-test.js
│ │ │ │ │ ├── Easing-test.js
│ │ │ │ │ ├── Interpolation-test.js
│ │ │ │ │ ├── NativeAnimatedAllowlist-test.js
│ │ │ │ │ ├── TimingAnimation-test.js
│ │ │ │ │ └── bezier-test.js
│ │ │ │ ├── animations/
│ │ │ │ │ ├── Animation.js
│ │ │ │ │ ├── DecayAnimation.js
│ │ │ │ │ ├── SpringAnimation.js
│ │ │ │ │ └── TimingAnimation.js
│ │ │ │ ├── bezier.js
│ │ │ │ ├── components/
│ │ │ │ │ ├── AnimatedFlatList.js
│ │ │ │ │ ├── AnimatedImage.js
│ │ │ │ │ ├── AnimatedScrollView.js
│ │ │ │ │ ├── AnimatedSectionList.js
│ │ │ │ │ ├── AnimatedText.js
│ │ │ │ │ └── AnimatedView.js
│ │ │ │ ├── createAnimatedComponent.js
│ │ │ │ ├── nodes/
│ │ │ │ │ ├── AnimatedAddition.js
│ │ │ │ │ ├── AnimatedColor.js
│ │ │ │ │ ├── AnimatedDiffClamp.js
│ │ │ │ │ ├── AnimatedDivision.js
│ │ │ │ │ ├── AnimatedInterpolation.js
│ │ │ │ │ ├── AnimatedModulo.js
│ │ │ │ │ ├── AnimatedMultiplication.js
│ │ │ │ │ ├── AnimatedNode.js
│ │ │ │ │ ├── AnimatedObject.js
│ │ │ │ │ ├── AnimatedProps.js
│ │ │ │ │ ├── AnimatedStyle.js
│ │ │ │ │ ├── AnimatedSubtraction.js
│ │ │ │ │ ├── AnimatedTracking.js
│ │ │ │ │ ├── AnimatedTransform.js
│ │ │ │ │ ├── AnimatedValue.js
│ │ │ │ │ ├── AnimatedValueXY.js
│ │ │ │ │ └── AnimatedWithChildren.js
│ │ │ │ ├── shouldUseTurboAnimatedModule.js
│ │ │ │ ├── useAnimatedColor.d.ts
│ │ │ │ ├── useAnimatedColor.js
│ │ │ │ ├── useAnimatedProps.js
│ │ │ │ ├── useAnimatedValue.d.ts
│ │ │ │ ├── useAnimatedValue.js
│ │ │ │ ├── useAnimatedValueXY.d.ts
│ │ │ │ └── useAnimatedValueXY.js
│ │ │ ├── AppDelegate/
│ │ │ │ ├── RCTAppDelegate.h
│ │ │ │ ├── RCTAppDelegate.mm
│ │ │ │ ├── RCTAppSetupUtils.h
│ │ │ │ ├── RCTAppSetupUtils.mm
│ │ │ │ ├── RCTArchConfiguratorProtocol.h
│ │ │ │ ├── RCTDefaultReactNativeFactoryDelegate.h
│ │ │ │ ├── RCTDefaultReactNativeFactoryDelegate.mm
│ │ │ │ ├── RCTDependencyProvider.h
│ │ │ │ ├── RCTJSRuntimeConfiguratorProtocol.h
│ │ │ │ ├── RCTReactNativeFactory.h
│ │ │ │ ├── RCTReactNativeFactory.mm
│ │ │ │ ├── RCTRootViewFactory.h
│ │ │ │ ├── RCTRootViewFactory.mm
│ │ │ │ ├── RCTUIConfiguratorProtocol.h
│ │ │ │ └── React-RCTAppDelegate.podspec
│ │ │ ├── AppState/
│ │ │ │ ├── AppState.d.ts
│ │ │ │ ├── AppState.js
│ │ │ │ └── NativeAppState.js
│ │ │ ├── BatchedBridge/
│ │ │ │ ├── BatchedBridge.js
│ │ │ │ ├── MessageQueue.js
│ │ │ │ ├── NativeModules.d.ts
│ │ │ │ ├── NativeModules.js
│ │ │ │ ├── __mocks__/
│ │ │ │ │ ├── MessageQueueTestConfig.js
│ │ │ │ │ └── MessageQueueTestModule.js
│ │ │ │ └── __tests__/
│ │ │ │ ├── MessageQueue-test.js
│ │ │ │ └── NativeModules-test.js
│ │ │ ├── Blob/
│ │ │ │ ├── Blob.js
│ │ │ │ ├── BlobManager.js
│ │ │ │ ├── BlobRegistry.js
│ │ │ │ ├── BlobTypes.js
│ │ │ │ ├── File.js
│ │ │ │ ├── FileReader.js
│ │ │ │ ├── NativeBlobModule.js
│ │ │ │ ├── NativeFileReaderModule.js
│ │ │ │ ├── RCTBlobCollector.h
│ │ │ │ ├── RCTBlobCollector.mm
│ │ │ │ ├── RCTBlobManager.h
│ │ │ │ ├── RCTBlobManager.mm
│ │ │ │ ├── RCTBlobPlugins.h
│ │ │ │ ├── RCTBlobPlugins.mm
│ │ │ │ ├── RCTFileReaderModule.h
│ │ │ │ ├── RCTFileReaderModule.mm
│ │ │ │ ├── React-RCTBlob.podspec
│ │ │ │ ├── URL.js
│ │ │ │ ├── URLSearchParams.js
│ │ │ │ ├── URLSearchParams.js.flow
│ │ │ │ ├── __mocks__/
│ │ │ │ │ ├── BlobModule.js
│ │ │ │ │ └── FileReaderModule.js
│ │ │ │ └── __tests__/
│ │ │ │ ├── Blob-test.js
│ │ │ │ ├── BlobManager-test.js
│ │ │ │ ├── BlobRegistry-test.js
│ │ │ │ ├── File-test.js
│ │ │ │ ├── FileReader-test.js
│ │ │ │ └── URL-test.js
│ │ │ ├── Components/
│ │ │ │ ├── AccessibilityInfo/
│ │ │ │ │ ├── AccessibilityInfo.d.ts
│ │ │ │ │ ├── AccessibilityInfo.js
│ │ │ │ │ ├── NativeAccessibilityInfo.js
│ │ │ │ │ ├── NativeAccessibilityManager.js
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ └── AccessibilityInfo-test.js
│ │ │ │ │ ├── legacySendAccessibilityEvent.android.js
│ │ │ │ │ ├── legacySendAccessibilityEvent.ios.js
│ │ │ │ │ ├── legacySendAccessibilityEvent.js
│ │ │ │ │ └── legacySendAccessibilityEvent.js.flow
│ │ │ │ ├── ActivityIndicator/
│ │ │ │ │ ├── ActivityIndicator.d.ts
│ │ │ │ │ ├── ActivityIndicator.js
│ │ │ │ │ ├── ActivityIndicatorViewNativeComponent.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── ActivityIndicator-itest.js
│ │ │ │ │ ├── ActivityIndicator-test.js
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ └── ActivityIndicator-test.js.snap
│ │ │ │ ├── Button.d.ts
│ │ │ │ ├── Button.js
│ │ │ │ ├── Clipboard/
│ │ │ │ │ ├── Clipboard.d.ts
│ │ │ │ │ ├── Clipboard.js
│ │ │ │ │ └── NativeClipboard.js
│ │ │ │ ├── DrawerAndroid/
│ │ │ │ │ ├── AndroidDrawerLayoutNativeComponent.js
│ │ │ │ │ ├── DrawerLayoutAndroid.android.js
│ │ │ │ │ ├── DrawerLayoutAndroid.d.ts
│ │ │ │ │ ├── DrawerLayoutAndroid.ios.js
│ │ │ │ │ ├── DrawerLayoutAndroid.js
│ │ │ │ │ ├── DrawerLayoutAndroid.js.flow
│ │ │ │ │ ├── DrawerLayoutAndroidFallback.js
│ │ │ │ │ ├── DrawerLayoutAndroidTypes.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── DrawerAndroid-test.js
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ └── DrawerAndroid-test.js.snap
│ │ │ │ ├── Keyboard/
│ │ │ │ │ ├── Keyboard.d.ts
│ │ │ │ │ ├── Keyboard.js
│ │ │ │ │ ├── KeyboardAvoidingView.d.ts
│ │ │ │ │ ├── KeyboardAvoidingView.js
│ │ │ │ │ ├── NativeKeyboardObserver.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Keyboard-test.js
│ │ │ │ ├── LayoutConformance/
│ │ │ │ │ ├── LayoutConformance.d.ts
│ │ │ │ │ ├── LayoutConformance.js
│ │ │ │ │ └── LayoutConformanceNativeComponent.js
│ │ │ │ ├── Pressable/
│ │ │ │ │ ├── Pressable.d.ts
│ │ │ │ │ ├── Pressable.js
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── Pressable-itest.js
│ │ │ │ │ │ ├── Pressable-test.js
│ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ └── Pressable-test.js.snap
│ │ │ │ │ └── useAndroidRippleForView.js
│ │ │ │ ├── ProgressBarAndroid/
│ │ │ │ │ ├── ProgressBarAndroid.android.js
│ │ │ │ │ ├── ProgressBarAndroid.d.ts
│ │ │ │ │ ├── ProgressBarAndroid.js
│ │ │ │ │ ├── ProgressBarAndroidNativeComponent.js
│ │ │ │ │ ├── ProgressBarAndroidTypes.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── ProgressBarAndroid-test.js
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ └── ProgressBarAndroid-test.js.snap
│ │ │ │ ├── RefreshControl/
│ │ │ │ │ ├── AndroidSwipeRefreshLayoutNativeComponent.js
│ │ │ │ │ ├── PullToRefreshViewNativeComponent.js
│ │ │ │ │ ├── RefreshControl.d.ts
│ │ │ │ │ └── RefreshControl.js
│ │ │ │ ├── SafeAreaView/
│ │ │ │ │ ├── RCTSafeAreaViewNativeComponent.js
│ │ │ │ │ ├── SafeAreaView.d.ts
│ │ │ │ │ ├── SafeAreaView.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── SafeAreaView-test.js
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ └── SafeAreaView-test.js.snap
│ │ │ │ ├── ScrollView/
│ │ │ │ │ ├── AndroidHorizontalScrollContentViewNativeComponent.js
│ │ │ │ │ ├── AndroidHorizontalScrollViewNativeComponent.js
│ │ │ │ │ ├── ScrollContentViewNativeComponent.js
│ │ │ │ │ ├── ScrollView.d.ts
│ │ │ │ │ ├── ScrollView.js
│ │ │ │ │ ├── ScrollViewCommands.js
│ │ │ │ │ ├── ScrollViewContext.js
│ │ │ │ │ ├── ScrollViewNativeComponent.js
│ │ │ │ │ ├── ScrollViewNativeComponentType.js
│ │ │ │ │ ├── ScrollViewStickyHeader.js
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── ScrollView-itest.js
│ │ │ │ │ │ ├── ScrollView-test.js
│ │ │ │ │ │ ├── ScrollView-viewCulling-itest.js
│ │ │ │ │ │ └── __snapshots__/
│ │ │ │ │ │ └── ScrollView-test.js.snap
│ │ │ │ │ └── processDecelerationRate.js
│ │ │ │ ├── Sound/
│ │ │ │ │ ├── NativeSoundManager.js
│ │ │ │ │ └── SoundManager.js
│ │ │ │ ├── StaticRenderer.js
│ │ │ │ ├── StatusBar/
│ │ │ │ │ ├── NativeStatusBarManagerAndroid.js
│ │ │ │ │ ├── NativeStatusBarManagerIOS.js
│ │ │ │ │ ├── StatusBar.d.ts
│ │ │ │ │ ├── StatusBar.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── StatusBar-test.js
│ │ │ │ ├── Switch/
│ │ │ │ │ ├── AndroidSwitchNativeComponent.js
│ │ │ │ │ ├── Switch.d.ts
│ │ │ │ │ ├── Switch.js
│ │ │ │ │ ├── SwitchNativeComponent.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ └── Switch-itest.js
│ │ │ │ ├── TextInput/
│ │ │ │ │ ├── AndroidTextInputNativeComponent.js
│ │ │ │ │ ├── InputAccessoryView.d.ts
│ │ │ │ │ ├── InputAccessoryView.js
│ │ │ │ │ ├── RCTInputAccessoryViewNativeComponent.js
│ │ │ │ │ ├── RCTMultilineTextInputNativeComponent.js
│ │ │ │ │ ├── RCTSingelineTextInputNativeComponent.js
│ │ │ │ │ ├── RCTTextInputViewConfig.js
│ │ │ │ │ ├── TextInput.d.ts
│ │ │ │ │ ├── TextInput.flow.js
│ │ │ │ │ ├── TextInput.js
│ │ │ │ │ ├── TextInputNativeCommands.js
│ │ │ │ │ ├── TextInputState.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── InputAccessoryView-test.js
│ │ │ │ │ ├── TextInput-itest.js
│ │ │ │ │ ├── TextInput-test.js
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ ├── InputAccessoryView-test.js.snap
│ │ │ │ │ └── TextInput-test.js.snap
│ │ │ │ ├── ToastAndroid/
│ │ │ │ │ ├── NativeToastAndroid.js
│ │ │ │ │ ├── ToastAndroid.android.js
│ │ │ │ │ ├── ToastAndroid.d.ts
│ │ │ │ │ ├── ToastAndroid.ios.js
│ │ │ │ │ ├── ToastAndroid.js
│ │ │ │ │ ├── ToastAndroid.js.flow
│ │ │ │ │ └── ToastAndroidFallback.js
│ │ │ │ ├── Touchable/
│ │ │ │ │ ├── BoundingDimensions.js
│ │ │ │ │ ├── PooledClass.js
│ │ │ │ │ ├── Position.js
│ │ │ │ │ ├── Touchable.d.ts
│ │ │ │ │ ├── Touchable.js
│ │ │ │ │ ├── TouchableBounce.js
│ │ │ │ │ ├── TouchableHighlight.d.ts
│ │ │ │ │ ├── TouchableHighlight.js
│ │ │ │ │ ├── TouchableNativeFeedback.d.ts
│ │ │ │ │ ├── TouchableNativeFeedback.js
│ │ │ │ │ ├── TouchableOpacity.d.ts
│ │ │ │ │ ├── TouchableOpacity.js
│ │ │ │ │ ├── TouchableWithoutFeedback.d.ts
│ │ │ │ │ ├── TouchableWithoutFeedback.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── TouchableHighlight-itest.js
│ │ │ │ │ ├── TouchableNativeFeedback-test.js
│ │ │ │ │ ├── TouchableOpacity-itest.js
│ │ │ │ │ ├── TouchableOpacity-test.js
│ │ │ │ │ ├── TouchableWithoutFeedback-itest.js
│ │ │ │ │ ├── TouchableWithoutFeedback-test.js
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ ├── TouchableNativeFeedback-test.js.snap
│ │ │ │ │ ├── TouchableOpacity-test.js.snap
│ │ │ │ │ └── TouchableWithoutFeedback-test.js.snap
│ │ │ │ ├── UnimplementedViews/
│ │ │ │ │ ├── UnimplementedNativeViewNativeComponent.js
│ │ │ │ │ └── UnimplementedView.js
│ │ │ │ ├── View/
│ │ │ │ │ ├── ReactNativeStyleAttributes.js
│ │ │ │ │ ├── View.d.ts
│ │ │ │ │ ├── View.js
│ │ │ │ │ ├── ViewAccessibility.d.ts
│ │ │ │ │ ├── ViewAccessibility.js
│ │ │ │ │ ├── ViewNativeComponent.js
│ │ │ │ │ ├── ViewPropTypes.d.ts
│ │ │ │ │ ├── ViewPropTypes.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── FantomEventHandlers-itest.js
│ │ │ │ │ ├── View-benchmark-itest.js
│ │ │ │ │ ├── View-itest.js
│ │ │ │ │ ├── View-test.js
│ │ │ │ │ └── View-vs-ViewNativeComponent-benchmark-itest.js
│ │ │ │ └── __tests__/
│ │ │ │ ├── Button-itest.js
│ │ │ │ ├── Button-test.js
│ │ │ │ └── __snapshots__/
│ │ │ │ └── Button-test.js.snap
│ │ │ ├── Core/
│ │ │ │ ├── Devtools/
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── loadBundleFromServer-test.js
│ │ │ │ │ │ ├── parseErrorStack-test.js
│ │ │ │ │ │ └── parseHermesStack-test.js
│ │ │ │ │ ├── getDevServer.js
│ │ │ │ │ ├── loadBundleFromServer.js
│ │ │ │ │ ├── openFileInEditor.js
│ │ │ │ │ ├── openURLInBrowser.js
│ │ │ │ │ ├── parseErrorStack.js
│ │ │ │ │ ├── parseHermesStack.js
│ │ │ │ │ └── symbolicateStackTrace.js
│ │ │ │ ├── ExceptionsManager.js
│ │ │ │ ├── ExtendedError.js
│ │ │ │ ├── InitializeCore.js
│ │ │ │ ├── NativeExceptionsManager.js
│ │ │ │ ├── RawEventEmitter.js
│ │ │ │ ├── ReactFiberErrorDialog.js
│ │ │ │ ├── ReactNativeVersion.js
│ │ │ │ ├── ReactNativeVersionCheck.js
│ │ │ │ ├── SegmentFetcher/
│ │ │ │ │ └── NativeSegmentFetcher.js
│ │ │ │ ├── Timers/
│ │ │ │ │ ├── JSTimers.js
│ │ │ │ │ ├── NativeTiming.js
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ └── JSTimers-test.js
│ │ │ │ │ ├── immediateShim.js
│ │ │ │ │ └── queueMicrotask.js
│ │ │ │ ├── __mocks__/
│ │ │ │ │ └── NativeExceptionsManager.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── ExceptionsManager-test.js
│ │ │ │ │ └── ReactNativeVersionCheck-test.js
│ │ │ │ ├── checkNativeVersion.js
│ │ │ │ ├── polyfillPromise.js
│ │ │ │ ├── registerCallableModule.d.ts
│ │ │ │ ├── registerCallableModule.js
│ │ │ │ ├── setUpAlert.js
│ │ │ │ ├── setUpBatchedBridge.js
│ │ │ │ ├── setUpDeveloperTools.js
│ │ │ │ ├── setUpErrorHandling.js
│ │ │ │ ├── setUpGlobals.js
│ │ │ │ ├── setUpNavigator.js
│ │ │ │ ├── setUpPerformance.js
│ │ │ │ ├── setUpReactDevTools.js
│ │ │ │ ├── setUpReactRefresh.js
│ │ │ │ ├── setUpRegeneratorRuntime.js
│ │ │ │ ├── setUpSegmentFetcher.js
│ │ │ │ ├── setUpTimers.js
│ │ │ │ └── setUpXHR.js
│ │ │ ├── Debugging/
│ │ │ │ ├── DebuggingOverlay.js
│ │ │ │ ├── DebuggingOverlayNativeComponent.js
│ │ │ │ ├── DebuggingOverlayRegistry.js
│ │ │ │ └── useSubscribeToDebuggingOverlayRegistry.js
│ │ │ ├── EventEmitter/
│ │ │ │ ├── NativeEventEmitter.d.ts
│ │ │ │ ├── NativeEventEmitter.js
│ │ │ │ ├── RCTDeviceEventEmitter.d.ts
│ │ │ │ ├── RCTDeviceEventEmitter.js
│ │ │ │ ├── RCTEventEmitter.js
│ │ │ │ ├── RCTNativeAppEventEmitter.d.ts
│ │ │ │ ├── RCTNativeAppEventEmitter.js
│ │ │ │ └── __mocks__/
│ │ │ │ └── NativeEventEmitter.js
│ │ │ ├── FBLazyVector/
│ │ │ │ ├── FBLazyVector/
│ │ │ │ │ ├── FBLazyIterator.h
│ │ │ │ │ └── FBLazyVector.h
│ │ │ │ └── FBLazyVector.podspec
│ │ │ ├── Image/
│ │ │ │ ├── AssetRegistry.js
│ │ │ │ ├── AssetSourceResolver.js
│ │ │ │ ├── AssetUtils.js
│ │ │ │ ├── Image.android.js
│ │ │ │ ├── Image.d.ts
│ │ │ │ ├── Image.ios.js
│ │ │ │ ├── Image.js
│ │ │ │ ├── Image.js.flow
│ │ │ │ ├── ImageAnalyticsTagContext.js
│ │ │ │ ├── ImageBackground.js
│ │ │ │ ├── ImageInjection.js
│ │ │ │ ├── ImageProps.js
│ │ │ │ ├── ImageResizeMode.d.ts
│ │ │ │ ├── ImageResizeMode.js
│ │ │ │ ├── ImageSource.d.ts
│ │ │ │ ├── ImageSource.js
│ │ │ │ ├── ImageSourceUtils.js
│ │ │ │ ├── ImageTypes.flow.js
│ │ │ │ ├── ImageUtils.js
│ │ │ │ ├── ImageViewNativeComponent.js
│ │ │ │ ├── NativeImageEditor.js
│ │ │ │ ├── NativeImageLoaderAndroid.js
│ │ │ │ ├── NativeImageLoaderIOS.js
│ │ │ │ ├── NativeImageStoreAndroid.js
│ │ │ │ ├── NativeImageStoreIOS.js
│ │ │ │ ├── RCTAnimatedImage.h
│ │ │ │ ├── RCTAnimatedImage.mm
│ │ │ │ ├── RCTBundleAssetImageLoader.h
│ │ │ │ ├── RCTBundleAssetImageLoader.mm
│ │ │ │ ├── RCTDisplayWeakRefreshable.h
│ │ │ │ ├── RCTDisplayWeakRefreshable.mm
│ │ │ │ ├── RCTGIFImageDecoder.h
│ │ │ │ ├── RCTGIFImageDecoder.mm
│ │ │ │ ├── RCTImageBlurUtils.h
│ │ │ │ ├── RCTImageBlurUtils.mm
│ │ │ │ ├── RCTImageCache.h
│ │ │ │ ├── RCTImageCache.mm
│ │ │ │ ├── RCTImageDataDecoder.h
│ │ │ │ ├── RCTImageEditingManager.h
│ │ │ │ ├── RCTImageEditingManager.mm
│ │ │ │ ├── RCTImageLoader.h
│ │ │ │ ├── RCTImageLoader.mm
│ │ │ │ ├── RCTImageLoaderLoggable.h
│ │ │ │ ├── RCTImageLoaderProtocol.h
│ │ │ │ ├── RCTImageLoaderWithAttributionProtocol.h
│ │ │ │ ├── RCTImagePlugins.h
│ │ │ │ ├── RCTImagePlugins.mm
│ │ │ │ ├── RCTImageShadowView.h
│ │ │ │ ├── RCTImageShadowView.mm
│ │ │ │ ├── RCTImageStoreManager.h
│ │ │ │ ├── RCTImageStoreManager.mm
│ │ │ │ ├── RCTImageURLLoader.h
│ │ │ │ ├── RCTImageURLLoaderWithAttribution.h
│ │ │ │ ├── RCTImageURLLoaderWithAttribution.mm
│ │ │ │ ├── RCTImageUtils.h
│ │ │ │ ├── RCTImageUtils.mm
│ │ │ │ ├── RCTImageView.h
│ │ │ │ ├── RCTImageView.mm
│ │ │ │ ├── RCTImageViewManager.h
│ │ │ │ ├── RCTImageViewManager.mm
│ │ │ │ ├── RCTLocalAssetImageLoader.h
│ │ │ │ ├── RCTLocalAssetImageLoader.mm
│ │ │ │ ├── RCTResizeMode.h
│ │ │ │ ├── RCTResizeMode.mm
│ │ │ │ ├── RCTUIImageViewAnimated.h
│ │ │ │ ├── RCTUIImageViewAnimated.mm
│ │ │ │ ├── React-RCTImage.podspec
│ │ │ │ ├── RelativeImageStub.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── AssetUtils-test.js
│ │ │ │ │ ├── Image-benchmark-itest.js
│ │ │ │ │ ├── Image-itest.js
│ │ │ │ │ ├── Image-test.js
│ │ │ │ │ ├── ImageBackground-itest.js
│ │ │ │ │ ├── ImageBackground-test.js
│ │ │ │ │ ├── ImageSourceUtils-test.js
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── Image-test.js.snap
│ │ │ │ │ │ ├── ImageBackground-test.js.snap
│ │ │ │ │ │ └── assetRelativePathInSnapshot-test.js.snap
│ │ │ │ │ ├── assetRelativePathInSnapshot-test.js
│ │ │ │ │ └── resolveAssetSource-test.js
│ │ │ │ ├── nativeImageSource.js
│ │ │ │ └── resolveAssetSource.js
│ │ │ ├── Interaction/
│ │ │ │ ├── FrameRateLogger.js
│ │ │ │ ├── InteractionManager.d.ts
│ │ │ │ ├── InteractionManager.js
│ │ │ │ ├── NativeFrameRateLogger.js
│ │ │ │ ├── PanResponder.d.ts
│ │ │ │ ├── PanResponder.js
│ │ │ │ └── TouchHistoryMath.js
│ │ │ ├── LayoutAnimation/
│ │ │ │ ├── LayoutAnimation.d.ts
│ │ │ │ └── LayoutAnimation.js
│ │ │ ├── Linking/
│ │ │ │ ├── Linking.d.ts
│ │ │ │ ├── Linking.js
│ │ │ │ ├── NativeIntentAndroid.js
│ │ │ │ └── NativeLinkingManager.js
│ │ │ ├── LinkingIOS/
│ │ │ │ ├── RCTLinkingManager.h
│ │ │ │ ├── RCTLinkingManager.mm
│ │ │ │ ├── RCTLinkingPlugins.h
│ │ │ │ ├── RCTLinkingPlugins.mm
│ │ │ │ └── React-RCTLinking.podspec
│ │ │ ├── Lists/
│ │ │ │ ├── FillRateHelper.js
│ │ │ │ ├── FlatList.d.ts
│ │ │ │ ├── FlatList.js
│ │ │ │ ├── SectionList.d.ts
│ │ │ │ ├── SectionList.js
│ │ │ │ ├── SectionListModern.js
│ │ │ │ ├── ViewabilityHelper.js
│ │ │ │ ├── VirtualizeUtils.js
│ │ │ │ ├── VirtualizedList.js
│ │ │ │ ├── VirtualizedListContext.js
│ │ │ │ ├── VirtualizedSectionList.js
│ │ │ │ ├── __flowtests__/
│ │ │ │ │ ├── FlatList-flowtest.js
│ │ │ │ │ └── SectionList-flowtest.js
│ │ │ │ └── __tests__/
│ │ │ │ ├── FlatList-itest.js
│ │ │ │ ├── FlatList-test.js
│ │ │ │ ├── SectionList-itest.js
│ │ │ │ └── __snapshots__/
│ │ │ │ └── FlatList-test.js.snap
│ │ │ ├── LogBox/
│ │ │ │ ├── Data/
│ │ │ │ │ ├── LogBoxData.js
│ │ │ │ │ ├── LogBoxLog.js
│ │ │ │ │ ├── LogBoxSymbolication.js
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── LogBoxData-test.js
│ │ │ │ │ │ ├── LogBoxLog-test.js
│ │ │ │ │ │ ├── LogBoxSymbolication-test.js
│ │ │ │ │ │ └── parseLogBoxLog-test.js
│ │ │ │ │ └── parseLogBoxLog.js
│ │ │ │ ├── LogBox.d.ts
│ │ │ │ ├── LogBox.js
│ │ │ │ ├── LogBoxInspectorContainer.js
│ │ │ │ ├── LogBoxNotificationContainer.js
│ │ │ │ ├── UI/
│ │ │ │ │ ├── AnsiHighlight.js
│ │ │ │ │ ├── LogBoxButton.js
│ │ │ │ │ ├── LogBoxInspector.js
│ │ │ │ │ ├── LogBoxInspectorBody.js
│ │ │ │ │ ├── LogBoxInspectorCodeFrame.js
│ │ │ │ │ ├── LogBoxInspectorFooter.js
│ │ │ │ │ ├── LogBoxInspectorFooterButton.js
│ │ │ │ │ ├── LogBoxInspectorHeader.js
│ │ │ │ │ ├── LogBoxInspectorHeaderButton.js
│ │ │ │ │ ├── LogBoxInspectorMessageHeader.js
│ │ │ │ │ ├── LogBoxInspectorReactFrames.js
│ │ │ │ │ ├── LogBoxInspectorSection.js
│ │ │ │ │ ├── LogBoxInspectorSourceMapStatus.js
│ │ │ │ │ ├── LogBoxInspectorStackFrame.js
│ │ │ │ │ ├── LogBoxInspectorStackFrames.js
│ │ │ │ │ ├── LogBoxMessage.js
│ │ │ │ │ ├── LogBoxNotification.js
│ │ │ │ │ ├── LogBoxNotificationCountBadge.js
│ │ │ │ │ ├── LogBoxNotificationDismissButton.js
│ │ │ │ │ ├── LogBoxNotificationMessage.js
│ │ │ │ │ ├── LogBoxStyle.js
│ │ │ │ │ └── __tests__/
│ │ │ │ │ ├── LogBoxButton-test.js
│ │ │ │ │ ├── LogBoxInspector-test.js
│ │ │ │ │ ├── LogBoxInspectorCodeFrame-test.js
│ │ │ │ │ ├── LogBoxInspectorFooter-test.js
│ │ │ │ │ ├── LogBoxInspectorHeader-test.js
│ │ │ │ │ ├── LogBoxInspectorMessageHeader-test.js
│ │ │ │ │ ├── LogBoxInspectorReactFrames-test.js
│ │ │ │ │ ├── LogBoxInspectorSection-test.js
│ │ │ │ │ ├── LogBoxInspectorSourceMapStatus-test.js
│ │ │ │ │ ├── LogBoxInspectorStackFrame-test.js
│ │ │ │ │ ├── LogBoxInspectorStackFrames-test.js
│ │ │ │ │ ├── LogBoxMessage-test.js
│ │ │ │ │ ├── LogBoxNotification-test.js
│ │ │ │ │ └── __snapshots__/
│ │ │ │ │ ├── LogBoxButton-test.js.snap
│ │ │ │ │ ├── LogBoxInspector-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorCodeFrame-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorFooter-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorHeader-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorMessageHeader-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorReactFrames-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorSection-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorSourceMapStatus-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorStackFrame-test.js.snap
│ │ │ │ │ ├── LogBoxInspectorStackFrames-test.js.snap
│ │ │ │ │ ├── LogBoxMessage-test.js.snap
│ │ │ │ │ └── LogBoxNotification-test.js.snap
│ │ │ │ └── __tests__/
│ │ │ │ ├── LogBox-test.js
│ │ │ │ ├── LogBoxInspectorContainer-test.js
│ │ │ │ ├── LogBoxNotificationContainer-test.js
│ │ │ │ ├── __snapshots__/
│ │ │ │ │ ├── LogBoxInspectorContainer-test.js.snap
│ │ │ │ │ └── LogBoxNotificationContainer-test.js.snap
│ │ │ │ └── fantomHelpers.js
│ │ │ ├── Modal/
│ │ │ │ ├── Modal.d.ts
│ │ │ │ ├── Modal.js
│ │ │ │ ├── NativeModalManager.js
│ │ │ │ ├── RCTModalHostViewNativeComponent.js
│ │ │ │ └── __tests__/
│ │ │ │ ├── Modal-itest.js
│ │ │ │ ├── Modal-test.js
│ │ │ │ └── __snapshots__/
│ │ │ │ └── Modal-test.js.snap
│ │ │ ├── NativeAnimation/
│ │ │ │ ├── Drivers/
│ │ │ │ │ ├── RCTAnimationDriver.h
│ │ │ │ │ ├── RCTDecayAnimation.h
│ │ │ │ │ ├── RCTDecayAnimation.mm
│ │ │ │ │ ├── RCTEventAnimation.h
│ │ │ │ │ ├── RCTEventAnimation.mm
│ │ │ │ │ ├── RCTFrameAnimation.h
│ │ │ │ │ ├── RCTFrameAnimation.mm
│ │ │ │ │ ├── RCTSpringAnimation.h
│ │ │ │ │ └── RCTSpringAnimation.mm
│ │ │ │ ├── Nodes/
│ │ │ │ │ ├── RCTAdditionAnimatedNode.h
│ │ │ │ │ ├── RCTAdditionAnimatedNode.mm
│ │ │ │ │ ├── RCTAnimatedNode.h
│ │ │ │ │ ├── RCTAnimatedNode.mm
│ │ │ │ │ ├── RCTColorAnimatedNode.h
│ │ │ │ │ ├── RCTColorAnimatedNode.mm
│ │ │ │ │ ├── RCTDiffClampAnimatedNode.h
│ │ │ │ │ ├── RCTDiffClampAnimatedNode.mm
│ │ │ │ │ ├── RCTDivisionAnimatedNode.h
│ │ │ │ │ ├── RCTDivisionAnimatedNode.mm
│ │ │ │ │ ├── RCTInterpolationAnimatedNode.h
│ │ │ │ │ ├── RCTInterpolationAnimatedNode.mm
│ │ │ │ │ ├── RCTModuloAnimatedNode.h
│ │ │ │ │ ├── RCTModuloAnimatedNode.mm
│ │ │ │ │ ├── RCTMultiplicationAnimatedNode.h
│ │ │ │ │ ├── RCTMultiplicationAnimatedNode.mm
│ │ │ │ │ ├── RCTObjectAnimatedNode.h
│ │ │ │ │ ├── RCTObjectAnimatedNode.mm
│ │ │ │ │ ├── RCTPropsAnimatedNode.h
│ │ │ │ │ ├── RCTPropsAnimatedNode.mm
│ │ │ │ │ ├── RCTStyleAnimatedNode.h
│ │ │ │ │ ├── RCTStyleAnimatedNode.mm
│ │ │ │ │ ├── RCTSubtractionAnimatedNode.h
│ │ │ │ │ ├── RCTSubtractionAnimatedNode.mm
│ │ │ │ │ ├── RCTTrackingAnimatedNode.h
│ │ │ │ │ ├── RCTTrackingAnimatedNode.mm
│ │ │ │ │ ├── RCTTransformAnimatedNode.h
│ │ │ │ │ ├── RCTTransformAnimatedNode.mm
│ │ │ │ │ ├── RCTValueAnimatedNode.h
│ │ │ │ │ └── RCTValueAnimatedNode.mm
│ │ │ │ ├── RCTAnimationPlugins.h
│ │ │ │ ├── RCTAnimationPlugins.mm
│ │ │ │ ├── RCTAnimationUtils.h
│ │ │ │ ├── RCTAnimationUtils.mm
│ │ │ │ ├── RCTNativeAnimatedModule.h
│ │ │ │ ├── RCTNativeAnimatedModule.mm
│ │ │ │ ├── RCTNativeAnimatedNodesManager.h
│ │ │ │ ├── RCTNativeAnimatedNodesManager.mm
│ │ │ │ ├── RCTNativeAnimatedTurboModule.h
│ │ │ │ ├── RCTNativeAnimatedTurboModule.mm
│ │ │ │ └── React-RCTAnimation.podspec
│ │ │ ├── NativeComponent/
│ │ │ │ ├── BaseViewConfig.android.js
│ │ │ │ ├── BaseViewConfig.ios.js
│ │ │ │ ├── BaseViewConfig.js
│ │ │ │ ├── BaseViewConfig.js.flow
│ │ │ │ ├── NativeComponentRegistry.d.ts
│ │ │ │ ├── NativeComponentRegistry.js
│ │ │ │ ├── NativeComponentRegistryUnstable.js
│ │ │ │ ├── PlatformBaseViewConfig.js
│ │ │ │ ├── StaticViewConfigValidator.js
│ │ │ │ ├── ViewConfig.js
│ │ │ │ ├── ViewConfigIgnore.js
│ │ │ │ └── __tests__/
│ │ │ │ └── StaticViewConfigValidator-test.js
│ │ │ ├── NativeModules/
│ │ │ │ └── specs/
│ │ │ │ ├── NativeDevMenu.js
│ │ │ │ ├── NativeDevSettings.js
│ │ │ │ ├── NativeDeviceEventManager.js
│ │ │ │ ├── NativeDialogManagerAndroid.js
│ │ │ │ ├── NativeLogBox.js
│ │ │ │ ├── NativeRedBox.js
│ │ │ │ └── NativeSourceCode.js
│ │ │ ├── Network/
│ │ │ │ ├── FormData.js
│ │ │ │ ├── NativeNetworkingAndroid.js
│ │ │ │ ├── NativeNetworkingIOS.js
│ │ │ │ ├── RCTDataRequestHandler.h
│ │ │ │ ├── RCTDataRequestHandler.mm
│ │ │ │ ├── RCTFileRequestHandler.h
│ │ │ │ ├── RCTFileRequestHandler.mm
│ │ │ │ ├── RCTHTTPRequestHandler.h
│ │ │ │ ├── RCTHTTPRequestHandler.mm
│ │ │ │ ├── RCTInspectorNetworkReporter.h
│ │ │ │ ├── RCTInspectorNetworkReporter.mm
│ │ │ │ ├── RCTNetworkConversions.h
│ │ │ │ ├── RCTNetworkPlugins.h
│ │ │ │ ├── RCTNetworkPlugins.mm
│ │ │ │ ├── RCTNetworkTask.h
│ │ │ │ ├── RCTNetworkTask.mm
│ │ │ │ ├── RCTNetworking+Internal.h
│ │ │ │ ├── RCTNetworking.android.js
│ │ │ │ ├── RCTNetworking.h
│ │ │ │ ├── RCTNetworking.ios.js
│ │ │ │ ├── RCTNetworking.js
│ │ │ │ ├── RCTNetworking.js.flow
│ │ │ │ ├── RCTNetworking.mm
│ │ │ │ ├── RCTNetworkingEventDefinitions.flow.js
│ │ │ │ ├── React-RCTNetwork.podspec
│ │ │ │ ├── XMLHttpRequest.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── FormData-test.js
│ │ │ │ │ └── XMLHttpRequest-test.js
│ │ │ │ ├── convertRequestBody.js
│ │ │ │ └── fetch.js
│ │ │ ├── Performance/
│ │ │ │ ├── Systrace.d.ts
│ │ │ │ └── Systrace.js
│ │ │ ├── PermissionsAndroid/
│ │ │ │ ├── NativePermissionsAndroid.js
│ │ │ │ ├── PermissionsAndroid.d.ts
│ │ │ │ └── PermissionsAndroid.js
│ │ │ ├── Pressability/
│ │ │ │ ├── HoverState.js
│ │ │ │ ├── Pressability.js
│ │ │ │ ├── PressabilityDebug.js
│ │ │ │ ├── PressabilityPerformanceEventEmitter.js
│ │ │ │ ├── PressabilityTypes.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── Pressability-itest.js
│ │ │ │ │ └── Pressability-test.js
│ │ │ │ └── usePressability.js
│ │ │ ├── Promise.js
│ │ │ ├── PushNotificationIOS/
│ │ │ │ ├── NativePushNotificationManagerIOS.js
│ │ │ │ ├── PushNotificationIOS.d.ts
│ │ │ │ ├── PushNotificationIOS.js
│ │ │ │ ├── RCTPushNotificationManager.h
│ │ │ │ ├── RCTPushNotificationManager.mm
│ │ │ │ ├── RCTPushNotificationPlugins.h
│ │ │ │ ├── RCTPushNotificationPlugins.mm
│ │ │ │ └── React-RCTPushNotification.podspec
│ │ │ ├── ReactNative/
│ │ │ │ ├── AppContainer-dev.js
│ │ │ │ ├── AppContainer-prod.js
│ │ │ │ ├── AppContainer.js
│ │ │ │ ├── AppRegistry.d.ts
│ │ │ │ ├── AppRegistry.flow.js
│ │ │ │ ├── AppRegistry.js
│ │ │ │ ├── AppRegistry.js.flow
│ │ │ │ ├── AppRegistryImpl.js
│ │ │ │ ├── BridgelessUIManager.js
│ │ │ │ ├── DisplayMode.js
│ │ │ │ ├── FabricUIManager.js
│ │ │ │ ├── HeadlessJsTaskError.js
│ │ │ │ ├── I18nManager.d.ts
│ │ │ │ ├── I18nManager.js
│ │ │ │ ├── NativeHeadlessJsTaskSupport.js
│ │ │ │ ├── NativeI18nManager.js
│ │ │ │ ├── NativeUIManager.js
│ │ │ │ ├── PaperUIManager.js
│ │ │ │ ├── ReactFabricPublicInstance/
│ │ │ │ │ ├── ReactFabricPublicInstance.js
│ │ │ │ │ ├── ReactFabricPublicInstanceUtils.js
│ │ │ │ │ ├── ReactNativeAttributePayload.js
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ └── ReactNativeAttributePayload-test.js
│ │ │ │ │ └── warnForStyleProps.js
│ │ │ │ ├── ReactNativeRuntimeDiagnostics.js
│ │ │ │ ├── RendererImplementation.js
│ │ │ │ ├── RendererProxy.d.ts
│ │ │ │ ├── RendererProxy.js
│ │ │ │ ├── RootTag.d.ts
│ │ │ │ ├── RootTag.js
│ │ │ │ ├── UIManager.d.ts
│ │ │ │ ├── UIManager.js
│ │ │ │ ├── UIManagerProperties.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── FabricUIManager-test.js
│ │ │ │ │ ├── StaleEventHandlersFromInterruptedRender-itest.js
│ │ │ │ │ ├── State-ForcedCloneCommitHook-itest.js
│ │ │ │ │ └── SyncOnCommit-itest.js
│ │ │ │ ├── getCachedComponentWithDebugName.js
│ │ │ │ ├── getNativeComponentAttributes.js
│ │ │ │ ├── renderApplication.js
│ │ │ │ ├── requireNativeComponent.d.ts
│ │ │ │ └── requireNativeComponent.js
│ │ │ ├── ReactNativeDependencies/
│ │ │ │ └── Package.swift
│ │ │ ├── ReactPrivate/
│ │ │ │ ├── README
│ │ │ │ ├── ReactNativePrivateInitializeCore.js
│ │ │ │ ├── ReactNativePrivateInterface.js
│ │ │ │ └── ReactNativePrivateInterface.js.flow
│ │ │ ├── Renderer/
│ │ │ │ ├── README.md
│ │ │ │ ├── implementations/
│ │ │ │ │ ├── ReactFabric-dev.js
│ │ │ │ │ ├── ReactFabric-prod.js
│ │ │ │ │ ├── ReactFabric-profiling.js
│ │ │ │ │ ├── ReactNativeRenderer-dev.js
│ │ │ │ │ ├── ReactNativeRenderer-prod.js
│ │ │ │ │ └── ReactNativeRenderer-profiling.js
│ │ │ │ └── shims/
│ │ │ │ ├── ReactFabric.js
│ │ │ │ ├── ReactFeatureFlags.js
│ │ │ │ ├── ReactNative.js
│ │ │ │ ├── ReactNativeTypes.js
│ │ │ │ ├── ReactNativeViewConfigRegistry.js
│ │ │ │ └── createReactNativeComponentClass.js
│ │ │ ├── Required/
│ │ │ │ ├── RCTRequired.h
│ │ │ │ └── RCTRequired.podspec
│ │ │ ├── Settings/
│ │ │ │ ├── NativeSettingsManager.js
│ │ │ │ ├── RCTSettingsManager.h
│ │ │ │ ├── RCTSettingsManager.mm
│ │ │ │ ├── RCTSettingsPlugins.h
│ │ │ │ ├── RCTSettingsPlugins.mm
│ │ │ │ ├── React-RCTSettings.podspec
│ │ │ │ ├── Settings.d.ts
│ │ │ │ ├── Settings.ios.js
│ │ │ │ ├── Settings.js
│ │ │ │ └── SettingsFallback.js
│ │ │ ├── Share/
│ │ │ │ ├── NativeShareModule.js
│ │ │ │ ├── Share.d.ts
│ │ │ │ └── Share.js
│ │ │ ├── StyleSheet/
│ │ │ │ ├── EdgeInsetsPropType.js
│ │ │ │ ├── PlatformColorValueTypes.android.js
│ │ │ │ ├── PlatformColorValueTypes.d.ts
│ │ │ │ ├── PlatformColorValueTypes.ios.js
│ │ │ │ ├── PlatformColorValueTypes.js
│ │ │ │ ├── PlatformColorValueTypes.js.flow
│ │ │ │ ├── PlatformColorValueTypesIOS.d.ts
│ │ │ │ ├── PlatformColorValueTypesIOS.ios.js
│ │ │ │ ├── PlatformColorValueTypesIOS.js
│ │ │ │ ├── PointPropType.js
│ │ │ │ ├── Rect.js
│ │ │ │ ├── StyleSheet.d.ts
│ │ │ │ ├── StyleSheet.js
│ │ │ │ ├── StyleSheet.js.flow
│ │ │ │ ├── StyleSheetExports.js
│ │ │ │ ├── StyleSheetExports.js.flow
│ │ │ │ ├── StyleSheetTypes.d.ts
│ │ │ │ ├── StyleSheetTypes.js
│ │ │ │ ├── __flowtests__/
│ │ │ │ │ └── StyleSheet-flowtest.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── StyleSheet-test.js
│ │ │ │ │ ├── __snapshots__/
│ │ │ │ │ │ ├── processAspectRatio-test.js.snap
│ │ │ │ │ │ ├── processTransform-test.js.snap
│ │ │ │ │ │ └── processTransformOrigin-test.js.snap
│ │ │ │ │ ├── flattenStyle-test.js
│ │ │ │ │ ├── normalizeColor-test.js
│ │ │ │ │ ├── processAspectRatio-test.js
│ │ │ │ │ ├── processBackgroundImage-test.js
│ │ │ │ │ ├── processBackgroundPosition-test.js
│ │ │ │ │ ├── processBackgroundRepeat-test.js
│ │ │ │ │ ├── processBackgroundSize-test.js
│ │ │ │ │ ├── processBoxShadow-itest.js
│ │ │ │ │ ├── processColor-test.js
│ │ │ │ │ ├── processColorArray-test.js
│ │ │ │ │ ├── processFilter-test.js
│ │ │ │ │ ├── processFontVariant-test.js
│ │ │ │ │ ├── processTransform-test.js
│ │ │ │ │ ├── processTransformOrigin-test.js
│ │ │ │ │ ├── setNormalizedColorAlpha-test.js
│ │ │ │ │ └── splitLayoutProps-test.js
│ │ │ │ ├── flattenStyle.js
│ │ │ │ ├── normalizeColor.js
│ │ │ │ ├── private/
│ │ │ │ │ ├── _StyleSheetTypesOverrides.js
│ │ │ │ │ └── _TransformStyle.js
│ │ │ │ ├── processAspectRatio.js
│ │ │ │ ├── processBackgroundImage.js
│ │ │ │ ├── processBackgroundPosition.js
│ │ │ │ ├── processBackgroundRepeat.js
│ │ │ │ ├── processBackgroundSize.js
│ │ │ │ ├── processBoxShadow.js
│ │ │ │ ├── processColor.d.ts
│ │ │ │ ├── processColor.js
│ │ │ │ ├── processColorArray.js
│ │ │ │ ├── processFilter.js
│ │ │ │ ├── processFontVariant.js
│ │ │ │ ├── processTransform.js
│ │ │ │ ├── processTransformOrigin.js
│ │ │ │ ├── setNormalizedColorAlpha.js
│ │ │ │ └── splitLayoutProps.js
│ │ │ ├── Text/
│ │ │ │ ├── BaseText/
│ │ │ │ │ ├── RCTBaseTextShadowView.h
│ │ │ │ │ ├── RCTBaseTextShadowView.mm
│ │ │ │ │ ├── RCTBaseTextViewManager.h
│ │ │ │ │ └── RCTBaseTextViewManager.mm
│ │ │ │ ├── RCTConvert+Text.h
│ │ │ │ ├── RCTConvert+Text.mm
│ │ │ │ ├── RCTTextAttributes.h
│ │ │ │ ├── RCTTextAttributes.mm
│ │ │ │ ├── RCTTextTransform.h
│ │ │ │ ├── RawText/
│ │ │ │ │ ├── RCTRawTextShadowView.h
│ │ │ │ │ ├── RCTRawTextShadowView.mm
│ │ │ │ │ ├── RCTRawTextViewManager.h
│ │ │ │ │ └── RCTRawTextViewManager.mm
│ │ │ │ ├── React-RCTText.podspec
│ │ │ │ ├── Text/
│ │ │ │ │ ├── NSTextStorage+FontScaling.h
│ │ │ │ │ ├── NSTextStorage+FontScaling.m
│ │ │ │ │ ├── RCTDynamicTypeRamp.h
│ │ │ │ │ ├── RCTDynamicTypeRamp.mm
│ │ │ │ │ ├── RCTTextShadowView.h
│ │ │ │ │ ├── RCTTextShadowView.mm
│ │ │ │ │ ├── RCTTextView.h
│ │ │ │ │ ├── RCTTextView.mm
│ │ │ │ │ ├── RCTTextViewManager.h
│ │ │ │ │ └── RCTTextViewManager.mm
│ │ │ │ ├── Text.d.ts
│ │ │ │ ├── Text.js
│ │ │ │ ├── TextAncestor.js
│ │ │ │ ├── TextAncestorContext.js
│ │ │ │ ├── TextInput/
│ │ │ │ │ ├── Multiline/
│ │ │ │ │ │ ├── RCTMultilineTextInputView.h
│ │ │ │ │ │ ├── RCTMultilineTextInputView.mm
│ │ │ │ │ │ ├── RCTMultilineTextInputViewManager.h
│ │ │ │ │ │ ├── RCTMultilineTextInputViewManager.mm
│ │ │ │ │ │ ├── RCTUITextView.h
│ │ │ │ │ │ └── RCTUITextView.mm
│ │ │ │ │ ├── RCTBackedTextInputDelegate.h
│ │ │ │ │ ├── RCTBackedTextInputDelegateAdapter.h
│ │ │ │ │ ├── RCTBackedTextInputDelegateAdapter.mm
│ │ │ │ │ ├── RCTBackedTextInputViewProtocol.h
│ │ │ │ │ ├── RCTBaseTextInputShadowView.h
│ │ │ │ │ ├── RCTBaseTextInputShadowView.mm
│ │ │ │ │ ├── RCTBaseTextInputView.h
│ │ │ │ │ ├── RCTBaseTextInputView.mm
│ │ │ │ │ ├── RCTBaseTextInputViewManager.h
│ │ │ │ │ ├── RCTBaseTextInputViewManager.mm
│ │ │ │ │ ├── RCTInputAccessoryShadowView.h
│ │ │ │ │ ├── RCTInputAccessoryShadowView.mm
│ │ │ │ │ ├── RCTInputAccessoryView.h
│ │ │ │ │ ├── RCTInputAccessoryView.mm
│ │ │ │ │ ├── RCTInputAccessoryViewContent.h
│ │ │ │ │ ├── RCTInputAccessoryViewContent.mm
│ │ │ │ │ ├── RCTInputAccessoryViewManager.h
│ │ │ │ │ ├── RCTInputAccessoryViewManager.mm
│ │ │ │ │ ├── RCTTextSelection.h
│ │ │ │ │ ├── RCTTextSelection.mm
│ │ │ │ │ └── Singleline/
│ │ │ │ │ ├── RCTSinglelineTextInputView.h
│ │ │ │ │ ├── RCTSinglelineTextInputView.mm
│ │ │ │ │ ├── RCTSinglelineTextInputViewManager.h
│ │ │ │ │ ├── RCTSinglelineTextInputViewManager.mm
│ │ │ │ │ ├── RCTUITextField.h
│ │ │ │ │ └── RCTUITextField.mm
│ │ │ │ ├── TextNativeComponent.js
│ │ │ │ ├── TextProps.js
│ │ │ │ ├── VirtualText/
│ │ │ │ │ ├── RCTVirtualTextShadowView.h
│ │ │ │ │ ├── RCTVirtualTextShadowView.mm
│ │ │ │ │ ├── RCTVirtualTextView.h
│ │ │ │ │ ├── RCTVirtualTextView.mm
│ │ │ │ │ ├── RCTVirtualTextViewManager.h
│ │ │ │ │ └── RCTVirtualTextViewManager.mm
│ │ │ │ └── __tests__/
│ │ │ │ ├── Text-benchmark-itest.js
│ │ │ │ ├── Text-itest.js
│ │ │ │ └── Text-test.js
│ │ │ ├── TurboModule/
│ │ │ │ ├── RCTExport.d.ts
│ │ │ │ ├── RCTExport.js
│ │ │ │ ├── TurboModuleRegistry.d.ts
│ │ │ │ ├── TurboModuleRegistry.js
│ │ │ │ └── samples/
│ │ │ │ └── NativeSampleTurboModule.js
│ │ │ ├── TypeSafety/
│ │ │ │ ├── RCTConvertHelpers.h
│ │ │ │ ├── RCTConvertHelpers.mm
│ │ │ │ ├── RCTTypeSafety.podspec
│ │ │ │ ├── RCTTypedModuleConstants.h
│ │ │ │ └── RCTTypedModuleConstants.mm
│ │ │ ├── Types/
│ │ │ │ ├── CodegenTypes.js
│ │ │ │ ├── CodegenTypesNamespace.d.ts
│ │ │ │ ├── CodegenTypesNamespace.js
│ │ │ │ ├── CoreEventTypes.d.ts
│ │ │ │ ├── CoreEventTypes.js
│ │ │ │ ├── ReactDevToolsTypes.js
│ │ │ │ ├── RootTagTypes.js
│ │ │ │ └── UIManagerJSInterface.js
│ │ │ ├── UTFSequence.js
│ │ │ ├── Utilities/
│ │ │ │ ├── Appearance.d.ts
│ │ │ │ ├── Appearance.js
│ │ │ │ ├── BackHandler.android.js
│ │ │ │ ├── BackHandler.d.ts
│ │ │ │ ├── BackHandler.ios.js
│ │ │ │ ├── BackHandler.js
│ │ │ │ ├── BackHandler.js.flow
│ │ │ │ ├── DevLoadingView.js
│ │ │ │ ├── DevSettings.d.ts
│ │ │ │ ├── DevSettings.js
│ │ │ │ ├── DeviceInfo.js
│ │ │ │ ├── Dimensions.d.ts
│ │ │ │ ├── Dimensions.js
│ │ │ │ ├── FeatureDetection.js
│ │ │ │ ├── GlobalPerformanceLogger.js
│ │ │ │ ├── HMRClient.js
│ │ │ │ ├── HMRClientProdShim.js
│ │ │ │ ├── HardwareBackPressEvent.js
│ │ │ │ ├── IPerformanceLogger.d.ts
│ │ │ │ ├── IPerformanceLogger.js
│ │ │ │ ├── NativeAppearance.js
│ │ │ │ ├── NativeDevLoadingView.js
│ │ │ │ ├── NativeDeviceInfo.js
│ │ │ │ ├── NativePlatformConstantsAndroid.js
│ │ │ │ ├── NativePlatformConstantsIOS.js
│ │ │ │ ├── PerformanceLoggerContext.js
│ │ │ │ ├── PixelRatio.d.ts
│ │ │ │ ├── PixelRatio.js
│ │ │ │ ├── Platform.android.js
│ │ │ │ ├── Platform.d.ts
│ │ │ │ ├── Platform.ios.js
│ │ │ │ ├── Platform.js
│ │ │ │ ├── Platform.js.flow
│ │ │ │ ├── PlatformTypes.js
│ │ │ │ ├── PolyfillFunctions.js
│ │ │ │ ├── RCTLog.js
│ │ │ │ ├── ReactNativeTestTools.js
│ │ │ │ ├── SceneTracker.js
│ │ │ │ ├── __mocks__/
│ │ │ │ │ ├── BackHandler.js
│ │ │ │ │ ├── GlobalPerformanceLogger.js
│ │ │ │ │ └── PixelRatio.js
│ │ │ │ ├── __tests__/
│ │ │ │ │ ├── BackHandler-itest.js
│ │ │ │ │ ├── DeviceInfo-test.js
│ │ │ │ │ ├── Dimensions-test.js
│ │ │ │ │ ├── HardwareBackPressEvent-itest.js
│ │ │ │ │ ├── PerformanceLogger-test.js
│ │ │ │ │ ├── PixelRatio-test.js
│ │ │ │ │ ├── Platform-test.js
│ │ │ │ │ ├── ReactNativeTestTools-test.js
│ │ │ │ │ ├── SceneTracker-test.js
│ │ │ │ │ ├── binaryToBase64-test.js
│ │ │ │ │ ├── codegenNativeComponent-test.js
│ │ │ │ │ ├── deepFreezeAndThrowOnMutationInDev-test.js
│ │ │ │ │ ├── logError-test.js
│ │ │ │ │ ├── mapWithSeparator-test.js
│ │ │ │ │ ├── stringifySafe-test.js
│ │ │ │ │ ├── useColorScheme-test.js
│ │ │ │ │ ├── useMergeRefs-test.js
│ │ │ │ │ ├── useRefEffect-test.js
│ │ │ │ │ └── warnOnce-test.js
│ │ │ │ ├── binaryToBase64.js
│ │ │ │ ├── codegenNativeCommands.d.ts
│ │ │ │ ├── codegenNativeCommands.js
│ │ │ │ ├── codegenNativeComponent.d.ts
│ │ │ │ ├── codegenNativeComponent.js
│ │ │ │ ├── createPerformanceLogger.js
│ │ │ │ ├── deepFreezeAndThrowOnMutationInDev.js
│ │ │ │ ├── defineLazyObjectProperty.js
│ │ │ │ ├── differ/
│ │ │ │ │ ├── __tests__/
│ │ │ │ │ │ ├── deepDiffer-test.js
│ │ │ │ │ │ └── matricesDiffer-test.js
│ │ │ │ │ ├── deepDiffer.js
│ │ │ │ │ ├── insetsDiffer.js
│ │ │ │ │ ├── matricesDiffer.js
│ │ │ │ │ ├── pointsDiffer.js
│ │ │ │ │ └── sizesDiffer.js
│ │ │ │ ├── dismissKeyboard.js
│ │ │ │ ├── logError.js
│ │ │ │ ├── mapWithSeparator.js
│ │ │ │ ├── stringifySafe.js
│ │ │ │ ├── stringifyViewConfig.js
│ │ │ │ ├── useColorScheme.js
│ │ │ │ ├── useMergeRefs.js
│ │ │ │ ├── useRefEffect.js
│ │ │ │ ├── useWindowDimensions.js
│ │ │ │ └── warnOnce.js
│ │ │ ├── Vibration/
│ │ │ │ ├── NativeVibration.js
│ │ │ │ ├── RCTVibration.h
│ │ │ │ ├── RCTVibration.mm
│ │ │ │ ├── RCTVibrationPlugins.h
│ │ │ │ ├── RCTVibrationPlugins.mm
│ │ │ │ ├── React-RCTVibration.podspec
│ │ │ │ ├── Vibration.d.ts
│ │ │ │ └── Vibration.js
│ │ │ ├── WebSocket/
│ │ │ │ ├── NativeWebSocketModule.js
│ │ │ │ ├── RCTReconnectingWebSocket.h
│ │ │ │ ├── RCTReconnectingWebSocket.m
│ │ │ │ ├── WebSocket.js
│ │ │ │ ├── WebSocketInterceptor.js
│ │ │ │ └── __tests__/
│ │ │ │ └── WebSocket-test.js
│ │ │ ├── Wrapper/
│ │ │ │ ├── Example/
│ │ │ │ │ ├── RCTWrapperExampleView.h
│ │ │ │ │ ├── RCTWrapperExampleView.m
│ │ │ │ │ ├── RCTWrapperExampleViewController.h
│ │ │ │ │ ├── RCTWrapperExampleViewController.m
│ │ │ │ │ ├── RCTWrapperReactRootViewController.h
│ │ │ │ │ ├── RCTWrapperReactRootViewController.m
│ │ │ │ │ ├── RCTWrapperReactRootViewManager.h
│ │ │ │ │ └── RCTWrapperReactRootViewManager.m
│ │ │ │ ├── RCTWrapper.h
│ │ │ │ ├── RCTWrapperShadowView.h
│ │ │ │ ├── RCTWrapperShadowView.m
│ │ │ │ ├── RCTWrapperView.h
│ │ │ │ ├── RCTWrapperView.m
│ │ │ │ ├── RCTWrapperViewControllerHostingView.h
│ │ │ │ ├── RCTWrapperViewControllerHostingView.m
│ │ │ │ ├── RCTWrapperViewManager.h
│ │ │ │ └── RCTWrapperViewManager.m
│ │ │ ├── __flowtests__/
│ │ │ │ └── ReactNativeTypes-flowtest.js
│ │ │ └── promiseRejectionTrackingOptions.js
│ │ ├── Package.swift
│ │ ├── README.md
│ │ ├── React/
│ │ │ ├── Base/
│ │ │ │ ├── RCTAssert.h
│ │ │ │ ├── RCTAssert.m
│ │ │ │ ├── RCTBridge+Inspector.h
│ │ │ │ ├── RCTBridge+Private.h
│ │ │ │ ├── RCTBridge.h
│ │ │ │ ├── RCTBridge.mm
│ │ │ │ ├── RCTBridgeConstants.h
│ │ │ │ ├── RCTBridgeConstants.m
│ │ │ │ ├── RCTBridgeDelegate.h
│ │ │ │ ├── RCTBridgeMethod.h
│ │ │ │ ├── RCTBridgeModule.h
│ │ │ │ ├── RCTBridgeModuleDecorator.h
│ │ │ │ ├── RCTBridgeModuleDecorator.m
│ │ │ │ ├── RCTBridgeProxy+Cxx.h
│ │ │ │ ├── RCTBridgeProxy.h
│ │ │ │ ├── RCTBridgeProxy.mm
│ │ │ │ ├── RCTBundleManager.h
│ │ │ │ ├── RCTBundleManager.m
│ │ │ │ ├── RCTBundleURLProvider.h
│ │ │ │ ├── RCTBundleURLProvider.mm
│ │ │ │ ├── RCTCallInvoker.h
│ │ │ │ ├── RCTCallInvoker.mm
│ │ │ │ ├── RCTCallInvokerModule.h
│ │ │ │ ├── RCTCallableJSModules.m
│ │ │ │ ├── RCTComponentEvent.h
│ │ │ │ ├── RCTComponentEvent.m
│ │ │ │ ├── RCTConstants.h
│ │ │ │ ├── RCTConstants.m
│ │ │ │ ├── RCTConvert.h
│ │ │ │ ├── RCTConvert.mm
│ │ │ │ ├── RCTCxxConvert.h
│ │ │ │ ├── RCTCxxConvert.m
│ │ │ │ ├── RCTDefines.h
│ │ │ │ ├── RCTDevSupportHttpHeaders.h
│ │ │ │ ├── RCTDevSupportHttpHeaders.m
│ │ │ │ ├── RCTDisplayLink.h
│ │ │ │ ├── RCTDisplayLink.m
│ │ │ │ ├── RCTErrorCustomizer.h
│ │ │ │ ├── RCTErrorInfo.h
│ │ │ │ ├── RCTErrorInfo.m
│ │ │ │ ├── RCTEventDispatcher.m
│ │ │ │ ├── RCTEventDispatcherProtocol.h
│ │ │ │ ├── RCTFrameUpdate.h
│ │ │ │ ├── RCTFrameUpdate.m
│ │ │ │ ├── RCTImageSource.h
│ │ │ │ ├── RCTImageSource.m
│ │ │ │ ├── RCTInitializing.h
│ │ │ │ ├── RCTInvalidating.h
│ │ │ │ ├── RCTJSStackFrame.h
│ │ │ │ ├── RCTJSStackFrame.m
│ │ │ │ ├── RCTJSThread.h
│ │ │ │ ├── RCTJSThread.m
│ │ │ │ ├── RCTJavaScriptExecutor.h
│ │ │ │ ├── RCTJavaScriptLoader.h
│ │ │ │ ├── RCTJavaScriptLoader.mm
│ │ │ │ ├── RCTKeyCommands.h
│ │ │ │ ├── RCTKeyCommands.m
│ │ │ │ ├── RCTLog.h
│ │ │ │ ├── RCTLog.mm
│ │ │ │ ├── RCTManagedPointer.h
│ │ │ │ ├── RCTManagedPointer.mm
│ │ │ │ ├── RCTMockDef.h
│ │ │ │ ├── RCTModuleData.h
│ │ │ │ ├── RCTModuleData.mm
│ │ │ │ ├── RCTModuleMethod.h
│ │ │ │ ├── RCTModuleMethod.mm
│ │ │ │ ├── RCTModuleRegistry.m
│ │ │ │ ├── RCTMultipartDataTask.h
│ │ │ │ ├── RCTMultipartDataTask.m
│ │ │ │ ├── RCTMultipartStreamReader.h
│ │ │ │ ├── RCTMultipartStreamReader.m
│ │ │ │ ├── RCTNullability.h
│ │ │ │ ├── RCTPLTag.h
│ │ │ │ ├── RCTParserUtils.h
│ │ │ │ ├── RCTParserUtils.m
│ │ │ │ ├── RCTPerformanceLogger.h
│ │ │ │ ├── RCTPerformanceLogger.mm
│ │ │ │ ├── RCTPerformanceLoggerLabels.h
│ │ │ │ ├── RCTPerformanceLoggerLabels.m
│ │ │ │ ├── RCTRedBoxSetEnabled.h
│ │ │ │ ├── RCTRedBoxSetEnabled.m
│ │ │ │ ├── RCTReloadCommand.h
│ │ │ │ ├── RCTReloadCommand.m
│ │ │ │ ├── RCTRootContentView.h
│ │ │ │ ├── RCTRootContentView.m
│ │ │ │ ├── RCTRootView.h
│ │ │ │ ├── RCTRootView.m
│ │ │ │ ├── RCTRootViewDelegate.h
│ │ │ │ ├── RCTRootViewInternal.h
│ │ │ │ ├── RCTTouchEvent.h
│ │ │ │ ├── RCTTouchEvent.m
│ │ │ │ ├── RCTTouchHandler.h
│ │ │ │ ├── RCTTouchHandler.m
│ │ │ │ ├── RCTTurboModuleRegistry.h
│ │ │ │ ├── RCTURLRequestDelegate.h
│ │ │ │ ├── RCTURLRequestHandler.h
│ │ │ │ ├── RCTUtils.h
│ │ │ │ ├── RCTUtils.mm
│ │ │ │ ├── RCTUtilsUIOverride.h
│ │ │ │ ├── RCTUtilsUIOverride.m
│ │ │ │ ├── RCTVersion.h
│ │ │ │ ├── RCTVersion.m
│ │ │ │ ├── RCTViewRegistry.m
│ │ │ │ └── Surface/
│ │ │ │ ├── RCTSurface.h
│ │ │ │ ├── RCTSurface.mm
│ │ │ │ ├── RCTSurfaceDelegate.h
│ │ │ │ ├── RCTSurfaceProtocol.h
│ │ │ │ ├── RCTSurfaceRootShadowView.h
│ │ │ │ ├── RCTSurfaceRootShadowView.m
│ │ │ │ ├── RCTSurfaceRootShadowViewDelegate.h
│ │ │ │ ├── RCTSurfaceRootView.h
│ │ │ │ ├── RCTSurfaceRootView.mm
│ │ │ │ ├── RCTSurfaceStage.h
│ │ │ │ ├── RCTSurfaceStage.m
│ │ │ │ ├── RCTSurfaceView+Internal.h
│ │ │ │ ├── RCTSurfaceView.h
│ │ │ │ ├── RCTSurfaceView.mm
│ │ │ │ └── SurfaceHostingView/
│ │ │ │ ├── RCTSurfaceHostingProxyRootView.h
│ │ │ │ ├── RCTSurfaceHostingProxyRootView.mm
│ │ │ │ ├── RCTSurfaceHostingView.h
│ │ │ │ ├── RCTSurfaceHostingView.mm
│ │ │ │ ├── RCTSurfaceSizeMeasureMode.h
│ │ │ │ └── RCTSurfaceSizeMeasureMode.mm
│ │ │ ├── CoreModules/
│ │ │ │ ├── CoreModulesPlugins.h
│ │ │ │ ├── CoreModulesPlugins.mm
│ │ │ │ ├── PlatformStubs/
│ │ │ │ │ └── RCTStatusBarManager.mm
│ │ │ │ ├── RCTAccessibilityManager+Internal.h
│ │ │ │ ├── RCTAccessibilityManager.h
│ │ │ │ ├── RCTAccessibilityManager.mm
│ │ │ │ ├── RCTActionSheetManager.h
│ │ │ │ ├── RCTActionSheetManager.mm
│ │ │ │ ├── RCTAlertController.h
│ │ │ │ ├── RCTAlertController.mm
│ │ │ │ ├── RCTAlertManager.h
│ │ │ │ ├── RCTAlertManager.mm
│ │ │ │ ├── RCTAppState.h
│ │ │ │ ├── RCTAppState.mm
│ │ │ │ ├── RCTAppearance.h
│ │ │ │ ├── RCTAppearance.mm
│ │ │ │ ├── RCTClipboard.h
│ │ │ │ ├── RCTClipboard.mm
│ │ │ │ ├── RCTDevLoadingView.h
│ │ │ │ ├── RCTDevLoadingView.mm
│ │ │ │ ├── RCTDevMenu.h
│ │ │ │ ├── RCTDevMenu.mm
│ │ │ │ ├── RCTDevMenuConfigurationDecorator.h
│ │ │ │ ├── RCTDevMenuConfigurationDecorator.mm
│ │ │ │ ├── RCTDevSettings.h
│ │ │ │ ├── RCTDevSettings.mm
│ │ │ │ ├── RCTDevToolsRuntimeSettingsModule.h
│ │ │ │ ├── RCTDevToolsRuntimeSettingsModule.mm
│ │ │ │ ├── RCTDeviceInfo.h
│ │ │ │ ├── RCTDeviceInfo.mm
│ │ │ │ ├── RCTEventDispatcher.h
│ │ │ │ ├── RCTEventDispatcher.mm
│ │ │ │ ├── RCTExceptionsManager.h
│ │ │ │ ├── RCTExceptionsManager.mm
│ │ │ │ ├── RCTFPSGraph.h
│ │ │ │ ├── RCTFPSGraph.mm
│ │ │ │ ├── RCTI18nManager.h
│ │ │ │ ├── RCTI18nManager.mm
│ │ │ │ ├── RCTKeyboardObserver.h
│ │ │ │ ├── RCTKeyboardObserver.mm
│ │ │ │ ├── RCTLogBox.h
│ │ │ │ ├── RCTLogBox.mm
│ │ │ │ ├── RCTLogBoxView.h
│ │ │ │ ├── RCTLogBoxView.mm
│ │ │ │ ├── RCTPerfMonitor.mm
│ │ │ │ ├── RCTPlatform.h
│ │ │ │ ├── RCTPlatform.mm
│ │ │ │ ├── RCTRedBox.h
│ │ │ │ ├── RCTRedBox.mm
│ │ │ │ ├── RCTSourceCode.h
│ │ │ │ ├── RCTSourceCode.mm
│ │ │ │ ├── RCTStatusBarManager.h
│ │ │ │ ├── RCTStatusBarManager.mm
│ │ │ │ ├── RCTTiming.h
│ │ │ │ ├── RCTTiming.mm
│ │ │ │ ├── RCTWebSocketModule.h
│ │ │ │ ├── RCTWebSocketModule.mm
│ │ │ │ └── React-CoreModules.podspec
│ │ │ ├── CxxBridge/
│ │ │ │ ├── NSDataBigString.h
│ │ │ │ ├── NSDataBigString.mm
│ │ │ │ ├── RCTCxxBridge.mm
│ │ │ │ ├── RCTCxxBridgeDelegate.h
│ │ │ │ ├── RCTJSIExecutorRuntimeInstaller.h
│ │ │ │ ├── RCTJSIExecutorRuntimeInstaller.mm
│ │ │ │ ├── RCTMessageThread.h
│ │ │ │ ├── RCTMessageThread.mm
│ │ │ │ ├── RCTObjcExecutor.h
│ │ │ │ └── RCTObjcExecutor.mm
│ │ │ ├── CxxLogUtils/
│ │ │ │ ├── RCTDefaultCxxLogFunction.h
│ │ │ │ └── RCTDefaultCxxLogFunction.mm
│ │ │ ├── CxxModule/
│ │ │ │ ├── DispatchMessageQueueThread.h
│ │ │ │ ├── RCTCxxMethod.h
│ │ │ │ ├── RCTCxxMethod.mm
│ │ │ │ ├── RCTCxxUtils.h
│ │ │ │ ├── RCTCxxUtils.mm
│ │ │ │ ├── RCTNativeModule.h
│ │ │ │ └── RCTNativeModule.mm
│ │ │ ├── CxxUtils/
│ │ │ │ └── RCTFollyConvert.h
│ │ │ ├── DevSupport/
│ │ │ │ ├── RCTDevLoadingViewProtocol.h
│ │ │ │ ├── RCTDevLoadingViewSetEnabled.h
│ │ │ │ ├── RCTDevLoadingViewSetEnabled.m
│ │ │ │ ├── RCTFrameTimingsObserver.h
│ │ │ │ ├── RCTFrameTimingsObserver.mm
│ │ │ │ ├── RCTInspectorDevServerHelper.h
│ │ │ │ ├── RCTInspectorDevServerHelper.mm
│ │ │ │ ├── RCTInspectorNetworkHelper.h
│ │ │ │ ├── RCTInspectorNetworkHelper.mm
│ │ │ │ ├── RCTInspectorUtils.h
│ │ │ │ ├── RCTInspectorUtils.mm
│ │ │ │ ├── RCTPackagerClient.h
│ │ │ │ ├── RCTPackagerClient.m
│ │ │ │ ├── RCTPackagerConnection.h
│ │ │ │ ├── RCTPackagerConnection.mm
│ │ │ │ ├── RCTPausedInDebuggerOverlayController.h
│ │ │ │ └── RCTPausedInDebuggerOverlayController.mm
│ │ │ ├── Fabric/
│ │ │ │ ├── AppleEventBeat.cpp
│ │ │ │ ├── AppleEventBeat.h
│ │ │ │ ├── Mounting/
│ │ │ │ │ ├── ComponentViews/
│ │ │ │ │ │ ├── ActivityIndicator/
│ │ │ │ │ │ │ ├── RCTActivityIndicatorViewComponentView.h
│ │ │ │ │ │ │ └── RCTActivityIndicatorViewComponentView.mm
│ │ │ │ │ │ ├── DebuggingOverlay/
│ │ │ │ │ │ │ ├── RCTDebuggingOverlayComponentView.h
│ │ │ │ │ │ │ └── RCTDebuggingOverlayComponentView.mm
│ │ │ │ │ │ ├── Image/
│ │ │ │ │ │ │ ├── RCTImageComponentView.h
│ │ │ │ │ │ │ └── RCTImageComponentView.mm
│ │ │ │ │ │ ├── InputAccessory/
│ │ │ │ │ │ │ ├── RCTInputAccessoryComponentView.h
│ │ │ │ │ │ │ ├── RCTInputAccessoryComponentView.mm
│ │ │ │ │ │ │ ├── RCTInputAccessoryContentView.h
│ │ │ │ │ │ │ └── RCTInputAccessoryContentView.mm
│ │ │ │ │ │ ├── LegacyViewManagerInterop/
│ │ │ │ │ │ │ ├── RCTLegacyViewManagerInteropComponentView.h
│ │ │ │ │ │ │ ├── RCTLegacyViewManagerInteropComponentView.mm
│ │ │ │ │ │ │ ├── RCTLegacyViewManagerInteropCoordinatorAdapter.h
│ │ │ │ │ │ │ └── RCTLegacyViewManagerInteropCoordinatorAdapter.mm
│ │ │ │ │ │ ├── Modal/
│ │ │ │ │ │ │ ├── RCTFabricModalHostViewController.h
│ │ │ │ │ │ │ ├── RCTFabricModalHostViewController.mm
│ │ │ │ │ │ │ ├── RCTModalHostViewComponentView.h
│ │ │ │ │ │ │ └── RCTModalHostViewComponentView.mm
│ │ │ │ │ │ ├── RCTFabricComponentsPlugins.h
│ │ │ │ │ │ ├── RCTFabricComponentsPlugins.mm
│ │ │ │ │ │ ├── Root/
│ │ │ │ │ │ │ ├── RCTRootComponentView.h
│ │ │ │ │ │ │ └── RCTRootComponentView.mm
│ │ │ │ │ │ ├── SafeAreaView/
│ │ │ │ │ │ │ ├── RCTSafeAreaViewComponentView.h
│ │ │ │ │ │ │ └── RCTSafeAreaViewComponentView.mm
│ │ │ │ │ │ ├── ScrollView/
│ │ │ │ │ │ │ ├── RCTCustomPullToRefreshViewProtocol.h
│ │ │ │ │ │ │ ├── RCTEnhancedScrollView.h
│ │ │ │ │ │ │ ├── RCTEnhancedScrollView.mm
│ │ │ │ │ │ │ ├── RCTPullToRefreshViewComponentView.h
│ │ │ │ │ │ │ ├── RCTPullToRefreshViewComponentView.mm
│ │ │ │ │ │ │ ├── RCTScrollViewComponentView.h
│ │ │ │ │ │ │ ├── RCTScrollViewComponentView.mm
│ │ │ │ │ │ │ ├── RCTVirtualViewContainerProtocol.h
│ │ │ │ │ │ │ ├── RCTVirtualViewContainerState.h
│ │ │ │ │ │ │ ├── RCTVirtualViewContainerState.mm
│ │ │ │ │ │ │ └── RCTVirtualViewProtocol.h
│ │ │ │ │ │ ├── Switch/
│ │ │ │ │ │ │ ├── RCTSwitchComponentView.h
│ │ │ │ │ │ │ └── RCTSwitchComponentView.mm
│ │ │ │ │ │ ├── Text/
│ │ │ │ │ │ │ ├── RCTAccessibilityElement.h
│ │ │ │ │ │ │ ├── RCTAccessibilityElement.mm
│ │ │ │ │ │ │ ├── RCTParagraphComponentAccessibilityProvider.h
│ │ │ │ │ │ │ ├── RCTParagraphComponentAccessibilityProvider.mm
│ │ │ │ │ │ │ ├── RCTParagraphComponentView.h
│ │ │ │ │ │ │ └── RCTParagraphComponentView.mm
│ │ │ │ │ │ ├── TextInput/
│ │ │ │ │ │ │ ├── RCTTextInputComponentView.h
│ │ │ │ │ │ │ ├── RCTTextInputComponentView.mm
│ │ │ │ │ │ │ ├── RCTTextInputNativeCommands.h
│ │ │ │ │ │ │ ├── RCTTextInputUtils.h
│ │ │ │ │ │ │ └── RCTTextInputUtils.mm
│ │ │ │ │ │ ├── UnimplementedComponent/
│ │ │ │ │ │ │ ├── RCTUnimplementedNativeComponentView.h
│ │ │ │ │ │ │ └── RCTUnimplementedNativeComponentView.mm
│ │ │ │ │ │ ├── UnimplementedView/
│ │ │ │ │ │ │ ├── RCTUnimplementedViewComponentView.h
│ │ │ │ │ │ │ └── RCTUnimplementedViewComponentView.mm
│ │ │ │ │ │ ├── View/
│ │ │ │ │ │ │ ├── RCTViewComponentView.h
│ │ │ │ │ │ │ └── RCTViewComponentView.mm
│ │ │ │ │ │ └── VirtualView/
│ │ │ │ │ │ ├── RCTVirtualViewComponentView.h
│ │ │ │ │ │ ├── RCTVirtualViewComponentView.mm
│ │ │ │ │ │ ├── RCTVirtualViewMode.h
│ │ │ │ │ │ └── RCTVirtualViewRenderState.h
│ │ │ │ │ ├── RCTComponentViewClassDescriptor.h
│ │ │ │ │ ├── RCTComponentViewDescriptor.h
│ │ │ │ │ ├── RCTComponentViewFactory.h
│ │ │ │ │ ├── RCTComponentViewFactory.mm
│ │ │ │ │ ├── RCTComponentViewProtocol.h
│ │ │ │ │ ├── RCTComponentViewRegistry.h
│ │ │ │ │ ├── RCTComponentViewRegistry.mm
│ │ │ │ │ ├── RCTMountingManager.h
│ │ │ │ │ ├── RCTMountingManager.mm
│ │ │ │ │ ├── RCTMountingManagerDelegate.h
│ │ │ │ │ ├── RCTMountingTransactionObserverCoordinator.h
│ │ │ │ │ ├── RCTMountingTransactionObserverCoordinator.mm
│ │ │ │ │ ├── RCTMountingTransactionObserving.h
│ │ │ │ │ ├── UIView+ComponentViewProtocol.h
│ │ │ │ │ └── UIView+ComponentViewProtocol.mm
│ │ │ │ ├── RCTConversions.h
│ │ │ │ ├── RCTImageResponseDelegate.h
│ │ │ │ ├── RCTImageResponseObserverProxy.h
│ │ │ │ ├── RCTImageResponseObserverProxy.mm
│ │ │ │ ├── RCTLocalizationProvider.h
│ │ │ │ ├── RCTLocalizationProvider.mm
│ │ │ │ ├── RCTPrimitives.h
│ │ │ │ ├── RCTScheduler.h
│ │ │ │ ├── RCTScheduler.mm
│ │ │ │ ├── RCTSurfacePointerHandler.h
│ │ │ │ ├── RCTSurfacePointerHandler.mm
│ │ │ │ ├── RCTSurfacePresenter.h
│ │ │ │ ├── RCTSurfacePresenter.mm
│ │ │ │ ├── RCTSurfacePresenterBridgeAdapter.h
│ │ │ │ ├── RCTSurfacePresenterBridgeAdapter.mm
│ │ │ │ ├── RCTSurfaceRegistry.h
│ │ │ │ ├── RCTSurfaceRegistry.mm
│ │ │ │ ├── RCTSurfaceTouchHandler.h
│ │ │ │ ├── RCTSurfaceTouchHandler.mm
│ │ │ │ ├── RCTTouchableComponentViewProtocol.h
│ │ │ │ ├── Surface/
│ │ │ │ │ ├── RCTFabricSurface.h
│ │ │ │ │ └── RCTFabricSurface.mm
│ │ │ │ └── Utils/
│ │ │ │ ├── PlatformRunLoopObserver.h
│ │ │ │ ├── PlatformRunLoopObserver.mm
│ │ │ │ ├── RCTBackgroundImageUtils.h
│ │ │ │ ├── RCTBackgroundImageUtils.mm
│ │ │ │ ├── RCTBoxShadow.h
│ │ │ │ ├── RCTBoxShadow.mm
│ │ │ │ ├── RCTColorSpaceUtils.h
│ │ │ │ ├── RCTColorSpaceUtils.mm
│ │ │ │ ├── RCTGenericDelegateSplitter.h
│ │ │ │ ├── RCTGenericDelegateSplitter.mm
│ │ │ │ ├── RCTGradientUtils.h
│ │ │ │ ├── RCTGradientUtils.mm
│ │ │ │ ├── RCTIdentifierPool.h
│ │ │ │ ├── RCTLinearGradient.h
│ │ │ │ ├── RCTLinearGradient.mm
│ │ │ │ ├── RCTRadialGradient.h
│ │ │ │ ├── RCTRadialGradient.mm
│ │ │ │ ├── RCTReactTaggedView.h
│ │ │ │ └── RCTReactTaggedView.mm
│ │ │ ├── I18n/
│ │ │ │ ├── .clang-format-ignore
│ │ │ │ ├── FBXXHashUtils.h
│ │ │ │ ├── RCTLocalizedString.h
│ │ │ │ ├── RCTLocalizedString.mm
│ │ │ │ └── strings/
│ │ │ │ ├── ar.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── cs.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── da.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── de.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── el.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── en-GB.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── en.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── es-ES.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── es.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── fi.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── fr.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── he.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── hi.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── hr.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── hu.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── id.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── it.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── ja.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── ko.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── ms.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── nb.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── nl.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── pl.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── pt-PT.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── pt.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── ro.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── ru.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── sk.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── sv.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── th.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── tr.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── uk.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── vi.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── zh-Hans.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── zh-Hant-HK.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ ├── zh-Hant.lproj/
│ │ │ │ │ └── Localizable.strings
│ │ │ │ └── zu.lproj/
│ │ │ │ └── Localizable.strings
│ │ │ ├── Inspector/
│ │ │ │ ├── RCTCxxInspectorPackagerConnection.h
│ │ │ │ ├── RCTCxxInspectorPackagerConnection.mm
│ │ │ │ ├── RCTCxxInspectorPackagerConnectionDelegate.h
│ │ │ │ ├── RCTCxxInspectorPackagerConnectionDelegate.mm
│ │ │ │ ├── RCTCxxInspectorWebSocketAdapter.h
│ │ │ │ ├── RCTCxxInspectorWebSocketAdapter.mm
│ │ │ │ ├── RCTInspector.h
│ │ │ │ ├── RCTInspector.mm
│ │ │ │ └── RCTInspectorPackagerConnection.h
│ │ │ ├── Modules/
│ │ │ │ ├── RCTEventEmitter.h
│ │ │ │ ├── RCTEventEmitter.m
│ │ │ │ ├── RCTI18nUtil.h
│ │ │ │ ├── RCTI18nUtil.m
│ │ │ │ ├── RCTLayoutAnimation.h
│ │ │ │ ├── RCTLayoutAnimation.m
│ │ │ │ ├── RCTLayoutAnimationGroup.h
│ │ │ │ ├── RCTLayoutAnimationGroup.m
│ │ │ │ ├── RCTRedBoxExtraDataViewController.h
│ │ │ │ ├── RCTRedBoxExtraDataViewController.m
│ │ │ │ ├── RCTSurfacePresenterStub.h
│ │ │ │ ├── RCTSurfacePresenterStub.m
│ │ │ │ ├── RCTUIManager.h
│ │ │ │ ├── RCTUIManager.mm
│ │ │ │ ├── RCTUIManagerObserverCoordinator.h
│ │ │ │ ├── RCTUIManagerObserverCoordinator.mm
│ │ │ │ ├── RCTUIManagerUtils.h
│ │ │ │ └── RCTUIManagerUtils.m
│ │ │ ├── Profiler/
│ │ │ │ ├── RCTMacros.h
│ │ │ │ ├── RCTProfile.h
│ │ │ │ ├── RCTProfile.m
│ │ │ │ ├── RCTProfileTrampoline-arm.S
│ │ │ │ ├── RCTProfileTrampoline-arm64.S
│ │ │ │ ├── RCTProfileTrampoline-i386.S
│ │ │ │ └── RCTProfileTrampoline-x86_64.S
│ │ │ ├── React-RCTFBReactNativeSpec.podspec
│ │ │ ├── React-RCTFabric.podspec
│ │ │ ├── Resources/
│ │ │ │ └── PrivacyInfo.xcprivacy
│ │ │ ├── Runtime/
│ │ │ │ ├── RCTHermesInstanceFactory.h
│ │ │ │ ├── RCTHermesInstanceFactory.mm
│ │ │ │ └── React-RCTRuntime.podspec
│ │ │ ├── Tests/
│ │ │ │ ├── Mounting/
│ │ │ │ │ ├── RCTComponentViewRegistryTests.mm
│ │ │ │ │ └── RCTViewComponentViewTests.mm
│ │ │ │ └── Text/
│ │ │ │ ├── RCTAttributedTextUtilsTest.mm
│ │ │ │ ├── RCTParagraphComponentViewTests.mm
│ │ │ │ └── RCTTextAttributesTest.mm
│ │ │ ├── Views/
│ │ │ │ ├── RCTActivityIndicatorView.h
│ │ │ │ ├── RCTActivityIndicatorView.m
│ │ │ │ ├── RCTActivityIndicatorViewManager.h
│ │ │ │ ├── RCTActivityIndicatorViewManager.m
│ │ │ │ ├── RCTAnimationType.h
│ │ │ │ ├── RCTAutoInsetsProtocol.h
│ │ │ │ ├── RCTBorderCurve.h
│ │ │ │ ├── RCTBorderDrawing.h
│ │ │ │ ├── RCTBorderDrawing.m
│ │ │ │ ├── RCTBorderStyle.h
│ │ │ │ ├── RCTComponent.h
│ │ │ │ ├── RCTComponentData.h
│ │ │ │ ├── RCTComponentData.mm
│ │ │ │ ├── RCTConvert+CoreLocation.h
│ │ │ │ ├── RCTConvert+CoreLocation.m
│ │ │ │ ├── RCTConvert+Transform.h
│ │ │ │ ├── RCTConvert+Transform.m
│ │ │ │ ├── RCTCursor.h
│ │ │ │ ├── RCTDebuggingOverlay.h
│ │ │ │ ├── RCTDebuggingOverlay.m
│ │ │ │ ├── RCTDebuggingOverlayManager.h
│ │ │ │ ├── RCTDebuggingOverlayManager.m
│ │ │ │ ├── RCTFont+Private.h
│ │ │ │ ├── RCTFont.h
│ │ │ │ ├── RCTFont.mm
│ │ │ │ ├── RCTLayout.h
│ │ │ │ ├── RCTLayout.m
│ │ │ │ ├── RCTModalHostView.h
│ │ │ │ ├── RCTModalHostView.m
│ │ │ │ ├── RCTModalHostViewController.h
│ │ │ │ ├── RCTModalHostViewController.m
│ │ │ │ ├── RCTModalHostViewManager.h
│ │ │ │ ├── RCTModalHostViewManager.m
│ │ │ │ ├── RCTModalManager.h
│ │ │ │ ├── RCTModalManager.m
│ │ │ │ ├── RCTPointerEvents.h
│ │ │ │ ├── RCTRootShadowView.h
│ │ │ │ ├── RCTRootShadowView.m
│ │ │ │ ├── RCTShadowView+Internal.h
│ │ │ │ ├── RCTShadowView+Internal.m
│ │ │ │ ├── RCTShadowView+Layout.h
│ │ │ │ ├── RCTShadowView+Layout.m
│ │ │ │ ├── RCTShadowView.h
│ │ │ │ ├── RCTShadowView.m
│ │ │ │ ├── RCTSwitch.h
│ │ │ │ ├── RCTSwitch.m
│ │ │ │ ├── RCTSwitchManager.h
│ │ │ │ ├── RCTSwitchManager.m
│ │ │ │ ├── RCTTextDecorationLineType.h
│ │ │ │ ├── RCTView.h
│ │ │ │ ├── RCTView.m
│ │ │ │ ├── RCTViewManager.h
│ │ │ │ ├── RCTViewManager.m
│ │ │ │ ├── RCTViewUtils.h
│ │ │ │ ├── RCTViewUtils.m
│ │ │ │ ├── RCTWrapperViewController.h
│ │ │ │ ├── RCTWrapperViewController.m
│ │ │ │ ├── RefreshControl/
│ │ │ │ │ ├── RCTRefreshControl.h
│ │ │ │ │ ├── RCTRefreshControl.m
│ │ │ │ │ ├── RCTRefreshControlManager.h
│ │ │ │ │ ├── RCTRefreshControlManager.m
│ │ │ │ │ └── RCTRefreshableProtocol.h
│ │ │ │ ├── SafeAreaView/
│ │ │ │ │ ├── RCTSafeAreaShadowView.h
│ │ │ │ │ ├── RCTSafeAreaShadowView.m
│ │ │ │ │ ├── RCTSafeAreaView.h
│ │ │ │ │ ├── RCTSafeAreaView.m
│ │ │ │ │ ├── RCTSafeAreaViewLocalData.h
│ │ │ │ │ ├── RCTSafeAreaViewLocalData.m
│ │ │ │ │ ├── RCTSafeAreaViewManager.h
│ │ │ │ │ └── RCTSafeAreaViewManager.m
│ │ │ │ ├── ScrollView/
│ │ │ │ │ ├── RCTScrollContentShadowView.h
│ │ │ │ │ ├── RCTScrollContentShadowView.m
│ │ │ │ │ ├── RCTScrollContentView.h
│ │ │ │ │ ├── RCTScrollContentView.m
│ │ │ │ │ ├── RCTScrollContentViewManager.h
│ │ │ │ │ ├── RCTScrollContentViewManager.m
│ │ │ │ │ ├── RCTScrollEvent.h
│ │ │ │ │ ├── RCTScrollEvent.m
│ │ │ │ │ ├── RCTScrollView.h
│ │ │ │ │ ├── RCTScrollView.m
│ │ │ │ │ ├── RCTScrollViewManager.h
│ │ │ │ │ ├── RCTScrollViewManager.m
│ │ │ │ │ └── RCTScrollableProtocol.h
│ │ │ │ ├── UIView+Private.h
│ │ │ │ ├── UIView+React.h
│ │ │ │ └── UIView+React.m
│ │ │ └── third-party.xcconfig
│ │ ├── React-Core-prebuilt.podspec
│ │ ├── React-Core.podspec
│ │ ├── React.podspec
│ │ ├── ReactAndroid/
│ │ │ ├── README.md
│ │ │ ├── api/
│ │ │ │ └── ReactAndroid.api
│ │ │ ├── build.gradle.kts
│ │ │ ├── cmake-utils/
│ │ │ │ ├── ReactNative-application.cmake
│ │ │ │ ├── default-app-setup/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ └── OnLoad.cpp
│ │ │ │ └── folly-flags.cmake
│ │ │ ├── external-artifacts/
│ │ │ │ └── build.gradle.kts
│ │ │ ├── gradle.properties
│ │ │ ├── hermes-engine/
│ │ │ │ ├── build.gradle.kts
│ │ │ │ └── gradle.properties
│ │ │ ├── proguard-rules.pro
│ │ │ ├── publish.gradle
│ │ │ └── src/
│ │ │ ├── debug/
│ │ │ │ └── AndroidManifest.xml
│ │ │ ├── main/
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── facebook/
│ │ │ │ │ ├── debug/
│ │ │ │ │ │ ├── debugoverlay/
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ └── DebugOverlayTag.kt
│ │ │ │ │ │ ├── holder/
│ │ │ │ │ │ │ ├── NoopPrinter.kt
│ │ │ │ │ │ │ ├── Printer.kt
│ │ │ │ │ │ │ └── PrinterHolder.kt
│ │ │ │ │ │ └── tags/
│ │ │ │ │ │ └── ReactDebugOverlayTags.kt
│ │ │ │ │ ├── hermes/
│ │ │ │ │ │ ├── instrumentation/
│ │ │ │ │ │ │ ├── HermesMemoryDumper.kt
│ │ │ │ │ │ │ └── HermesSamplingProfiler.kt
│ │ │ │ │ │ └── reactexecutor/
│ │ │ │ │ │ ├── HermesExecutor.kt
│ │ │ │ │ │ ├── HermesExecutorFactory.kt
│ │ │ │ │ │ └── fbjni.pro
│ │ │ │ │ ├── react/
│ │ │ │ │ │ ├── BaseReactPackage.kt
│ │ │ │ │ │ ├── DebugCorePackage.kt
│ │ │ │ │ │ ├── HeadlessJsTaskService.kt
│ │ │ │ │ │ ├── MemoryPressureRouter.kt
│ │ │ │ │ │ ├── NativeModuleRegistryBuilder.kt
│ │ │ │ │ │ ├── ReactActivity.java
│ │ │ │ │ │ ├── ReactActivityDelegate.java
│ │ │ │ │ │ ├── ReactAndroidHWInputDeviceHelper.kt
│ │ │ │ │ │ ├── ReactApplication.kt
│ │ │ │ │ │ ├── ReactDelegate.kt
│ │ │ │ │ │ ├── ReactFragment.kt
│ │ │ │ │ │ ├── ReactHost.kt
│ │ │ │ │ │ ├── ReactInstanceEventListener.kt
│ │ │ │ │ │ ├── ReactInstanceManager.java
│ │ │ │ │ │ ├── ReactInstanceManagerBuilder.kt
│ │ │ │ │ │ ├── ReactNativeHost.java
│ │ │ │ │ │ ├── ReactPackage.kt
│ │ │ │ │ │ ├── ReactPackageHelper.kt
│ │ │ │ │ │ ├── ReactPackageTurboModuleManagerDelegate.kt
│ │ │ │ │ │ ├── ReactRootView.java
│ │ │ │ │ │ ├── TurboReactPackage.kt
│ │ │ │ │ │ ├── ViewManagerOnDemandReactPackage.kt
│ │ │ │ │ │ ├── animated/
│ │ │ │ │ │ │ ├── AdditionAnimatedNode.kt
│ │ │ │ │ │ │ ├── AnimatedNode.kt
│ │ │ │ │ │ │ ├── AnimatedNodeValueListener.kt
│ │ │ │ │ │ │ ├── AnimatedNodeWithUpdateableConfig.kt
│ │ │ │ │ │ │ ├── AnimationDriver.kt
│ │ │ │ │ │ │ ├── ColorAnimatedNode.kt
│ │ │ │ │ │ │ ├── DecayAnimation.kt
│ │ │ │ │ │ │ ├── DiffClampAnimatedNode.kt
│ │ │ │ │ │ │ ├── DivisionAnimatedNode.kt
│ │ │ │ │ │ │ ├── EventAnimationDriver.kt
│ │ │ │ │ │ │ ├── FrameBasedAnimationDriver.kt
│ │ │ │ │ │ │ ├── InterpolationAnimatedNode.kt
│ │ │ │ │ │ │ ├── ModulusAnimatedNode.kt
│ │ │ │ │ │ │ ├── MultiplicationAnimatedNode.kt
│ │ │ │ │ │ │ ├── NativeAnimatedModule.kt
│ │ │ │ │ │ │ ├── NativeAnimatedNodesManager.kt
│ │ │ │ │ │ │ ├── ObjectAnimatedNode.kt
│ │ │ │ │ │ │ ├── PropsAnimatedNode.kt
│ │ │ │ │ │ │ ├── SpringAnimation.kt
│ │ │ │ │ │ │ ├── StyleAnimatedNode.kt
│ │ │ │ │ │ │ ├── SubtractionAnimatedNode.kt
│ │ │ │ │ │ │ ├── TrackingAnimatedNode.kt
│ │ │ │ │ │ │ ├── TransformAnimatedNode.kt
│ │ │ │ │ │ │ └── ValueAnimatedNode.kt
│ │ │ │ │ │ ├── bridge/
│ │ │ │ │ │ │ ├── ActivityEventListener.kt
│ │ │ │ │ │ │ ├── Arguments.kt
│ │ │ │ │ │ │ ├── AssertionException.kt
│ │ │ │ │ │ │ ├── BaseActivityEventListener.kt
│ │ │ │ │ │ │ ├── BaseJavaModule.java
│ │ │ │ │ │ │ ├── BridgeReactContext.java
│ │ │ │ │ │ │ ├── Callback.kt
│ │ │ │ │ │ │ ├── CatalystInstance.kt
│ │ │ │ │ │ │ ├── ColorPropConverter.kt
│ │ │ │ │ │ │ ├── CxxCallbackImpl.kt
│ │ │ │ │ │ │ ├── DefaultJSExceptionHandler.kt
│ │ │ │ │ │ │ ├── DimensionPropConverter.kt
│ │ │ │ │ │ │ ├── Dynamic.kt
│ │ │ │ │ │ │ ├── DynamicFromArray.kt
│ │ │ │ │ │ │ ├── DynamicFromMap.kt
│ │ │ │ │ │ │ ├── DynamicFromObject.kt
│ │ │ │ │ │ │ ├── DynamicNative.kt
│ │ │ │ │ │ │ ├── GuardedAsyncTask.kt
│ │ │ │ │ │ │ ├── GuardedRunnable.kt
│ │ │ │ │ │ │ ├── JSApplicationCausedNativeException.kt
│ │ │ │ │ │ │ ├── JSApplicationIllegalArgumentException.kt
│ │ │ │ │ │ │ ├── JSBundleLoader.kt
│ │ │ │ │ │ │ ├── JSBundleLoaderDelegate.kt
│ │ │ │ │ │ │ ├── JSExceptionHandler.kt
│ │ │ │ │ │ │ ├── JSInstance.kt
│ │ │ │ │ │ │ ├── JavaMethodWrapper.kt
│ │ │ │ │ │ │ ├── JavaModuleWrapper.kt
│ │ │ │ │ │ │ ├── JavaOnlyArray.kt
│ │ │ │ │ │ │ ├── JavaOnlyMap.kt
│ │ │ │ │ │ │ ├── JavaScriptContextHolder.kt
│ │ │ │ │ │ │ ├── JavaScriptExecutor.kt
│ │ │ │ │ │ │ ├── JavaScriptExecutorFactory.kt
│ │ │ │ │ │ │ ├── JavaScriptModule.kt
│ │ │ │ │ │ │ ├── JavaScriptModuleRegistry.kt
│ │ │ │ │ │ │ ├── JsonWriterHelper.kt
│ │ │ │ │ │ │ ├── LifecycleEventListener.kt
│ │ │ │ │ │ │ ├── MemoryPressureListener.kt
│ │ │ │ │ │ │ ├── ModuleHolder.kt
│ │ │ │ │ │ │ ├── ModuleSpec.kt
│ │ │ │ │ │ │ ├── NativeArray.kt
│ │ │ │ │ │ │ ├── NativeArrayInterface.kt
│ │ │ │ │ │ │ ├── NativeMap.kt
│ │ │ │ │ │ │ ├── NativeModule.java
│ │ │ │ │ │ │ ├── NativeModuleRegistry.kt
│ │ │ │ │ │ │ ├── NoSuchKeyException.kt
│ │ │ │ │ │ │ ├── ObjectAlreadyConsumedException.kt
│ │ │ │ │ │ │ ├── PerformanceCounter.kt
│ │ │ │ │ │ │ ├── Promise.kt
│ │ │ │ │ │ │ ├── PromiseImpl.kt
│ │ │ │ │ │ │ ├── ReactApplicationContext.kt
│ │ │ │ │ │ │ ├── ReactContext.java
│ │ │ │ │ │ │ ├── ReactContextBaseJavaModule.kt
│ │ │ │ │ │ │ ├── ReactIgnorableMountingException.kt
│ │ │ │ │ │ │ ├── ReactMarker.kt
│ │ │ │ │ │ │ ├── ReactMarkerConstants.kt
│ │ │ │ │ │ │ ├── ReactMethod.kt
│ │ │ │ │ │ │ ├── ReactModuleWithSpec.kt
│ │ │ │ │ │ │ ├── ReactNativeJNISoLoader.kt
│ │ │ │ │ │ │ ├── ReactNativeJniCommonSoLoader.kt
│ │ │ │ │ │ │ ├── ReactNoCrashSoftException.kt
│ │ │ │ │ │ │ ├── ReactSoftExceptionLogger.kt
│ │ │ │ │ │ │ ├── ReadableArray.kt
│ │ │ │ │ │ │ ├── ReadableArrayBuilder.kt
│ │ │ │ │ │ │ ├── ReadableMap.kt
│ │ │ │ │ │ │ ├── ReadableMapBuilder.kt
│ │ │ │ │ │ │ ├── ReadableMapKeySetIterator.kt
│ │ │ │ │ │ │ ├── ReadableNativeArray.kt
│ │ │ │ │ │ │ ├── ReadableNativeMap.kt
│ │ │ │ │ │ │ ├── ReadableType.kt
│ │ │ │ │ │ │ ├── RetryableMountingLayerException.kt
│ │ │ │ │ │ │ ├── RuntimeExecutor.kt
│ │ │ │ │ │ │ ├── RuntimeScheduler.kt
│ │ │ │ │ │ │ ├── ScrollEndedListener.kt
│ │ │ │ │ │ │ ├── SoftAssertions.kt
│ │ │ │ │ │ │ ├── Systrace.kt
│ │ │ │ │ │ │ ├── UIManager.kt
│ │ │ │ │ │ │ ├── UIManagerListener.kt
│ │ │ │ │ │ │ ├── UIManagerProvider.kt
│ │ │ │ │ │ │ ├── UiThreadUtil.kt
│ │ │ │ │ │ │ ├── UnexpectedNativeTypeException.kt
│ │ │ │ │ │ │ ├── WindowFocusChangeListener.kt
│ │ │ │ │ │ │ ├── WritableArray.kt
│ │ │ │ │ │ │ ├── WritableMap.kt
│ │ │ │ │ │ │ ├── WritableNativeArray.kt
│ │ │ │ │ │ │ ├── WritableNativeMap.kt
│ │ │ │ │ │ │ ├── interop/
│ │ │ │ │ │ │ │ └── InteropModuleRegistry.kt
│ │ │ │ │ │ │ ├── queue/
│ │ │ │ │ │ │ │ ├── MessageQueueThread.kt
│ │ │ │ │ │ │ │ ├── MessageQueueThreadHandler.kt
│ │ │ │ │ │ │ │ ├── MessageQueueThreadImpl.kt
│ │ │ │ │ │ │ │ ├── MessageQueueThreadPerfStats.kt
│ │ │ │ │ │ │ │ ├── MessageQueueThreadSpec.kt
│ │ │ │ │ │ │ │ ├── QueueThreadExceptionHandler.kt
│ │ │ │ │ │ │ │ ├── ReactQueueConfiguration.kt
│ │ │ │ │ │ │ │ ├── ReactQueueConfigurationImpl.kt
│ │ │ │ │ │ │ │ └── ReactQueueConfigurationSpec.kt
│ │ │ │ │ │ │ └── reactnative.pro
│ │ │ │ │ │ ├── common/
│ │ │ │ │ │ │ ├── ClassFinder.kt
│ │ │ │ │ │ │ ├── ClearableSynchronizedPool.kt
│ │ │ │ │ │ │ ├── DebugServerException.kt
│ │ │ │ │ │ │ ├── JavascriptException.kt
│ │ │ │ │ │ │ ├── LifecycleState.kt
│ │ │ │ │ │ │ ├── MapBuilder.kt
│ │ │ │ │ │ │ ├── ReactConstants.kt
│ │ │ │ │ │ │ ├── ReleaseLevel.kt
│ │ │ │ │ │ │ ├── ShakeDetector.kt
│ │ │ │ │ │ │ ├── SurfaceDelegate.kt
│ │ │ │ │ │ │ ├── SurfaceDelegateFactory.kt
│ │ │ │ │ │ │ ├── SystemClock.kt
│ │ │ │ │ │ │ ├── annotations/
│ │ │ │ │ │ │ │ ├── FrameworkAPI.kt
│ │ │ │ │ │ │ │ ├── LegacyArchitectureShadowNodeWithCxxImpl.kt
│ │ │ │ │ │ │ │ ├── StableReactNativeAPI.kt
│ │ │ │ │ │ │ │ ├── UnstableReactNativeAPI.kt
│ │ │ │ │ │ │ │ ├── VisibleForTesting.kt
│ │ │ │ │ │ │ │ └── internal/
│ │ │ │ │ │ │ │ ├── InteropLegacyArchitecture.kt
│ │ │ │ │ │ │ │ ├── LegacyArchitecture.kt
│ │ │ │ │ │ │ │ ├── LegacyArchitectureLogLevel.kt
│ │ │ │ │ │ │ │ └── LegacyArchitectureLogger.kt
│ │ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ │ └── ReactFontManager.kt
│ │ │ │ │ │ │ ├── build/
│ │ │ │ │ │ │ │ └── ReactBuildConfig.kt
│ │ │ │ │ │ │ ├── futures/
│ │ │ │ │ │ │ │ └── SimpleSettableFuture.kt
│ │ │ │ │ │ │ ├── mapbuffer/
│ │ │ │ │ │ │ │ ├── MapBuffer.kt
│ │ │ │ │ │ │ │ ├── ReadableMapBuffer.kt
│ │ │ │ │ │ │ │ └── WritableMapBuffer.kt
│ │ │ │ │ │ │ └── network/
│ │ │ │ │ │ │ └── OkHttpCallUtil.kt
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ └── ReactFeatureFlags.kt
│ │ │ │ │ │ ├── defaults/
│ │ │ │ │ │ │ ├── DefaultComponentsRegistry.kt
│ │ │ │ │ │ │ ├── DefaultNewArchitectureEntryPoint.kt
│ │ │ │ │ │ │ ├── DefaultReactActivityDelegate.kt
│ │ │ │ │ │ │ ├── DefaultReactHost.kt
│ │ │ │ │ │ │ ├── DefaultReactHostDelegate.kt
│ │ │ │ │ │ │ ├── DefaultReactNativeHost.kt
│ │ │ │ │ │ │ ├── DefaultSoLoader.kt
│ │ │ │ │ │ │ └── DefaultTurboModuleManagerDelegate.kt
│ │ │ │ │ │ ├── devsupport/
│ │ │ │ │ │ │ ├── BridgelessDevSupportManager.kt
│ │ │ │ │ │ │ ├── BundleDownloader.kt
│ │ │ │ │ │ │ ├── ChangeBundleLocationDialog.kt
│ │ │ │ │ │ │ ├── CxxInspectorPackagerConnection.kt
│ │ │ │ │ │ │ ├── DebugOverlayController.kt
│ │ │ │ │ │ │ ├── DefaultDevLoadingViewImplementation.kt
│ │ │ │ │ │ │ ├── DefaultDevSupportManagerFactory.kt
│ │ │ │ │ │ │ ├── DevInternalSettings.kt
│ │ │ │ │ │ │ ├── DevMenuConfiguration.kt
│ │ │ │ │ │ │ ├── DevServerHelper.kt
│ │ │ │ │ │ │ ├── DevSettingsActivity.kt
│ │ │ │ │ │ │ ├── DevSupportManagerBase.kt
│ │ │ │ │ │ │ ├── DevSupportManagerFactory.kt
│ │ │ │ │ │ │ ├── DoubleTapReloadRecognizer.kt
│ │ │ │ │ │ │ ├── FpsView.kt
│ │ │ │ │ │ │ ├── HMRClient.kt
│ │ │ │ │ │ │ ├── IInspectorPackagerConnection.kt
│ │ │ │ │ │ │ ├── InspectorFlags.kt
│ │ │ │ │ │ │ ├── LogBoxDialog.kt
│ │ │ │ │ │ │ ├── LogBoxDialogSurfaceDelegate.kt
│ │ │ │ │ │ │ ├── LogBoxModule.kt
│ │ │ │ │ │ │ ├── MultipartStreamReader.kt
│ │ │ │ │ │ │ ├── PackagerStatusCheck.kt
│ │ │ │ │ │ │ ├── PausedInDebuggerOverlayDialogManager.kt
│ │ │ │ │ │ │ ├── PerftestDevSupportManager.kt
│ │ │ │ │ │ │ ├── ReactInstanceDevHelper.kt
│ │ │ │ │ │ │ ├── RedBoxContentView.kt
│ │ │ │ │ │ │ ├── RedBoxDialogSurfaceDelegate.kt
│ │ │ │ │ │ │ ├── ReleaseDevSupportManager.kt
│ │ │ │ │ │ │ ├── StackTraceHelper.kt
│ │ │ │ │ │ │ ├── WindowOverlayCompat.kt
│ │ │ │ │ │ │ ├── inspector/
│ │ │ │ │ │ │ │ ├── DevSupportHttpClient.kt
│ │ │ │ │ │ │ │ ├── FrameTimingSequence.kt
│ │ │ │ │ │ │ │ ├── FrameTimingsObserver.kt
│ │ │ │ │ │ │ │ ├── InspectorNetworkHelper.kt
│ │ │ │ │ │ │ │ ├── InspectorNetworkRequestListener.kt
│ │ │ │ │ │ │ │ ├── TracingState.kt
│ │ │ │ │ │ │ │ ├── TracingStateListener.kt
│ │ │ │ │ │ │ │ └── TracingStateProvider.kt
│ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ ├── BundleLoadCallback.kt
│ │ │ │ │ │ │ │ ├── DebuggerFrontendPanelName.kt
│ │ │ │ │ │ │ │ ├── DevBundleDownloadListener.kt
│ │ │ │ │ │ │ │ ├── DevLoadingViewManager.kt
│ │ │ │ │ │ │ │ ├── DevOptionHandler.kt
│ │ │ │ │ │ │ │ ├── DevSupportManager.kt
│ │ │ │ │ │ │ │ ├── ErrorCustomizer.kt
│ │ │ │ │ │ │ │ ├── ErrorType.kt
│ │ │ │ │ │ │ │ ├── PackagerStatusCallback.kt
│ │ │ │ │ │ │ │ ├── PausedInDebuggerOverlayManager.kt
│ │ │ │ │ │ │ │ ├── RedBoxHandler.kt
│ │ │ │ │ │ │ │ └── StackFrame.kt
│ │ │ │ │ │ │ └── perfmonitor/
│ │ │ │ │ │ │ ├── PerfMonitorDevHelper.kt
│ │ │ │ │ │ │ ├── PerfMonitorEventDispatcher.kt
│ │ │ │ │ │ │ ├── PerfMonitorInspectorTarget.kt
│ │ │ │ │ │ │ ├── PerfMonitorInspectorTargetBinding.kt
│ │ │ │ │ │ │ ├── PerfMonitorOverlayManager.kt
│ │ │ │ │ │ │ ├── PerfMonitorOverlayView.kt
│ │ │ │ │ │ │ └── PerfMonitorUpdateListener.kt
│ │ │ │ │ │ ├── fabric/
│ │ │ │ │ │ │ ├── AnimationBackendChoreographer.kt
│ │ │ │ │ │ │ ├── ComponentFactory.kt
│ │ │ │ │ │ │ ├── DevToolsReactPerfLogger.kt
│ │ │ │ │ │ │ ├── FabricSoLoader.kt
│ │ │ │ │ │ │ ├── FabricUIManager.java
│ │ │ │ │ │ │ ├── FabricUIManagerBinding.kt
│ │ │ │ │ │ │ ├── FabricUIManagerProviderImpl.kt
│ │ │ │ │ │ │ ├── LongStreamingStats.kt
│ │ │ │ │ │ │ ├── StateWrapperImpl.kt
│ │ │ │ │ │ │ ├── SurfaceHandlerBinding.kt
│ │ │ │ │ │ │ ├── SynchronousEvent.kt
│ │ │ │ │ │ │ ├── events/
│ │ │ │ │ │ │ │ ├── EventBeatManager.kt
│ │ │ │ │ │ │ │ ├── EventEmitterWrapper.kt
│ │ │ │ │ │ │ │ ├── FabricEventEmitter.kt
│ │ │ │ │ │ │ │ └── __docs__/
│ │ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ │ └── interop/
│ │ │ │ │ │ │ │ └── InteropUIBlockListener.kt
│ │ │ │ │ │ │ ├── interop/
│ │ │ │ │ │ │ │ ├── UIBlock.kt
│ │ │ │ │ │ │ │ └── UIBlockViewResolver.kt
│ │ │ │ │ │ │ └── mounting/
│ │ │ │ │ │ │ ├── LayoutMetricsConversions.kt
│ │ │ │ │ │ │ ├── MountItemDispatcher.kt
│ │ │ │ │ │ │ ├── MountingManager.kt
│ │ │ │ │ │ │ ├── SurfaceMountingManager.kt
│ │ │ │ │ │ │ └── mountitems/
│ │ │ │ │ │ │ ├── BatchMountItem.kt
│ │ │ │ │ │ │ ├── DestroyUnmountedViewMountItem.kt
│ │ │ │ │ │ │ ├── DispatchCommandMountItem.kt
│ │ │ │ │ │ │ ├── DispatchIntCommandMountItem.kt
│ │ │ │ │ │ │ ├── DispatchStringCommandMountItem.kt
│ │ │ │ │ │ │ ├── FabricNameComponentMapping.kt
│ │ │ │ │ │ │ ├── IntBufferBatchMountItem.kt
│ │ │ │ │ │ │ ├── MountItem.kt
│ │ │ │ │ │ │ ├── MountItemFactory.kt
│ │ │ │ │ │ │ ├── PreAllocateViewMountItem.kt
│ │ │ │ │ │ │ ├── PrefetchResourcesMountItem.kt
│ │ │ │ │ │ │ ├── SendAccessibilityEventMountItem.kt
│ │ │ │ │ │ │ └── SynchronousMountItem.kt
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── TaskInterface.kt
│ │ │ │ │ │ │ ├── exceptionmanager/
│ │ │ │ │ │ │ │ └── ReactJsExceptionHandler.kt
│ │ │ │ │ │ │ └── fabric/
│ │ │ │ │ │ │ └── ReactSurface.kt
│ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ ├── AndroidChoreographerProvider.kt
│ │ │ │ │ │ │ ├── ChoreographerProvider.kt
│ │ │ │ │ │ │ ├── SystraceSection.kt
│ │ │ │ │ │ │ ├── featureflags/
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlags.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsAccessor.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsCxxAccessor.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsCxxInterop.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsDefaults.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsForTests.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsLocalAccessor.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt
│ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsProvider.kt
│ │ │ │ │ │ │ │ ├── ReactNativeNewArchitectureFeatureFlags.kt
│ │ │ │ │ │ │ │ ├── ReactNativeNewArchitectureFeatureFlagsDefaults.kt
│ │ │ │ │ │ │ │ └── __docs__/
│ │ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ │ ├── interop/
│ │ │ │ │ │ │ │ ├── InteropEvent.kt
│ │ │ │ │ │ │ │ └── InteropEventEmitter.kt
│ │ │ │ │ │ │ ├── tracing/
│ │ │ │ │ │ │ │ └── PerformanceTracer.kt
│ │ │ │ │ │ │ └── turbomodule/
│ │ │ │ │ │ │ └── core/
│ │ │ │ │ │ │ ├── TurboModuleInteropUtils.kt
│ │ │ │ │ │ │ ├── TurboModuleManager.kt
│ │ │ │ │ │ │ ├── TurboModuleManagerDelegate.kt
│ │ │ │ │ │ │ ├── TurboModulePerfLogger.kt
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ └── TurboModuleRegistry.kt
│ │ │ │ │ │ ├── jstasks/
│ │ │ │ │ │ │ ├── HeadlessJsTaskConfig.kt
│ │ │ │ │ │ │ ├── HeadlessJsTaskContext.kt
│ │ │ │ │ │ │ ├── HeadlessJsTaskEventListener.kt
│ │ │ │ │ │ │ ├── HeadlessJsTaskRetryPolicy.kt
│ │ │ │ │ │ │ ├── LinearCountingRetryPolicy.kt
│ │ │ │ │ │ │ └── NoRetryPolicy.kt
│ │ │ │ │ │ ├── module/
│ │ │ │ │ │ │ ├── annotations/
│ │ │ │ │ │ │ │ ├── ReactModule.kt
│ │ │ │ │ │ │ │ └── ReactModuleList.kt
│ │ │ │ │ │ │ └── model/
│ │ │ │ │ │ │ ├── ReactModuleInfo.kt
│ │ │ │ │ │ │ └── ReactModuleInfoProvider.kt
│ │ │ │ │ │ ├── modules/
│ │ │ │ │ │ │ ├── accessibilityinfo/
│ │ │ │ │ │ │ │ └── AccessibilityInfoModule.kt
│ │ │ │ │ │ │ ├── appearance/
│ │ │ │ │ │ │ │ └── AppearanceModule.kt
│ │ │ │ │ │ │ ├── appregistry/
│ │ │ │ │ │ │ │ └── AppRegistry.kt
│ │ │ │ │ │ │ ├── appstate/
│ │ │ │ │ │ │ │ └── AppStateModule.kt
│ │ │ │ │ │ │ ├── blob/
│ │ │ │ │ │ │ │ ├── BlobCollector.kt
│ │ │ │ │ │ │ │ ├── BlobModule.kt
│ │ │ │ │ │ │ │ ├── BlobProvider.kt
│ │ │ │ │ │ │ │ └── FileReaderModule.kt
│ │ │ │ │ │ │ ├── camera/
│ │ │ │ │ │ │ │ └── ImageStoreManager.kt
│ │ │ │ │ │ │ ├── clipboard/
│ │ │ │ │ │ │ │ └── ClipboardModule.kt
│ │ │ │ │ │ │ ├── common/
│ │ │ │ │ │ │ │ └── ModuleDataCleaner.kt
│ │ │ │ │ │ │ ├── core/
│ │ │ │ │ │ │ │ ├── DefaultHardwareBackBtnHandler.kt
│ │ │ │ │ │ │ │ ├── DeviceEventManagerModule.kt
│ │ │ │ │ │ │ │ ├── ExceptionsManagerModule.kt
│ │ │ │ │ │ │ │ ├── HeadlessJsTaskSupportModule.kt
│ │ │ │ │ │ │ │ ├── JSTimers.kt
│ │ │ │ │ │ │ │ ├── JavaScriptTimerExecutor.kt
│ │ │ │ │ │ │ │ ├── JavaTimerManager.kt
│ │ │ │ │ │ │ │ ├── PermissionAwareActivity.kt
│ │ │ │ │ │ │ │ ├── PermissionListener.kt
│ │ │ │ │ │ │ │ ├── RCTNativeAppEventEmitter.kt
│ │ │ │ │ │ │ │ ├── ReactChoreographer.kt
│ │ │ │ │ │ │ │ └── TimingModule.kt
│ │ │ │ │ │ │ ├── debug/
│ │ │ │ │ │ │ │ ├── DevMenuModule.kt
│ │ │ │ │ │ │ │ ├── DevSettingsModule.kt
│ │ │ │ │ │ │ │ ├── FpsDebugFrameCallback.kt
│ │ │ │ │ │ │ │ ├── SourceCodeModule.kt
│ │ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ │ └── DeveloperSettings.kt
│ │ │ │ │ │ │ ├── deviceinfo/
│ │ │ │ │ │ │ │ └── DeviceInfoModule.kt
│ │ │ │ │ │ │ ├── devloading/
│ │ │ │ │ │ │ │ └── DevLoadingModule.kt
│ │ │ │ │ │ │ ├── devtoolsruntimesettings/
│ │ │ │ │ │ │ │ └── ReactDevToolsRuntimeSettingsModule.kt
│ │ │ │ │ │ │ ├── dialog/
│ │ │ │ │ │ │ │ ├── AlertFragment.kt
│ │ │ │ │ │ │ │ ├── DialogModule.kt
│ │ │ │ │ │ │ │ └── DialogTitle.kt
│ │ │ │ │ │ │ ├── fresco/
│ │ │ │ │ │ │ │ ├── FrescoModule.kt
│ │ │ │ │ │ │ │ ├── ImageCacheControl.kt
│ │ │ │ │ │ │ │ ├── ReactNetworkImageRequest.kt
│ │ │ │ │ │ │ │ ├── ReactOkHttpNetworkFetcher.kt
│ │ │ │ │ │ │ │ └── SystraceRequestListener.kt
│ │ │ │ │ │ │ ├── i18nmanager/
│ │ │ │ │ │ │ │ ├── I18nManagerModule.kt
│ │ │ │ │ │ │ │ └── I18nUtil.kt
│ │ │ │ │ │ │ ├── image/
│ │ │ │ │ │ │ │ └── ImageLoaderModule.kt
│ │ │ │ │ │ │ ├── intent/
│ │ │ │ │ │ │ │ └── IntentModule.kt
│ │ │ │ │ │ │ ├── network/
│ │ │ │ │ │ │ │ ├── CookieJarContainer.kt
│ │ │ │ │ │ │ │ ├── CustomClientBuilder.kt
│ │ │ │ │ │ │ │ ├── ForwardingCookieHandler.kt
│ │ │ │ │ │ │ │ ├── HeaderUtil.kt
│ │ │ │ │ │ │ │ ├── InspectorNetworkReporter.kt
│ │ │ │ │ │ │ │ ├── NetworkEventUtil.kt
│ │ │ │ │ │ │ │ ├── NetworkInterceptorCreator.kt
│ │ │ │ │ │ │ │ ├── NetworkingModule.kt
│ │ │ │ │ │ │ │ ├── OkHttpClientFactory.kt
│ │ │ │ │ │ │ │ ├── OkHttpClientProvider.kt
│ │ │ │ │ │ │ │ ├── ProgressListener.kt
│ │ │ │ │ │ │ │ ├── ProgressRequestBody.kt
│ │ │ │ │ │ │ │ ├── ProgressResponseBody.kt
│ │ │ │ │ │ │ │ ├── ProgressiveStringDecoder.kt
│ │ │ │ │ │ │ │ ├── ReactCookieJarContainer.kt
│ │ │ │ │ │ │ │ └── RequestBodyUtil.kt
│ │ │ │ │ │ │ ├── permissions/
│ │ │ │ │ │ │ │ └── PermissionsModule.kt
│ │ │ │ │ │ │ ├── reactdevtoolssettings/
│ │ │ │ │ │ │ │ └── ReactDevToolsSettingsManagerModule.kt
│ │ │ │ │ │ │ ├── share/
│ │ │ │ │ │ │ │ └── ShareModule.kt
│ │ │ │ │ │ │ ├── sound/
│ │ │ │ │ │ │ │ └── SoundManagerModule.kt
│ │ │ │ │ │ │ ├── statusbar/
│ │ │ │ │ │ │ │ └── StatusBarModule.kt
│ │ │ │ │ │ │ ├── systeminfo/
│ │ │ │ │ │ │ │ ├── AndroidInfoHelpers.kt
│ │ │ │ │ │ │ │ ├── AndroidInfoModule.kt
│ │ │ │ │ │ │ │ └── ReactNativeVersion.kt
│ │ │ │ │ │ │ ├── toast/
│ │ │ │ │ │ │ │ └── ToastModule.kt
│ │ │ │ │ │ │ ├── vibration/
│ │ │ │ │ │ │ │ └── VibrationModule.kt
│ │ │ │ │ │ │ └── websocket/
│ │ │ │ │ │ │ └── WebSocketModule.kt
│ │ │ │ │ │ ├── packagerconnection/
│ │ │ │ │ │ │ ├── FileIoHandler.kt
│ │ │ │ │ │ │ ├── JSPackagerClient.kt
│ │ │ │ │ │ │ ├── NotificationOnlyHandler.kt
│ │ │ │ │ │ │ ├── PackagerConnectionSettings.kt
│ │ │ │ │ │ │ ├── ReconnectingWebSocket.kt
│ │ │ │ │ │ │ ├── RequestHandler.kt
│ │ │ │ │ │ │ ├── RequestOnlyHandler.kt
│ │ │ │ │ │ │ └── Responder.kt
│ │ │ │ │ │ ├── reactperflogger/
│ │ │ │ │ │ │ └── NativeModulePerfLogger.kt
│ │ │ │ │ │ ├── runtime/
│ │ │ │ │ │ │ ├── BindingsInstaller.kt
│ │ │ │ │ │ │ ├── BridgelessAtomicRef.kt
│ │ │ │ │ │ │ ├── BridgelessCatalystInstance.kt
│ │ │ │ │ │ │ ├── BridgelessReactContext.kt
│ │ │ │ │ │ │ ├── CoreReactPackage.kt
│ │ │ │ │ │ │ ├── JSRuntimeFactory.kt
│ │ │ │ │ │ │ ├── JSTimerExecutor.kt
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── ReactHostDelegate.kt
│ │ │ │ │ │ │ ├── ReactHostImpl.kt
│ │ │ │ │ │ │ ├── ReactHostImplDevHelper.kt
│ │ │ │ │ │ │ ├── ReactHostInspectorTarget.kt
│ │ │ │ │ │ │ ├── ReactHostStateTracker.kt
│ │ │ │ │ │ │ ├── ReactInstance.kt
│ │ │ │ │ │ │ ├── ReactLifecycleStateManager.kt
│ │ │ │ │ │ │ ├── ReactSurfaceImpl.kt
│ │ │ │ │ │ │ ├── ReactSurfaceView.kt
│ │ │ │ │ │ │ ├── cxxreactpackage/
│ │ │ │ │ │ │ │ └── CxxReactPackage.kt
│ │ │ │ │ │ │ ├── hermes/
│ │ │ │ │ │ │ │ └── HermesInstance.kt
│ │ │ │ │ │ │ └── internal/
│ │ │ │ │ │ │ └── bolts/
│ │ │ │ │ │ │ ├── Continuation.kt
│ │ │ │ │ │ │ ├── ExecutorException.kt
│ │ │ │ │ │ │ ├── Executors.kt
│ │ │ │ │ │ │ ├── Task.kt
│ │ │ │ │ │ │ └── TaskCompletionSource.kt
│ │ │ │ │ │ ├── shell/
│ │ │ │ │ │ │ ├── MainPackageConfig.kt
│ │ │ │ │ │ │ └── MainReactPackage.kt
│ │ │ │ │ │ ├── soloader/
│ │ │ │ │ │ │ └── OpenSourceMergedSoMapping.kt
│ │ │ │ │ │ ├── touch/
│ │ │ │ │ │ │ ├── JSResponderHandler.kt
│ │ │ │ │ │ │ ├── OnInterceptTouchEventListener.kt
│ │ │ │ │ │ │ ├── ReactHitSlopView.kt
│ │ │ │ │ │ │ └── ReactInterceptingViewGroup.kt
│ │ │ │ │ │ ├── turbomodule/
│ │ │ │ │ │ │ └── core/
│ │ │ │ │ │ │ ├── CallInvokerHolderImpl.kt
│ │ │ │ │ │ │ ├── NativeMethodCallInvokerHolderImpl.kt
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── BindingsInstallerHolder.kt
│ │ │ │ │ │ │ ├── CallInvokerHolder.kt
│ │ │ │ │ │ │ ├── NativeMethodCallInvokerHolder.kt
│ │ │ │ │ │ │ ├── TurboModule.kt
│ │ │ │ │ │ │ └── TurboModuleWithJSIBindings.kt
│ │ │ │ │ │ ├── uimanager/
│ │ │ │ │ │ │ ├── BackgroundStyleApplicator.kt
│ │ │ │ │ │ │ ├── BaseViewManager.java
│ │ │ │ │ │ │ ├── BaseViewManagerDelegate.kt
│ │ │ │ │ │ │ ├── BlendModeHelper.kt
│ │ │ │ │ │ │ ├── ComponentNameResolver.kt
│ │ │ │ │ │ │ ├── ComponentNameResolverBinding.kt
│ │ │ │ │ │ │ ├── DisplayMetricsHolder.kt
│ │ │ │ │ │ │ ├── FilterHelper.kt
│ │ │ │ │ │ │ ├── FloatUtil.kt
│ │ │ │ │ │ │ ├── GuardedFrameCallback.kt
│ │ │ │ │ │ │ ├── IViewGroupManager.kt
│ │ │ │ │ │ │ ├── IViewManagerWithChildren.kt
│ │ │ │ │ │ │ ├── IllegalViewOperationException.kt
│ │ │ │ │ │ │ ├── JSKeyDispatcher.kt
│ │ │ │ │ │ │ ├── JSPointerDispatcher.java
│ │ │ │ │ │ │ ├── JSTouchDispatcher.kt
│ │ │ │ │ │ │ ├── LayoutShadowNode.kt
│ │ │ │ │ │ │ ├── LengthPercentage.kt
│ │ │ │ │ │ │ ├── MatrixMathHelper.kt
│ │ │ │ │ │ │ ├── MeasureSpecAssertions.kt
│ │ │ │ │ │ │ ├── NativeViewHierarchyManager.java
│ │ │ │ │ │ │ ├── NativeViewHierarchyOptimizer.kt
│ │ │ │ │ │ │ ├── OnLayoutEvent.kt
│ │ │ │ │ │ │ ├── PixelUtil.kt
│ │ │ │ │ │ │ ├── PointerEvents.kt
│ │ │ │ │ │ │ ├── ReactAccessibilityDelegate.kt
│ │ │ │ │ │ │ ├── ReactAxOrderHelper.kt
│ │ │ │ │ │ │ ├── ReactClippingProhibitedView.kt
│ │ │ │ │ │ │ ├── ReactClippingViewGroup.kt
│ │ │ │ │ │ │ ├── ReactClippingViewGroupHelper.kt
│ │ │ │ │ │ │ ├── ReactCompoundView.kt
│ │ │ │ │ │ │ ├── ReactCompoundViewGroup.kt
│ │ │ │ │ │ │ ├── ReactOverflowView.kt
│ │ │ │ │ │ │ ├── ReactOverflowViewWithInset.kt
│ │ │ │ │ │ │ ├── ReactPointerEventsView.kt
│ │ │ │ │ │ │ ├── ReactRoot.kt
│ │ │ │ │ │ │ ├── ReactRootViewTagGenerator.kt
│ │ │ │ │ │ │ ├── ReactShadowNode.java
│ │ │ │ │ │ │ ├── ReactShadowNodeImpl.java
│ │ │ │ │ │ │ ├── ReactStage.kt
│ │ │ │ │ │ │ ├── ReactStylesDiffMap.kt
│ │ │ │ │ │ │ ├── ReactZIndexedViewGroup.kt
│ │ │ │ │ │ │ ├── ReferenceStateWrapper.kt
│ │ │ │ │ │ │ ├── RootView.kt
│ │ │ │ │ │ │ ├── RootViewManager.kt
│ │ │ │ │ │ │ ├── RootViewUtil.kt
│ │ │ │ │ │ │ ├── ShadowNodeRegistry.kt
│ │ │ │ │ │ │ ├── SimpleViewManager.kt
│ │ │ │ │ │ │ ├── Spacing.kt
│ │ │ │ │ │ │ ├── StateWrapper.kt
│ │ │ │ │ │ │ ├── ThemedReactContext.kt
│ │ │ │ │ │ │ ├── TouchTargetHelper.kt
│ │ │ │ │ │ │ ├── TransformHelper.kt
│ │ │ │ │ │ │ ├── UIBlock.kt
│ │ │ │ │ │ │ ├── UIConstantsProviderBinding.kt
│ │ │ │ │ │ │ ├── UIImplementation.java
│ │ │ │ │ │ │ ├── UIManagerHelper.kt
│ │ │ │ │ │ │ ├── UIManagerModule.java
│ │ │ │ │ │ │ ├── UIManagerModuleConstants.kt
│ │ │ │ │ │ │ ├── UIManagerModuleConstantsHelper.kt
│ │ │ │ │ │ │ ├── UIViewOperationQueue.java
│ │ │ │ │ │ │ ├── ViewAtIndex.kt
│ │ │ │ │ │ │ ├── ViewDefaults.kt
│ │ │ │ │ │ │ ├── ViewGroupDrawingOrderHelper.kt
│ │ │ │ │ │ │ ├── ViewGroupManager.kt
│ │ │ │ │ │ │ ├── ViewManager.java
│ │ │ │ │ │ │ ├── ViewManagerDelegate.kt
│ │ │ │ │ │ │ ├── ViewManagerPropertyUpdater.kt
│ │ │ │ │ │ │ ├── ViewManagerRegistry.kt
│ │ │ │ │ │ │ ├── ViewManagerResolver.kt
│ │ │ │ │ │ │ ├── ViewManagerWithGeneratedInterface.kt
│ │ │ │ │ │ │ ├── ViewManagersPropertyCache.java
│ │ │ │ │ │ │ ├── ViewProps.kt
│ │ │ │ │ │ │ ├── annotations/
│ │ │ │ │ │ │ │ ├── ReactProp.kt
│ │ │ │ │ │ │ │ ├── ReactPropGroup.kt
│ │ │ │ │ │ │ │ └── ReactPropertyHolder.kt
│ │ │ │ │ │ │ ├── common/
│ │ │ │ │ │ │ │ ├── UIManagerType.kt
│ │ │ │ │ │ │ │ └── ViewUtil.kt
│ │ │ │ │ │ │ ├── drawable/
│ │ │ │ │ │ │ │ ├── BackgroundDrawable.kt
│ │ │ │ │ │ │ │ ├── BackgroundImageDrawable.kt
│ │ │ │ │ │ │ │ ├── BorderDrawable.kt
│ │ │ │ │ │ │ │ ├── BoxShadowBorderRadius.kt
│ │ │ │ │ │ │ │ ├── CompositeBackgroundDrawable.kt
│ │ │ │ │ │ │ │ ├── InsetBoxShadowDrawable.kt
│ │ │ │ │ │ │ │ ├── OutlineDrawable.kt
│ │ │ │ │ │ │ │ └── OutsetBoxShadowDrawable.kt
│ │ │ │ │ │ │ ├── events/
│ │ │ │ │ │ │ │ ├── BatchEventDispatchedListener.kt
│ │ │ │ │ │ │ │ ├── BlackHoleEventDispatcher.kt
│ │ │ │ │ │ │ │ ├── BlurEvent.kt
│ │ │ │ │ │ │ │ ├── ContentSizeChangeEvent.kt
│ │ │ │ │ │ │ │ ├── Event.kt
│ │ │ │ │ │ │ │ ├── EventCategoryDef.kt
│ │ │ │ │ │ │ │ ├── EventDispatcher.kt
│ │ │ │ │ │ │ │ ├── EventDispatcherListener.kt
│ │ │ │ │ │ │ │ ├── EventDispatcherProvider.kt
│ │ │ │ │ │ │ │ ├── FabricEventDispatcher.kt
│ │ │ │ │ │ │ │ ├── FocusEvent.kt
│ │ │ │ │ │ │ │ ├── KeyDownEvent.kt
│ │ │ │ │ │ │ │ ├── KeyEvent.kt
│ │ │ │ │ │ │ │ ├── KeyUpEvent.kt
│ │ │ │ │ │ │ │ ├── NativeGestureUtil.kt
│ │ │ │ │ │ │ │ ├── PointerEvent.kt
│ │ │ │ │ │ │ │ ├── PointerEventHelper.kt
│ │ │ │ │ │ │ │ ├── RCTEventEmitter.kt
│ │ │ │ │ │ │ │ ├── RCTModernEventEmitter.kt
│ │ │ │ │ │ │ │ ├── SynchronousEventReceiver.kt
│ │ │ │ │ │ │ │ ├── TouchEvent.kt
│ │ │ │ │ │ │ │ ├── TouchEventCoalescingKeyHelper.kt
│ │ │ │ │ │ │ │ ├── TouchEventType.kt
│ │ │ │ │ │ │ │ └── TouchesHelper.kt
│ │ │ │ │ │ │ ├── internal/
│ │ │ │ │ │ │ │ └── LegacyArchitectureShadowNodeLogger.kt
│ │ │ │ │ │ │ ├── style/
│ │ │ │ │ │ │ │ ├── BackgroundImageLayer.kt
│ │ │ │ │ │ │ │ ├── BackgroundPosition.kt
│ │ │ │ │ │ │ │ ├── BackgroundRepeat.kt
│ │ │ │ │ │ │ │ ├── BackgroundSize.kt
│ │ │ │ │ │ │ │ ├── BorderColors.kt
│ │ │ │ │ │ │ │ ├── BorderInsets.kt
│ │ │ │ │ │ │ │ ├── BorderRadiusStyle.kt
│ │ │ │ │ │ │ │ ├── BorderStyle.kt
│ │ │ │ │ │ │ │ ├── BoxShadow.kt
│ │ │ │ │ │ │ │ ├── ColorStop.kt
│ │ │ │ │ │ │ │ ├── ComputedBorderRadius.kt
│ │ │ │ │ │ │ │ ├── CornerRadii.kt
│ │ │ │ │ │ │ │ ├── Gradient.kt
│ │ │ │ │ │ │ │ ├── LinearGradient.kt
│ │ │ │ │ │ │ │ ├── LogicalEdge.kt
│ │ │ │ │ │ │ │ ├── OutlineStyle.kt
│ │ │ │ │ │ │ │ ├── Overflow.kt
│ │ │ │ │ │ │ │ └── RadialGradient.kt
│ │ │ │ │ │ │ └── util/
│ │ │ │ │ │ │ └── ReactFindViewUtil.kt
│ │ │ │ │ │ ├── util/
│ │ │ │ │ │ │ ├── AndroidVersion.kt
│ │ │ │ │ │ │ ├── ExceptionDataHelper.kt
│ │ │ │ │ │ │ ├── JSStackTrace.kt
│ │ │ │ │ │ │ ├── RCTLog.kt
│ │ │ │ │ │ │ └── RNLog.kt
│ │ │ │ │ │ └── views/
│ │ │ │ │ │ ├── common/
│ │ │ │ │ │ │ ├── ContextUtils.kt
│ │ │ │ │ │ │ └── UiModeUtils.kt
│ │ │ │ │ │ ├── debuggingoverlay/
│ │ │ │ │ │ │ ├── DebuggingOverlay.kt
│ │ │ │ │ │ │ ├── DebuggingOverlayManager.kt
│ │ │ │ │ │ │ └── TraceUpdate.kt
│ │ │ │ │ │ ├── drawer/
│ │ │ │ │ │ │ ├── ReactDrawerLayout.kt
│ │ │ │ │ │ │ ├── ReactDrawerLayoutManager.kt
│ │ │ │ │ │ │ └── events/
│ │ │ │ │ │ │ ├── DrawerClosedEvent.kt
│ │ │ │ │ │ │ ├── DrawerOpenedEvent.kt
│ │ │ │ │ │ │ ├── DrawerSlideEvent.kt
│ │ │ │ │ │ │ └── DrawerStateChangedEvent.kt
│ │ │ │ │ │ ├── image/
│ │ │ │ │ │ │ ├── GlobalImageLoadListener.kt
│ │ │ │ │ │ │ ├── ImageLoadEvent.kt
│ │ │ │ │ │ │ ├── ImageResizeMethod.kt
│ │ │ │ │ │ │ ├── ImageResizeMode.kt
│ │ │ │ │ │ │ ├── MultiPostprocessor.kt
│ │ │ │ │ │ │ ├── ReactCallerContextFactory.kt
│ │ │ │ │ │ │ ├── ReactImageDownloadListener.kt
│ │ │ │ │ │ │ ├── ReactImageManager.kt
│ │ │ │ │ │ │ ├── ReactImageView.kt
│ │ │ │ │ │ │ └── ScaleTypeStartInside.kt
│ │ │ │ │ │ ├── imagehelper/
│ │ │ │ │ │ │ ├── ImageSource.kt
│ │ │ │ │ │ │ ├── MultiSourceHelper.kt
│ │ │ │ │ │ │ └── ResourceDrawableIdHelper.kt
│ │ │ │ │ │ ├── modal/
│ │ │ │ │ │ │ ├── ReactModalHostManager.kt
│ │ │ │ │ │ │ ├── ReactModalHostView.kt
│ │ │ │ │ │ │ ├── RequestCloseEvent.kt
│ │ │ │ │ │ │ └── ShowEvent.kt
│ │ │ │ │ │ ├── progressbar/
│ │ │ │ │ │ │ ├── ProgressBarContainerView.kt
│ │ │ │ │ │ │ └── ReactProgressBarViewManager.kt
│ │ │ │ │ │ ├── safeareaview/
│ │ │ │ │ │ │ ├── ReactSafeAreaView.kt
│ │ │ │ │ │ │ └── ReactSafeAreaViewManager.kt
│ │ │ │ │ │ ├── scroll/
│ │ │ │ │ │ │ ├── FpsListener.kt
│ │ │ │ │ │ │ ├── MaintainVisibleScrollPositionHelper.kt
│ │ │ │ │ │ │ ├── OnScrollDispatchHelper.kt
│ │ │ │ │ │ │ ├── ReactAccessibleScrollView.kt
│ │ │ │ │ │ │ ├── ReactHorizontalScrollContainerLegacyView.kt
│ │ │ │ │ │ │ ├── ReactHorizontalScrollContainerViewManager.kt
│ │ │ │ │ │ │ ├── ReactHorizontalScrollView.java
│ │ │ │ │ │ │ ├── ReactHorizontalScrollViewManager.kt
│ │ │ │ │ │ │ ├── ReactNestedScrollView.java
│ │ │ │ │ │ │ ├── ReactNestedScrollViewManager.kt
│ │ │ │ │ │ │ ├── ReactScrollView.java
│ │ │ │ │ │ │ ├── ReactScrollViewAccessibilityDelegate.kt
│ │ │ │ │ │ │ ├── ReactScrollViewCommandHelper.kt
│ │ │ │ │ │ │ ├── ReactScrollViewHelper.kt
│ │ │ │ │ │ │ ├── ReactScrollViewManager.kt
│ │ │ │ │ │ │ ├── ScrollEvent.kt
│ │ │ │ │ │ │ ├── ScrollEventType.kt
│ │ │ │ │ │ │ ├── VelocityHelper.kt
│ │ │ │ │ │ │ ├── VirtualViewContainer.kt
│ │ │ │ │ │ │ ├── VirtualViewContainerStateClassic.kt
│ │ │ │ │ │ │ ├── VirtualViewContainerStateExperimental.kt
│ │ │ │ │ │ │ └── generate-nested-scroll-view.js
│ │ │ │ │ │ ├── swiperefresh/
│ │ │ │ │ │ │ ├── ReactSwipeRefreshLayout.kt
│ │ │ │ │ │ │ ├── RefreshEvent.kt
│ │ │ │ │ │ │ └── SwipeRefreshLayoutManager.kt
│ │ │ │ │ │ ├── switchview/
│ │ │ │ │ │ │ ├── ReactSwitch.kt
│ │ │ │ │ │ │ ├── ReactSwitchEvent.kt
│ │ │ │ │ │ │ └── ReactSwitchManager.kt
│ │ │ │ │ │ ├── text/
│ │ │ │ │ │ │ ├── DefaultStyleValuesUtil.kt
│ │ │ │ │ │ │ ├── FontMetricsUtil.kt
│ │ │ │ │ │ │ ├── PreparedLayout.kt
│ │ │ │ │ │ │ ├── PreparedLayoutTextView.kt
│ │ │ │ │ │ │ ├── PreparedLayoutTextViewManager.kt
│ │ │ │ │ │ │ ├── ReactFontManager.kt
│ │ │ │ │ │ │ ├── ReactTextUpdate.kt
│ │ │ │ │ │ │ ├── ReactTextView.java
│ │ │ │ │ │ │ ├── ReactTextViewAccessibilityDelegate.kt
│ │ │ │ │ │ │ ├── ReactTextViewManager.kt
│ │ │ │ │ │ │ ├── ReactTextViewManagerCallback.kt
│ │ │ │ │ │ │ ├── ReactTypefaceUtils.kt
│ │ │ │ │ │ │ ├── SelectableTextViewManager.kt
│ │ │ │ │ │ │ ├── TextAttributeProps.kt
│ │ │ │ │ │ │ ├── TextAttributes.kt
│ │ │ │ │ │ │ ├── TextLayoutManager.kt
│ │ │ │ │ │ │ ├── TextTransform.kt
│ │ │ │ │ │ │ └── internal/
│ │ │ │ │ │ │ └── span/
│ │ │ │ │ │ │ ├── CustomLetterSpacingSpan.kt
│ │ │ │ │ │ │ ├── CustomLineHeightSpan.kt
│ │ │ │ │ │ │ ├── CustomStyleSpan.kt
│ │ │ │ │ │ │ ├── DrawCommandSpan.kt
│ │ │ │ │ │ │ ├── ReactAbsoluteSizeSpan.kt
│ │ │ │ │ │ │ ├── ReactBackgroundColorSpan.kt
│ │ │ │ │ │ │ ├── ReactClickableSpan.kt
│ │ │ │ │ │ │ ├── ReactForegroundColorSpan.kt
│ │ │ │ │ │ │ ├── ReactFragmentIndexSpan.kt
│ │ │ │ │ │ │ ├── ReactLinkSpan.kt
│ │ │ │ │ │ │ ├── ReactOpacitySpan.kt
│ │ │ │ │ │ │ ├── ReactSpan.kt
│ │ │ │ │ │ │ ├── ReactStrikethroughSpan.kt
│ │ │ │ │ │ │ ├── ReactTagSpan.kt
│ │ │ │ │ │ │ ├── ReactTextPaintHolderSpan.kt
│ │ │ │ │ │ │ ├── ReactUnderlineSpan.kt
│ │ │ │ │ │ │ ├── SetSpanOperation.kt
│ │ │ │ │ │ │ ├── ShadowStyleSpan.kt
│ │ │ │ │ │ │ └── TextInlineViewPlaceholderSpan.kt
│ │ │ │ │ │ ├── textinput/
│ │ │ │ │ │ │ ├── ContentSizeWatcher.kt
│ │ │ │ │ │ │ ├── ReactContentSizeChangedEvent.kt
│ │ │ │ │ │ │ ├── ReactEditText.kt
│ │ │ │ │ │ │ ├── ReactEditTextInputConnectionWrapper.kt
│ │ │ │ │ │ │ ├── ReactTextChangedEvent.kt
│ │ │ │ │ │ │ ├── ReactTextContentSizeWatcher.kt
│ │ │ │ │ │ │ ├── ReactTextInputEndEditingEvent.kt
│ │ │ │ │ │ │ ├── ReactTextInputKeyPressEvent.kt
│ │ │ │ │ │ │ ├── ReactTextInputLocalData.kt
│ │ │ │ │ │ │ ├── ReactTextInputManager.kt
│ │ │ │ │ │ │ ├── ReactTextInputSelectionEvent.kt
│ │ │ │ │ │ │ ├── ReactTextInputSubmitEditingEvent.kt
│ │ │ │ │ │ │ ├── ReactTextInputTextWatcher.kt
│ │ │ │ │ │ │ ├── ReactTextScrollWatcher.kt
│ │ │ │ │ │ │ ├── ReactTextSelectionWatcher.kt
│ │ │ │ │ │ │ ├── ScrollWatcher.kt
│ │ │ │ │ │ │ └── SelectionWatcher.kt
│ │ │ │ │ │ ├── unimplementedview/
│ │ │ │ │ │ │ ├── ReactUnimplementedView.kt
│ │ │ │ │ │ │ └── ReactUnimplementedViewManager.kt
│ │ │ │ │ │ ├── view/
│ │ │ │ │ │ │ ├── CanvasUtil.kt
│ │ │ │ │ │ │ ├── ColorUtil.kt
│ │ │ │ │ │ │ ├── ImportantForInteractionHelper.kt
│ │ │ │ │ │ │ ├── MeasureUtil.kt
│ │ │ │ │ │ │ ├── ReactClippingViewManager.kt
│ │ │ │ │ │ │ ├── ReactDrawableHelper.kt
│ │ │ │ │ │ │ ├── ReactViewGroup.kt
│ │ │ │ │ │ │ ├── ReactViewManager.kt
│ │ │ │ │ │ │ ├── ViewGroupClickEvent.kt
│ │ │ │ │ │ │ └── WindowUtil.kt
│ │ │ │ │ │ └── virtual/
│ │ │ │ │ │ ├── VirtualViewMode.kt
│ │ │ │ │ │ ├── VirtualViewModeChangeEmitter.kt
│ │ │ │ │ │ ├── VirtualViewModeChangeEvent.kt
│ │ │ │ │ │ ├── VirtualViewRenderState.kt
│ │ │ │ │ │ └── view/
│ │ │ │ │ │ ├── ReactVirtualView.kt
│ │ │ │ │ │ └── ReactVirtualViewManager.kt
│ │ │ │ │ ├── soloader/
│ │ │ │ │ │ └── annotation/
│ │ │ │ │ │ └── SoLoaderLibrary.kt
│ │ │ │ │ ├── systrace/
│ │ │ │ │ │ ├── Systrace.kt
│ │ │ │ │ │ ├── SystraceMessage.kt
│ │ │ │ │ │ └── TraceListener.kt
│ │ │ │ │ └── yoga/
│ │ │ │ │ ├── LayoutPassReason.kt
│ │ │ │ │ ├── YogaAlign.java
│ │ │ │ │ ├── YogaBaselineFunction.kt
│ │ │ │ │ ├── YogaBoxSizing.java
│ │ │ │ │ ├── YogaConfig.kt
│ │ │ │ │ ├── YogaConfigFactory.kt
│ │ │ │ │ ├── YogaConfigJNIBase.kt
│ │ │ │ │ ├── YogaConfigJNIFinalizer.kt
│ │ │ │ │ ├── YogaConstants.kt
│ │ │ │ │ ├── YogaDimension.java
│ │ │ │ │ ├── YogaDirection.kt
│ │ │ │ │ ├── YogaDisplay.java
│ │ │ │ │ ├── YogaEdge.java
│ │ │ │ │ ├── YogaErrata.java
│ │ │ │ │ ├── YogaExperimentalFeature.java
│ │ │ │ │ ├── YogaFlexDirection.java
│ │ │ │ │ ├── YogaGridTrackType.java
│ │ │ │ │ ├── YogaGutter.java
│ │ │ │ │ ├── YogaJustify.java
│ │ │ │ │ ├── YogaLayoutType.kt
│ │ │ │ │ ├── YogaLogLevel.java
│ │ │ │ │ ├── YogaLogger.kt
│ │ │ │ │ ├── YogaMeasureFunction.kt
│ │ │ │ │ ├── YogaMeasureMode.java
│ │ │ │ │ ├── YogaMeasureOutput.kt
│ │ │ │ │ ├── YogaNative.kt
│ │ │ │ │ ├── YogaNode.kt
│ │ │ │ │ ├── YogaNodeFactory.kt
│ │ │ │ │ ├── YogaNodeJNIBase.java
│ │ │ │ │ ├── YogaNodeJNIFinalizer.kt
│ │ │ │ │ ├── YogaNodeType.java
│ │ │ │ │ ├── YogaOverflow.java
│ │ │ │ │ ├── YogaPositionType.java
│ │ │ │ │ ├── YogaProps.kt
│ │ │ │ │ ├── YogaStyleInputs.kt
│ │ │ │ │ ├── YogaUnit.java
│ │ │ │ │ ├── YogaValue.kt
│ │ │ │ │ ├── YogaWrap.java
│ │ │ │ │ └── annotations/
│ │ │ │ │ └── DoNotStrip.kt
│ │ │ │ ├── jni/
│ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ ├── first-party/
│ │ │ │ │ │ ├── fbgloginit/
│ │ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ │ ├── fb/
│ │ │ │ │ │ │ │ └── glog_init.h
│ │ │ │ │ │ │ └── glog_init.cpp
│ │ │ │ │ │ ├── hermes/
│ │ │ │ │ │ │ └── CMakeLists.txt
│ │ │ │ │ │ ├── jni-hack/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── jni.h
│ │ │ │ │ │ │ └── real/
│ │ │ │ │ │ │ └── jni.h
│ │ │ │ │ │ ├── jni-lib-merge/
│ │ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ │ ├── SoMerging-utils.cmake
│ │ │ │ │ │ │ ├── jni_lib_merge.c
│ │ │ │ │ │ │ └── jni_lib_merge.h
│ │ │ │ │ │ └── yogajni/
│ │ │ │ │ │ ├── CMakeLists.txt
│ │ │ │ │ │ └── jni/
│ │ │ │ │ │ ├── LayoutContext.cpp
│ │ │ │ │ │ ├── LayoutContext.h
│ │ │ │ │ │ ├── ScopedGlobalRef.h
│ │ │ │ │ │ ├── ScopedLocalRef.h
│ │ │ │ │ │ ├── YGJNI.h
│ │ │ │ │ │ ├── YGJNIVanilla.cpp
│ │ │ │ │ │ ├── YGJNIVanilla.h
│ │ │ │ │ │ ├── YGJTypesVanilla.h
│ │ │ │ │ │ ├── YogaJniException.cpp
│ │ │ │ │ │ ├── YogaJniException.h
│ │ │ │ │ │ ├── common.cpp
│ │ │ │ │ │ ├── common.h
│ │ │ │ │ │ ├── corefunctions.cpp
│ │ │ │ │ │ ├── corefunctions.h
│ │ │ │ │ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": [
"module:@react-native/babel-preset"
],
"plugins": [
"babel-plugin-transform-flow-enums"
]
}
================================================
FILE: .bundle/config
================================================
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1
================================================
FILE: .clang-format
================================================
---
AccessModifierOffset: -1
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlinesLeft: true
AlignOperands: false
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Attach
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ForEachMacros: [ FOR_EACH_RANGE, FOR_EACH, ]
IncludeCategories:
- Regex: '^<.*\.h(pp)?>'
Priority: 1
- Regex: '^<.*'
Priority: 2
- Regex: '.*'
Priority: 3
IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 1
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 200
PointerAlignment: Left
ReflowComments: true
SortIncludes: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 8
UseTab: Never
QualifierAlignment: Left
---
Language: ObjC
ColumnLimit: 120
BreakBeforeBraces: WebKit
PointerAlignment: Right
...
================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
================================================
FILE: .eslintignore
================================================
**/main.js
**/staticBundle.js
docs/generatedComponentApiDocs.js
packages/react-native/flow/
packages/react-native/sdks/
packages/react-native/ReactAndroid/build
packages/react-native/ReactAndroid/hermes-engine/build/
packages/react-native/Libraries/Renderer/*
packages/react-native/Libraries/vendor/**/*
node_modules/
packages/*/node_modules
packages/*/dist
packages/*/types_generated
packages/debugger-frontend/dist/**/*
packages/react-native-codegen/lib
private/react-native-codegen-typescript-test/lib/**/*
**/Pods/*
**/*.macos.js
**/*.windows.js
**/__fixtures__/**
================================================
FILE: .eslintrc.js
================================================
/**
* 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.
*
* @noflow
* @format
*/
'use strict';
module.exports = {
root: true,
extends: ['@react-native'],
plugins: ['@react-native/monorepo', '@react-native/specs'],
overrides: [
// overriding the JS config from @react-native/eslint-config to ensure
// that we use hermes-eslint for all js files
{
files: ['*.js', '*.js.flow', '*.jsx'],
parser: 'hermes-eslint',
rules: {
'@react-native/monorepo/sort-imports': 'warn',
'eslint-comments/no-unlimited-disable': 'off',
'ft-flow/require-valid-file-annotation': ['error', 'always'],
'no-extra-boolean-cast': 'off',
'no-void': 'off',
// These rules are not required with hermes-eslint
'ft-flow/define-flow-type': 'off',
'ft-flow/use-flow-type': 'off',
// Flow handles these checks for us, so they aren't required
'no-undef': 'off',
'no-unreachable': 'off',
// Throwing from function or rejecting promises with non-error values could result in unclear error stack traces and lead to harder debugging
'prefer-promise-reject-errors': 'error',
'no-throw-literal': 'error',
},
},
{
files: ['*.js', '*.jsx', '*.ts', '*.tsx'],
rules: {
'@react-native/no-deep-imports': 'off',
},
},
{
files: [
'./packages/react-native/Libraries/**/*.{js,flow}',
'./packages/react-native/src/**/*.{js,flow}',
'./packages/assets/registry.js',
],
parser: 'hermes-eslint',
rules: {
'@react-native/monorepo/no-commonjs-exports': 'warn',
},
},
{
files: ['package.json'],
parser: 'jsonc-eslint-parser',
},
{
files: ['package.json'],
rules: {
'@react-native/monorepo/react-native-manifest': 'error',
},
},
{
files: ['flow-typed/**/*.js', 'packages/react-native/flow/**/*'],
rules: {
'@react-native/monorepo/valid-flow-typed-signature': 'error',
'ft-flow/require-valid-file-annotation': 'off',
'no-shadow': 'off',
'no-unused-vars': 'off',
quotes: 'off',
},
},
{
files: [
'packages/react-native/Libraries/**/*.js',
'packages/react-native/src/**/*.js',
],
rules: {
'@react-native/monorepo/no-haste-imports': 'error',
'@react-native/monorepo/no-react-default-imports': 'error',
'@react-native/monorepo/no-react-named-type-imports': 'error',
'@react-native/monorepo/no-react-native-imports': 'error',
'@react-native/monorepo/no-react-node-imports': 'error',
'@react-native/monorepo/require-extends-error': 'error',
'@react-native/platform-colors': 'error',
'@react-native/specs/react-native-modules': 'error',
},
},
{
files: [
'**/__fixtures__/**/*.js',
'**/__mocks__/**/*.js',
'**/__tests__/**/*.js',
'packages/jest-preset/jest/**/*.js',
'packages/rn-tester/**/*.js',
],
globals: {
// Expose some Jest globals for test helpers
afterAll: true,
afterEach: true,
beforeAll: true,
beforeEach: true,
expect: true,
jest: true,
},
},
{
files: ['**/__tests__/**/*-test.js'],
env: {
jasmine: true,
jest: true,
},
},
{
files: ['**/*.{ts,tsx}'],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint/eslint-plugin'],
rules: {
'@typescript-eslint/no-unused-vars': 'off',
'react-native/no-inline-styles': 'off',
'@typescript-eslint/no-shadow': 'off',
'no-self-compare': 'off',
'react/self-closing-comp': 'off',
},
},
{
files: ['**/*.d.ts'],
plugins: ['redundant-undefined'],
rules: {
'no-dupe-class-members': 'off',
'redundant-undefined/redundant-undefined': [
'error',
{followExactOptionalPropertyTypes: true},
],
},
},
{
files: ['**/__tests__/**'],
rules: {
'@react-native/monorepo/no-react-native-imports': 'off',
},
},
],
};
================================================
FILE: .flowconfig
================================================
[ignore]
; Ignore build cache folder
<PROJECT_ROOT>/packages/react-native/sdks/.*
; Ignore fb_internal modules
<PROJECT_ROOT>/packages/react-native/src/fb_internal/.*
; Ignore the codegen e2e tests
<PROJECT_ROOT>/packages/react-native-codegen/e2e/__test_fixtures__/modules/NativeEnumTurboModule.js
; Ignore "BUCK" generated dirs
<PROJECT_ROOT>/\.buckd/
; Ignore other platform suffixes
.*\.macos\.js$
.*\.windows\.js$
.*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$
; Checked-in build output
<PROJECT_ROOT>/packages/debugger-frontend/dist/
; Generated build output
<PROJECT_ROOT>/packages/.*/dist
; helloworld
<PROJECT_ROOT>/private/helloworld/ios/Pods/
; Ignore rn-tester Pods
<PROJECT_ROOT>/packages/rn-tester/Pods/
[untyped]
.*/node_modules/@react-native-community/cli/.*/.*
[include]
[declarations]
.*/node_modules/.*
[libs]
flow-typed/
packages/react-native/interface.js
packages/react-native/flow/
[options]
enums=true
experimental.pattern_matching=true
casting_syntax=both
component_syntax=true
check_is_status=true
emoji=true
exact_by_default=true
format.bracket_spacing=false
module.file_ext=.js
module.file_ext=.json
experimental.multi_platform=true
experimental.multi_platform.extensions=.ios
experimental.multi_platform.extensions=.android
munge_underscores=true
module.name_mapper='^react-native$' -> '<PROJECT_ROOT>/packages/react-native/index.js'
module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/packages/react-native/\1'
module.name_mapper='^@react-native/dev-middleware$' -> '<PROJECT_ROOT>/packages/dev-middleware'
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\|ktx\|heic\|heif\)$' -> '<PROJECT_ROOT>/packages/react-native/Libraries/Image/RelativeImageStub'
module.system.haste.module_ref_prefix=m#
react.runtime=automatic
ban_spread_key_props=true
[lints]
sketchy-null-number=warn
sketchy-null-mixed=warn
sketchy-number=warn
untyped-type-import=warn
nonstrict-import=warn
deprecated-type=error
unsafe-getters-setters=warn
unnecessary-invariant=warn
unused-promise=error
[strict]
deprecated-type
nonstrict-import
sketchy-null
unclear-type
unsafe-getters-setters
untyped-import
untyped-type-import
[version]
^0.307.1
================================================
FILE: .gitattributes
================================================
*.js.flow linguist-language=JavaScript
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: 🐛 React Native - Bug Report
description: Report a reproducible bug or regression in React Native.
labels: ["Needs: Triage :mag:"]
body:
- type: markdown
attributes:
value: "## Reporting a bug to React Native"
- type: markdown
attributes:
value: |
Thank you for taking the time to report an issue for React Native, your contribution will help
make the framework better for everyone.
Before you continue:
* If you're using **Expo** and you're noticing a bug, [report it here](https://github.com/expo/expo/issues).
* If you're found a problem with our **documentation**, [report it here](https://github.com/facebook/react-native-website/issues/).
* If you're having an issue with **Metro** (the bundler), [report it here](https://github.com/facebook/metro/issues/).
* If you're using an external library, report the issue to the **library first**.
* Please [search for similar issues](https://github.com/facebook/react-native/issues) in our issue tracker.
Make sure that your issue:
* Have a **valid reproducer** (See [How to report a bug](https://reactnative.dev/contributing/how-to-report-a-bug)).
* Is tested against the [**latest stable**](https://github.com/facebook/react-native/releases/) of React Native.
🚨 IMPORTANT: Due to the extreme number of bugs we receive, issues **without a reproducer** or for an [**unsupported versions**](https://github.com/reactwg/react-native-releases#which-versions-are-currently-supported) of React Native **will be closed**.
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: The list of steps that reproduce the issue.
placeholder: |
1. Install the application with `yarn android`
2. Click on the button on the Home
3. Notice the crash
validations:
required: true
- type: input
id: version
attributes:
label: React Native Version
description: The version of react-native that this issue reproduces on. Bear in mind that only issues on [supported versions](https://github.com/reactwg/react-native-releases#which-versions-are-currently-supported) will be looked into.
placeholder: "0.73.0"
validations:
required: true
- type: dropdown
id: platforms
attributes:
label: Affected Platforms
description: Please select which platform you're developing to, and which OS you're using for building.
multiple: true
options:
- Runtime - Android
- Runtime - iOS
- Runtime - Web
- Runtime - Desktop
- Build - MacOS
- Build - Windows
- Build - Linux
- Other (please specify)
validations:
required: true
- type: textarea
id: react-native-info
attributes:
label: Output of `npx @react-native-community/cli info`
description: Run `npx @react-native-community/cli info` in your terminal, copy and paste the results here.
placeholder: |
Paste the output of `npx @react-native-community/cli info` here. The output looks like:
...
System:
OS: macOS 14.1.1
CPU: (10) arm64 Apple M1 Max
Memory: 417.81 MB / 64.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node: ...
version: 22.14.0
...
render: text
validations:
required: true
- type: textarea
id: stacktrace
attributes:
label: Stacktrace or Logs
description: Please provide a stacktrace or a log of your crash or failure
render: text
placeholder: |
Paste your stacktraces and logs here. They might look like:
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libfabricjni.so caused by: com.facebook.react.fabric.StateWrapperImpl result: 0
at com.facebook.soloader.SoLoader.g(Unknown Source:341)
at com.facebook.soloader.SoLoader.t(Unknown Source:124)
at com.facebook.soloader.SoLoader.s(Unknown Source:2)
at com.facebook.soloader.SoLoader.q(Unknown Source:42)
at com.facebook.soloader.SoLoader.p(Unknown Source:1)
...
validations:
required: true
- type: input
id: reproducer
attributes:
label: MANDATORY Reproducer
description: A link to either a failing RNTesterPlayground.js file, an Expo Snack or a public repository from [this template](https://github.com/react-native-community/reproducer-react-native) that reproduces this bug. Reproducers are **mandatory**, issues without a reproducer will be closed.
placeholder: "https://github.com/<myuser>/<myreproducer>"
validations:
required: true
- type: textarea
id: extra
attributes:
label: Screenshots and Videos
description: |
Please provide screenshot or a video of your bug if relevant.
Issues with videos and screenshots are more likely to **get prioritized**.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: ⬆️ Upgrade - Build Regression
url: https://github.com/reactwg/react-native-releases/issues/new/choose
about: |
If you are upgrading to a new React Native version (stable or pre-release) and encounter a build regression.
- name: 🚀 Expo Issue
url: https://github.com/expo/expo/issues/new
about: |
If you're using Expo in your project, please report the issue first in the Expo issue tracker.
- name: 📃 Documentation Issue
url: https://github.com/facebook/react-native-website/issues
about: Please report documentation issues in the React Native website repository.
- name: 📦 Metro Issue
url: https://github.com/facebook/metro/issues/new
about: |
If you've encountered a module resolution problem, e.g. "Error: Unable to resolve module ...", or something else that might be related to Metro, please open an issue in the Metro repo instead.
- name: 🤔 Questions and Help
url: https://reactnative.dev/help
about: Looking for help with your app? Please refer to the React Native community's support resources.
- name: 💫 New Architecture - Questions & Technical Deep dive insights
url: https://github.com/reactwg/react-native-new-architecture
about: Questions and doubts related to technical questions for the New Architecture should be directed to the Working Group. Instructions on how to join are available in the README.
- name: 🚀 Discussions and Proposals
url: https://github.com/react-native-community/discussions-and-proposals
about: Discuss the future of React Native in the React Native community's discussions and proposals repository.
================================================
FILE: .github/ISSUE_TEMPLATE/debugger_bug_report.yml
================================================
name: 🔍 Debugger - Bug Report
description: Report a bug with React Native DevTools and the New Debugger
labels: ["Needs: Triage :mag:", "Debugging"]
body:
- type: markdown
attributes:
value: "## Reporting a bug for React Native DevTools"
- type: markdown
attributes:
value: |
Thank you for taking the time to report an issue for React Native DevTools, our new Debugger for React Native.
Before you continue:
* If you're using **Expo** and you're noticing a bug, [report it here](https://github.com/expo/expo/issues).
* If you've found a problem with our **documentation**, [report it here](https://github.com/facebook/react-native-website/issues/).
* If you're having an issue with **Metro** (the bundler), [report it here](https://github.com/facebook/metro/issues/).
* If you're using an external library, report the issue to the **library first**.
* Please [search for similar issues](https://github.com/facebook/react-native/issues) in our issue tracker.
Make sure that your issue is tested against the [**latest stable**](https://github.com/facebook/react-native/releases/) of React Native.
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: The list of steps that reproduces the issue.
placeholder: |
1. Install the application with `yarn android`
2. Press `j` to open the debugger
3. Do something...
validations:
required: true
- type: input
id: version
attributes:
label: React Native Version
description: The version of react-native that this issue reproduces on. Bear in mind that only issues on [supported versions](https://github.com/reactwg/react-native-releases#which-versions-are-currently-supported) will be looked into.
placeholder: "0.76.0"
validations:
required: true
- type: textarea
id: react-native-info
attributes:
label: Output of `npx @react-native-community/cli info`
description: Run `npx @react-native-community/cli info` in your terminal, copy and paste the results here.
placeholder: |
Paste the output of `npx @react-native-community/cli info` here. The output looks like:
...
System:
OS: macOS 14.1.1
CPU: (10) arm64 Apple M1 Max
Memory: 417.81 MB / 64.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node: ...
version: 22.14.0
...
render: text
validations:
required: true
- type: textarea
id: extra
attributes:
label: Screenshots and Videos
description: |
Please provide screenshot or a video of your bug if relevant.
Issues with videos and screenshots are more likely to **get prioritized**.
================================================
FILE: .github/ISSUE_TEMPLATE/new_architecture_bug_report.yml
================================================
name: 💫 New Architecture - Bug Report
description: Report a reproducible bug or a build issue when using the New Architecture (Fabric & TurboModules) in React Native.
labels: ["Needs: Triage :mag:", "Type: New Architecture"]
body:
- type: markdown
attributes:
value: "## New Architecture Related Bugs"
- type: markdown
attributes:
value: |
Thank you for taking the time to report an issue for [the New Architecture of React Native](https://reactnative.dev/docs/the-new-architecture/landing-page),
your contribution will help make the framework better for everyone.
If you're **NOT** using the New Architecture, please use this [other bug type](https://github.com/facebook/react-native/issues/new?template=bug_report.yml).
Do not attempt to open a bug in this category if you're not using the New Architecture as your bug will be closed.
Make sure that your issue:
* Have a **valid reproducer** (See [How to report a bug](https://reactnative.dev/contributing/how-to-report-a-bug)).
* Is tested against the [**latest stable**](https://github.com/facebook/react-native/releases/) of React Native.
🚨 IMPORTANT: Due to the extreme number of bugs we receive, issues **without a reproducer** or for an [**unsupported versions**](https://github.com/reactwg/react-native-releases#which-versions-are-currently-supported) of React Native **will be closed**.
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: The list of steps that reproduce the issue.
placeholder: |
1. Install the application with `yarn android`
2. Click on the button on the Home
3. Notice the crash
validations:
required: true
- type: input
id: version
attributes:
label: React Native Version
description: The version of react-native that this issue reproduces on. Bear in mind that only issues on [supported versions](https://github.com/reactwg/react-native-releases#which-versions-are-currently-supported) will be looked into.
placeholder: "0.73.0"
validations:
required: true
- type: dropdown
id: platforms
attributes:
label: Affected Platforms
description: Please select which platform you're developing to, and which OS you're using for building.
multiple: true
options:
- Runtime - Android
- Runtime - iOS
- Runtime - Web
- Runtime - Desktop
- Build - MacOS
- Build - Windows
- Build - Linux
- Other (please specify)
validations:
required: true
- type: dropdown
id: areas
attributes:
label: Areas
description: Which areas of the New Architecture are affected by this bug report?
multiple: true
options:
- Fabric - The New Renderer
- TurboModule - The New Native Module System
- JSI - Javascript Interface
- Bridgeless - The New Initialization Flow
- Codegen
- Other (please specify)
validations:
required: true
- type: textarea
id: react-native-info
attributes:
label: Output of `npx @react-native-community/cli info`
description: Run `npx @react-native-community/cli info` in your terminal, copy and paste the results here.
placeholder: |
Paste the output of `npx @react-native-community/cli info` here. The output looks like:
...
System:
OS: macOS 14.1.1
CPU: (10) arm64 Apple M1 Max
Memory: 417.81 MB / 64.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node: ...
version: 22.14.0
...
render: text
validations:
required: true
- type: textarea
id: stacktrace
attributes:
label: Stacktrace or Logs
description: Please provide a stacktrace or a log of your crash or failure
render: text
placeholder: |
Paste your stacktraces and logs here. They might look like:
java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libfabricjni.so caused by: com.facebook.react.fabric.StateWrapperImpl result: 0
at com.facebook.soloader.SoLoader.g(Unknown Source:341)
at com.facebook.soloader.SoLoader.t(Unknown Source:124)
at com.facebook.soloader.SoLoader.s(Unknown Source:2)
at com.facebook.soloader.SoLoader.q(Unknown Source:42)
at com.facebook.soloader.SoLoader.p(Unknown Source:1)
...
validations:
required: true
- type: input
id: reproducer
attributes:
label: MANDATORY Reproducer
description: A link to either a failing RNTesterPlayground.js file, an Expo Snack or a public repository from [this template](https://github.com/react-native-community/reproducer-react-native) that reproduces this bug. Reproducers are **mandatory**, issues without a reproducer will be closed.
placeholder: "https://github.com/<myuser>/<myreproducer>"
validations:
required: true
- type: textarea
id: extra
attributes:
label: Screenshots and Videos
description: |
Please provide screenshot or a video of your bug if relevant.
Issues with videos and screenshots are more likely to **get prioritized**.
================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
✋ To keep the backlog clean and actionable, issues will be
🚫 closed if they do not follow one of the issue templates:
👉 https://github.com/facebook/react-native/issues/new/choose
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please provide enough information so that others can review your pull request. The three fields below are mandatory. -->
## Summary:
<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->
## Changelog:
<!-- Help reviewers and the release process by writing your own changelog entry.
Pick one each for the category and type tags:
[ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message
For more details, see:
https://reactnative.dev/contributing/changelogs-in-pull-requests
-->
## Test Plan:
<!-- Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes the user interface. -->
================================================
FILE: .github/RELEASE_TEMPLATE.md
================================================
<!-- Template for pre-release GitHub release -->
<!-- TODO Post about this release to https://github.com/reactwg/react-native-releases/discussions) -->
- <!-- TODO List out notable picks for this patch -->
---
To test it, run:
npx react-native init RN__SHORT_VERSION__ --version __VERSION__
---
You can participate in the conversation on the status of this release in the [working group](https://github.com/reactwg/react-native-releases/discussions).
---
To help you upgrade to this version, you can use the [upgrade helper](https://react-native-community.github.io/upgrade-helper/) ⚛️
---
See changes from this release in the [changelog PR](https://github.com/facebook/react-native/labels/%F0%9F%93%9D%20Changelog)
================================================
FILE: .github/SUPPORT.md
================================================
Thanks for using React Native! If you need help with your React Native app, the right place to go depends on the type of help that you need.
## 🤔 I have a question or need help with my React Native app.
If you have a coding question related to React Native, it might be better suited for Stack Overflow. It's a great place to browse through [frequent questions about using React Native](https://stackoverflow.com/questions/tagged/react-native?sort=frequent&pageSize=15), as well as [ask for help with specific questions](https://stackoverflow.com/questions/tagged/react-native).
[Reactiflux](https://www.reactiflux.com/) is an active community of React and React Native developers. If you are looking for immediate assistance or have a general question about React Native, the #react-native channel is a good place to start.
## 📃 I found something that seems wrong in the documentation.
The React Native website is hosted on a [separate repository](https://github.com/facebook/react-native-website). If you want to report something that is wrong or missing from the documentation, [please open a new issue there](https://github.com/facebook/react-native-website/issues).
## 🐛 I found a bug in React Native.
If you want to report a reproducible bug or regression in the React Native library, you can [create a new issue](https://github.com/facebook/react-native/issues/new?labels=Type%3A+Bug+Report&template=bug_report.md). It's a good idea to look through [open issues](https://github.com/facebook/react-native/issues) before doing so, as someone else may have reported a similar issue.
## 🚀 I want to discuss the future of React Native.
If you'd like to discuss topics related to the future of React Native, please check out the [React Native Community Discussions and Proposals](https://github.com/react-native-community/discussions-and-proposals) repository.
## 💬 I want to talk to other React Native developers.
If you want to participate in casual discussions about the use of React Native, consider participating in one of the following forums:
- [Reactiflux Discord Server](https://www.reactiflux.com)
- [Spectrum Chat](https://spectrum.chat/react-native)
- [React Native Community Facebook Group](https://www.facebook.com/groups/react.native.community)
> For a full list of community resources, check out [React Native's Community page](https://reactnative.dev/help).
================================================
FILE: .github/actions/build-android/action.yml
================================================
name: build-android
description: This action builds android
inputs:
release-type:
required: true
description: The type of release we are building. It could be nightly, release or dry-run
gradle-cache-encryption-key:
description: "The encryption key needed to store the Gradle Configuration cache"
runs:
using: composite
steps:
- name: Setup git safe folders
shell: bash
run: git config --global --add safe.directory '*'
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Install node dependencies
uses: ./.github/actions/yarn-install
- name: Read current RNVersion
shell: bash
id: read-rn-version
run: |
echo "rn-version=$(jq -r '.version' packages/react-native/package.json)" >> $GITHUB_OUTPUT
- name: Set React Native Version
# We don't want to set the version for stable branches, because this has been
# already set from the 'create release' commits on the release branch.
# For testing RC.0, though, the version has not been set yet. In that case, we are on Stable branch and
# it is the only case when the version is still 1000.0.0
# We also skip this when the PR targets a stable branch (github.base_ref ends with '-stable'),
# since the version is already set on the stable branch.
if: ${{ !endsWith(github.ref_name, '-stable') && !endsWith(github.base_ref || '', '-stable') || endsWith(github.ref_name, '-stable') && steps.read-rn-version.outputs.rn-version == '1000.0.0' }}
shell: bash
run: node ./scripts/releases/set-rn-artifacts-version.js --build-type ${{ inputs.release-type }}
- name: Setup gradle
uses: ./.github/actions/setup-gradle
with:
cache-read-only: "false"
cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
- name: Restore Android ccache
uses: actions/cache/restore@v5
with:
path: /github/home/.cache/ccache
key: v2-ccache-android-${{ github.job }}-${{ github.ref }}-${{ hashFiles('packages/react-native/ReactAndroid/**/*.cpp', 'packages/react-native/ReactAndroid/**/*.h', 'packages/react-native/ReactCommon/**/*.cpp', 'packages/react-native/ReactAndroid/**/CMakeLists.txt', 'packages/react-native/ReactCommon/**/CMakeLists.txt') }}
restore-keys: |
v2-ccache-android-${{ github.job }}-${{ github.ref }}-
v2-ccache-android-${{ github.job }}-
v2-ccache-android-
- name: Show ccache stats
shell: bash
run: ccache -s -v
- name: Build and publish all the Android Artifacts to /tmp/maven-local
shell: bash
run: |
if [[ "${{ inputs.release-type }}" == "dry-run" ]]; then
# dry-run: we only build ARM64 to save time/resources. For release/nightlies the default is to build all archs.
export ORG_GRADLE_PROJECT_reactNativeArchitectures="arm64-v8a,x86" # x86 is required for E2E testing
export HERMES_PREBUILT_FLAG="ORG_GRADLE_PROJECT_react.internal.useHermesNightly=true"
TASKS="publishAllToMavenTempLocal build"
elif [[ "${{ inputs.release-type }}" == "nightly" ]]; then
# nightly: we set isSnapshot to true so artifacts are sent to the right repository on Maven Central.
export ORG_GRADLE_PROJECT_isSnapshot="true"
export HERMES_PREBUILT_FLAG="ORG_GRADLE_PROJECT_react.internal.useHermesNightly=true"
TASKS="publishAllToMavenTempLocal publishAndroidToSonatype build"
else
# release: we want to build all archs (default)
export HERMES_PREBUILT_FLAG="ORG_GRADLE_PROJECT_react.internal.useHermesStable=true"
TASKS="publishAllToMavenTempLocal publishAndroidToSonatype build"
fi
env "$HERMES_PREBUILT_FLAG" ./gradlew $TASKS -PenableWarningsAsErrors=true
- name: Save Android ccache
if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }}
uses: actions/cache/save@v5
with:
path: /github/home/.cache/ccache
key: v2-ccache-android-${{ github.job }}-${{ github.ref }}-${{ hashFiles('packages/react-native/ReactAndroid/**/*.cpp', 'packages/react-native/ReactAndroid/**/*.h', 'packages/react-native/ReactCommon/**/*.cpp', 'packages/react-native/ReactAndroid/**/CMakeLists.txt', 'packages/react-native/ReactCommon/**/CMakeLists.txt') }}
- name: Show ccache stats
shell: bash
run: ccache -s -v
- name: Upload Maven Artifacts
uses: actions/upload-artifact@v6
with:
name: maven-local
path: /tmp/maven-local
- name: Upload test results
if: ${{ always() }}
uses: actions/upload-artifact@v6
with:
name: build-android-results
compression-level: 1
path: |
packages/react-native-gradle-plugin/react-native-gradle-plugin/build/reports
packages/react-native-gradle-plugin/settings-plugin/build/reports
packages/react-native/ReactAndroid/build/reports
- name: Upload RNTester APK - hermes-debug
if: ${{ always() }}
uses: actions/upload-artifact@v6
with:
name: rntester-debug
path: packages/rn-tester/android/app/build/outputs/apk/debug/
compression-level: 0
- name: Upload RNTester APK - hermes-release
if: ${{ always() }}
uses: actions/upload-artifact@v6
with:
name: rntester-release
path: packages/rn-tester/android/app/build/outputs/apk/release/
compression-level: 0
================================================
FILE: .github/actions/build-fantom-runner/action.yml
================================================
name: Build Fantom Runner
inputs:
release-type:
required: true
description: The type of release we are building. It could be nightly, release or dry-run
gradle-cache-encryption-key:
description: "The encryption key needed to store the Gradle Configuration cache"
runs:
using: composite
steps:
- name: Install dependencies
shell: bash
run: |
sudo apt update
sudo apt install -y git cmake openssl libssl-dev clang
- name: Setup git safe folders
shell: bash
run: git config --global --add safe.directory '*'
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Install node dependencies
uses: ./.github/actions/yarn-install
- name: Setup gradle
uses: ./.github/actions/setup-gradle
with:
cache-read-only: "false"
cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
- name: Restore Fantom ccache
uses: actions/cache/restore@v5
with:
path: /github/home/.cache/ccache
key: v2-ccache-fantom-${{ github.job }}-${{ github.ref }}-${{ hashFiles(
'packages/react-native/ReactAndroid/**/*.cpp',
'packages/react-native/ReactAndroid/**/*.h',
'packages/react-native/ReactAndroid/**/CMakeLists.txt',
'packages/react-native/ReactCommon/**/*.cpp',
'packages/react-native/ReactCommon/**/*.h',
'packages/react-native/ReactCommon/**/CMakeLists.txt',
'private/react-native-fantom/tester/**/*.cpp',
'private/react-native-fantom/tester/**/*.h',
'private/react-native-fantom/tester/**/CMakeLists.txt'
) }}
restore-keys: |
v2-ccache-fantom-${{ github.job }}-${{ github.ref }}-
v2-ccache-fantom-${{ github.job }}-
v2-ccache-fantom-
- name: Show ccache stats (before)
shell: bash
run: ccache -s -v
- name: Build Fantom Runner
shell: bash
run: yarn workspace @react-native/fantom build
env:
CC: clang
CXX: clang++
- name: Save Fantom ccache
if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }}
uses: actions/cache/save@v5
with:
path: /github/home/.cache/ccache
key: v2-ccache-fantom-${{ github.job }}-${{ github.ref }}-${{ hashFiles(
'packages/react-native/ReactAndroid/**/*.cpp',
'packages/react-native/ReactAndroid/**/*.h',
'packages/react-native/ReactAndroid/**/CMakeLists.txt',
'packages/react-native/ReactCommon/**/*.cpp',
'packages/react-native/ReactCommon/**/*.h',
'packages/react-native/ReactCommon/**/CMakeLists.txt',
'private/react-native-fantom/tester/**/*.cpp',
'private/react-native-fantom/tester/**/*.h',
'private/react-native-fantom/tester/**/CMakeLists.txt'
) }}
- name: Show ccache stats (after)
shell: bash
run: ccache -s -v
- name: Copy shared libraries
shell: bash
run: cp packages/react-native/ReactAndroid/hermes-engine/build/hermes/lib/libhermesvm.so private/react-native-fantom/build/tester/
- name: Upload Fantom Runner binary
uses: actions/upload-artifact@v6
with:
name: fantom-runner-binary
compression-level: 1
path: private/react-native-fantom/build/tester/
================================================
FILE: .github/actions/build-npm-package/action.yml
================================================
name: build-npm-package
description: This action builds the NPM package and uploads it to Maven
inputs:
release-type:
required: true
description: The type of release we are building. It could be nightly, release or dry-run
gha-npm-token:
required: false
description: The GHA npm token, required only to publish to npm
default: ''
gradle-cache-encryption-key:
description: The encryption key needed to store the Gradle Configuration cache
runs:
using: composite
steps:
- name: Setup git safe folders
shell: bash
run: git config --global --add safe.directory '*'
- name: Download ReactNativeDependencies
uses: actions/download-artifact@v7
with:
pattern: ReactNativeDependencies*
path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts
merge-multiple: true
- name: Download ReactCore artifacts
uses: actions/download-artifact@v7
with:
pattern: ReactCore*
path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts
merge-multiple: true
- name: Print Artifacts Directory
shell: bash
run: ls -lR ./packages/react-native/ReactAndroid/external-artifacts/artifacts/
- name: Setup gradle
uses: ./.github/actions/setup-gradle
with:
cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }}
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Build packages
shell: bash
run: yarn build
- name: Build types
shell: bash
run: yarn build-types --skip-snapshot
# Continue with publish steps
- name: Set npm credentials
if: ${{ inputs.release-type == 'release' ||
inputs.release-type == 'nightly' }}
shell: bash
run: echo "//registry.npmjs.org/:_authToken=${{ inputs.gha-npm-token }}" > ~/.npmrc
- name: Publish NPM
shell: bash
run: |
echo "GRADLE_OPTS = $GRADLE_OPTS"
# We can't have a separate step because each command is executed in a separate shell
# so variables exported in a command are not visible in another.
if [[ "${{ inputs.release-type }}" == "dry-run" ]]; then
export ORG_GRADLE_PROJECT_reactNativeArchitectures="arm64-v8a"
else
export ORG_GRADLE_PROJECT_reactNativeArchitectures="armeabi-v7a,arm64-v8a,x86,x86_64"
fi
node ./scripts/releases-ci/publish-npm.js -t ${{ inputs.release-type }}
- name: Upload npm logs
uses: actions/upload-artifact@v6
with:
name: npm-logs
path: ~/.npm/_logs
- name: Build release package as a job artifact
if: ${{ inputs.release-type == 'dry-run' }}
shell: bash
run: |
mkdir -p build
FILENAME=$(cd packages/react-native; npm pack | tail -1)
mv "packages/react-native/$FILENAME" build/
echo "$FILENAME" > build/react-native-package-version
- name: Upload release package
uses: actions/upload-artifact@v6
if: ${{ inputs.release-type == 'dry-run' }}
with:
name: react-native-package
path: build
================================================
FILE: .github/actions/create-release/action.yml
================================================
name: create_release
description: Creates a new React Native release
inputs:
version:
description: "The version of React Native we want to release. For example 0.75.0-rc.0"
required: true
is-latest-on-npm:
description: "Whether we want to tag this release as latest on NPM"
required: true
default: "false"
dry-run:
description: "Whether the job should be executed in dry-run mode or not"
default: "true"
runs:
using: composite
steps:
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Yarn install
uses: ./.github/actions/yarn-install
- name: Configure Git
shell: bash
run: |
git config --local user.email "bot@reactnative.dev"
git config --local user.name "React Native Bot"
- name: Creating release commit
shell: bash
run: |
node scripts/releases/create-release-commit.js \
--reactNativeVersion "${{ inputs.version }}" \
--tagAsLatestRelease "${{ inputs.is-latest-on-npm }}" \
--dryRun "${{ inputs.dry-run }}"
GIT_PAGER=cat git show HEAD
- name: Update "latest" tag if needed
shell: bash
if: ${{ inputs.is-latest-on-npm == 'true' }}
run: |
git tag -d "latest"
git push origin :latest
git tag -a "latest" -m "latest"
- name: Pushing release commit
shell: bash
if: ${{ inputs.dry-run == 'false' }}
run: |
CURR_BRANCH="$(git branch --show-current)"
git push origin "$CURR_BRANCH" --follow-tags
================================================
FILE: .github/actions/diff-js-api-changes/action.yml
================================================
name: diff-js-api-changes
description: Check for breaking changes in the public React Native JS API
outputs:
message:
description: Formatted markdown message describing API changes, or empty if no changes
value: ${{ steps.format_output.outputs.message }}
runs:
using: composite
steps:
- name: Fetch PR and main, compute merge base
id: merge_base
shell: bash
env:
PR_SHA: ${{ github.event.pull_request.head.sha }}
run: |
git fetch origin main
git fetch origin "$PR_SHA" --depth=500
echo "merge_base=$(git merge-base "$PR_SHA" origin/main)" >> $GITHUB_OUTPUT
- name: Extract before and after API snapshots
shell: bash
env:
SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-changes
MERGE_BASE: ${{ steps.merge_base.outputs.merge_base }}
PR_SHA: ${{ github.event.pull_request.head.sha }}
run: |
mkdir -p $SCRATCH_DIR
git show "$MERGE_BASE":packages/react-native/ReactNativeApi.d.ts > $SCRATCH_DIR/ReactNativeApi-before.d.ts \
|| echo "" > $SCRATCH_DIR/ReactNativeApi-before.d.ts
git show "$PR_SHA":packages/react-native/ReactNativeApi.d.ts > $SCRATCH_DIR/ReactNativeApi-after.d.ts \
|| echo "" > $SCRATCH_DIR/ReactNativeApi-after.d.ts
- name: Run breaking change detection
shell: bash
env:
SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-changes
run: |
node ./scripts/js-api/diff-api-snapshot \
$SCRATCH_DIR/ReactNativeApi-before.d.ts \
$SCRATCH_DIR/ReactNativeApi-after.d.ts \
> $SCRATCH_DIR/output.json
- name: Format output message
id: format_output
shell: bash
env:
SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-changes
run: |
if [ ! -f "$SCRATCH_DIR/output.json" ]; then
echo "message=" >> $GITHUB_OUTPUT
exit 0
fi
RESULT=$(cat $SCRATCH_DIR/output.json | jq -r '.result // empty')
if [ -z "$RESULT" ] || [ "$RESULT" = "NON_BREAKING" ]; then
echo "message=" >> $GITHUB_OUTPUT
exit 0
fi
# Use delimiter for multiline output
{
echo "message<<EOF"
echo "> [!WARNING]"
echo "> **JavaScript API change detected**"
echo ">"
echo "> This PR commits an update to \`ReactNativeApi.d.ts\`, indicating a change to React Native's public JavaScript API."
echo ">"
echo "> - Please include a **clear changelog message**."
echo "> - This change will be subject to additional review."
echo ">"
echo "> This change was flagged as: \`${RESULT}\`"
echo "EOF"
} >> $GITHUB_OUTPUT
================================================
FILE: .github/actions/maestro-android/action.yml
================================================
name: Maestro E2E Android
description: Runs E2E Tests on Android using Maestro
inputs:
app-path:
required: true
description: The path to the .apk file
app-id:
required: true
description: The id of the app to test
maestro-flow:
required: true
description: the folder that contains the maestro tests
install-java:
required: false
default: 'true'
description: whether this action has to install java 17 or not
flavor:
required: true
description: the flavor we want to run - either debug or release
default: release
working-directory:
required: false
default: "."
description: The directory from which metro should be started
emulator-arch:
required: false
default: x86
description: The architecture of the emulator to run
runs:
using: composite
steps:
- name: Installing Maestro
shell: bash
run: export MAESTRO_VERSION=1.40.0; curl -Ls "https://get.maestro.mobile.dev" | bash
- name: Set up JDK 17
if: ${{ inputs.install-java == 'true' }}
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'zulu'
- name: Enable KVM group perms
shell: bash
run: |
# ubuntu machines have hardware acceleration available and when we try to create an emulator, the script pauses asking for user input
# These lines set the rules to reply automatically to that question and unblock the creation of the emulator.
# source: https://github.com/ReactiveCircus/android-emulator-runner?tab=readme-ov-file#running-hardware-accelerated-emulators-on-linux-runners
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Build Codegen
shell: bash
if: ${{ inputs.flavor == 'debug' }}
run: ./packages/react-native-codegen/scripts/oss/build.sh
- name: Run e2e tests
id: run-tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 24
arch: ${{ inputs.emulator-arch }}
ram-size: '8192M'
heap-size: '4096M'
disk-size: '10G'
cores: '4'
disable-animations: false
avd-name: e2e_emulator
script: node .github/workflow-scripts/maestro-android.js ${{ inputs.app-path }} ${{ inputs.app-id }} ${{ inputs.maestro-flow }} ${{ inputs.flavor }} ${{ inputs.working-directory }}
- name: Normalize APP_ID
id: normalize-app-id
shell: bash
if: always()
run: |
NORM_APP_ID=$(echo "${{ inputs.app-id }}" | tr '.' '-')
echo "app-id=$NORM_APP_ID" >> $GITHUB_OUTPUT
- name: Store tests result
uses: actions/upload-artifact@v6
if: always()
with:
name: e2e_android_${{ steps.normalize-app-id.outputs.app-id }}_report_${{ inputs.flavor }}_${{ inputs.emulator-arch }}_NewArch
path: |
report.xml
screen.mp4
- name: Store Logs
if: steps.run-tests.outcome == 'failure'
uses: actions/upload-artifact@v6
with:
name: maestro-logs-android-${{ steps.normalize-app-id.outputs.app-id }}-${{ inputs.flavor }}-${{ inputs.emulator-arch }}-NewArch
path: /tmp/MaestroLogs
================================================
FILE: .github/actions/maestro-ios/action.yml
================================================
name: Maestro E2E iOS
description: Runs E2E Tests on iOS using Maestro
inputs:
app-path:
required: true
description: The path to the .app file
app-id:
required: true
description: The id of the app to test
maestro-flow:
required: true
description: the folder that contains the maestro tests
flavor:
required: true
description: Whether we are building for Debug or Release
default: Release
working-directory:
required: false
default: "."
description: The directory from which metro should be started
runs:
using: composite
steps:
- name: Installing Maestro
shell: bash
run: export MAESTRO_VERSION=1.40.0; curl -Ls "https://get.maestro.mobile.dev" | bash
- name: Installing Maestro dependencies
shell: bash
run: |
brew tap facebook/fb
brew install facebook/fb/idb-companion
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'zulu'
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Run yarn install
uses: ./.github/actions/yarn-install
- name: Start Metro in Debug
shell: bash
if: ${{ inputs.flavor == 'Debug' }}
run: |
# build codegen or we will see a redbox
./packages/react-native-codegen/scripts/oss/build.sh
cd ${{ inputs.working-directory }}
yarn start &
sleep 5 # to give metro time to load
- name: Run tests
id: run-tests
shell: bash
run: |
# Avoid exit from the job if one of the command returns an error.
# Maestro can fail in case of flakyness, we have some retry logic.
set +e
node .github/workflow-scripts/maestro-ios.js \
"${{ inputs.app-path }}" \
"${{ inputs.app-id }}" \
"${{ inputs.maestro-flow }}" \
"Hermes" \
"${{ inputs.flavor }}" \
"${{ inputs.working-directory }}"
- name: Store video record
if: always()
uses: actions/upload-artifact@v6
with:
name: e2e_ios_${{ inputs.app-id }}_report_${{ inputs.flavor }}_NewArch
path: |
video_record_1.mov
video_record_2.mov
video_record_3.mov
video_record_4.mov
video_record_5.mov
report.xml
- name: Store Logs
if: failure() && steps.run-tests.outcome == 'failure'
uses: actions/upload-artifact@v6
with:
name: maestro-logs-${{ inputs.app-id }}-${{ inputs.flavor }}-NewArch
path: /tmp/MaestroLogs
================================================
FILE: .github/actions/post-pr-comment/action.yml
================================================
name: post-pr-comment
description: Post or update a PR comment, or delete if no sections
inputs:
sections:
description: 'JSON array of markdown sections to include in comment'
required: false
default: '[]'
header:
description: 'Optional header text to display at the top of the comment'
required: false
default: ''
marker:
description: 'HTML comment marker to identify this comment'
required: true
runs:
using: composite
steps:
- name: Create, update, or delete comment
uses: actions/github-script@v8
env:
SECTIONS_INPUT: ${{ inputs.sections }}
MARKER_INPUT: ${{ inputs.marker }}
HEADER_INPUT: ${{ inputs.header }}
with:
script: |
const marker = process.env.MARKER_INPUT;
const header = process.env.HEADER_INPUT;
const sections = JSON.parse(process.env.SECTIONS_INPUT)
.filter(Boolean)
.filter(s => s.trim());
const {owner, repo} = context.repo;
const issue_number = context.issue.number;
const {data: comments} = await github.rest.issues.listComments({
owner, repo, issue_number,
});
const existing = comments.find(c => c.body?.includes(marker));
if (!sections.length) {
if (existing) {
await github.rest.issues.deleteComment({owner, repo, comment_id: existing.id});
}
return;
}
const content = sections.join('\n\n');
const body = header ? `${marker}\n## ${header}\n\n${content}` : `${marker}\n${content}`;
if (existing) {
await github.rest.issues.updateComment({owner, repo, comment_id: existing.id, body});
} else {
await github.rest.issues.createComment({owner, repo, issue_number, body});
}
================================================
FILE: .github/actions/prepare-hermes-v1-app/action.yml
================================================
name: prepare-hermes-v1-app
description: Prepares a React Native app with Hermes V1 enabled
inputs:
retry-count:
description: 'Number of times to retry the yarn install on failure'
runs:
using: composite
steps:
- name: Create new app
shell: bash
run: |
cd /tmp
npx @react-native-community/cli init RNApp --skip-install --version nightly
- name: Select latest Hermes V1 version
shell: bash
run: |
node "$GITHUB_WORKSPACE/.github/workflow-scripts/selectLatestHermesV1Version.js"
- name: Apply patch to enable Hermes V1
shell: bash
run: |
cd /tmp/RNApp
git apply --binary --3way --whitespace=nowarn "$GITHUB_WORKSPACE/.github/workflow-scripts/hermes-v1.patch"
echo "✅ Patch applied successfully"
- name: Install app dependencies with retry
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: ${{ inputs.retry-count }}
retry_wait_seconds: 15
shell: bash
command: |
cd /tmp/RNApp
yarn install
on_retry_command: |
echo "Cleaning up for yarn retry..."
cd /tmp/RNApp
rm -rf node_modules yarn.lock || true
yarn cache clean || true
================================================
FILE: .github/actions/prepare-ios-tests/action.yml
================================================
name: prepare-ios-tests
description: Prepare iOS Tests
runs:
using: composite
steps:
- name: Run Ruby Tests
shell: bash
run: |
cd packages/react-native/scripts
sh run_ruby_tests.sh
- name: Boot iPhone Simulator
shell: bash
run: source scripts/.tests.env && xcrun simctl boot "$IOS_DEVICE" || true
- name: "Brew: Tap wix/brew"
shell: bash
run: brew tap wix/brew
- name: brew install applesimutils watchman
shell: bash
run: brew install applesimutils watchman
- name: Configure Watchman
shell: bash
run: echo "{}" > .watchmanconfig
================================================
FILE: .github/actions/run-fantom-tests/action.yml
================================================
name: Run Fantom Tests
runs:
using: composite
steps:
- name: Install runtime dependencies
shell: bash
run: |
sudo apt update
sudo apt install -y openssl libssl-dev
- name: Setup git safe folders
shell: bash
run: git config --global --add safe.directory '*'
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Install node dependencies
uses: ./.github/actions/yarn-install
- name: Download Fantom Runner binary
uses: actions/download-artifact@v7
with:
name: fantom-runner-binary
path: private/react-native-fantom/build/tester
- name: Make binary executable
shell: bash
run: chmod +x private/react-native-fantom/build/tester/fantom_tester
- name: Run Fantom Tests
shell: bash
run: |
for attempt in 1 2 3; do
echo "Attempt $attempt of 3"
if yarn fantom; then
exit 0
fi
if [ "$attempt" -lt 3 ]; then
echo "Attempt $attempt failed. Retrying..."
fi
done
echo "All 3 attempts failed."
exit 1
env:
LD_LIBRARY_PATH: ${{ github.workspace }}/private/react-native-fantom/build/tester
- name: Upload test results
if: ${{ always() }}
uses: actions/upload-artifact@v6
with:
name: run-fantom-tests-results
compression-level: 1
path: |
private/react-native-fantom/build/reports
================================================
FILE: .github/actions/setup-gradle/action.yml
================================================
name: Setup gradle
description: "Set up your GitHub Actions workflow with a specific version of gradle"
inputs:
cache-read-only:
description: "Whether the Gradle Cache should be in read-only mode so this job won't be allowed to write to it"
default: "true"
cache-encryption-key:
description: "The encryption key needed to store the Gradle Configuration cache"
runs:
using: "composite"
steps:
- name: Setup gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-version: wrapper
# We want the Gradle cache to be written only on main/-stable branches run, and only for jobs with `cache-read-only` == false (i.e. `build_android`).
cache-read-only: ${{ (github.ref != 'refs/heads/main' && !contains(github.ref, '-stable')) || inputs.cache-read-only == 'true' }}
# Similarly, for those jobs we want to start with a clean cache so it doesn't grow without limits (this is the negation of the previous condition).
cache-write-only: ${{ (github.ref == 'refs/heads/main' || contains(github.ref, '-stable')) && inputs.cache-read-only != 'true' }}
add-job-summary-as-pr-comment: on-failure
# Encryption key for the Gradle Configuration Cache.
# See https://docs.gradle.org/8.6/userguide/configuration_cache.html#config_cache:secrets:configuring_encryption_key
cache-encryption-key: ${{ inputs.cache-encryption-key }}
================================================
FILE: .github/actions/setup-node/action.yml
================================================
name: Setup node.js
description: 'Set up your GitHub Actions workflow with a specific version of node.js'
inputs:
node-version:
description: 'The node.js version to use'
required: false
default: '22.14.0'
runs:
using: "composite"
steps:
- name: Setup node.js
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.node-version }}
cache: yarn
================================================
FILE: .github/actions/setup-xcode/action.yml
================================================
name: Setup xcode
description: 'Set up your GitHub Actions workflow with a specific version of xcode'
inputs:
xcode-version:
description: 'The xcode version to use'
required: false
default: '16.4.0'
runs:
using: "composite"
steps:
- name: Setup xcode
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd
with:
xcode-version: ${{ inputs.xcode-version }}
================================================
FILE: .github/actions/test-ios-helloworld/action.yml
================================================
name: test-ios-helloworld
description: Test iOS Hello World
inputs:
use-frameworks:
description: The dependency building and linking strategy to use. Must be one of "StaticLibraries", "DynamicFrameworks"
default: StaticLibraries
ruby-version:
description: The version of ruby that must be used
default: 2.6.10
flavor:
description: The flavor of the build. Must be one of "Debug", "Release".
default: Debug
runs:
using: composite
steps:
- name: Setup xcode
uses: ./.github/actions/setup-xcode
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Run yarn install
uses: ./.github/actions/yarn-install
- name: Setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ inputs.ruby-version }}
- name: Set nightly Hermes versions
shell: bash
run: |
node ./scripts/releases/use-hermes-nightly.js
- name: Run yarn install again, with the correct hermes version
uses: ./.github/actions/yarn-install
- name: Download ReactNativeDependencies
uses: actions/download-artifact@v7
with:
name: ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz
path: /tmp/third-party
- name: Print third-party folder
shell: bash
run: ls -lR /tmp/third-party
- name: Download React Native Prebuilds
uses: actions/download-artifact@v7
with:
name: ReactCore${{ inputs.flavor }}.xcframework.tar.gz
path: /tmp/ReactCore
- name: Print ReactCore folder
shell: bash
run: ls -lR /tmp/ReactCore
- name: Install iOS dependencies - Configuration ${{ inputs.flavor }};
shell: bash
run: |
cd private/helloworld
args=()
if [[ ${{ inputs.use-frameworks }} == "DynamicFrameworks" ]]; then
args+=(--frameworks dynamic)
fi
export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz"
export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz"
yarn bootstrap ios "${args[@]}" | cat
- name: Run Helloworld tests
shell: bash
run: |
cd private/helloworld
yarn test
- name: Build HelloWorld project
shell: bash
run: |
cd private/helloworld
args=()
if [[ ${{ inputs.flavor }} == "Release" ]]; then
args+=(--prod)
fi
yarn build ios "${args[@]}" | cat
yarn bundle ios "${args[@]}" | cat
================================================
FILE: .github/actions/test-ios-rntester/action.yml
================================================
name: test-ios-rntester
description: Test iOS RNTester
inputs:
ruby-version:
description: The version of ruby that must be used
default: 2.6.10
run-unit-tests:
description: whether unit tests should run or not.
default: false
flavor:
description: The flavor of the build. Must be one of "Debug", "Release".
default: Debug
run-e2e-tests:
description: Whether we want to run E2E tests or not
required: false
default: false
use-frameworks:
description: Whether we have to build with Dynamic Frameworks. If this is set to true, it builds from source
required: false
default: false
runs:
using: composite
steps:
- name: Setup xcode
uses: ./.github/actions/setup-xcode
- name: Setup node.js
uses: ./.github/actions/setup-node
- name: Run yarn
uses: ./.github/actions/yarn-install
- name: Setup ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ inputs.ruby-version }}
- name: Set nightly Hermes versions
shell: bash
run: |
node ./scripts/releases/use-hermes-nightly.js
- name: Run yarn install again, with the correct hermes version
uses: ./.github/actions/yarn-install
- name: Prepare IOS Tests
if: ${{ inputs.run-unit-tests == 'true' }}
uses: ./.github/actions/prepare-ios-tests
- name: Download ReactNativeDependencies
if: ${{ inputs.use-frameworks == 'false' }}
uses: actions/download-artifact@v7
with:
name: ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz
path: /tmp/third-party/
- name: Print third-party folder
if: ${{ inputs.use-frameworks == 'false' }}
shell: bash
run: ls -lR /tmp/third-party
- name: Download React Native Prebuilds
if: ${{ inputs.use-frameworks == 'false' }}
uses: actions/download-artifact@v7
with:
name: ReactCore${{ inputs.flavor }}.xcframework.tar.gz
path: /tmp/ReactCore
- name: Print ReactCore folder
if: ${{ inputs.use-frameworks == 'false' }}
shell: bash
run: ls -lR /tmp/ReactCore
- name: Install CocoaPods dependencies
shell: bash
run: |
if [[ ${{ inputs.use-frameworks }} == "true" ]]; then
export USE_FRAMEWORKS=dynamic
else
# If use-frameworks is false, let's use prebuilds
export RCT_USE_LOCAL_RN_DEP="/tmp/third-party/ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz"
export RCT_TESTONLY_RNCORE_TARBALL_PATH="/tmp/ReactCore/ReactCore${{ inputs.flavor }}.xcframework.tar.gz"
fi
cd packages/rn-tester
bundle install
bundle exec pod update hermes-engine --no-repo-update
- name: Build RNTester
shell: bash
run: |
xcodebuild \
-scheme "RNTester" \
-workspace packages/rn-tester/RNTesterPods.xcworkspace \
-configuration "${{ inputs.flavor }}" \
-sdk "iphonesimulator" \
-destination "generic/platform=iOS Simulator" \
-derivedDataPath "/tmp/RNTesterBuild"
echo "Print path to *.app file"
APP_PATH=$(find "/tmp/RNTesterBuild" -type d -name "*.app")
echo "App found at $APP_PATH"
echo "app-path=$APP_PATH" >> $GITHUB_ENV
- name: "Run Tests: iOS Unit and Integration Tests"
if: ${{ inputs.run-unit-tests == 'true' }}
shell: bash
run: yarn test-ios
- name: Zip Derived data folder
if: ${{ inputs.run-unit-tests == 'true' }}
shell: bash
run: |
echo "zipping tests results"
cd /Users/runner/Library/Developer/Xcode
tar -zcvf xcresults.tar.gz "/tmp/RNTesterTestResults"
- name: Upload artifact
uses: actions/upload-artifact@v6
if: ${{ inputs.run-unit-tests == 'true' }}
with:
name: xcresults-${{ inputs.flavor }}-${{ inputs.use-frameworks == 'true' && 'dynamic-frameworks' || 'static-libraries' }}-Ruby${{ inputs.ruby-version }}
path: /Users/runner/Library/Developer/Xcode/xcresults.tar.gz
- name: Upload RNTester App
if: ${{ inputs.use-frameworks == 'false' && inputs.ruby-version == '2.6.10' }} # This is needed to avoid conflicts with the artifacts
uses: actions/upload-artifact@v6
with:
name: RNTesterApp-NewArch-${{ inputs.flavor }}
path: ${{ env.app-path }}
- name: Store test results
if: ${{ inputs.run-unit-tests == 'true' }}
uses: actions/upload-artifact@v6
with:
name: test-results-${{ inputs.flavor }}-${{ inputs.use-frameworks == 'true' && 'dynamic-frameworks' || 'static-libraries' }}-Ruby${{ inputs.ruby-version }}
path: ./reports/junit
================================================
FILE: .github/actions/test-js/action.yml
================================================
name: test-js
description: Runs all the JS tests in the codebase
inputs:
node-version:
description: "The node.js version to use"
required: false
default: "22"
runs:
using: composite
steps:
- name: Setup node.js
uses: ./.github/actions/setup-node
with:
node-version: ${{ inputs.node-version }}
- name: Yarn install
uses: ./.github/actions/yarn-install
- name: Run Tests - JavaScript Tests
shell: bash
run: node ./scripts/run-ci-javascript-tests.js --maxWorkers 2
- name: Upload test results
if: ${{ always() }}
uses: actions/upload-artifact@v6
with:
name: test-js-results
compression-level: 1
path: ./reports/junit
================================================
FILE: .github/actions/yarn-install/action.yml
================================================
name: yarn-install
runs:
using: composite
steps:
- name: Install dependencies
shell: bash
run: |
MAX_ATTEMPTS=2
ATTEMPT=0
WAIT_TIME=20
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
yarn install --non-interactive --frozen-lockfile && break
echo "yarn install failed. Retrying in $WAIT_TIME seconds..."
sleep $WAIT_TIME
ATTEMPT=$((ATTEMPT + 1))
done
if [ $ATTEMPT -eq $MAX_ATTEMPTS ]; then
echo "All attempts to invoke yarn install failed - Aborting the workflow"
exit 1
fi
================================================
FILE: .github/workflow-scripts/__tests__/createDraftRelease-test.js
================================================
/**
* 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.
*
* @format
*/
const {
_verifyTagExists,
_extractChangelog,
_computeBody,
_createDraftReleaseOnGitHub,
} = require('../createDraftRelease');
const fs = require('fs');
const silence = () => {};
const mockFetch = jest.fn();
jest.mock('../utils.js', () => ({
log: silence,
}));
global.fetch = mockFetch;
describe('Create Draft Release', () => {
beforeEach(jest.clearAllMocks);
describe('#_verifyTagExists', () => {
it('throws if the tag does not exists', async () => {
const token = 'token';
mockFetch.mockReturnValueOnce(Promise.resolve({status: 404}));
await expect(_verifyTagExists('0.77.1')).rejects.toThrowError(
`Tag v0.77.1 does not exist`,
);
expect(mockFetch).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
'https://github.com/facebook/react-native/releases/tag/v0.77.1',
);
});
});
describe('#_extractChangelog', () => {
it(`extracts changelog from CHANGELOG.md`, async () => {
const mockedReturnValue = `# Changelog
## v0.77.2
- [PR #1234](https://github.com/facebook/react-native/pull/1234) - Some change
- [PR #5678](https://github.com/facebook/react-native/pull/5678) - Some other change
## v0.77.1
### Breaking Changes
- [PR #9012](https://github.com/facebook/react-native/pull/9012) - Some other change
#### Android
- [PR #3456](https://github.com/facebook/react-native/pull/3456) - Some other change
- [PR #3457](https://github.com/facebook/react-native/pull/3457) - Some other change
#### iOS
- [PR #3436](https://github.com/facebook/react-native/pull/3436) - Some other change
- [PR #3437](https://github.com/facebook/react-native/pull/3437) - Some other change
### Fixed
- [PR #9012](https://github.com/facebook/react-native/pull/9012) - Some other change
#### Android
- [PR #3456](https://github.com/facebook/react-native/pull/3456) - Some other change
#### iOS
- [PR #3437](https://github.com/facebook/react-native/pull/3437) - Some other change
## v0.77.0
- [PR #3456](https://github.com/facebook/react-native/pull/3456) - Some other change
## v0.76.0
- [PR #7890](https://github.com/facebook/react-native/pull/7890) - Some other change`;
jest.spyOn(fs, 'readFileSync').mockImplementationOnce(func => {
return mockedReturnValue;
});
const changelog = _extractChangelog('0.77.1');
expect(changelog).toEqual(`## v0.77.1
### Breaking Changes
- [PR #9012](https://github.com/facebook/react-native/pull/9012) - Some other change
#### Android
- [PR #3456](https://github.com/facebook/react-native/pull/3456) - Some other change
- [PR #3457](https://github.com/facebook/react-native/pull/3457) - Some other change
#### iOS
- [PR #3436](https://github.com/facebook/react-native/pull/3436) - Some other change
- [PR #3437](https://github.com/facebook/react-native/pull/3437) - Some other change
### Fixed
- [PR #9012](https://github.com/facebook/react-native/pull/9012) - Some other change
#### Android
- [PR #3456](https://github.com/facebook/react-native/pull/3456) - Some other change
#### iOS
- [PR #3437](https://github.com/facebook/react-native/pull/3437) - Some other change`);
});
it('does not extract changelog for rc.0', async () => {
const changelog = _extractChangelog('0.77.0-rc.0');
expect(changelog).toEqual('');
});
it('does not extract changelog for 0.X.0', async () => {
const changelog = _extractChangelog('0.77.0');
expect(changelog).toEqual('');
});
});
describe('#_computeBody', () => {
it('computes body for release when no hermes versions are passed', async () => {
const version = '0.77.1';
const changelog = `## v${version}
### Breaking Changes
- [PR #9012](https://github.com/facebook/react-native/pull/9012) - Some other change
#### Android
- [PR #3456](https://github.com/facebook/react-native/pull/3456) - Some other change
- [PR #3457](https://github.com/facebook/react-native/pull/3457) - Some other change
#### iOS
- [PR #3436](https://github.com/facebook/react-native/pull/3436) - Some other change
- [PR #3437](https://github.com/facebook/react-native/pull/3437) - Some other change`;
const body = _computeBody(changelog, version);
expect(body).toEqual(`${changelog}
---
Hermes dSYMS:
- [Debug](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${version}/hermes-ios-${version}-hermes-framework-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${version}/hermes-ios-${version}-hermes-framework-dSYM-release.tar.gz)
Hermes V1 dSYMS:
- [Debug](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${version}/hermes-ios-${version}-hermes-framework-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${version}/hermes-ios-${version}-hermes-framework-dSYM-release.tar.gz)
ReactNativeDependencies dSYMs:
- [Debug](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-dependencies-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-dependencies-dSYM-release.tar.gz)
ReactNative Core dSYMs:
- [Debug](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-core-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-core-release.tar.gz)
---
You can file issues or pick requests against this release [here](https://github.com/reactwg/react-native-releases/issues/new/choose).
---
To help you upgrade to this version, you can use the [Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) ⚛️.
---
View the whole changelog in the [CHANGELOG.md file](https://github.com/facebook/react-native/blob/main/CHANGELOG.md).`);
});
it('computes body for release when hermes versions are passed', async () => {
const version = '0.77.1';
const hermesVersion = '0.15.0';
const hermesV1Version = '250829098.0.2';
const changelog = `## v${version}
### Breaking Changes
- [PR #9012](https://github.com/facebook/react-native/pull/9012) - Some other change
#### Android
- [PR #3456](https://github.com/facebook/react-native/pull/3456) - Some other change
- [PR #3457](https://github.com/facebook/react-native/pull/3457) - Some other change
#### iOS
- [PR #3436](https://github.com/facebook/react-native/pull/3436) - Some other change
- [PR #3437](https://github.com/facebook/react-native/pull/3437) - Some other change`;
const body = _computeBody(
changelog,
version,
hermesVersion,
hermesV1Version,
);
expect(body).toEqual(`${changelog}
---
Hermes dSYMS:
- [Debug](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesVersion}/hermes-ios-${hermesVersion}-hermes-framework-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesVersion}/hermes-ios-${hermesVersion}-hermes-framework-dSYM-release.tar.gz)
Hermes V1 dSYMS:
- [Debug](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesV1Version}/hermes-ios-${hermesV1Version}-hermes-framework-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesV1Version}/hermes-ios-${hermesV1Version}-hermes-framework-dSYM-release.tar.gz)
ReactNativeDependencies dSYMs:
- [Debug](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-dependencies-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-dependencies-dSYM-release.tar.gz)
ReactNative Core dSYMs:
- [Debug](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-core-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-core-release.tar.gz)
---
You can file issues or pick requests against this release [here](https://github.com/reactwg/react-native-releases/issues/new/choose).
---
To help you upgrade to this version, you can use the [Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) ⚛️.
---
View the whole changelog in the [CHANGELOG.md file](https://github.com/facebook/react-native/blob/main/CHANGELOG.md).`);
});
});
describe('#_createDraftReleaseOnGitHub', () => {
it('creates a draft release on GitHub', async () => {
const version = '0.77.1';
const url = 'https://api.github.com/repos/facebook/react-native/releases';
const token = 'token';
const headers = {
Accept: 'Accept: application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
Authorization: `Bearer ${token}`,
};
const body = `Draft release body`;
const latest = true;
const fetchBody = JSON.stringify({
tag_name: `v${version}`,
name: `${version}`,
body: body,
draft: true,
prerelease: false,
make_latest: `${latest}`,
});
mockFetch.mockReturnValueOnce(
Promise.resolve({
status: 201,
json: () =>
Promise.resolve({
id: 1,
html_url:
'https://github.com/facebook/react-native/releases/tag/v0.77.1',
}),
}),
);
const response = await _createDraftReleaseOnGitHub(
version,
body,
latest,
token,
);
expect(mockFetch).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
`https://api.github.com/repos/facebook/react-native/releases`,
{
method: 'POST',
headers: headers,
body: fetchBody,
},
);
expect(response).toEqual({
id: 1,
html_url:
'https://github.com/facebook/react-native/releases/tag/v0.77.1',
});
});
it('creates a draft release for prerelease on GitHub', async () => {
const version = '0.77.0-rc.2';
const url = 'https://api.github.com/repos/facebook/react-native/releases';
const token = 'token';
const headers = {
Accept: 'Accept: application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
Authorization: `Bearer ${token}`,
};
const body = `Draft release body`;
const latest = true;
const fetchBody = JSON.stringify({
tag_name: `v${version}`,
name: `${version}`,
body: body,
draft: true,
prerelease: true,
make_latest: `${latest}`,
});
mockFetch.mockReturnValueOnce(
Promise.resolve({
status: 201,
json: () =>
Promise.resolve({
id: 1,
html_url:
'https://github.com/facebook/react-native/releases/tag/v0.77.1',
}),
}),
);
const response = await _createDraftReleaseOnGitHub(
version,
body,
latest,
token,
);
expect(mockFetch).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
`https://api.github.com/repos/facebook/react-native/releases`,
{
method: 'POST',
headers: headers,
body: fetchBody,
},
);
expect(response).toEqual({
id: 1,
html_url:
'https://github.com/facebook/react-native/releases/tag/v0.77.1',
});
});
it('throws if the post failes', async () => {
const version = '0.77.0-rc.2';
const url = 'https://api.github.com/repos/facebook/react-native/releases';
const token = 'token';
const headers = {
Accept: 'Accept: application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
Authorization: `Bearer ${token}`,
};
const body = `Draft release body`;
const latest = true;
const fetchBody = JSON.stringify({
tag_name: `v${version}`,
name: `${version}`,
body: body,
draft: true,
prerelease: true,
make_latest: `${latest}`,
});
mockFetch.mockReturnValueOnce(
Promise.resolve({
status: 401,
}),
);
await expect(
_createDraftReleaseOnGitHub(version, body, latest, token),
).rejects.toThrowError();
expect(mockFetch).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
`https://api.github.com/repos/facebook/react-native/releases`,
{
method: 'POST',
headers: headers,
body: fetchBody,
},
);
});
});
});
================================================
FILE: .github/workflow-scripts/__tests__/extractIssueOncalls-test.js
================================================
/**
* 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.
*
* @format
*/
const {extractIssueOncalls} = require('../extractIssueOncalls');
const userMap = {
'@g': '1785',
'@c': '1781',
'@s': '1272',
'@d': '1332',
'@m': '9555',
'@p': '6097',
'@f': '7565',
};
const schedule = {
'2025-04-01': ['@m', '@f'],
'2025-04-08': ['@g', '@d'],
};
describe('extractIssueOncalls', () => {
beforeEach(() => {
jest.clearAllMocks();
jest.useFakeTimers('modern');
});
afterEach(() => {
jest.useRealTimers();
});
it('extracts m and f on 6 of April', () => {
jest.setSystemTime(new Date(2025, 3, 6));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@m'], userMap['@f']]);
});
it('extracts m and f on 7 of April', () => {
jest.setSystemTime(new Date(2025, 3, 7));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@m'], userMap['@f']]);
});
it('extracts g and d on 8 of April', () => {
jest.setSystemTime(new Date(2025, 3, 8));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@g'], userMap['@d']]);
});
it('extracts g and d on 9 of April', () => {
jest.setSystemTime(new Date(2025, 3, 9));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@g'], userMap['@d']]);
});
it('extracts g and d on 10 of April', () => {
jest.setSystemTime(new Date(2025, 3, 10));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@g'], userMap['@d']]);
});
it('extracts g and d on 11 of April', () => {
jest.setSystemTime(new Date(2025, 3, 11));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@g'], userMap['@d']]);
});
it('extracts g and d on 12 of April', () => {
jest.setSystemTime(new Date(2025, 3, 12));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@g'], userMap['@d']]);
});
it('extracts g and d on 13 of April', () => {
jest.setSystemTime(new Date(2025, 3, 13));
const oncalls = extractIssueOncalls(schedule, userMap);
expect(oncalls).toEqual([userMap['@g'], userMap['@d']]);
});
});
================================================
FILE: .github/workflow-scripts/__tests__/generateChangelog-test.js
================================================
/**
* 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.
*
* @format
*/
const {
generateChangelog,
_computePreviousVersionFrom,
_generateChangelog,
_pushCommit,
_createPR,
} = require('../generateChangelog');
const silence = () => {};
const mockGetNpmPackageInfo = jest.fn();
const mockExecSync = jest.fn();
const mockRun = jest.fn();
const mockFetch = jest.fn();
const mockExit = jest.fn();
jest.mock('../utils.js', () => ({
log: silence,
run: mockRun,
getNpmPackageInfo: mockGetNpmPackageInfo,
}));
process.exit = mockExit;
global.fetch = mockFetch;
describe('Generate Changelog', () => {
beforeEach(jest.clearAllMocks);
describe('_computePreviousVersionFrom', () => {
it('returns rc.0 when rc is 1', async () => {
const currentVersion = '0.78.0-rc.1';
const expectedVersion = '0.78.0-rc.0';
const receivedVersion = await _computePreviousVersionFrom(currentVersion);
expect(receivedVersion).toEqual(expectedVersion);
});
it('returns previous rc version when rc is > 1', async () => {
const currentVersion = '0.78.0-rc.5';
const expectedVersion = '0.78.0-rc.4';
const receivedVersion = await _computePreviousVersionFrom(currentVersion);
expect(receivedVersion).toEqual(expectedVersion);
});
it('returns previous patch version when rc is 0', async () => {
const currentVersion = '0.78.0-rc.0';
const expectedVersion = '0.77.1';
mockGetNpmPackageInfo.mockReturnValueOnce(
Promise.resolve({version: '0.77.1'}),
);
const receivedVersion = await _computePreviousVersionFrom(currentVersion);
expect(receivedVersion).toEqual(expectedVersion);
});
it('returns patch 0 when patch is 1', async () => {
const currentVersion = '0.78.1';
const expectedVersion = '0.78.0';
const receivedVersion = await _computePreviousVersionFrom(currentVersion);
expect(receivedVersion).toEqual(expectedVersion);
});
it('returns previous patch when patch is > 1', async () => {
const currentVersion = '0.78.5';
const expectedVersion = '0.78.4';
const receivedVersion = await _computePreviousVersionFrom(currentVersion);
expect(receivedVersion).toEqual(expectedVersion);
});
it('returns null when patch is 0', async () => {
const currentVersion = '0.78.0';
const receivedVersion = await _computePreviousVersionFrom(currentVersion);
expect(receivedVersion).toBeNull();
});
it("throws an error when the version can't be parsed", async () => {
const currentVersion = '0.78.0-rc0';
await expect(
_computePreviousVersionFrom(currentVersion),
).rejects.toThrow();
});
});
describe('_generateChangelog', () => {
it('calls git in the right order', async () => {
const currentVersion = '0.79.0-rc5';
const previousVersion = '0.79.0-rc4';
const token = 'token';
expectedCommandArgs = [
'@rnx-kit/rn-changelog-generator',
'--base',
`v${previousVersion}`,
'--compare',
`v${currentVersion}`,
'--repo',
'.',
'--changelog',
'./CHANGELOG.md',
'--token',
`${token}`,
];
_generateChangelog(previousVersion, currentVersion, token);
expect(mockRun).toHaveBeenCalledTimes(4);
expect(mockRun).toHaveBeenNthCalledWith(1, 'git checkout main');
expect(mockRun).toHaveBeenNthCalledWith(2, 'git fetch');
expect(mockRun).toHaveBeenNthCalledWith(3, 'git pull origin main');
expect(mockRun).toHaveBeenNthCalledWith(
4,
`npx ${expectedCommandArgs.join(' ')}`,
);
});
});
describe('_pushCommit', () => {
it('calls git in the right order', async () => {
const currentVersion = '0.79.0-rc5';
_pushCommit(currentVersion);
expect(mockRun).toHaveBeenCalledTimes(4);
expect(mockRun).toHaveBeenNthCalledWith(
1,
`git checkout -b changelog/v${currentVersion}`,
);
expect(mockRun).toHaveBeenNthCalledWith(2, 'git add CHANGELOG.md');
expect(mockRun).toHaveBeenNthCalledWith(
3,
`git commit -m "[RN][Changelog] Add changelog for v${currentVersion}"`,
);
expect(mockRun).toHaveBeenNthCalledWith(
4,
`git push origin changelog/v${currentVersion}`,
);
});
});
describe('_createPR', () => {
it('throws error when status is not 201', async () => {
const currentVersion = '0.79.0-rc5';
const token = 'token';
mockFetch.mockReturnValueOnce(Promise.resolve({status: 401}));
const headers = {
Accept: 'Accept: application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
Authorization: `Bearer ${token}`,
};
const content = `
## Summary
Add Changelog for ${currentVersion}
## Changelog:
[Internal] - Add Changelog for ${currentVersion}
## Test Plan:
N/A`;
const body = {
title: `[RN][Changelog] Add changelog for v${currentVersion}`,
head: `changelog/v${currentVersion}`,
base: 'main',
body: content,
};
await expect(_createPR(currentVersion, token)).rejects.toThrow();
expect(mockFetch).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
'https://api.github.com/repos/facebook/react-native/pulls',
{
method: 'POST',
headers: headers,
body: JSON.stringify(body),
},
);
});
it('Returns the pr url', async () => {
const currentVersion = '0.79.0-rc5';
const token = 'token';
const expectedPrURL =
'https://github.com/facebook/react-native/pulls/1234';
const returnedObject = {
status: 201,
json: () => Promise.resolve({html_url: expectedPrURL}),
};
mockFetch.mockReturnValueOnce(Promise.resolve(returnedObject));
const headers = {
Accept: 'Accept: application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
Authorization: `Bearer ${token}`,
};
const content = `
## Summary
Add Changelog for ${currentVersion}
## Changelog:
[Internal] - Add Changelog for ${currentVersion}
## Test Plan:
N/A`;
const body = {
title: `[RN][Changelog] Add changelog for v${currentVersion}`,
head: `changelog/v${currentVersion}`,
base: 'main',
body: content,
};
const receivedPrURL = await _createPR(currentVersion, token);
expect(mockFetch).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
'https://api.github.com/repos/facebook/react-native/pulls',
{
method: 'POST',
headers: headers,
body: JSON.stringify(body),
},
);
expect(receivedPrURL).toEqual(expectedPrURL);
});
});
});
================================================
FILE: .github/workflow-scripts/__tests__/publishTemplate-test.js
================================================
/**
* 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.
*
* @format
*/
const {
publishTemplate,
verifyPublishedTemplate,
} = require('../publishTemplate');
const mockRun = jest.fn();
const mockSleep = jest.fn();
const mockGetNpmPackageInfo = jest.fn();
const mockVerifyPublishedPackage = jest.fn();
const silence = () => {};
jest.mock('../utils.js', () => ({
log: silence,
run: mockRun,
sleep: mockSleep,
getNpmPackageInfo: mockGetNpmPackageInfo,
}));
jest.mock('../verifyPublishedPackage.js', () => ({
verifyPublishedPackage: mockVerifyPublishedPackage,
}));
const getMockGithub = () => ({
rest: {
actions: {
createWorkflowDispatch: jest.fn(),
},
},
});
describe('#publishTemplate', () => {
beforeEach(jest.clearAllMocks);
it('checks commits for magic #publish-package-to-npm&latest string and sets latest', async () => {
mockRun.mockReturnValueOnce(`
The commit message
#publish-packages-to-npm&latest`);
const github = getMockGithub();
await publishTemplate(github, '0.76.0', true);
expect(github.rest.actions.createWorkflowDispatch).toHaveBeenCalledWith({
owner: 'react-native-community',
repo: 'template',
workflow_id: 'release.yaml',
ref: '0.76-stable',
inputs: {
dry_run: true,
is_latest_on_npm: true,
version: '0.76.0',
},
});
});
it('pubished as is_latest_on_npm = false if missing magic string', async () => {
mockRun.mockReturnValueOnce(`
The commit message without magic
`);
const github = getMockGithub();
await publishTemplate(github, '0.76.0', false);
expect(github.rest.actions.createWorkflowDispatch).toHaveBeenCalledWith({
owner: 'react-native-community',
repo: 'template',
workflow_id: 'release.yaml',
ref: '0.76-stable',
inputs: {
dry_run: false,
is_latest_on_npm: false,
version: '0.76.0',
},
});
});
});
describe('#verifyPublishedTemplate', () => {
beforeEach(jest.clearAllMocks);
it("waits on npm updating for version and not 'latest'", async () => {
const NOT_LATEST = false;
const version = '0.77.0';
await verifyPublishedTemplate(version, NOT_LATEST);
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'@react-native-community/template',
version,
null,
18,
);
});
it('waits on npm updating version and latest tag', async () => {
const IS_LATEST = true;
const version = '0.77.0';
await verifyPublishedTemplate(version, IS_LATEST);
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'@react-native-community/template',
version,
'latest',
18,
);
});
describe('retries', () => {
it('will timeout if npm does not update package version after a set number of retries', async () => {
const RETRIES = 2;
(await verifyPublishedTemplate('0.77.0', true, RETRIES),
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'@react-native-community/template',
'0.77.0',
'latest',
2,
));
});
});
});
================================================
FILE: .github/workflow-scripts/__tests__/verifyArtifactsAreOnMaven-test.js
================================================
/**
* 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.
*
* @format
*/
const {verifyArtifactsAreOnMaven} = require('../verifyArtifactsAreOnMaven');
const mockSleep = jest.fn();
const silence = () => {};
const mockFetch = jest.fn();
const mockExit = jest.fn();
jest.mock('../utils.js', () => ({
log: silence,
sleep: mockSleep,
}));
process.exit = mockExit;
global.fetch = mockFetch;
describe('#verifyArtifactsAreOnMaven', () => {
beforeEach(jest.clearAllMocks);
it('waits for the packages to be published on maven when version has no v', async () => {
mockSleep.mockReturnValueOnce(Promise.resolve()).mockImplementation(() => {
throw new Error('Should not be called again!');
});
mockFetch
.mockReturnValueOnce(Promise.resolve({status: 404}))
.mockReturnValueOnce(Promise.resolve({status: 200}));
const version = '0.78.1';
await verifyArtifactsAreOnMaven(version);
expect(mockSleep).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom',
);
});
it('waits for the packages to be published on maven, when version starts with v', async () => {
mockSleep.mockReturnValueOnce(Promise.resolve()).mockImplementation(() => {
throw new Error('Should not be called again!');
});
mockFetch
.mockReturnValueOnce(Promise.resolve({status: 404}))
.mockReturnValueOnce(Promise.resolve({status: 200}));
const version = 'v0.78.1';
await verifyArtifactsAreOnMaven(version);
expect(mockSleep).toHaveBeenCalledTimes(1);
expect(mockFetch).toHaveBeenCalledWith(
'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom',
);
});
it('passes immediately if packages are already on Maven', async () => {
mockFetch.mockReturnValueOnce(Promise.resolve({status: 200}));
const version = '0.78.1';
await verifyArtifactsAreOnMaven(version);
expect(mockSleep).toHaveBeenCalledTimes(0);
expect(mockFetch).toHaveBeenCalledWith(
'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom',
);
});
it('tries 90 times and then exits', async () => {
mockSleep.mockReturnValue(Promise.resolve());
mockFetch.mockReturnValue(Promise.resolve({status: 404}));
const version = '0.78.1';
await verifyArtifactsAreOnMaven(version);
expect(mockSleep).toHaveBeenCalledTimes(90);
expect(mockExit).toHaveBeenCalledWith(1);
expect(mockFetch).toHaveBeenCalledWith(
'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.78.1/react-native-artifacts-0.78.1.pom',
);
});
});
================================================
FILE: .github/workflow-scripts/__tests__/verifyPublishedPackage-test.js
================================================
/**
* 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.
*
* @format
*/
const {verifyPublishedPackage} = require('../verifyPublishedPackage');
const mockRun = jest.fn();
const mockSleep = jest.fn();
const mockGetNpmPackageInfo = jest.fn();
const silence = () => {};
const REACT_NATIVE_PACKAGE = 'react-native';
jest.mock('../utils.js', () => ({
log: silence,
run: mockRun,
sleep: mockSleep,
getNpmPackageInfo: mockGetNpmPackageInfo,
}));
describe('#verifyPublishedPackage', () => {
beforeEach(jest.clearAllMocks);
it("waits on npm updating for version and not 'latest'", async () => {
mockGetNpmPackageInfo
// template@<version>
.mockReturnValueOnce(Promise.reject('mock http/404'))
.mockReturnValueOnce(Promise.resolve());
mockSleep.mockReturnValueOnce(Promise.resolve()).mockImplementation(() => {
throw new Error('Should not be called again!');
});
const version = '0.78.0';
await verifyPublishedPackage(REACT_NATIVE_PACKAGE, version, null);
expect(mockGetNpmPackageInfo).toHaveBeenLastCalledWith(
REACT_NATIVE_PACKAGE,
version,
);
});
it('waits on npm updating version and latest tag', async () => {
const version = '0.78.0';
mockGetNpmPackageInfo
// template@latest → unknown tag
.mockReturnValueOnce(Promise.reject('mock http/404'))
// template@latest != version → old tag
.mockReturnValueOnce(Promise.resolve({version: '0.76.5'}))
// template@latest == version → correct tag
.mockReturnValueOnce(Promise.resolve({version}));
mockSleep
.mockReturnValueOnce(Promise.resolve())
.mockReturnValueOnce(Promise.resolve())
.mockImplementation(() => {
throw new Error('Should not be called again!');
});
await verifyPublishedPackage(REACT_NATIVE_PACKAGE, version, 'latest');
expect(mockGetNpmPackageInfo).toHaveBeenCalledWith(
REACT_NATIVE_PACKAGE,
'latest',
);
});
it('waits on npm updating version and next tag', async () => {
const version = '0.78.0-rc.0';
mockGetNpmPackageInfo
// template@latest → unknown tag
.mockReturnValueOnce(Promise.reject('mock http/404'))
// template@latest != version → old tag
.mockReturnValueOnce(Promise.resolve({version: '0.76.5'}))
// template@latest == version → correct tag
.mockReturnValueOnce(Promise.resolve({version}));
mockSleep
.mockReturnValueOnce(Promise.resolve())
.mockReturnValueOnce(Promise.resolve())
.mockImplementation(() => {
throw new Error('Should not be called again!');
});
await verifyPublishedPackage(REACT_NATIVE_PACKAGE, version, 'next');
expect(mockGetNpmPackageInfo).toHaveBeenCalledWith(
REACT_NATIVE_PACKAGE,
'next',
);
});
describe('timeouts', () => {
let mockProcess;
beforeEach(() => {
mockProcess = jest.spyOn(process, 'exit').mockImplementation(code => {
throw new Error(`process.exit(${code}) called!`);
});
});
afterEach(() => mockProcess.mockRestore());
it('will timeout if npm does not update package version after a set number of retries', async () => {
const RETRIES = 2;
mockGetNpmPackageInfo.mockReturnValue(Promise.reject('mock http/404'));
mockSleep.mockReturnValue(Promise.resolve());
await expect(() =>
verifyPublishedPackage(
REACT_NATIVE_PACKAGE,
'0.77.0',
'latest',
RETRIES,
),
).rejects.toThrowError('process.exit(1) called!');
expect(mockGetNpmPackageInfo).toHaveBeenCalledTimes(RETRIES);
});
it('will timeout if npm does not update latest tag after a set number of retries', async () => {
const RETRIES = 7;
const IS_LATEST = true;
mockGetNpmPackageInfo.mockReturnValue(
Promise.resolve({version: '0.76.5'}),
);
mockSleep.mockReturnValue(Promise.resolve());
await expect(async () => {
await verifyPublishedPackage(
REACT_NATIVE_PACKAGE,
'0.77.0',
'latest',
RETRIES,
);
}).rejects.toThrowError('process.exit(1) called!');
expect(mockGetNpmPackageInfo).toHaveBeenCalledTimes(RETRIES);
});
});
});
================================================
FILE: .github/workflow-scripts/__tests__/verifyReleaseOnNpm-test.js
================================================
/**
* 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.
*
* @format
*/
const {verifyReleaseOnNpm} = require('../verifyReleaseOnNpm');
const mockVerifyPublishedPackage = jest.fn();
const silence = () => {};
jest.mock('../utils.js', () => ({
log: silence,
sleep: silence,
}));
jest.mock('../verifyPublishedPackage.js', () => ({
verifyPublishedPackage: mockVerifyPublishedPackage,
}));
describe('#verifyReleaseOnNPM', () => {
beforeEach(jest.clearAllMocks);
it("waits on npm updating for version and not 'latest'", async () => {
const NOT_LATEST = false;
const version = '0.78.0';
await verifyReleaseOnNpm(version, NOT_LATEST);
expect(mockVerifyPublishedPackage).toHaveBeenLastCalledWith(
'react-native',
version,
null,
18,
);
});
it('waits on npm updating version and latest tag', async () => {
const IS_LATEST = true;
const version = '0.78.0';
await verifyReleaseOnNpm(version, IS_LATEST);
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'react-native',
version,
'latest',
18,
);
});
it('waits on npm updating version, not latest and next tag', async () => {
const IS_LATEST = false;
const version = '0.78.0-rc.0';
await verifyReleaseOnNpm(version, IS_LATEST);
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'react-native',
version,
'next',
18,
);
});
it('waits on npm updating version, latest and next tag', async () => {
const IS_LATEST = true;
const version = '0.78.0-rc.0';
await verifyReleaseOnNpm(version, IS_LATEST);
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'react-native',
version,
'next',
18,
);
});
describe('timeouts', () => {
it('will timeout if npm does not update package version after a set number of retries', async () => {
const RETRIES = 2;
(await verifyReleaseOnNpm('0.77.0', true, RETRIES),
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'react-native',
'0.77.0',
'latest',
2,
));
});
it('will timeout if npm does not update latest tag after a set number of retries', async () => {
const RETRIES = 7;
const IS_LATEST = true;
await verifyReleaseOnNpm('0.77.0', IS_LATEST, RETRIES);
expect(mockVerifyPublishedPackage).toHaveBeenCalledWith(
'react-native',
'0.77.0',
'latest',
7,
);
});
});
});
================================================
FILE: .github/workflow-scripts/actOnLabel.js
================================================
/**
* 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.
*
* @format
*/
module.exports = async (github, context, labelWithContext) => {
const closeIssue = async () => {
await github.rest.issues.update({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
state: 'closed',
});
};
const addComment = async comment => {
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment,
});
};
const requestAuthorFeedback = async () => {
// Remove the triage label if it exists (ignore the 404 if not; it's not expected to always be there)
try {
await github.rest.issues.removeLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'Needs: Triage :mag:',
});
} catch {}
await github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['Needs: Author Feedback'],
});
};
switch (labelWithContext.label) {
case 'Type: Invalid':
await addComment(
`> [!CAUTION]\n` +
`> **Invalid issue**: This issue is not valid, either is not a bug in React Native, it doesn't match any of the issue template, or we can't help further with this.`,
);
await closeIssue();
return;
case 'Type: Question':
await addComment(
`> [!NOTE]\n` +
`> **Not a bug report**: This issue looks like a question. We are using GitHub issues exclusively to track bugs in React Native. GitHub may not be the ideal place to ask a question, but you can try asking over on [Stack Overflow](http://stackoverflow.com/questions/tagged/react-native), or on [Reactiflux](https://www.reactiflux.com/).`,
);
await closeIssue();
return;
case 'Resolution: For Stack Overflow':
await addComment(
`> [!NOTE]\n` +
`> **Not a bug report**: This issue looks like a question. We are using GitHub issues exclusively to track bugs in React Native. GitHub may not be the ideal place to ask a question, but you can try asking over on [Stack Overflow](http://stackoverflow.com/questions/tagged/react-native), or on [Reactiflux](https://www.reactiflux.com/).`,
);
await closeIssue();
return;
case 'Type: Docs':
await addComment(
`> [!NOTE]\n` +
`> **Docs issue**: This issue looks like an issue related to our docs. Please report documentation issues in the [react-native-website](https://github.com/facebook/react-native-website/issues) repository.`,
);
await closeIssue();
return;
case 'Type: Expo':
await addComment(
`> [!NOTE]\n` +
`> **Expo related**: It looks like your issue is related to Expo and not React Native core. Please open your issue in [Expo's repository](https://github.com/expo/expo/issues/new). If you are able to create a repro that showcases that this issue is also happening in React Native vanilla, we will be happy to re-open.`,
);
await closeIssue();
return;
case 'Needs: Issue Template':
await addComment(
`> [!WARNING]\n` +
`> **Missing issue template**: It looks like your issue may be missing some necessary information. GitHub provides an example template whenever a [new issue is created](https://github.com/facebook/react-native/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A&projects=&template=bug_report.yml). Could you go back and make sure to fill out the template? You may edit this issue, or close it and open a new one.`,
);
await requestAuthorFeedback();
return;
case 'Needs: Environment Info':
await addComment(
`> [!WARNING]\n` +
`> **Missing info**: It looks like your issue may be missing information about your development environment. You can obtain the missing information by running <code>react-native info</code> in a console.`,
);
await requestAuthorFeedback();
return;
case 'Needs: Version Info':
await addComment(
`> [!WARNING]\n` +
`> **Could not parse version**: We could not find or parse the version number of React Native in your issue report. Please use the template, and report your version including major, minor, and patch numbers - e.g. 0.76.2.`,
);
await requestAuthorFeedback();
return;
case 'Needs: Repro':
await addComment(
`> [!WARNING]\n` +
`> **Missing reproducer**: We could not detect a reproducible example in your issue report. Reproducers are **mandatory** and we can accept only one of those as a valid reproducer: <br/><ul><li>For majority of bugs: send us a Pull Request with the [RNTesterPlayground.js](https://github.com/facebook/react-native/blob/main/packages/rn-tester/js/examples/Playground/RNTesterPlayground.js) edited to reproduce your bug.</li><li>If your bug is UI related: a [Snack](https://snack.expo.dev)</li><li> If your bug is build/upgrade related: a project using our [Reproducer Template](https://github.com/react-native-community/reproducer-react-native/generate)</li></ul><br/>You can read more about about it on our website: [How to report a bug](https://reactnative.dev/contributing/how-to-report-a-bug).`,
);
await requestAuthorFeedback();
return;
case 'Type: Unsupported Version':
await addComment(
`> [!WARNING]\n` +
`> **Unsupported version**: It looks like your issue or the example you provided uses an [unsupported version of React Native](https://github.com/reactwg/react-native-releases/blob/main/docs/support.md).<br/><br/>Due to the number of issues we receive, we're currently only accepting new issues against one of the supported versions. Please [upgrade](https://reactnative.dev/docs/upgrading) to latest and verify if the issue persists (alternatively, create a new project and repro the issue in it). If you cannot upgrade, please open your issue on [StackOverflow](https://stackoverflow.com/questions/tagged/react-native) to get further community support.`,
);
await requestAuthorFeedback();
return;
case 'Type: Too Old Version':
await addComment(
`> [!CAUTION]\n` +
`> **Too old version**: It looks like your issue or the example you provided uses a [**Too Old Version of React Native**](https://github.com/reactwg/react-native-releases/blob/main/docs/support.md).<br/><br/>Due to the number of issues we receive, we're currently only accepting new issues against one of the supported versions. Please [upgrade](https://reactnative.dev/docs/upgrading) to latest and verify if the issue persists (alternatively, create a new project and repro the issue in it). If you cannot upgrade, please open your issue on [StackOverflow](https://stackoverflow.com/questions/tagged/react-native) to get further community support.`,
);
await closeIssue();
return;
default:
// No action needed
return;
}
};
================================================
FILE: .github/workflow-scripts/addDescriptiveLabels.js
================================================
/**
* 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.
*
* @format
*/
module.exports = async (github, context) => {
const issue = context.payload.issue;
const title = issue?.title?.toLowerCase();
if (!title) return;
const addLabels = async labelsToAdd => {
await github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: labelsToAdd,
});
};
const labelsToAdd = [];
for (const component of components) {
if (title.includes(component.toLowerCase())) {
labelsToAdd.push(`Component: ${component}`);
}
}
for (const api of apis) {
if (title.includes(api.toLowerCase())) {
labelsToAdd.push(`API: ${api}`);
}
}
for (const topic of Object.keys(topics)) {
if (title.includes(topic.toLowerCase())) {
labelsToAdd.push(topics[topic]);
}
}
if (labelsToAdd.length > 0) {
await addLabels(labelsToAdd);
}
};
const labelAndroid = 'Platform: Android';
const labelIos = 'Platform: iOS';
const labelTvos = 'Platform: tvOS';
const labelNetworking = '🌐Networking';
const labelBundler = '📦Bundler';
const labelCli = '💻CLI';
const labelRegression = 'Impact: Regression';
const components = [
'ActivityIndicator',
'Button',
'DatePickerIOS',
'DrawerLayoutAndroid',
'FlatList',
'Image',
'ImageBackground',
'InputAccessoryView',
'KeyboardAvoidingView',
'ListView',
'MaskedViewIOS',
'Modal',
'NavigatorIOS',
'Picker',
'PickerIOS',
'ProgressBarAndroid',
'ProgressViewIOS',
'RefreshControl',
'SafeAreaView',
'ScrollView',
'SectionList',
'SegmentedControlIOS',
'Slider',
'SnapshotViewIOS',
'StatusBar',
'Switch',
'TabBarIOS',
'TextInput',
'ToolbarAndroid',
'TouchableHighlight',
'TouchableNativeFeedback',
'TouchableOpacity',
'TouchableWithoutFeedback',
'ViewPagerAndroid',
'VirtualizedList',
'WebView',
];
const apis = [
'AccessibilityInfo',
'ActionSheetIOS',
'Alert',
'AlertIOS',
'Animated',
'AppRegistry',
'AppState',
'AsyncStorage',
'BackAndroid',
'BackHandler',
'CameraRoll',
'Clipboard',
'DatePickerAndroid',
'Dimensions',
'Easing',
'Geolocation',
'ImageEditor',
'ImagePickerIOS',
'ImageStore',
'InteractionManager',
'Keyboard',
'LayoutAnimation',
'Linking',
'ListViewDataSource',
'NetInfo',
'PanResponder',
'PermissionsAndroid',
'PixelRatio',
'PushNotificationIOS',
'Settings',
'Share',
'StatusBarIOS',
'StyleSheet',
'Systrace',
'TimePickerAndroid',
'ToastAndroid',
'Transforms',
'Vibration',
'VibrationIOS',
];
const topics = {
Flow: 'Flow',
'Flow-Strict': 'Flow',
xhr: labelNetworking,
netinfo: labelNetworking,
fetch: labelNetworking,
okhttp: labelNetworking,
http: labelNetworking,
bundle: labelBundler,
bundling: labelBundler,
packager: labelBundler,
'unable to resolve module': labelBundler,
android: labelAndroid,
ios: labelIos,
tvos: labelTvos,
'react-native-cli': labelCli,
'react-native upgrade': labelCli,
'react-native link': labelCli,
regression: labelRegression,
};
================================================
FILE: .github/workflow-scripts/analyze_scripts.sh
================================================
#!/bin/bash
# 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.
GITHUB_OWNER=-facebook
GITHUB_REPO=-react-native
export GITHUB_OWNER
export GITHUB_REPO
if [ -x "$(command -v shellcheck)" ]; then
IFS=$'\n'
find . \
-type f \
-not -path "*node_modules*" \
-not -path "*third-party*" \
-not -path "*vendor*" \
-name '*.sh' \
-exec sh -c 'shellcheck "$1"' -- {} \;
else
echo 'shellcheck is not installed. See https://github.com/facebook/react-native/wiki/Development-Dependencies#shellcheck for instructions.'
exit 1
fi
================================================
FILE: .github/workflow-scripts/checkBranchTarget.js
================================================
/**
* 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.
*
* @format
*/
'use strict';
/**
* Validates that the PR targets an appropriate base branch.
*
* @param {string} baseRef - The base branch ref (e.g., 'main', '0.76-stable')
* @returns {{message: string, status: 'PASS'|'FAIL', shouldAddPickLabel: boolean}}
*/
function checkBranchTarget(baseRef) {
const isMain = baseRef === 'main';
const isStable = baseRef.endsWith('-stable');
let message = '';
let status = 'PASS';
if (!isMain && !isStable) {
status = 'FAIL';
message = `> [!CAUTION]
> **Invalid Base Branch**
>
> The base branch for this PR is \`${baseRef}\`, which is not \`main\` or a \`-stable\` branch.
> [Are you sure you want to target this branch?](https://reactnative.dev/docs/contributing#pull-requests)`;
}
return {
message,
status,
shouldAddPickLabel: isStable,
};
}
module.exports = checkBranchTarget;
================================================
FILE: .github/workflow-scripts/checkForReproducer.js
================================================
/**
* 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.
*
* @format
*/
const NEEDS_REPRO_LABEL = 'Needs: Repro';
const NEEDS_AUTHOR_FEEDBACK_LABEL = 'Needs: Author Feedback';
const SKIP_ISSUES_OLDER_THAN = '2023-07-01T00:00:00Z';
module.exports = async (github, context) => {
const issueData = {
issue_number: context.payload.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
};
const issue = await github.rest.issues.get(issueData);
const comments = await github.rest.issues.listComments(issueData);
const author = issue.data.user.login;
const issueDate = issue.data.created_at;
if (isDateBefore(issueDate, SKIP_ISSUES_OLDER_THAN)) {
return;
}
const maintainerChangedLabel = await hasMaintainerChangedLabel(
github,
issueData,
author,
);
if (maintainerChangedLabel) {
return;
}
const entities = [issue.data, ...comments.data];
// Look for Snack or a GH repo associated with the user that added an issue or comment
const hasValidReproducer = entities.some(entity => {
const hasPullRequestRepoLink = containsPattern(
entity.body,
`https?:\/\/github\.com\/facebook\/react-native\/pull\/\d+\/?`,
);
const hasExpoSnackLink = containsPattern(
entity.body,
`https?:\\/\\/snack\\.expo\\.dev\\/[^\\s)\\]]+`,
);
const hasGithubRepoLink = containsPattern(
entity.body,
`https?:\\/\\/github\\.com\\/(${entity.user.login})\\/[^/]+\\/?\\s?`,
);
return hasPullRequestRepoLink || hasExpoSnackLink || hasGithubRepoLink;
});
if (hasValidReproducer) {
try {
await github.rest.issues.removeLabel({
...issueData,
name: NEEDS_REPRO_LABEL,
});
} catch (error) {
if (!/Label does not exist/.test(error.message)) {
throw error;
}
}
} else {
await github.rest.issues.addLabels({
...issueData,
labels: [NEEDS_REPRO_LABEL, NEEDS_AUTHOR_FEEDBACK_LABEL],
});
}
};
function containsPattern(body, pattern) {
const regexp = new RegExp(pattern, 'gm');
return body.search(regexp) !== -1;
}
// Prevents the bot from responding when maintainer has changed the 'Needs: Repro' label
async function hasMaintainerChangedLabel(github, issueData, author) {
const timeline = await github.rest.issues.listEventsForTimeline(issueData);
const labeledEvents = timeline.data.filter(
event => event.event === 'labeled' || event.event === 'unlabeled',
);
const userEvents = labeledEvents.filter(event => event.actor.type !== 'Bot');
return userEvents.some(
event =>
event.actor.login !== author && event.label.name === NEEDS_REPRO_LABEL,
);
}
function isDateBefore(firstDate, secondDate) {
const date1 = new Date(firstDate);
const date2 = new Date(secondDate);
return date1.getTime() < date2.getTime();
}
================================================
FILE: .github/workflow-scripts/createDraftRelease.js
================================================
/**
* 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.
*
* @format
*/
const {log, run} = require('./utils');
const fs = require('fs');
function _headers(token) {
return {
Accept: 'Accept: application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
Authorization: `Bearer ${token}`,
};
}
function _extractChangelog(version) {
if (version.endsWith('.0')) {
// for RC.0 and for the release of a new stable minor, the changelog is too long
// to be added in a release. The release body is usually something shorter.
// See for example the release for 0.76.0 or 0.77.0:
// 0.76: https://github.com/facebook/react-native/releases/tag/v0.76.0
// 0.77: https://github.com/facebook/react-native/releases/tag/v0.77.0
return '';
}
const changelog = String(fs.readFileSync('CHANGELOG.md', 'utf8')).split('\n');
const changelogStarts = changelog.indexOf(`## v${version}`);
let changelogEnds = changelogStarts;
// Scan the changelog to find the next version
for (var line = changelogStarts + 1; line < changelog.length; line++) {
if (changelog[line].startsWith('## ')) {
changelogEnds = line;
break;
}
}
return changelog.slice(changelogStarts, changelogEnds).join('\n').trim();
}
function _computeBody(changelog, version, hermesVersion, hermesV1Version) {
hermesVersion = hermesVersion ?? version;
hermesV1Version = hermesV1Version ?? version;
return `${changelog}
---
Hermes dSYMS:
- [Debug](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesVersion}/hermes-ios-${hermesVersion}-hermes-framework-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesVersion}/hermes-ios-${hermesVersion}-hermes-framework-dSYM-release.tar.gz)
Hermes V1 dSYMS:
- [Debug](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesV1Version}/hermes-ios-${hermesV1Version}-hermes-framework-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/hermes/hermes-ios/${hermesV1Version}/hermes-ios-${hermesV1Version}-hermes-framework-dSYM-release.tar.gz)
ReactNativeDependencies dSYMs:
- [Debug](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-dependencies-dSYM-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-dependencies-dSYM-release.tar.gz)
ReactNative Core dSYMs:
- [Debug](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-core-debug.tar.gz)
- [Release](https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/${version}/react-native-artifacts-${version}-reactnative-core-release.tar.gz)
---
You can file issues or pick requests against this release [here](https://github.com/reactwg/react-native-releases/issues/new/choose).
---
To help you upgrade to this version, you can use the [Upgrade Helper](https://react-native-community.github.io/upgrade-helper/) ⚛️.
---
View the whole changelog in the [CHANGELOG.md file](https://github.com/facebook/react-native/blob/main/CHANGELOG.md).`;
}
async function _verifyTagExists(version) {
const url = `https://github.com/facebook/react-native/releases/tag/v${version}`;
const response = await fetch(url);
if (response.status === 404) {
throw new Error(`Tag v${version} does not exist`);
}
}
async function _createDraftReleaseOnGitHub(version, body, latest, token) {
const url = 'https://api.github.com/repos/facebook/react-native/releases';
const method = 'POST';
const headers = _headers(token);
const fetchBody = JSON.stringify({
tag_name: `v${version}`,
name: `${version}`,
body: body,
draft: true, // NEVER CHANGE this value to false. If false, it will publish the release, and send a GH notification to all the subscribers.
prerelease: version.includes('-rc.') ? true : false,
make_latest: `${latest}`,
});
const response = await fetch(url, {
method,
headers,
body: fetchBody,
});
if (response.status !== 201) {
throw new Error(
`Failed to create the release: ${response.status} ${response.statusText}`,
);
}
const data = await response.json();
const {html_url, id} = data;
return {
html_url,
id,
};
}
function moveToChangelogBranch(version) {
log(`Moving to changelog branch: changelog/v${version}`);
run(`git checkout -b changelog/v${version}`);
}
async function createDraftRelease(
version,
latest,
token,
hermesVersion,
hermesV1Version,
) {
if (version.startsWith('v')) {
version = version.substring(1);
}
_verifyTagExists(version);
moveToChangelogBranch(version);
const changelog = _extractChangelog(version);
const body = _computeBody(changelog, version, hermesVersion, hermesV1Version);
const release = await _createDraftReleaseOnGitHub(
version,
body,
latest,
token,
);
log(`Created draft release: ${release.html_url}, ID ${release.id}`);
return release;
}
module.exports = {
createDraftRelease,
// Exported for testing purposes
_verifyTagExists,
_extractChangelog,
_computeBody,
_createDraftReleaseOnGitHub,
};
================================================
FILE: .github/workflow-scripts/exec_swallow_error.sh
================================================
#!/bin/bash
# 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.
# execute command
"$@"
# check status
STATUS=$?
if [ $STATUS == 0 ]; then
echo "Command " "$@" " completed successfully"
else
echo "Command " "$@" " exited with error status $STATUS"
fi
================================================
FILE: .github/workflow-scripts/extractIssueOncalls.js
================================================
/**
* 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.
*
* @format
*/
const fs = require('fs');
const MSEC_IN_DAY = 1000 * 60 * 60 * 24;
function formatUsers(users) {
console.log(`${users[0]} ${users[1]}`.trim());
}
function extractUsersFromScheduleAndDate(schedule, userMap, date) {
const year = date.getFullYear();
const month = date.getMonth() + 1; // 0 is January, 1 is February
const day = date.getDate();
const dateStr = `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`;
const user1 = userMap[schedule[dateStr][0]];
const user2 = userMap[schedule[dateStr][1]];
return [user1, user2];
}
/**
* You can invoke this script by doing:
* ```
* node .github/workflow-scripts/extractIssueOncalls.js $DATA
* ```
*
* the $DATA is stored in the github secrets as ONCALL_SCHEDULE variable.
* The format of the data is:
* ```
* {
* \"userMap\": {
* \"discord_handle1\": \"discord_id1\",
* \"discord_handle2\": \"discord_id2\",
* ...
* },
* \"schedule\": {
* \"2025-07-29\": [\"discord_handle1\", \"discord_handle2\"],
* \"2025-08-05\": [\"discord_handle3\", \"discord_handle4\"],
* ...
* }
* ```
*
* When uploading the secret, make sure that the JSON strings are escaped!
* The script will fail otherwise, because GitHub will remove the `"` characters.
*/
function main() {
const configuration = process.argv[2];
const {userMap, schedule} = JSON.parse(configuration);
extractIssueOncalls(schedule, userMap);
}
function extractIssueOncalls(schedule, userMap) {
const now = new Date();
const dayOfTheWeek = now.getDay(); // 0 is Sunday, 1 is Monday, etc.
let users;
if (dayOfTheWeek === 2) {
// exact match in the schedule
users = extractUsersFromScheduleAndDate(schedule, userMap, now);
} else if (dayOfTheWeek < 2) {
// sunday
// go to the tuesday of the last week
const lastWeekTuesday = new Date(now - (5 + dayOfTheWeek) * MSEC_IN_DAY);
users = extractUsersFromScheduleAndDate(schedule, userMap, lastWeekTuesday);
} else if (dayOfTheWeek > 1) {
// go to the previous tuesday
const thisWeekTuesday = new Date(now - (dayOfTheWeek - 2) * MSEC_IN_DAY);
users = extractUsersFromScheduleAndDate(schedule, userMap, thisWeekTuesday);
}
formatUsers(users);
return users;
}
if (require.main === module) {
void main();
}
module.exports = {
extractIssueOncalls,
};
================================================
FILE: .github/workflow-scripts/generateChangelog.js
================================================
/**
* 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.
*
* @format
*/
const {log, getNpmPackageInfo, run} = require('./utils');
async function _computePreviousVersionFrom(version) {
log(`Computing previous version from: ${version}`);
const regex = /^0\.(\d+)\.(\d+)(-rc\.(\d+))?$/;
const match = version.match(regex);
if (!match) {
throw new Error(`Invalid version format: ${version}`);
}
const minor = match[1];
const patch = match[2];
const rc = match[4];
if (rc) {
if (Number(rc) > 0) {
return `0.${minor}.${patch}-rc.${Number(rc) - 1}`;
}
//fetch latest version on NPM
const latestPkg = await getNpmPackageInfo('react-native', 'latest');
return latestPkg.version;
} else {
if (Number(patch) === 0) {
// No need to generate the changelog for 0.X.0 as we already generated it from RCs
log(
`Skipping changelog generation for ${version} as we already have it from the RCs`,
);
return null;
}
return `0.${minor}.${Number(patch) - 1}`;
}
}
function _generateChangelog(previousVersion, version, token) {
log(`Generating changelog for ${version} from ${previousVersion}`);
run('git checkout main');
run('git fetch');
run('git pull origin main');
const generateChangelogCommand = `npx @rnx-kit/rn-changelog-generator --base v${previousVersion} --compare v${version} --repo . --changelog ./CHANGELOG.md --token ${token}`;
run(generateChangelogCommand);
}
function _pushCommit(version) {
log(`Pushing commit to changelog/v${version}`);
run(`git checkout -b changelog/v${version}`);
run('git add CHANGELOG.md');
run(`git commit -m "[RN][Changelog] Add changelog for v${version}"`);
run(`git push origin changelog/v${version}`);
}
async function _createPR(version, token) {
log('Creating changelog pr');
const url = 'https://api.github.com/repos/facebook/react-native/pulls';
const body = `
## Summary
Add Changelog for ${version}
## Changelog:
[Internal] - Add Changelog for ${version}
## Test Plan:
N/A`;
const response = await fetch(url, {
method: 'POST',
headers: {
Accept: 'Accept: application/vnd.github+json',
'X-GitHub-Api-Version': '2022-11-28',
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
title: `[RN][Changelog] Add changelog for v${version}`,
head: `changelog/v${version}`,
base: 'main',
body: body,
}),
});
if (response.status !== 201) {
throw new Error(
`Failed to create PR: ${response.status} ${response.statusText}`,
);
}
const data = await response.json();
return data.html_url;
}
async function generateChangelog(version, token) {
if (version.startsWith('v')) {
version = version.substring(1);
}
const previousVersion = await _computePreviousVersionFrom(version);
if (previousVersion) {
log(`Previous version is ${previousVersion}`);
_generateChangelog(previousVersion, version, token);
_pushCommit(version);
const prURL = await _createPR(version, token);
log(`Created PR: ${prURL}`);
}
}
module.exports = {
generateChangelog,
// Exported only for testing purposes:
_computePreviousVersionFrom,
_generateChangelog,
_pushCommit,
_createPR,
};
================================================
FILE: .github/workflow-scripts/hermes-v1.patch
================================================
diff --git a/android/settings.gradle b/android/settings.gradle
index 63b5d4e..6359ec3 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -4,3 +4,11 @@ extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autoli
rootProject.name = 'RNApp'
include ':app'
includeBuild('../node_modules/@react-native/gradle-plugin')
+
+includeBuild('../node_modules/react-native') {
+ dependencySubstitution {
+ substitute(module("com.facebook.react:react-android")).using(project(":packages:react-native:ReactAndroid"))
+ substitute(module("com.facebook.react:react-native")).using(project(":packages:react-native:ReactAndroid"))
+ substitute(project(":packages:react-native:ReactAndroid:hermes-engine")).using(module("com.facebook.hermes:hermes-android:$HERMES_V1_VERSION"))
+ }
+}
diff --git a/package.json b/package.json
index f05d51b..69938af 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,9 @@
"react-test-renderer": "19.2.0",
"typescript": "^5.8.3"
},
+ "resolutions": {
+ "hermes-compiler": "$HERMES_V1_VERSION"
+ },
"engines": {
"node": ">=20"
}
================================================
FILE: .github/workflow-scripts/lint_files.sh
================================================
#!/bin/bash
# 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.
set -e
if git ls-files | grep -E '\.npmignore$'; then
echo "Error: Found unexpected .npmignore file(s). Please use package.json#files instead."
exit 1
fi
================================================
FILE: .github/workflow-scripts/maestro-android.js
================================================
/**
* 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.
*
* @format
*/
const childProcess = require('child_process');
const fs = require('fs');
const usage = `
=== Usage ===
node maestro-android.js <path to app> <app_id> <maestro_flow> <flavor> <working_directory>
@param {string} appPath - Path to the app APK
@param {string} appId - App ID that needs to be launched
@param {string} maestroFlow - Path to the maestro flow to be executed
@param {string} flavor - Flavor of the app to be launched. Can be 'release' or 'debug'
@param {string} workingDirectory - Working directory from where to run Metro
==============
`;
const args = process.argv.slice(2);
if (args.length !== 5) {
throw new Error(`Invalid number of arguments.\n${usage}`);
}
const APP_PATH = args[0];
const APP_ID = args[1];
const MAESTRO_FLOW = args[2];
const IS_DEBUG = args[3] === 'debug';
const WORKING_DIRECTORY = args[4];
const MAX_ATTEMPTS = 3;
async function executeFlowWithRetries(flow, currentAttempt) {
try {
console.info(`Executing flow: ${flow}`);
const timeout = 1000 * 60 * 10; // 10 minutes
childProcess.execSync(
`MAESTRO_DRIVER_STARTUP_TIMEOUT=120000 $HOME/.maestro/bin/maestro test ${flow} --format junit -e APP_ID=${APP_ID} --debug-output /tmp/MaestroLogs`,
{stdio: 'inherit', timeout},
);
} catch (err) {
if (currentAttempt < MAX_ATTEMPTS) {
console.info(`Retrying...`);
await executeFlowWithRetries(flow, currentAttempt + 1);
} else {
throw err;
}
}
}
async function executeFlowInFolder(flowFolder) {
const files = fs.readdirSync(flowFolder);
for (const file of files) {
const filePath = `${flowFolder}/${file}`;
if (fs.lstatSync(filePath).isDirectory()) {
await executeFlowInFolder(filePath);
} else {
await executeFlowWithRetries(filePath, 0);
}
}
}
async function main() {
console.info('\n==============================');
console.info('Running tests for Android with the following parameters:');
console.info(`APP_PATH: ${APP_PATH}`);
console.info(`APP_ID: ${APP_ID}`);
console.info(`MAESTRO_FLOW: ${MAESTRO_FLOW}`);
console.info(`IS_DEBUG: ${IS_DEBUG}`);
console.info(`WORKING_DIRECTORY: ${WORKING_DIRECTORY}`);
console.info('==============================\n');
console.info('Install app');
childProcess.execSync(`adb install ${APP_PATH}`, {stdio: 'ignore'});
let metroProcess = null;
if (IS_DEBUG) {
console.info('Start Metro');
childProcess.execSync(`cd ${WORKING_DIRECTORY}`, {stdio: 'ignore'});
metroProcess = childProcess.spawn('yarn', ['start', '&'], {
cwd: WORKING_DIRECTORY,
stdio: 'ignore',
detached: true,
});
metroProcess.unref();
console.info(`- Metro PID: ${metroProcess.pid}`);
console.info('Wait For Metro to Start');
await sleep(5000);
}
console.info('Start the app');
childProcess.execSync(`adb shell monkey -p ${APP_ID} 1`, {stdio: 'ignore'});
if (IS_DEBUG) {
console.info('Wait For App to warm from Metro');
await sleep(10000);
}
console.info('Start recording to /sdcard/screen.mp4');
childProcess
.exec('adb shell screenrecord /sdcard/screen.mp4', {
stdio: 'ignore',
detached: true,
})
.unref();
console.info(`Start testing ${MAESTRO_FLOW}`);
let error = null;
try {
//check if MAESTRO_FLOW is a folder
if (
fs.existsSync(MAESTRO_FLOW) &&
fs.lstatSync(MAESTRO_FLOW).isDirectory()
) {
await executeFlowInFolder(MAESTRO_FLOW);
} else {
await executeFlowWithRetries(MAESTRO_FLOW, 0);
}
} catch (err) {
error = err;
} finally {
console.info('Stop recording');
childProcess.execSync('adb pull /sdcard/screen.mp4', {stdio: 'ignore'});
if (IS_DEBUG && metroProcess != null) {
const pid = metroProcess.pid;
console.info(`Kill Metro. PID: ${pid}`);
process.kill(pid);
console.info(`Metro Killed`);
}
}
if (error) {
throw error;
}
process.exit();
}
function sleep(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
main();
================================================
FILE: .github/workflow-scripts/maestro-ios.js
================================================
/**
* 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.
*
* @format
*/
const childProcess = require('child_process');
const fs = require('fs');
const usage = `
=== Usage ===
node maestro-android.js <path to app> <app_id> <maestro_flow> <flavor> <working_directory>
@param {string} appPath - Path to the app APK
@param {string} appId - App ID that needs to be launched
@param {string} maestroFlow - Path to the maestro flow to be executed
@param {string} jsengine - The JSEngine to use for the test
@param {string} flavor - Flavor of the app to be launched. Can be 'Release' or 'Debug'
@param {string} workingDirectory - Working directory from where to run Metro
==============
`;
const args = process.argv.slice(2);
if (args.length !== 6) {
throw new Error(`Invalid number of arguments.\n${usage}`);
}
const APP_PATH = args[0];
const APP_ID = args[1];
const MAESTRO_FLOW = args[2];
const JS_ENGINE = args[3];
const IS_DEBUG = args[4] === 'Debug';
const WORKING_DIRECTORY = args[5];
const MAX_ATTEMPTS = 5;
function launchSimulator(simulatorName) {
console.log(`Launching simulator ${simulatorName}`);
try {
childProcess.execSync(`xcrun simctl boot "${simulatorName}"`);
} catch (error) {
if (
!error.message.includes('Unable to boot device in current state: Booted')
) {
throw error;
}
}
}
function installAppOnSimulator(appPath) {
console.log(`Installing app at path ${appPath}`);
childProcess.execSync(`xcrun simctl install booted "${appPath}"`);
}
function extractSimulatorUDID() {
console.log('Retrieving device UDID');
const command = `xcrun simctl list devices booted -j | jq -r '[.devices[]] | add | first | .udid'`;
const udid = String(childProcess.execSync(command)).trim();
console.log(`UDID is ${udid}`);
return udid;
}
function bringSimulatorInForeground() {
console.log('Bringing simulator in foreground');
childProcess.execSync('open -a simulator');
}
function sleep(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
async function launchAppOnSimulator(appId, udid, isDebug) {
console.log('Launch the app');
childProcess.execSync(`xcrun simctl launch "${udid}" "${appId}"`);
if (isDebug) {
console.log('Wait for metro to warm');
await sleep(20 * 1000);
}
}
function startVideoRecording(jsengine, currentAttempt) {
console.log(
`Start video record using pid: video_record_${currentAttempt}.pid`,
);
const recordingArgs =
`simctl io booted recordVideo video_record_${currentAttempt}.mov`.split(
' ',
);
const recordingProcess = childProcess.spawn('xcrun', recordingArgs, {
detached: true,
stdio: 'ignore',
});
return recordingProcess;
}
function stopVideoRecording(recordingProcess) {
if (!recordingProcess) {
console.log("Passed a null recording process. Can't kill it");
return;
}
console.log(`Stop video record using pid: ${recordingProcess.pid}`);
recordingProcess.kill('SIGINT');
}
function executeTestsWithRetries(
appId,
udid,
maestroFlow,
jsengine,
currentAttempt,
) {
const recProcess = startVideoRecording(jsengine, currentAttempt);
try {
const timeout = 1000 * 60 * 10; // 10 minutes
const command = `$HOME/.maestro/bin/maestro --udid="${udid}" test "${maestroFlow}" --format junit -e APP_ID="${appId}"`;
console.log(command);
childProcess.execSync(`MAESTRO_DRIVER_STARTUP_TIMEOUT=1500000 ${command}`, {
stdio: 'inherit',
timeout,
});
stopVideoRecording(recProcess);
} catch (error) {
// Can't put this in the finally block because it will be executed after the
// recursive call of executeTestsWithRetries
stopVideoRecording(recProcess);
if (currentAttempt < MAX_ATTEMPTS) {
executeTestsWithRetries(
appId,
udid,
maestroFlow,
jsengine,
currentAttempt + 1,
);
} else {
console.error(`Failed to execute flow after ${MAX_ATTEMPTS} attempts.`);
throw error;
}
}
}
async function main() {
console.info('\n==============================');
console.info('Running tests for iOS with the following parameters:');
console.info(`APP_PATH: ${APP_PATH}`);
console.info(`APP_ID: ${APP_ID}`);
console.info(`MAESTRO_FLOW: ${MAESTRO_FLOW}`);
console.info(`JS_ENGINE: ${JS_ENGINE}`);
console.info(`IS_DEBUG: ${IS_DEBUG}`);
console.info(`WORKING_DIRECTORY: ${WORKING_DIRECTORY}`);
console.info('==============================\n');
const simulatorName = 'iPhone 16 Pro';
launchSimulator(simulatorName);
installAppOnSimulator(APP_PATH);
const udid = extractSimulatorUDID();
bringSimulatorInForeground();
await launchAppOnSimulator(APP_ID, udid, IS_DEBUG);
executeTestsWithRetries(APP_ID, udid, MAESTRO_FLOW, JS_ENGINE, 1);
console.log('Test finished');
process.exit(0);
}
main();
================================================
FILE: .github/workflow-scripts/publishTemplate.js
================================================
/**
* 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.
*
* @format
*/
const {run, sleep, log} = require('./utils.js');
const {verifyPublishedPackage} = require('./verifyPublishedPackage.js');
const TAG_AS_LATEST_REGEX = /#publish-packages-to-npm&latest/;
/**
* Should this commit be `latest` on npm?
*/
function isLatest() {
const commitMessage = run('git log -n1 --pretty=%B');
return TAG_AS_LATEST_REGEX.test(commitMessage);
}
module.exports.isLatest = isLatest;
/**
* Create a Github Action to publish the community template matching the released version
* of React Native.
*/
module.exports.publishTemplate = async (github, version, dryRun = true) => {
log(`📤 Get the ${TEMPLATE_NPM_PKG} repo to publish ${version}`);
const is_latest_on_npm = isLatest();
const majorMinor = /^v?(\d+\.\d+)/.exec(version);
if (!majorMinor) {
log(`🔥 can't capture MAJOR.MINOR from '${version}', giving up.`);
process.exit(1);
}
// MAJOR.MINOR-stable
const ref = `${majorMinor[1]}-stable`;
await github.rest.actions.createWorkflowDispatch({
owner: 'react-native-community',
repo: 'template',
workflow_id: 'release.yaml',
ref,
inputs: {
dry_run: dryRun,
is_latest_on_npm,
// 0.75.0-rc.0, note no 'v' prefix
version: version.replace(/^v/, ''),
},
});
};
const MAX_RETRIES = 3 * 6; // 18 attempts. Waiting between attempt: 10 s. Total time: 3 mins.
const TEMPLATE_NPM_PKG = '@react-native-community/template';
/**
* Will verify that @latest and the @<version> have been published.
*
* NOTE: This will infinitely query each step until successful, make sure the
* calling job has a timeout.
*/
module.exports.verifyPublishedTemplate = async (
version,
latest = false,
retries = MAX_RETRIES,
) => {
try {
if (version.startsWith('v')) {
version = version.slice(1);
}
await verifyPublishedPackage(
TEMPLATE_NPM_PKG,
version,
latest ? 'latest' : null,
retries,
);
} catch (e) {
console.error(e.message);
process.exit(1);
}
};
================================================
FILE: .github/workflow-scripts/selectLatestHermesV1Version.js
================================================
/**
* 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.
*/
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
const PATCH_FILE_PATH = path.join(__dirname, 'hermes-v1.patch');
function getLatestHermesV1Version() {
const npmString = "npm view hermes-compiler@latest-v1 version";
try {
const result = execSync(npmString, { stdio: ['ignore', 'pipe', 'ignore'] }).toString().trim();
return result;
} catch (error) {
throw new Error(`Failed to get package version for hermes-compiler@latest-v1`);
}
}
function setHermesV1VersionInPatch(version) {
if (!fs.existsSync(PATCH_FILE_PATH)) {
throw new Error(`Patch file not found at path: ${PATCH_FILE_PATH}`);
}
let patchContent = fs.readFileSync(PATCH_FILE_PATH, 'utf8');
const updatedContent = patchContent.replaceAll(
"$HERMES_V1_VERSION",
version
);
fs.writeFileSync(PATCH_FILE_PATH, updatedContent, 'utf8');
}
setHermesV1VersionInPatch(getLatestHermesV1Version());
================================================
FILE: .github/workflow-scripts/utils.js
================================================
/**
* 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.
*
* @format
*/
const {execSync} = require('child_process');
const log = (...args) => console.log(...args);
async function getNpmPackageInfo(pkg, versionOrTag) {
return fetch(`https://registry.npmjs.org/${pkg}/${versionOrTag}`).then(resp =>
resp.json(),
);
}
async function sleep(seconds) {
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
}
function run(cmd) {
return execSync(cmd, 'utf8').toString().trim();
}
module.exports = {
log,
getNpmPackageInfo,
sleep,
run,
};
================================================
FILE: .github/workflow-scripts/validatePRBody.js
================================================
/**
* 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.
*
* @format
*/
'use strict';
const changelogRegex =
/\[\s?(ANDROID|GENERAL|IOS|INTERNAL)\s?\]\s?\[\s?(BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY)\s?\]\s*?-?\s*?(.*)/i;
const internalChangelogRegex = /\[\s?(INTERNAL)\s?\].*/gi;
function validateChangelog(commitMsg) {
if (!commitMsg.toLowerCase().includes('changelog:')) {
return 'missing';
}
const hasValidChangelog = changelogRegex.test(commitMsg);
const hasValidInternalChangelog = internalChangelogRegex.test(commitMsg);
if (hasValidChangelog || hasValidInternalChangelog) {
return 'valid';
}
return 'invalid';
}
function validatePRBody(prBody) {
const body = prBody ?? '';
const bodyLower = body.toLowerCase();
const isFromPhabricator = bodyLower.includes('differential revision:');
const messages = [];
let hasFail = false;
function addWarning(title, text) {
messages.push(`> [!WARNING]
> **${title}**
>
> ${text}`);
}
function addFail(title, text) {
hasFail = true;
messages.push(`> [!CAUTION]
> **${title}**
>
> ${text}`);
}
if (!body || body.length < 50) {
addFail('Missing Description', 'This pull request needs a description.');
} else {
const hasSummary =
bodyLower.includes('## summary') || bodyLower.includes('summary:');
if (!hasSummary && body.split('\n').length <= 2 && !isFromPhabricator) {
addWarning(
'Missing Summary',
'Please add a "## Summary" section to your PR description. This is a good place to explain the motivation for making this change.',
);
}
}
if (!isFromPhabricator) {
const hasTestPlan = ['## test plan', 'test plan:', 'tests:', 'test:'].some(
t => bodyLower.includes(t),
);
if (!hasTestPlan) {
addWarning(
'Missing Test Plan',
'Please add a "## Test Plan" section to your PR description. A Test Plan lets us know how these changes were tested.',
);
}
}
if (!isFromPhabricator) {
const status = validateChangelog(body);
const link =
'https://reactnative.dev/contributing/changelogs-in-pull-requests';
if (status === 'missing') {
addFail(
'Missing Changelog',
`Please add a Changelog to your PR description. See [Changelog format](${link})`,
);
} else if (status === 'invalid') {
addFail(
'Invalid Changelog Format',
`Please verify your Changelog format. See [Changelog format](${link})`,
);
}
}
return {
message: messages.join('\n\n'),
status: hasFail ? 'FAIL' : 'PASS',
};
}
module.exports = validatePRBody;
================================================
FILE: .github/workflow-scripts/verifyArtifactsAreOnMaven.js
================================================
/**
* 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.
*
* @format
*/
const {log, sleep} = require('./utils');
const SLEEP_S = 60; // 1 minute
const MAX_RETRIES = 90; // 90 attempts. Waiting between attempt: 1 min. Total time: 90 min.
const ARTIFACT_URL =
'https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/';
const ARTIFACT_NAME = 'react-native-artifacts-';
async function verifyArtifactsAreOnMaven(version, retries = MAX_RETRIES) {
if (version.startsWith('v')) {
version = version.substring(1);
}
const artifactUrl = `${ARTIFACT_URL}${version}/${ARTIFACT_NAME}${version}.pom`;
for (let currentAttempt = 1; currentAttempt <= retries; currentAttempt++) {
const response = await fetch(artifactUrl);
if (response.status !== 200) {
log(
`${currentAttempt}) Artifact's for version ${version} are not on maven yet.\nURL: ${artifactUrl}\nLet's wait a minute and try again.\n`,
);
await sleep(SLEEP_S);
} else {
return;
}
}
log(
`We waited 90 minutes for the artifacts to be on Maven. Check https://status.maven.org/ if there are issues wth the service.`,
);
process.exit(1);
}
module.exports = {verifyArtifactsAreOnMaven};
================================================
FILE: .github/workflow-scripts/verifyPublishedPackage.js
================================================
/**
* 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.
*
* @format
*/
const {log, getNpmPackageInfo, sleep} = require('./utils');
const SLEEP_S = 10;
const MAX_RETRIES = 3 * 6; // 18 attempts. Waiting between attempt: 10 s. Total time: 3 mins.
async function verifyPublishedPackage(
packageName,
version,
tag = null,
retries = MAX_RETRIES,
) {
log(`🔍 Is ${packageName}@${version} on npm?`);
let count = retries;
while (count-- > 0) {
try {
const json = await getNpmPackageInfo(packageName, tag ? tag : version);
log(`🎉 Found ${packageName}@${version} on npm`);
if (!tag) {
return;
}
// check for next tag
if (tag === 'next' && json.version === version) {
log(`🎉 ${packageName}@next → ${version} on npm`);
return;
}
// Check for latest tag
if (tag === 'latest' && json.version === version) {
log(`🎉 ${packageName}@latest → ${version} on npm`);
return;
}
log(
`🐌 ${packageName}@${tag} → ${json.version} on npm and not ${version} as expected, retrying...`,
);
} catch (e) {
log(`Nope, fetch failed: ${e.message}`);
}
await sleep(SLEEP_S);
}
let msg = `🚨 Timed out when trying to verify ${packageName}@${version} on npm`;
if (tag) {
msg += ` and ${tag} tag points to this version.`;
}
log(msg);
process.exit(1);
}
module.exports = {
verifyPublishedPackage,
};
================================================
FILE: .github/workflow-scripts/verifyReleaseOnNpm.js
================================================
/**
* 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.
*
* @format
*/
const {run, sleep, log} = require('./utils.js');
const {verifyPublishedPackage} = require('./verifyPublishedPackage.js');
const REACT_NATIVE_NPM_PKG = 'react-native';
const MAX_RETRIES = 3 * 6; // 18 attempts. Waiting between attempt: 10 s. Total time: 3 mins.
/**
* Will verify that @latest, @next and the @<version> have been published.
*
* NOTE: This will infinitely query each step until successful, make sure the
* calling job has a timeout.
*/
module.exports.verifyReleaseOnNpm = async (
version,
latest = false,
retries = MAX_RETRIES,
) => {
const tag = version.includes('-rc.') ? 'next' : latest ? 'latest' : null;
if (version.startsWith('v')) {
version = version.slice(1);
}
await verifyPublishedPackage(REACT_NATIVE_NPM_PKG, version, tag, retries);
};
================================================
FILE: .github/workflow-scripts/verifyVersion.js
================================================
/**
* 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.
*
* @format
*/
module.exports = async (github, context) => {
const issue = context.payload.issue;
const issueVersionUnparsed =
getReactNativeVersionFromIssueBodyIfExists(issue);
const issueVersion = parseVersionFromString(issueVersionUnparsed);
// Nightly versions are always supported
if (reportedVersionIsNightly(issueVersionUnparsed, issueVersion)) return;
if (!issueVersion) {
return {label: 'Needs: Version Info'};
}
// Ensure the version matches one we support
const recentReleases = (
await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo,
})
).data.map(release => release.name);
const latestRelease = (
await github.rest.repos.getLatestRelease({
owner: context.repo.owner,
repo: context.repo.repo,
})
).data;
const latestVersion = parseVersionFromString(latestRelease.name);
// We want to "insta-close" an issue if RN version provided is too old. And encourage users to upgrade.
if (isVersionTooOld(issueVersion, latestVersion)) {
return {label: 'Type: Too Old Version'};
}
if (!isVersionSupported(issueVersion, latestVersion)) {
return {label: 'Type: Unsupported Version'};
}
};
/**
* Check if the RN version provided in an issue is supported.
*
* "We support `N-2` minor versions, and the `latest` major".
*/
function isVersionSupported(actualVersion, latestVersion) {
return (
actualVersion.major >= latestVersion.major &&
actualVersion.minor >= latestVersion.minor - 2
);
}
/**
* Check if the RN version provided in an issue is too old.
* "We support `N-2` minor versions, and the `latest` major".
*
* A RN version is *too old* if it's:
* - `1` or more *major* behind the *latest major*.
* - `5` or more *minor* behind the *latest minor* in the *same major*. Less aggressive.
* (e.g. If `0.72.0` is the current latest then `0.67.0` and lower is too old for `0.72.0`)
*/
function isVersionTooOld(actualVersion, latestVersion) {
return (
latestVersion.major - actualVersion.major >= 1 ||
latestVersion.minor - actualVersion.minor >= 5
);
}
function getReactNativeVersionFromIssueBodyIfExists(issue) {
if (!issue || !issue.body) return;
const rnVersionRegex = /React Native Version[\r\n]+(?<version>.+)[\r\n]*/;
const rnVersionMatch = issue.body.match(rnVersionRegex);
if (!rnVersionMatch || !rnVersionMatch.groups.version) return;
return rnVersionMatch.groups.version;
}
function reportedVersionIsNightly(unparsedVersionString, version) {
if (!unparsedVersionString && !version) return false;
const nightlyRegex = /nightly/i;
const nightlyMatch = unparsedVersionString.match(nightlyRegex);
const versionIsNightly = nightlyMatch && nightlyMatch[0];
const versionIsZero =
version && version.major == 0 && version.minor == 0 && version.patch == 0;
return versionIsZero || versionIsNightly;
}
function parseVersionFromString(version) {
if (!version) return;
// This will match the standard x.x.x semver format, as well as the non-standard prerelease x.x.x-rc.x
const semverRegex =
/(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)(-[rR]{1}[cC]{1}\.(?<prerelease>\d+))?/;
const versionMatch = version.match(semverRegex);
if (!versionMatch) return;
const {major, minor, patch, prerelease} = versionMatch.groups;
return {
major: parseInt(major),
minor: parseInt(minor),
patch: parseInt(patch),
prerelease: parseInt(prerelease),
};
}
================================================
FILE: .github/workflows/analyze-pr.yml
================================================
name: Analyze Pull Request
on:
pull_request_target:
types: [opened, edited, reopened, synchronize]
permissions:
pull-requests: write
issues: write
jobs:
analyze_pr:
runs-on: ubuntu-latest
if: github.repository == 'facebook/react-native'
steps:
- name: Check out main branch
uses: actions/checkout@v6
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Run yarn install
uses: ./.github/actions/yarn-install
- name: Check PR body
id: check-pr-body
uses: actions/github-script@v8
with:
script: |
const validatePRBody = require('./.github/workflow-scripts/validatePRBody.js');
const {message, status} = validatePRBody(context.payload.pull_request.body);
core.setOutput('message', message);
core.setOutput('status', status);
- name: Check branch target
id: check-branch-target
uses: actions/github-script@v8
with:
script: |
const checkBranchTarget = require('./.github/workflow-scripts/checkBranchTarget.js');
const baseRef = context.payload.pull_request.base.ref;
const {message, status, shouldAddPickLabel} = checkBranchTarget(baseRef);
if (shouldAddPickLabel) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['Pick Request'],
});
}
core.setOutput('message', message);
core.setOutput('status', status);
- name: Post PR comment
uses: ./.github/actions/post-pr-comment
with:
marker: '<!-- analyze-pr -->'
sections: '[${{ toJSON(steps.check-pr-body.outputs.message) }}, ${{ toJSON(steps.check-branch-target.outputs.message) }}]'
- name: Fail if validation errors
if: steps.check-pr-body.outputs.status == 'FAIL' || steps.check-branch-target.outputs.status == 'FAIL'
run: exit 1
================================================
FILE: .github/workflows/api-changes.yml
================================================
name: Analyze API Changes
on:
pull_request_target:
types: [opened, edited, reopened, synchronize]
permissions:
pull-requests: write
jobs:
api_changes:
runs-on: ubuntu-latest
if: github.repository == 'facebook/react-native'
steps:
- name: Check out main branch
uses: actions/checkout@v6
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Run yarn install
uses: ./.github/actions/yarn-install
- name: Run diff-js-api-changes
id: diff-js-api-changes
uses: ./.github/actions/diff-js-api-changes
- name: Post PR comment
uses: ./.github/actions/post-pr-comment
with:
marker: '<!-- api-changes -->'
sections: '[${{ toJSON(steps.diff-js-api-changes.outputs.message) }}]'
================================================
FILE: .github/workflows/autorebase.yml
================================================
name: Automatic Rebase
# This workflow is used to automatically rebase a PR when a comment is made
# containing the text "/rebase". It uses the cirrus-actions/rebase action.
# See https://github.com/cirrus-actions/rebase
on:
issue_comment:
types: [created]
permissions:
contents: read
jobs:
rebase:
name: Rebase
permissions:
contents: write # for cirrus-actions/rebase to push code to rebase
pull-requests: read # for cirrus-actions/rebase to get info about PR
runs-on: ubuntu-latest
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase')
steps:
- name: Checkout the latest code
uses: actions/checkout@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0 # otherwise, you will fail to push refs to dest repo
- name: Automatic Rebase
uses: cirrus-actions/rebase@1.8
env:
GITHUB_TOKEN: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
================================================
FILE: .github/workflows/bump-podfile-lock.yml
================================================
name: Bump Podfile.lock
on:
workflow_call: # this directive allow us to call this workflow from other workflows
jobs:
bump-podfile-lock:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
fetch-depth: 0
fetch-tags: true
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Configure git
run: |
git config --local user.email "bot@reactnative.dev"
git config --local user.name "React Native Bot"
- name: Setup xcode
uses: ./.github/actions/setup-xcode
- name: Extract branch name
run: |
TAG="${{ github.ref_name }}";
BRANCH_NAME=$(echo "$TAG" | sed -E 's/v([0-9]+\.[0-9]+)\.[0-9]+(-rc\.[0-9]+)?/\1-stable/')
echo "Branch Name is $BRANCH_NAME"
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
- name: Checkout release branch
run: |
git checkout "$BRANCH_NAME"
git fetch
git pull origin "$BRANCH_NAME"
- name: Bump podfile.lock
run: |
cd packages/rn-tester
rm Podfile.lock
bundle install
bundle exec pod install
- name: Commit changes
run: |
git add packages/rn-tester/Podfile.lock
git commit -m "[LOCAL] Bump Podfile.lock"
git push origin "$BRANCH_NAME"
================================================
FILE: .github/workflows/cache-reaper.yml
================================================
name: Keep Github Actions Cache < 10GB
on:
workflow_dispatch:
schedule:
# Run every 2hrs during weekdays
- cron: "0 0/2 * * 1-5"
jobs:
cache-cleaner:
if: github.repository == 'facebook/react-native'
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v6
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Trim the cache
run: node scripts/clean-gha-cache.js
================================================
FILE: .github/workflows/check-for-reproducer.yml
================================================
name: Check for reproducer
# This workflow is triggered when issue is created or edited.
on:
issues:
types: [opened, edited]
jobs:
check-for-reproducer:
runs-on: ubuntu-latest
if: |
github.repository == 'facebook/react-native' && github.event.issue.pull_request == null && github.event.issue.state == 'open' && !contains(github.event.issue.labels.*.name, ':open_umbrella: Umbrella')
steps:
- uses: actions/checkout@v6
- uses: actions/github-script@v8
with:
github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
script: |
const checkForReproducer = require('./.github/workflow-scripts/checkForReproducer.js')
await checkForReproducer(github, context)
================================================
FILE: .github/workflows/close-pr.yml
================================================
name: Label closed PR as merged and leave a comment
on:
push
permissions:
contents: read
pull-requests: write
jobs:
comment-and-label:
runs-on: ubuntu-latest
if: github.repository == 'facebook/react-native'
steps:
- uses: actions/github-script@v8
with:
github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
script: |
if(!context.payload.commits || !context.payload.commits.length) return;
const sha = context.payload.commits[0].id;
const {commit, author} = (await github.rest.repos.getCommit({
ref: sha,
owner: context.repo.owner,
repo: context.repo.repo,
})).data;
// Looking at the commit message, checks which PR number, if any, was closed by this commit
const getClosedPrIfExists = (commit) => {
if(!commit || !commit.message) return;
const prClosingRegex = /Closes https:\/\/github.com\/facebook\/react-native\/pull\/([0-9]+)|Pull Request resolved: https:\/\/github.com\/facebook\/react-native\/pull\/([0-9]+)/;
const prClosingMatch = commit.message.match(prClosingRegex);
if(!prClosingMatch || (!prClosingMatch[1] && ! prClosingMatch[2])) return;
return prClosingMatch[1] ?? prClosingMatch[2];
};
const closedPrNumber = getClosedPrIfExists(commit);
if(!closedPrNumber) return;
const pr = (await github.rest.pulls.get({
pull_number: closedPrNumber,
owner: context.repo.owner,
repo: context.repo.repo,
})).data;
const authorName = author?.login ? `@${author.login}` : commit.author.name;
github.rest.issues.createComment({
issue_number: closedPrNumber,
owner: context.repo.owner,
repo: context.repo.repo,
body: `This pull request was successfully merged by ${authorName} in **${sha}**\n\n<sup>[When will my fix make it into a release?](https://github.com/reactwg/react-native-releases/blob/main/docs/faq.md#when-will-my-fix-make-it-into-a-release) | [How to file a pick request?](https://github.com/reactwg/react-native-releases/blob/main/docs/faq.md#how-to-open-a-pick-request)</sup>`
});
// If the PR has already been processed (labeled as Merged), skip it
const mergedLabel = "Merged";
if(pr.labels && pr.labels.some(label => label.name === mergedLabel)) return;
github.rest.issues.addLabels({
issue_number: closedPrNumber,
owner: context.repo.owner,
repo: context.repo.repo,
labels: [mergedLabel]
});
================================================
FILE: .github/workflows/create-draft-release.yml
================================================
name: Create Draft Release
on:
workflow_call:
inputs:
hermesVersion:
required: false
type: string
description: The version of Hermes to use for this release (eg. 0.15.0). If not specified, it will use React Native Version
hermesV1Version:
required: false
type: string
description: The version of Hermes V1 to use for this release (eg. 250829098.0.2). If not specified, it will use React Native Version
jobs:
create-draft-release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
fetch-depth: 0
fetch-tags: true
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Configure Git
shell: bash
run: |
git config --local user.email "bot@reactnative.dev"
git config --local user.name "React Native Bot"
- name: Create draft release
uses: actions/github-script@v8
id: create-draft-release
with:
script: |
const {createDraftRelease} = require('./.github/workflow-scripts/createDraftRelease.js');
const version = '${{ github.ref_name }}';
const {isLatest} = require('./.github/workflow-scripts/publishTemplate.js');
return (await createDraftRelease(version, isLatest(), '${{secrets.REACT_NATIVE_BOT_GITHUB_TOKEN}}', '${{ inputs.hermesVersion }}', '${{ inputs.hermesV1Version }}')).id;
result-encoding: string
- name: Upload release assets for DotSlash
uses: actions/github-script@v8
env:
RELEASE_ID: ${{ steps.create-draft-release.outputs.result }}
with:
script: |
const {uploadReleaseAssetsForDotSlashFiles} = require('./scripts/releases/upload-release-assets-for-dotslash.js');
const version = '${{ github.ref_name }}';
await uploadReleaseAssetsForDotSlashFiles({
version,
token: '${{secrets.REACT_NATIVE_BOT_GITHUB_TOKEN}}',
releaseId: process.env.RELEASE_ID,
});
================================================
FILE: .github/workflows/create-release.yml
================================================
name: Create release
on:
workflow_dispatch:
inputs:
version:
description: "The version of React Native we want to release. For example 0.75.0-rc.0"
required: true
type: string
is-latest-on-npm:
description: "Whether we want to tag this release as latest on NPM"
required: true
type: boolean
default: false
dry-run:
description: "Whether the job should be executed in dry-run mode or not"
type: boolean
default: true
jobs:
create_release:
if: github.repository == 'facebook/react-native'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
fetch-depth: 0
fetch-tags: 'true'
- name: Check if on stable branch
id: check_stable_branch
run: |
BRANCH="$(git branch --show-current)"
PATTERN='^0\.[0-9]+-stable$'
if [[ $BRANCH =~ $PATTERN ]]; then
echo "On a stable branch"
echo "ON_STABLE_BRANCH=true" >> $GITHUB_OUTPUT
fi
- name: Print output
run: echo "ON_STABLE_BRANCH ${{steps.check_stable_branch.outputs.ON_STABLE_BRANCH}}"
- name: Check if tag already exists
id: check_if_tag_exists
run: |
TAG="v${{ inputs.version }}"
TAG_EXISTS=$(git tag -l "$TAG")
if [[ -n "$TAG_EXISTS" ]]; then
echo "Version tag already exists!"
echo "TAG_EXISTS=true" >> $GITHUB_OUTPUT
fi
- name: Execute Prepare Release
if: ${{ steps.check_stable_branch.outputs.ON_STABLE_BRANCH && !steps.check_if_tag_exists.outputs.TAG_EXISTS }}
uses: ./.github/actions/create-release
with:
version: ${{ inputs.version }}
is-latest-on-npm: ${{ inputs.is-latest-on-npm }}
dry-run: ${{ inputs.dry-run }}
================================================
FILE: .github/workflows/generate-changelog.yml
================================================
name: Generate Changelog
on:
workflow_call:
jobs:
generate-changelog:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
fetch-depth: 0
fetch-tags: true
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Configure Git
shell: bash
run: |
git config --local user.email "bot@reactnative.dev"
git config --local user.name "React Native Bot"
- name: Generate Changelog
uses: actions/github-script@v8
with:
script: |
const {generateChangelog} = require('./.github/workflow-scripts/generateChangelog');
const version = '${{ github.ref_name }}';
await generateChangelog(version, '${{secrets.REACT_NATIVE_BOT_GITHUB_TOKEN}}');
================================================
FILE: .github/workflows/monitor-new-issues.yml
================================================
name: Monitor React Native New Issues
on:
schedule:
- cron: "0 0,6,12,18 * * *"
workflow_dispatch:
# Reminder for when we have to update the schedule (before Jan 2026):
# the secrets.ONCALL_SCHEDULE secret must be on a single line and must have all the `"` escaped as `\"`.
# Only a meta engineer can update it through the OSS internal portal.
jobs:
monitor-issues:
runs-on: ubuntu-latest
if: github.repository == 'facebook/react-native'
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Node.js
uses: ./.github/actions/setup-node
- name: Install dependencies
uses: ./.github/actions/yarn-install
- name: Extract next oncall
run: |
ONCALLS=$(node ./.github/workflow-scripts/extractIssueOncalls.js "${{ secrets.ONCALL_SCHEDULE }}")
ONCALL1=$(echo $ONCALLS | cut -d ' ' -f 1)
ONCALL2=$(echo $ONCALLS | cut -d ' ' -f 2)
echo "oncall1=$ONCALL1" >> $GITHUB_ENV
echo "oncall2=$ONCALL2" >> $GITHUB_ENV
- name: Monitor New Issues
uses: react-native-community/repo-monitor@v1.0.1
with:
task: "monitor-issues"
git_secret: ${{ secrets.GITHUB_TOKEN }}
notifier: "discord"
fetch_data_interval: 6
repo_owner: "facebook"
repo_name: "react-native"
discord_webhook_url: "${{ secrets.DISCORD_WEBHOOK_URL }}"
discord_id_type: "user"
discord_ids: "${{ env.oncall1 }},${{ env.oncall2 }}"
================================================
FILE: .github/workflows/needs-attention.yml
================================================
name: Issue Needs Attention
# This workflow is triggered on issue comments.
on:
issue_comment:
types: [created]
permissions:
contents: read
jobs:
applyNeedsAttentionLabel:
permissions:
contents: read # for actions/checkout to fetch code
issues: write # for react-native-community/needs-attention to label issues
name: Apply Needs Attention Label
runs-on: ubuntu-latest
if: github.repository == 'facebook/react-native'
steps:
- uses: actions/checkout@v6
- name: Apply Needs Attention Label
uses: react-native-community/needs-attention@v2.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
response-required-label: "Needs: Author Feedback"
needs-attention-label: "Needs: Attention"
id: needs-attention
- name: Result
run: echo '${{ steps.needs-attention.outputs.result }}'
================================================
FILE: .github/workflows/nightly.yml
================================================
name: Nightly
on:
workflow_dispatch:
# nightly build @ 2:15 AM UTC
schedule:
- cron: "15 2 * * *"
jobs:
set_release_type:
runs-on: ubuntu-latest
if: github.repository == 'facebook/react-native'
outputs:
RELEASE_TYPE: ${{ steps.set_release_type.outputs.RELEASE_TYPE }}
env:
EVENT_NAME: ${{ github.event_name }}
REF: ${{ github.ref }}
steps:
- id: set_release_type
run: |
echo "Setting release type to nightly"
echo "RELEASE_TYPE=nightly" >> $GITHUB_OUTPUT
prebuild_apple_dependencies:
if: github.repository == 'facebook/react-native'
uses: ./.github/workflows/prebuild-ios-dependencies.yml
secrets: inherit
prebuild_react_native_core:
uses: ./.github/workflows/prebuild-ios-core.yml
with:
use-hermes-nightly: true
version-type: nightly
secrets: inherit
needs: [prebuild_apple_dependencies]
build_android:
runs-on: 8-core-ubuntu
if: github.repository == 'facebook/react-native'
needs: [set_release_type]
container:
image: reactnativecommunity/react-native-android:latest
env:
TERM: "dumb"
# Set the encoding to resolve a known character encoding issue with decompressing tar.gz files in containers
# via Gradle: https://github.com/gradle/gradle/issues/23391#issuecomment-1878979127
LC_ALL: C.UTF8
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
ORG_GRADLE_PROJECT_SIGNING_PWD: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_PWD }}
ORG_GRADLE_PROJECT_SIGNING_KEY: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_KEY }}
ORG_GRADLE_PROJECT_SONATYPE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_USERNAME }}
ORG_GRADLE_PROJECT_SONATYPE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_PASSWORD }}
REACT_NATIVE_DOWNLOADS_DIR: /opt/react-native-downloads
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Build Android
uses: ./.github/actions/build-android
with:
release-type: ${{ needs.set_release_type.outputs.RELEASE_TYPE }}
gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
build_npm_package:
runs-on: 8-core-ubuntu
needs:
[
set_release_type,
build_android,
prebuild_apple_dependencies,
prebuild_react_native_core,
]
container:
image: reactnativecommunity/react-native-android:latest
env:
TERM: "dumb"
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
# Set the encoding to resolve a known character encoding issue with decompressing tar.gz files in containers
# via Gradle: https://github.com/gradle/gradle/issues/23391#issuecomment-1878979127
LC_ALL: C.UTF8
# By default we only build ARM64 to save time/resources. For release/nightlies, we override this value to build all archs.
ORG_GRADLE_PROJECT_reactNativeArchitectures: "arm64-v8a"
REACT_NATIVE_DOWNLOADS_DIR: /opt/react-native-downloads
env:
GHA_NPM_TOKEN: ${{ secrets.GHA_NPM_TOKEN }}
ORG_GRADLE_PROJECT_SIGNING_PWD: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_PWD }}
ORG_GRADLE_PROJECT_SIGNING_KEY: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_KEY }}
ORG_GRADLE_PROJECT_SONATYPE_USERNAME: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_USERNAME }}
ORG_GRADLE_PROJECT_SONATYPE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_PASSWORD }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Build and Publish NPM Package
uses: ./.github/actions/build-npm-package
with:
release-type: ${{ needs.set_release_type.outputs.RELEASE_TYPE }}
gha-npm-token: ${{ env.GHA_NPM_TOKEN }}
gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
================================================
FILE: .github/workflows/on-issue-labeled.yml
================================================
name: On Issue Labeled
# This workflow is triggered when a label is added to an issue.
on:
issues:
types: [labeled]
permissions:
contents: write
issues: write
jobs:
# Runs automatic checks on issues labeled with "Needs: Triage",
# then invokes actOnLabel to react to any added labels
triage-issue:
runs-on: ubuntu-latest
if: "${{ github.repository == 'facebook/react-native' && contains(github.event.label.name, 'Needs: Triage :mag:') }}"
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Verify RN version
uses: actions/github-script@v8
with:
github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
script: |
const verifyVersion = require('./.github/workflow-scripts/verifyVersion.js')
const labelWithContext = await verifyVersion(github, context);
if(labelWithContext && labelWithContext.label) {
await github.rest.issues.addLabels({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: [labelWithContext.label]
})
const actOnLabel = require('./.github/workflow-scripts/actOnLabel.js')
await actOnLabel(github, context, labelWithContext)
}
- name: Add descriptive label
uses: actions/github-script@v8
with:
github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
script: |
const addDescriptiveLabel = require('./.github/workflow-scripts/addDescriptiveLabels.js')
await addDescriptiveLabel(github, context);
# Reacts to the label that triggered this workflow (added manually or via other workflows)
act-on-label:
runs-on: ubuntu-latest
if: github.repository == 'facebook/react-native'
steps:
- uses: actions/checkout@v6
- uses: actions/github-script@v8
with:
github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }}
script: |
const actOnLabel = require('./.github/workflow-scripts/actOnLabel.js')
await actOnLabel(github, context, {label: context.payload.label.name})
================================================
FILE: .github/workflows/prebuild-ios-core.yml
================================================
name: Prebuild iOS Core
on:
workflow_call: # this directive allow us to call this workflow from other workflows
inputs:
version-type:
description: 'The version type to set for the prebuild (nightly or release)'
type: string
required: false
default: ''
use-hermes-nightly:
description: 'Whether to use the hermes nightly build or read the version from the versions.properties file'
type: boolean
required: false
default: false
jobs:
build-rn-slice:
runs-on: macos-15
strategy:
fail-fast: false
matrix:
flavor: ['Debug', 'Release']
slice: [
'ios',
'ios-simulator',
'mac-catalyst',
]
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Restore cache if present
id: restore-ios-slice
uses: actions/cache/restore@v5
with:
key: v3-ios-core-${{ matrix.slice }}-${{ matrix.flavor }}-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }}
path: packages/react-native/
- name: Setup node.js
if: steps.restore-ios-slice.outputs.cache-hit != 'true'
uses: ./.github/actions/setup-node
- name: Setup xcode
if: steps.restore-ios-slice.outputs.cache-hit != 'true'
uses: ./.github/actions/setup-xcode
- name: Yarn Install
if: steps.restore-ios-slice.outputs.cache-hit != 'true'
uses: ./.github/actions/yarn-install
- name: Set Hermes version
shell: bash
run: |
if [ "${{ inputs.use-hermes-nightly }}" == "true" ]; then
# We are not publishing nightly versions of Hermes V1 yet.
# For now, we can use the latest version of Hermes V1 published on maven and npm.
HERMES_VERSION="latest-v1"
else
HERMES_VERSION=$(sed -n 's/^HERMES_V1_VERSION_NAME=//p' packages/react-native/sdks/hermes-engine/version.properties)
fi
echo "Using Hermes version: $HERMES_VERSION"
echo "HERMES_VERSION=$HERMES_VERSION" >> $GITHUB_ENV
- name: Set React Native version
shell: bash
run: |
if [ "${{ inputs.version-type }}" != "" ]; then
node ./scripts/releases/set-rn-artifacts-version.js --build-type "${{ inputs.version-type }}"
fi
- name: Download ReactNativeDependencies
uses: actions/download-artifact@v7
with:
name: ReactNativeDependencies${{ matrix.flavor }}.xcframework.tar.gz
path: /tmp/third-party/
- name: Extract ReactNativeDependencies
if: steps.restore-ios-slice.outputs.cache-hit != 'true'
shell: bash
run: |
# Extract ReactNativeDependencies
tar -xzf /tmp/third-party/ReactNativeDependencies${{ matrix.flavor }}.xcframework.tar.gz -C /tmp/third-party/
# Create destination folder
mkdir -p packages/react-native/third-party/
# Move the XCFramework in the destination directory
mv /tmp/third-party/packages/react-native/third-party/ReactNativeDependencies.xcframework packages/react-native/third-party/ReactNativeDependencies.xcframework
VERSION=$(jq -r '.version' packages/react-native/package.json)
echo "$VERSION-${{matrix.flavor}}" > "packages/react-native/third-party/version.txt"
cat "packages/react-native/third-party/version.txt"
# Check destination directory
ls -lR packages/react-native/third-party/
- name: Setup the workspace
if: steps.restore-ios-slice.outputs.cache-hit != 'true'
shell: bash
run: |
cd packages/react-native
node scripts/ios-prebuild.js -s -f "${{ matrix.flavor }}"
- name: Build React Native
if: steps.restore-ios-slice.outputs.cache-hit != 'true'
shell: bash
run: |
# This is going to be replaced by a CLI script
cd packages/react-native
node scripts/ios-prebuild -b -f "${{ matrix.flavor }}" -p "${{ matrix.slice }}"
- name: Upload headers
uses: actions/upload-artifact@v6
with:
name: prebuild-ios-core-headers-${{ matrix.flavor }}-${{ matrix.slice }}
path:
packages/react-native/.build/headers
- name: Upload artifacts
uses: actions/upload-artifact@v6
with:
name: prebuild-ios-core-slice-${{ matrix.flavor }}-${{ matrix.slice }}
path: |
packages/react-native/.build/output/spm/${{ matrix.flavor }}/Build/Products
- name: Save Cache
uses: actions/cache/save@v5
if: ${{ github.ref == 'refs/heads/main' }} # To avoid that the cache explode
with:
key: v3-ios-core-${{ matrix.slice }}-${{ matrix.flavor }}-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }}
path: |
packages/react-native/.build/output/spm/${{ matrix.flavor }}/Build/Products
packages/react-native/.build/headers
compose-xcframework:
runs-on: macos-15
needs: [build-rn-slice]
strategy:
fail-fast: false
matrix:
flavor: ['Debug', 'Release']
env:
REACT_ORG_CODE_SIGNING_P12_CERT: ${{ secrets.REACT_ORG_CODE_SIGNING_P12_CERT }}
REACT_ORG_CODE_SIGNING_P12_CERT_PWD: ${{ secrets.REACT_ORG_CODE_SIGNING_P12_CERT_PWD }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Restore cache if present
id: restore-ios-xcframework
uses: actions/cache/restore@v5
with:
path: packages/react-native/.build/output/xcframeworks
key: v2-ios-core-xcframework-${{ matrix.flavor }}-${{ hashFiles('packages/react-native/Package.swift', 'packages/react-native/scripts/ios-prebuild/*.js', 'packages/react-native/scripts/ios-prebuild.js', 'packages/react-native/React/**/*', 'packages/react-native/ReactCommon/**/*', 'packages/react-native/Libraries/**/*') }}
- name: Setup node.js
if: steps.restore-ios-xcframework.outputs.cache-hit != 'true'
uses: ./.github/actions/setup-node
- name: Setup xcode
if: steps.restore-ios-xcframework.outputs.cache-hit != 'true'
uses: ./.github/actions/setup-xcode
- name: Yarn Install
if: steps.restore-ios-xcframework.outputs.cache-hit != 'true'
uses: ./.github/actions/yarn-install
- name: Download slice artifacts
if: steps.restore-ios-xcframework.outputs.cache-hit != 'true'
uses: actions/download-artifact@v7
with:
pattern: prebuild-ios-core-slice-${{ matrix.flavor }}-*
path: packages/react-native/.build/output/spm/${{ matrix.flavor }}/Build/Products
merge-multiple: true
- name: Download headers
if: steps.restore-ios-xcframework.outputs.cache-hit != 'true'
uses: actions/download-artifact@v7
with:
pattern: prebuild-ios-core-headers-${{ matrix.flavor }}-*
path: packages/react-native/.build/headers
merge-multiple: true
- name: Setup Keychain
if: ${{ steps.restore-ios-xcframework.outputs.cache-hit != 'true' && env.REACT_ORG_CODE_SIGNING_P12_CERT != '' }}
uses: apple-actions/import-codesign-certs@v3 # https://github.com/marketplace/actions/import-code-signing-certificates
with:
p12-file-base64: ${{ secrets.REACT_ORG_CODE_SIGNING_P12_CERT }}
p12-password: ${{ secrets.REACT_ORG_CODE_SIGNING_P12_CERT_PWD }}
- name: Create XCFramework
if: ${{ steps.restore-ios-xcframework.outputs.cache-hit != 'true' && env.REACT_ORG_CODE_SIGNING_P12_CERT == '' }}
run: |
cd packages/react-native
node scripts/ios-prebuild -c -f "${{ matrix.flavor }}"
- name: Create and Sign XCFramework
if: ${{ steps.restore-ios-xcframework.outputs.cache-hit != 'true' && env.REACT_ORG_CODE_SIGNING_P12_CERT != '' }}
run: |
cd packages/react-native
node scripts/ios-prebuild -c -f "${{ matrix.flavor }}" -i "React Org"
- name: Compress and Rename XCFramework
if: steps.restore-ios-xcframework.outputs.cache-hit != 'true'
run: |
cd packages/react-native/.build/output/xcframeworks/${{matrix.flavor}}
tar -cz -f ../ReactCore${{matrix.flavor}}.xcframework.tar.gz React.xcframework
- name: Compress and Rename dSYM
if: steps.restore-ios-xcframework.outputs.cache-hit != 'true'
run: |
cd packages/react-native/.build/output/xcframeworks/${{matrix.flavor}}/Symbols
tar -cz -f ../../ReactCore${{ matrix.flavor }}.framework.dSYM.tar.gz .
- name: Upload XCFramework Artifact
uses: actions/upload-artifact@v6
with:
name: ReactCore${{ matrix.flavo
Showing preview only (608K chars total). Download the full file or copy to clipboard to get everything.
gitextract_q2tq5gs6/ ├── .babelrc ├── .bundle/ │ └── config ├── .clang-format ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .flowconfig ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── debugger_bug_report.yml │ │ └── new_architecture_bug_report.yml │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── RELEASE_TEMPLATE.md │ ├── SUPPORT.md │ ├── actions/ │ │ ├── build-android/ │ │ │ └── action.yml │ │ ├── build-fantom-runner/ │ │ │ └── action.yml │ │ ├── build-npm-package/ │ │ │ └── action.yml │ │ ├── create-release/ │ │ │ └── action.yml │ │ ├── diff-js-api-changes/ │ │ │ └── action.yml │ │ ├── maestro-android/ │ │ │ └── action.yml │ │ ├── maestro-ios/ │ │ │ └── action.yml │ │ ├── post-pr-comment/ │ │ │ └── action.yml │ │ ├── prepare-hermes-v1-app/ │ │ │ └── action.yml │ │ ├── prepare-ios-tests/ │ │ │ └── action.yml │ │ ├── run-fantom-tests/ │ │ │ └── action.yml │ │ ├── setup-gradle/ │ │ │ └── action.yml │ │ ├── setup-node/ │ │ │ └── action.yml │ │ ├── setup-xcode/ │ │ │ └── action.yml │ │ ├── test-ios-helloworld/ │ │ │ └── action.yml │ │ ├── test-ios-rntester/ │ │ │ └── action.yml │ │ ├── test-js/ │ │ │ └── action.yml │ │ └── yarn-install/ │ │ └── action.yml │ ├── workflow-scripts/ │ │ ├── __tests__/ │ │ │ ├── createDraftRelease-test.js │ │ │ ├── extractIssueOncalls-test.js │ │ │ ├── generateChangelog-test.js │ │ │ ├── publishTemplate-test.js │ │ │ ├── verifyArtifactsAreOnMaven-test.js │ │ │ ├── verifyPublishedPackage-test.js │ │ │ └── verifyReleaseOnNpm-test.js │ │ ├── actOnLabel.js │ │ ├── addDescriptiveLabels.js │ │ ├── analyze_scripts.sh │ │ ├── checkBranchTarget.js │ │ ├── checkForReproducer.js │ │ ├── createDraftRelease.js │ │ ├── exec_swallow_error.sh │ │ ├── extractIssueOncalls.js │ │ ├── generateChangelog.js │ │ ├── hermes-v1.patch │ │ ├── lint_files.sh │ │ ├── maestro-android.js │ │ ├── maestro-ios.js │ │ ├── publishTemplate.js │ │ ├── selectLatestHermesV1Version.js │ │ ├── utils.js │ │ ├── validatePRBody.js │ │ ├── verifyArtifactsAreOnMaven.js │ │ ├── verifyPublishedPackage.js │ │ ├── verifyReleaseOnNpm.js │ │ └── verifyVersion.js │ └── workflows/ │ ├── analyze-pr.yml │ ├── api-changes.yml │ ├── autorebase.yml │ ├── bump-podfile-lock.yml │ ├── cache-reaper.yml │ ├── check-for-reproducer.yml │ ├── close-pr.yml │ ├── create-draft-release.yml │ ├── create-release.yml │ ├── generate-changelog.yml │ ├── monitor-new-issues.yml │ ├── needs-attention.yml │ ├── nightly.yml │ ├── on-issue-labeled.yml │ ├── prebuild-ios-core.yml │ ├── prebuild-ios-dependencies.yml │ ├── publish-bumped-packages.yml │ ├── publish-release.yml │ ├── retry-workflow.yml │ ├── stale-bot.yml │ ├── test-all.yml │ ├── validate-cxx-api-snapshots.yml │ └── validate-dotslash-artifacts.yml ├── .gitignore ├── .markdownlint-cli2.mjs ├── .prettierignore ├── .prettierrc.js ├── CHANGELOG-0.5x.md ├── CHANGELOG-0.6x.md ├── CHANGELOG-0.7x.md ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ECOSYSTEM.md ├── Gemfile ├── LICENSE ├── README.md ├── __docs__/ │ ├── GUIDELINES.md │ ├── README-template.md │ └── README.md ├── build.gradle.kts ├── flow-typed/ │ ├── environment/ │ │ └── node.js │ └── npm/ │ ├── @expo/ │ │ └── spawn-async_v1.x.x.js │ ├── @isaacs/ │ │ └── ttlcache_1.x.x.js │ ├── @octokit/ │ │ └── rest_v22.x.x.js │ ├── @react-native-community/ │ │ ├── cli-server-api_v19.x.x.js │ │ └── cli-types_v19.x.x.js │ ├── @tsconfig/ │ │ └── node22_v22.x.x.js │ ├── actual-request-url_v1.x.x.js │ ├── ansi-regex_v5.x.x.js │ ├── babel-traverse_v7.x.x.js │ ├── babel-types_v7.x.x.js │ ├── babel_v7.x.x.js │ ├── base64-js_v1.x.x.js │ ├── chrome-launcher_v0.15.x.js │ ├── chromium-edge-launcher_v0.2.x.js │ ├── commander_v12.x.x.js │ ├── connect_v3.x.x.js │ ├── cross-spawn_v7.x.x.js │ ├── debug_v4.4.x.js │ ├── deep-equal_v1.x.x.js │ ├── electron-packager_v18.x.x.js │ ├── electron_v36.x.x.js │ ├── execa_v5.x.x.js │ ├── fb-dotslash_v0.x.x.js │ ├── ini_v5.x.x.js │ ├── jest-diff_v29.x.x.js │ ├── jest-snapshot_v29.x.x.js │ ├── jest.js │ ├── jsonc-parser_v2.2.x.js │ ├── listr2_v8.x.x.js │ ├── listr_v14.x.x.js │ ├── node-fetch_v2.x.x.js │ ├── open_v7.x.x.js │ ├── pretty-format_v29.x.x.js │ ├── promise_v8.x.x.js │ ├── react-dom_v17.x.x.js │ ├── react-test-renderer_v16.x.x.js │ ├── rxjs_v6.x.x.js │ ├── selfsigned_v2.x.x.js │ ├── semver_v7.x.x.js │ ├── serve-static_v1.x.x.js │ ├── shelljs_v0.x.x.js │ ├── signedsource_v1.x.x.js │ ├── stacktrace-parser_v0.1.x.js │ ├── tinybench_v4.1.x.js │ ├── tinyglobby_v0.2.x.js │ ├── typescript_v5.x.x.js │ ├── undici_v6.x.x.js │ ├── wait-for-expect_v3.x.x.js │ ├── ws_v7.x.x.js │ └── yargs_v17.x.x.js ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── jest/ │ └── preprocessor.js ├── jest.config.js ├── package.json ├── packages/ │ ├── assets/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ └── path-support-test.js │ │ ├── package.json │ │ ├── path-support.js │ │ └── registry.js │ ├── babel-plugin-codegen/ │ │ ├── README.md │ │ ├── __test_fixtures__/ │ │ │ ├── failures.js │ │ │ └── fixtures.js │ │ ├── __tests__/ │ │ │ ├── __snapshots__/ │ │ │ │ └── index-test.js.snap │ │ │ └── index-test.js │ │ ├── index.js │ │ └── package.json │ ├── community-cli-plugin/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ └── src/ │ │ ├── commands/ │ │ │ ├── bundle/ │ │ │ │ ├── __mocks__/ │ │ │ │ │ └── sign.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── filterPlatformAssetScales-test.js │ │ │ │ │ ├── getAssetDestPathAndroid-test.js │ │ │ │ │ └── getAssetDestPathIOS-test.js │ │ │ │ ├── assetCatalogIOS.js │ │ │ │ ├── assetPathUtils.js │ │ │ │ ├── buildBundle.js │ │ │ │ ├── createKeepFileAsync.js │ │ │ │ ├── filterPlatformAssetScales.js │ │ │ │ ├── getAssetDestPathAndroid.js │ │ │ │ ├── getAssetDestPathIOS.js │ │ │ │ ├── index.js │ │ │ │ └── saveAssets.js │ │ │ └── start/ │ │ │ ├── OpenDebuggerKeyboardHandler.js │ │ │ ├── attachKeyHandlers.js │ │ │ ├── index.js │ │ │ ├── middleware.js │ │ │ └── runServer.js │ │ ├── index.flow.js │ │ ├── index.js │ │ └── utils/ │ │ ├── createDevMiddlewareLogger.js │ │ ├── errors.js │ │ ├── isDevServerRunning.js │ │ ├── loadMetroConfig.js │ │ ├── metroPlatformResolver.js │ │ ├── parseKeyValueParamArray.js │ │ └── version.js │ ├── core-cli-utils/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ └── src/ │ │ ├── index.flow.js │ │ ├── index.js │ │ ├── private/ │ │ │ ├── android.js │ │ │ ├── app.js │ │ │ ├── apple.js │ │ │ ├── clean.js │ │ │ ├── types.js │ │ │ └── utils.js │ │ └── public/ │ │ ├── version.flow.js │ │ └── version.js │ ├── debugger-frontend/ │ │ ├── BUILD_INFO │ │ ├── README.md │ │ ├── dist/ │ │ │ └── third-party/ │ │ │ ├── LICENSE │ │ │ └── front_end/ │ │ │ ├── Images/ │ │ │ │ ├── Images.js │ │ │ │ ├── chromeLeft.avif │ │ │ │ ├── chromeMiddle.avif │ │ │ │ ├── chromeRight.avif │ │ │ │ ├── cssoverview_icons_2x.avif │ │ │ │ └── nodeIcon.avif │ │ │ ├── Tests.js │ │ │ ├── application_tokens.css │ │ │ ├── core/ │ │ │ │ ├── common/ │ │ │ │ │ └── common.js │ │ │ │ ├── dom_extension/ │ │ │ │ │ └── dom_extension.js │ │ │ │ ├── host/ │ │ │ │ │ └── host.js │ │ │ │ ├── i18n/ │ │ │ │ │ ├── i18n.js │ │ │ │ │ └── locales/ │ │ │ │ │ ├── en-US.json │ │ │ │ │ └── zh.json │ │ │ │ ├── platform/ │ │ │ │ │ └── platform.js │ │ │ │ ├── protocol_client/ │ │ │ │ │ └── protocol_client.js │ │ │ │ ├── rn_experiments/ │ │ │ │ │ └── rn_experiments.js │ │ │ │ ├── root/ │ │ │ │ │ └── root.js │ │ │ │ └── sdk/ │ │ │ │ ├── sdk-meta.js │ │ │ │ └── sdk.js │ │ │ ├── design_system_tokens.css │ │ │ ├── device_mode_emulation_frame.html │ │ │ ├── devtools_app.html │ │ │ ├── devtools_compatibility.js │ │ │ ├── emulated_devices/ │ │ │ │ └── optimized/ │ │ │ │ ├── MotoG4-landscape.avif │ │ │ │ ├── MotoG4-portrait.avif │ │ │ │ ├── Nexus5X-landscape.avif │ │ │ │ ├── Nexus5X-portrait.avif │ │ │ │ ├── Nexus6P-landscape.avif │ │ │ │ ├── Nexus6P-portrait.avif │ │ │ │ ├── google-nest-hub-horizontal.avif │ │ │ │ ├── google-nest-hub-max-horizontal.avif │ │ │ │ ├── google-nexus-5-horizontal-default-1x.avif │ │ │ │ ├── google-nexus-5-horizontal-default-2x.avif │ │ │ │ ├── google-nexus-5-horizontal-keyboard-1x.avif │ │ │ │ ├── google-nexus-5-horizontal-keyboard-2x.avif │ │ │ │ ├── google-nexus-5-horizontal-navigation-1x.avif │ │ │ │ ├── google-nexus-5-horizontal-navigation-2x.avif │ │ │ │ ├── google-nexus-5-vertical-default-1x.avif │ │ │ │ ├── google-nexus-5-vertical-default-2x.avif │ │ │ │ ├── google-nexus-5-vertical-keyboard-1x.avif │ │ │ │ ├── google-nexus-5-vertical-keyboard-2x.avif │ │ │ │ ├── google-nexus-5-vertical-navigation-1x.avif │ │ │ │ ├── google-nexus-5-vertical-navigation-2x.avif │ │ │ │ ├── google-nexus-5x-horizontal-default-1x.avif │ │ │ │ ├── google-nexus-5x-horizontal-default-2x.avif │ │ │ │ ├── google-nexus-5x-horizontal-keyboard-1x.avif │ │ │ │ ├── google-nexus-5x-horizontal-keyboard-2x.avif │ │ │ │ ├── google-nexus-5x-horizontal-navigation-1x.avif │ │ │ │ ├── google-nexus-5x-horizontal-navigation-2x.avif │ │ │ │ ├── google-nexus-5x-vertical-default-1x.avif │ │ │ │ ├── google-nexus-5x-vertical-default-2x.avif │ │ │ │ ├── google-nexus-5x-vertical-keyboard-1x.avif │ │ │ │ ├── google-nexus-5x-vertical-keyboard-2x.avif │ │ │ │ ├── google-nexus-5x-vertical-navigation-1x.avif │ │ │ │ ├── google-nexus-5x-vertical-navigation-2x.avif │ │ │ │ ├── iPad-landscape.avif │ │ │ │ ├── iPad-portrait.avif │ │ │ │ ├── iPhone5-landscape.avif │ │ │ │ ├── iPhone5-portrait.avif │ │ │ │ ├── iPhone6-landscape.avif │ │ │ │ ├── iPhone6-portrait.avif │ │ │ │ ├── iPhone6Plus-landscape.avif │ │ │ │ └── iPhone6Plus-portrait.avif │ │ │ ├── entrypoints/ │ │ │ │ ├── device_mode_emulation_frame/ │ │ │ │ │ └── device_mode_emulation_frame.js │ │ │ │ ├── devtools_app/ │ │ │ │ │ └── devtools_app.js │ │ │ │ ├── formatter_worker/ │ │ │ │ │ ├── FormatterActions.js │ │ │ │ │ ├── formatter_worker-entrypoint.js │ │ │ │ │ └── formatter_worker.js │ │ │ │ ├── heap_snapshot_worker/ │ │ │ │ │ ├── heap_snapshot_worker-entrypoint.js │ │ │ │ │ └── heap_snapshot_worker.js │ │ │ │ ├── inspector/ │ │ │ │ │ └── inspector.js │ │ │ │ ├── inspector_main/ │ │ │ │ │ ├── inspector_main-meta.js │ │ │ │ │ └── inspector_main.js │ │ │ │ ├── js_app/ │ │ │ │ │ └── js_app.js │ │ │ │ ├── lighthouse_worker/ │ │ │ │ │ └── lighthouse_worker.js │ │ │ │ ├── main/ │ │ │ │ │ ├── main-meta.js │ │ │ │ │ └── main.js │ │ │ │ ├── ndb_app/ │ │ │ │ │ └── ndb_app.js │ │ │ │ ├── node_app/ │ │ │ │ │ └── node_app.js │ │ │ │ ├── rehydrated_devtools_app/ │ │ │ │ │ └── rehydrated_devtools_app.js │ │ │ │ ├── rn_fusebox/ │ │ │ │ │ └── rn_fusebox.js │ │ │ │ ├── shell/ │ │ │ │ │ └── shell.js │ │ │ │ ├── wasmparser_worker/ │ │ │ │ │ ├── wasmparser_worker-entrypoint.js │ │ │ │ │ └── wasmparser_worker.js │ │ │ │ └── worker_app/ │ │ │ │ └── worker_app.js │ │ │ ├── inspector.html │ │ │ ├── integration_test_runner.html │ │ │ ├── js_app.html │ │ │ ├── legacy_test_runner/ │ │ │ │ ├── legacy_test_runner.js │ │ │ │ └── test_runner/ │ │ │ │ └── test_runner.js │ │ │ ├── models/ │ │ │ │ ├── ai_assistance/ │ │ │ │ │ └── ai_assistance.js │ │ │ │ ├── autofill_manager/ │ │ │ │ │ └── autofill_manager.js │ │ │ │ ├── bindings/ │ │ │ │ │ └── bindings.js │ │ │ │ ├── breakpoints/ │ │ │ │ │ └── breakpoints.js │ │ │ │ ├── cpu_profile/ │ │ │ │ │ └── cpu_profile.js │ │ │ │ ├── crux-manager/ │ │ │ │ │ └── crux-manager.js │ │ │ │ ├── emulation/ │ │ │ │ │ └── emulation.js │ │ │ │ ├── extensions/ │ │ │ │ │ └── extensions.js │ │ │ │ ├── formatter/ │ │ │ │ │ └── formatter.js │ │ │ │ ├── har/ │ │ │ │ │ └── har.js │ │ │ │ ├── heap_snapshot_model/ │ │ │ │ │ └── heap_snapshot_model.js │ │ │ │ ├── issues_manager/ │ │ │ │ │ ├── descriptions/ │ │ │ │ │ │ ├── CoepCoopSandboxedIframeCannotNavigateToCoopPage.md │ │ │ │ │ │ ├── CoepCorpNotSameOrigin.md │ │ │ │ │ │ ├── CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md │ │ │ │ │ │ ├── CoepCorpNotSameSite.md │ │ │ │ │ │ ├── CoepFrameResourceNeedsCoepHeader.md │ │ │ │ │ │ ├── CompatibilityModeQuirks.md │ │ │ │ │ │ ├── CookieAttributeValueExceedsMaxSize.md │ │ │ │ │ │ ├── LowTextContrast.md │ │ │ │ │ │ ├── SameSiteExcludeContextDowngradeRead.md │ │ │ │ │ │ ├── SameSiteExcludeContextDowngradeSet.md │ │ │ │ │ │ ├── SameSiteExcludeNavigationContextDowngrade.md │ │ │ │ │ │ ├── SameSiteInvalidSameParty.md │ │ │ │ │ │ ├── SameSiteNoneInsecureErrorRead.md │ │ │ │ │ │ ├── SameSiteNoneInsecureErrorSet.md │ │ │ │ │ │ ├── SameSiteNoneInsecureWarnRead.md │ │ │ │ │ │ ├── SameSiteNoneInsecureWarnSet.md │ │ │ │ │ │ ├── SameSiteUnspecifiedLaxAllowUnsafeRead.md │ │ │ │ │ │ ├── SameSiteUnspecifiedLaxAllowUnsafeSet.md │ │ │ │ │ │ ├── SameSiteWarnCrossDowngradeRead.md │ │ │ │ │ │ ├── SameSiteWarnCrossDowngradeSet.md │ │ │ │ │ │ ├── SameSiteWarnStrictLaxDowngradeStrict.md │ │ │ │ │ │ ├── arInsecureContext.md │ │ │ │ │ │ ├── arInvalidInfoHeader.md │ │ │ │ │ │ ├── arInvalidRegisterOsSourceHeader.md │ │ │ │ │ │ ├── arInvalidRegisterOsTriggerHeader.md │ │ │ │ │ │ ├── arInvalidRegisterSourceHeader.md │ │ │ │ │ │ ├── arInvalidRegisterTriggerHeader.md │ │ │ │ │ │ ├── arNavigationRegistrationUniqueScopeAlreadySet.md │ │ │ │ │ │ ├── arNavigationRegistrationWithoutTransientUserActivation.md │ │ │ │ │ │ ├── arNoRegisterOsSourceHeader.md │ │ │ │ │ │ ├── arNoRegisterOsTriggerHeader.md │ │ │ │ │ │ ├── arNoRegisterSourceHeader.md │ │ │ │ │ │ ├── arNoRegisterTriggerHeader.md │ │ │ │ │ │ ├── arNoWebOrOsSupport.md │ │ │ │ │ │ ├── arOsSourceIgnored.md │ │ │ │ │ │ ├── arOsTriggerIgnored.md │ │ │ │ │ │ ├── arPermissionPolicyDisabled.md │ │ │ │ │ │ ├── arSourceAndTriggerHeaders.md │ │ │ │ │ │ ├── arSourceIgnored.md │ │ │ │ │ │ ├── arTriggerIgnored.md │ │ │ │ │ │ ├── arUntrustworthyReportingOrigin.md │ │ │ │ │ │ ├── arWebAndOsHeaders.md │ │ │ │ │ │ ├── bounceTrackingMitigations.md │ │ │ │ │ │ ├── clientHintMetaTagAllowListInvalidOrigin.md │ │ │ │ │ │ ├── clientHintMetaTagModifiedHTML.md │ │ │ │ │ │ ├── cookieCrossSiteRedirectDowngrade.md │ │ │ │ │ │ ├── cookieExcludeBlockedWithinRelatedWebsiteSet.md │ │ │ │ │ │ ├── cookieExcludeDomainNonAscii.md │ │ │ │ │ │ ├── cookieExcludePortMismatch.md │ │ │ │ │ │ ├── cookieExcludeSchemeMismatch.md │ │ │ │ │ │ ├── cookieExcludeThirdPartyPhaseoutRead.md │ │ │ │ │ │ ├── cookieExcludeThirdPartyPhaseoutSet.md │ │ │ │ │ │ ├── cookieWarnDomainNonAscii.md │ │ │ │ │ │ ├── cookieWarnMetadataGrantRead.md │ │ │ │ │ │ ├── cookieWarnMetadataGrantSet.md │ │ │ │ │ │ ├── cookieWarnThirdPartyPhaseoutRead.md │ │ │ │ │ │ ├── cookieWarnThirdPartyPhaseoutSet.md │ │ │ │ │ │ ├── corsAllowCredentialsRequired.md │ │ │ │ │ │ ├── corsDisabledScheme.md │ │ │ │ │ │ ├── corsDisallowedByMode.md │ │ │ │ │ │ ├── corsHeaderDisallowedByPreflightResponse.md │ │ │ │ │ │ ├── corsInsecurePrivateNetwork.md │ │ │ │ │ │ ├── corsInvalidHeaderValues.md │ │ │ │ │ │ ├── corsLocalNetworkAccessPermissionDenied.md │ │ │ │ │ │ ├── corsMethodDisallowedByPreflightResponse.md │ │ │ │ │ │ ├── corsNoCorsRedirectModeNotFollow.md │ │ │ │ │ │ ├── corsOriginMismatch.md │ │ │ │ │ │ ├── corsPreflightAllowPrivateNetworkError.md │ │ │ │ │ │ ├── corsPreflightResponseInvalid.md │ │ │ │ │ │ ├── corsPrivateNetworkPermissionDenied.md │ │ │ │ │ │ ├── corsRedirectContainsCredentials.md │ │ │ │ │ │ ├── corsWildcardOriginNotAllowed.md │ │ │ │ │ │ ├── cspEvalViolation.md │ │ │ │ │ │ ├── cspInlineViolation.md │ │ │ │ │ │ ├── cspTrustedTypesPolicyViolation.md │ │ │ │ │ │ ├── cspTrustedTypesSinkViolation.md │ │ │ │ │ │ ├── cspURLViolation.md │ │ │ │ │ │ ├── deprecation.md │ │ │ │ │ │ ├── federatedAuthRequestAccountsHttpNotFound.md │ │ │ │ │ │ ├── federatedAuthRequestAccountsInvalidResponse.md │ │ │ │ │ │ ├── federatedAuthRequestAccountsNoResponse.md │ │ │ │ │ │ ├── federatedAuthRequestApprovalDeclined.md │ │ │ │ │ │ ├── federatedAuthRequestCanceled.md │ │ │ │ │ │ ├── federatedAuthRequestClientMetadataHttpNotFound.md │ │ │ │ │ │ ├── federatedAuthRequestClientMetadataInvalidResponse.md │ │ │ │ │ │ ├── federatedAuthRequestClientMetadataNoResponse.md │ │ │ │ │ │ ├── federatedAuthRequestErrorFetchingSignin.md │ │ │ │ │ │ ├── federatedAuthRequestErrorIdToken.md │ │ │ │ │ │ ├── federatedAuthRequestIdTokenHttpNotFound.md │ │ │ │ │ │ ├── federatedAuthRequestIdTokenInvalidRequest.md │ │ │ │ │ │ ├── federatedAuthRequestIdTokenInvalidResponse.md │ │ │ │ │ │ ├── federatedAuthRequestIdTokenNoResponse.md │ │ │ │ │ │ ├── federatedAuthRequestInvalidSigninResponse.md │ │ │ │ │ │ ├── federatedAuthRequestManifestHttpNotFound.md │ │ │ │ │ │ ├── federatedAuthRequestManifestInvalidResponse.md │ │ │ │ │ │ ├── federatedAuthRequestManifestNoResponse.md │ │ │ │ │ │ ├── federatedAuthRequestTooManyRequests.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestInvalidAccountsResponse.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestNoAccountSharingPermission.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestNoApiPermission.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotIframe.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotSameOrigin.md │ │ │ │ │ │ ├── federatedAuthUserInfoRequestNotSignedInWithIdp.md │ │ │ │ │ │ ├── fetchingPartitionedBlobURL.md │ │ │ │ │ │ ├── genericFormAriaLabelledByToNonExistingId.md │ │ │ │ │ │ ├── genericFormAutocompleteAttributeEmptyError.md │ │ │ │ │ │ ├── genericFormDuplicateIdForInputError.md │ │ │ │ │ │ ├── genericFormEmptyIdAndNameAttributesForInputError.md │ │ │ │ │ │ ├── genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md │ │ │ │ │ │ ├── genericFormInputHasWrongButWellIntendedAutocompleteValueError.md │ │ │ │ │ │ ├── genericFormInputWithNoLabelError.md │ │ │ │ │ │ ├── genericFormLabelForMatchesNonExistingIdError.md │ │ │ │ │ │ ├── genericFormLabelForNameError.md │ │ │ │ │ │ ├── genericFormLabelHasNeitherForNorNestedInput.md │ │ │ │ │ │ ├── genericResponseWasBlockedByORB.md │ │ │ │ │ │ ├── heavyAd.md │ │ │ │ │ │ ├── mixedContent.md │ │ │ │ │ │ ├── navigatingPartitionedBlobURL.md │ │ │ │ │ │ ├── placeholderDescriptionForInvisibleIssues.md │ │ │ │ │ │ ├── propertyRuleInvalidNameIssue.md │ │ │ │ │ │ ├── propertyRuleIssue.md │ │ │ │ │ │ ├── selectElementAccessibilityDisallowedOptGroupChild.md │ │ │ │ │ │ ├── selectElementAccessibilityDisallowedSelectChild.md │ │ │ │ │ │ ├── selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md │ │ │ │ │ │ ├── selectElementAccessibilityInteractiveContentLegendChild.md │ │ │ │ │ │ ├── selectElementAccessibilityInteractiveContentOptionChild.md │ │ │ │ │ │ ├── selectElementAccessibilityNonPhrasingContentOptionChild.md │ │ │ │ │ │ ├── sharedArrayBuffer.md │ │ │ │ │ │ ├── sharedDictionaryUseErrorCrossOriginNoCorsRequest.md │ │ │ │ │ │ ├── sharedDictionaryUseErrorDictionaryLoadFailure.md │ │ │ │ │ │ ├── sharedDictionaryUseErrorMatchingDictionaryNotUsed.md │ │ │ │ │ │ ├── sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorCossOriginNoCorsRequest.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorDisallowedBySettings.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorExpiredResponse.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorFeatureDisabled.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorInsufficientResources.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorInvalidMatchField.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorInvalidStructuredHeader.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNavigationRequest.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNoMatchField.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonListMatchDestField.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonSecureContext.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonStringIdField.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonStringInMatchDestList.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonStringMatchField.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorNonTokenTypeField.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorRequestAborted.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorShuttingDown.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorTooLongIdField.md │ │ │ │ │ │ ├── sharedDictionaryWriteErrorUnsupportedType.md │ │ │ │ │ │ ├── sriInvalidSignatureHeader.md │ │ │ │ │ │ ├── sriInvalidSignatureInputHeader.md │ │ │ │ │ │ ├── sriMissingSignatureHeader.md │ │ │ │ │ │ ├── sriMissingSignatureInputHeader.md │ │ │ │ │ │ ├── sriSignatureHeaderValueIsIncorrectLength.md │ │ │ │ │ │ ├── sriSignatureHeaderValueIsNotByteSequence.md │ │ │ │ │ │ ├── sriSignatureHeaderValueIsParameterized.md │ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidComponentName.md │ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidComponentType.md │ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidDerivedComponentParameter.md │ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidHeaderComponentParameter.md │ │ │ │ │ │ ├── sriSignatureInputHeaderInvalidParameter.md │ │ │ │ │ │ ├── sriSignatureInputHeaderKeyIdLength.md │ │ │ │ │ │ ├── sriSignatureInputHeaderMissingLabel.md │ │ │ │ │ │ ├── sriSignatureInputHeaderMissingRequiredParameters.md │ │ │ │ │ │ ├── sriSignatureInputHeaderValueMissingComponents.md │ │ │ │ │ │ ├── sriSignatureInputHeaderValueNotInnerList.md │ │ │ │ │ │ ├── sriValidationFailedIntegrityMismatch.md │ │ │ │ │ │ ├── sriValidationFailedInvalidLength.md │ │ │ │ │ │ ├── sriValidationFailedSignatureExpired.md │ │ │ │ │ │ ├── sriValidationFailedSignatureMismatch.md │ │ │ │ │ │ ├── stylesheetLateImport.md │ │ │ │ │ │ └── stylesheetRequestFailed.md │ │ │ │ │ └── issues_manager.js │ │ │ │ ├── javascript_metadata/ │ │ │ │ │ └── javascript_metadata.js │ │ │ │ ├── live-metrics/ │ │ │ │ │ ├── live-metrics.js │ │ │ │ │ └── web-vitals-injected/ │ │ │ │ │ ├── spec/ │ │ │ │ │ │ └── spec.js │ │ │ │ │ └── web-vitals-injected.generated.js │ │ │ │ ├── logs/ │ │ │ │ │ ├── logs-meta.js │ │ │ │ │ └── logs.js │ │ │ │ ├── persistence/ │ │ │ │ │ ├── persistence-meta.js │ │ │ │ │ └── persistence.js │ │ │ │ ├── project_settings/ │ │ │ │ │ └── project_settings.js │ │ │ │ ├── react_native/ │ │ │ │ │ └── react_native.js │ │ │ │ ├── source_map_scopes/ │ │ │ │ │ └── source_map_scopes.js │ │ │ │ ├── text_utils/ │ │ │ │ │ └── text_utils.js │ │ │ │ ├── trace/ │ │ │ │ │ ├── extras/ │ │ │ │ │ │ └── extras.js │ │ │ │ │ ├── handlers/ │ │ │ │ │ │ └── handlers.js │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ └── helpers.js │ │ │ │ │ ├── insights/ │ │ │ │ │ │ └── insights.js │ │ │ │ │ ├── lantern/ │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ └── core.js │ │ │ │ │ │ ├── graph/ │ │ │ │ │ │ │ └── graph.js │ │ │ │ │ │ ├── lantern.js │ │ │ │ │ │ ├── metrics/ │ │ │ │ │ │ │ └── metrics.js │ │ │ │ │ │ ├── simulation/ │ │ │ │ │ │ │ └── simulation.js │ │ │ │ │ │ └── types/ │ │ │ │ │ │ └── types.js │ │ │ │ │ ├── trace.js │ │ │ │ │ └── types/ │ │ │ │ │ └── types.js │ │ │ │ ├── workspace/ │ │ │ │ │ └── workspace.js │ │ │ │ └── workspace_diff/ │ │ │ │ └── workspace_diff.js │ │ │ ├── ndb_app.html │ │ │ ├── node_app.html │ │ │ ├── panels/ │ │ │ │ ├── accessibility/ │ │ │ │ │ ├── accessibility-meta.js │ │ │ │ │ └── accessibility.js │ │ │ │ ├── ai_assistance/ │ │ │ │ │ ├── ai_assistance-meta.js │ │ │ │ │ └── ai_assistance.js │ │ │ │ ├── animation/ │ │ │ │ │ ├── animation-meta.js │ │ │ │ │ └── animation.js │ │ │ │ ├── application/ │ │ │ │ │ ├── application-meta.js │ │ │ │ │ ├── application.js │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ └── preloading/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ └── helper/ │ │ │ │ │ └── helper.js │ │ │ │ ├── autofill/ │ │ │ │ │ ├── autofill-meta.js │ │ │ │ │ └── autofill.js │ │ │ │ ├── browser_debugger/ │ │ │ │ │ ├── browser_debugger-meta.js │ │ │ │ │ └── browser_debugger.js │ │ │ │ ├── changes/ │ │ │ │ │ ├── changes-meta.js │ │ │ │ │ └── changes.js │ │ │ │ ├── common/ │ │ │ │ │ └── common.js │ │ │ │ ├── console/ │ │ │ │ │ ├── console-meta.js │ │ │ │ │ └── console.js │ │ │ │ ├── console_counters/ │ │ │ │ │ ├── console_counters-meta.js │ │ │ │ │ └── console_counters.js │ │ │ │ ├── coverage/ │ │ │ │ │ ├── coverage-meta.js │ │ │ │ │ └── coverage.js │ │ │ │ ├── css_overview/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── css_overview-meta.js │ │ │ │ │ └── css_overview.js │ │ │ │ ├── developer_resources/ │ │ │ │ │ ├── developer_resources-meta.js │ │ │ │ │ └── developer_resources.js │ │ │ │ ├── elements/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── elements-meta.js │ │ │ │ │ └── elements.js │ │ │ │ ├── emulation/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── emulation-meta.js │ │ │ │ │ └── emulation.js │ │ │ │ ├── event_listeners/ │ │ │ │ │ └── event_listeners.js │ │ │ │ ├── explain/ │ │ │ │ │ ├── explain-meta.js │ │ │ │ │ └── explain.js │ │ │ │ ├── issues/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── issues-meta.js │ │ │ │ │ └── issues.js │ │ │ │ ├── js_timeline/ │ │ │ │ │ ├── js_timeline-meta.js │ │ │ │ │ └── js_timeline.js │ │ │ │ ├── layer_viewer/ │ │ │ │ │ ├── layer_viewer-meta.js │ │ │ │ │ └── layer_viewer.js │ │ │ │ ├── layers/ │ │ │ │ │ ├── layers-meta.js │ │ │ │ │ └── layers.js │ │ │ │ ├── lighthouse/ │ │ │ │ │ ├── lighthouse-meta.js │ │ │ │ │ └── lighthouse.js │ │ │ │ ├── linear_memory_inspector/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── linear_memory_inspector-meta.js │ │ │ │ │ └── linear_memory_inspector.js │ │ │ │ ├── media/ │ │ │ │ │ ├── media-meta.js │ │ │ │ │ └── media.js │ │ │ │ ├── mobile_throttling/ │ │ │ │ │ ├── mobile_throttling-meta.js │ │ │ │ │ └── mobile_throttling.js │ │ │ │ ├── network/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── forward/ │ │ │ │ │ │ └── forward.js │ │ │ │ │ ├── network-meta.js │ │ │ │ │ └── network.js │ │ │ │ ├── performance_monitor/ │ │ │ │ │ ├── performance_monitor-meta.js │ │ │ │ │ └── performance_monitor.js │ │ │ │ ├── profiler/ │ │ │ │ │ ├── profiler-meta.js │ │ │ │ │ └── profiler.js │ │ │ │ ├── protocol_monitor/ │ │ │ │ │ ├── protocol_monitor-meta.js │ │ │ │ │ └── protocol_monitor.js │ │ │ │ ├── react_devtools/ │ │ │ │ │ ├── react_devtools.js │ │ │ │ │ ├── react_devtools_components-meta.js │ │ │ │ │ └── react_devtools_profiler-meta.js │ │ │ │ ├── recorder/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ └── controllers.js │ │ │ │ │ ├── converters/ │ │ │ │ │ │ └── converters.js │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ └── extensions.js │ │ │ │ │ ├── injected/ │ │ │ │ │ │ ├── injected.generated.js │ │ │ │ │ │ └── injected.js │ │ │ │ │ ├── models/ │ │ │ │ │ │ └── models.js │ │ │ │ │ ├── recorder-actions/ │ │ │ │ │ │ └── recorder-actions.js │ │ │ │ │ ├── recorder-meta.js │ │ │ │ │ ├── recorder.js │ │ │ │ │ └── util/ │ │ │ │ │ └── util.js │ │ │ │ ├── rn_welcome/ │ │ │ │ │ ├── rn_welcome-meta.js │ │ │ │ │ └── rn_welcome.js │ │ │ │ ├── screencast/ │ │ │ │ │ ├── screencast-meta.js │ │ │ │ │ └── screencast.js │ │ │ │ ├── search/ │ │ │ │ │ └── search.js │ │ │ │ ├── security/ │ │ │ │ │ ├── security-meta.js │ │ │ │ │ └── security.js │ │ │ │ ├── sensors/ │ │ │ │ │ ├── sensors-meta.js │ │ │ │ │ └── sensors.js │ │ │ │ ├── settings/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── emulation/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── components.js │ │ │ │ │ │ ├── emulation-meta.js │ │ │ │ │ │ ├── emulation.js │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── settings-meta.js │ │ │ │ │ └── settings.js │ │ │ │ ├── snippets/ │ │ │ │ │ └── snippets.js │ │ │ │ ├── sources/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── components.js │ │ │ │ │ ├── sources-meta.js │ │ │ │ │ └── sources.js │ │ │ │ ├── timeline/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── components.js │ │ │ │ │ │ └── insights/ │ │ │ │ │ │ └── insights.js │ │ │ │ │ ├── extensions/ │ │ │ │ │ │ └── extensions.js │ │ │ │ │ ├── overlays/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── components.js │ │ │ │ │ │ └── overlays.js │ │ │ │ │ ├── timeline-meta.js │ │ │ │ │ ├── timeline.js │ │ │ │ │ └── utils/ │ │ │ │ │ └── utils.js │ │ │ │ ├── utils/ │ │ │ │ │ └── utils.js │ │ │ │ ├── web_audio/ │ │ │ │ │ ├── graph_visualizer/ │ │ │ │ │ │ └── graph_visualizer.js │ │ │ │ │ ├── web_audio-meta.js │ │ │ │ │ └── web_audio.js │ │ │ │ ├── webauthn/ │ │ │ │ │ ├── webauthn-meta.js │ │ │ │ │ └── webauthn.js │ │ │ │ └── whats_new/ │ │ │ │ ├── resources/ │ │ │ │ │ └── WNDT.md │ │ │ │ ├── whats_new-meta.js │ │ │ │ └── whats_new.js │ │ │ ├── rehydrated_devtools_app.html │ │ │ ├── rn_fusebox.html │ │ │ ├── services/ │ │ │ │ ├── puppeteer/ │ │ │ │ │ └── puppeteer.js │ │ │ │ ├── trace_bounds/ │ │ │ │ │ └── trace_bounds.js │ │ │ │ ├── tracing/ │ │ │ │ │ └── tracing.js │ │ │ │ └── window_bounds/ │ │ │ │ └── window_bounds.js │ │ │ ├── third_party/ │ │ │ │ ├── acorn/ │ │ │ │ │ └── acorn.js │ │ │ │ ├── chromium/ │ │ │ │ │ └── client-variations/ │ │ │ │ │ └── client-variations.js │ │ │ │ ├── codemirror.next/ │ │ │ │ │ ├── chunk/ │ │ │ │ │ │ ├── angular.js │ │ │ │ │ │ ├── codemirror.js │ │ │ │ │ │ ├── cpp.js │ │ │ │ │ │ ├── java.js │ │ │ │ │ │ ├── legacy.js │ │ │ │ │ │ ├── less.js │ │ │ │ │ │ ├── markdown.js │ │ │ │ │ │ ├── php.js │ │ │ │ │ │ ├── python.js │ │ │ │ │ │ ├── sass.js │ │ │ │ │ │ ├── svelte.js │ │ │ │ │ │ ├── vue.js │ │ │ │ │ │ ├── wast.js │ │ │ │ │ │ └── xml.js │ │ │ │ │ └── codemirror.next.js │ │ │ │ ├── csp_evaluator/ │ │ │ │ │ └── csp_evaluator.js │ │ │ │ ├── diff/ │ │ │ │ │ └── diff.js │ │ │ │ ├── i18n/ │ │ │ │ │ └── i18n.js │ │ │ │ ├── intl-messageformat/ │ │ │ │ │ └── intl-messageformat.js │ │ │ │ ├── json5/ │ │ │ │ │ └── json5.js │ │ │ │ ├── legacy-javascript/ │ │ │ │ │ └── legacy-javascript.js │ │ │ │ ├── lighthouse/ │ │ │ │ │ ├── lighthouse-dt-bundle.js │ │ │ │ │ └── report/ │ │ │ │ │ └── report.js │ │ │ │ ├── lit/ │ │ │ │ │ └── lit.js │ │ │ │ ├── marked/ │ │ │ │ │ └── marked.js │ │ │ │ ├── puppeteer/ │ │ │ │ │ └── puppeteer.js │ │ │ │ ├── puppeteer-replay/ │ │ │ │ │ └── puppeteer-replay.js │ │ │ │ ├── react-devtools/ │ │ │ │ │ └── react-devtools.js │ │ │ │ ├── third-party-web/ │ │ │ │ │ └── third-party-web.js │ │ │ │ ├── wasmparser/ │ │ │ │ │ └── wasmparser.js │ │ │ │ └── web-vitals/ │ │ │ │ └── web-vitals.js │ │ │ ├── ui/ │ │ │ │ ├── components/ │ │ │ │ │ ├── adorners/ │ │ │ │ │ │ └── adorners.js │ │ │ │ │ ├── buttons/ │ │ │ │ │ │ └── buttons.js │ │ │ │ │ ├── cards/ │ │ │ │ │ │ └── cards.js │ │ │ │ │ ├── chrome_link/ │ │ │ │ │ │ └── chrome_link.js │ │ │ │ │ ├── code_highlighter/ │ │ │ │ │ │ └── code_highlighter.js │ │ │ │ │ ├── dialogs/ │ │ │ │ │ │ └── dialogs.js │ │ │ │ │ ├── diff_view/ │ │ │ │ │ │ └── diff_view.js │ │ │ │ │ ├── expandable_list/ │ │ │ │ │ │ └── expandable_list.js │ │ │ │ │ ├── floating_button/ │ │ │ │ │ │ └── floating_button.js │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ └── helpers.js │ │ │ │ │ ├── highlighting/ │ │ │ │ │ │ └── highlighting.js │ │ │ │ │ ├── icon_button/ │ │ │ │ │ │ └── icon_button.js │ │ │ │ │ ├── input/ │ │ │ │ │ │ └── input.js │ │ │ │ │ ├── issue_counter/ │ │ │ │ │ │ └── issue_counter.js │ │ │ │ │ ├── legacy_wrapper/ │ │ │ │ │ │ └── legacy_wrapper.js │ │ │ │ │ ├── linkifier/ │ │ │ │ │ │ └── linkifier.js │ │ │ │ │ ├── markdown_view/ │ │ │ │ │ │ └── markdown_view.js │ │ │ │ │ ├── menus/ │ │ │ │ │ │ └── menus.js │ │ │ │ │ ├── node_text/ │ │ │ │ │ │ └── node_text.js │ │ │ │ │ ├── panel_feedback/ │ │ │ │ │ │ └── panel_feedback.js │ │ │ │ │ ├── panel_introduction_steps/ │ │ │ │ │ │ └── panel_introduction_steps.js │ │ │ │ │ ├── render_coordinator/ │ │ │ │ │ │ └── render_coordinator.js │ │ │ │ │ ├── report_view/ │ │ │ │ │ │ └── report_view.js │ │ │ │ │ ├── request_link_icon/ │ │ │ │ │ │ └── request_link_icon.js │ │ │ │ │ ├── settings/ │ │ │ │ │ │ └── settings.js │ │ │ │ │ ├── spinners/ │ │ │ │ │ │ └── spinners.js │ │ │ │ │ ├── srgb_overlay/ │ │ │ │ │ │ └── srgb_overlay.js │ │ │ │ │ ├── suggestion_input/ │ │ │ │ │ │ └── suggestion_input.js │ │ │ │ │ ├── survey_link/ │ │ │ │ │ │ └── survey_link.js │ │ │ │ │ ├── switch/ │ │ │ │ │ │ └── switch.js │ │ │ │ │ ├── text_editor/ │ │ │ │ │ │ └── text_editor.js │ │ │ │ │ ├── text_prompt/ │ │ │ │ │ │ └── text_prompt.js │ │ │ │ │ ├── tooltips/ │ │ │ │ │ │ └── tooltips.js │ │ │ │ │ └── tree_outline/ │ │ │ │ │ └── tree_outline.js │ │ │ │ ├── legacy/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── color_picker/ │ │ │ │ │ │ │ └── color_picker.js │ │ │ │ │ │ ├── cookie_table/ │ │ │ │ │ │ │ └── cookie_table.js │ │ │ │ │ │ ├── data_grid/ │ │ │ │ │ │ │ └── data_grid.js │ │ │ │ │ │ ├── inline_editor/ │ │ │ │ │ │ │ └── inline_editor.js │ │ │ │ │ │ ├── object_ui/ │ │ │ │ │ │ │ ├── object_ui-meta.js │ │ │ │ │ │ │ └── object_ui.js │ │ │ │ │ │ ├── perf_ui/ │ │ │ │ │ │ │ ├── perf_ui-meta.js │ │ │ │ │ │ │ └── perf_ui.js │ │ │ │ │ │ ├── quick_open/ │ │ │ │ │ │ │ ├── quick_open-meta.js │ │ │ │ │ │ │ └── quick_open.js │ │ │ │ │ │ ├── source_frame/ │ │ │ │ │ │ │ ├── source_frame-meta.js │ │ │ │ │ │ │ └── source_frame.js │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── utils.js │ │ │ │ │ ├── legacy.js │ │ │ │ │ └── theme_support/ │ │ │ │ │ └── theme_support.js │ │ │ │ ├── lit/ │ │ │ │ │ └── lit.js │ │ │ │ └── visual_logging/ │ │ │ │ └── visual_logging.js │ │ │ └── worker_app.html │ │ ├── index.js │ │ └── package.json │ ├── debugger-shell/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── __snapshots__/ │ │ │ │ └── dotslash-test.js.snap │ │ │ ├── dotslash-file-simulating-data-corruption.jsonc │ │ │ ├── dotslash-file-simulating-network-error.jsonc │ │ │ ├── dotslash-file-with-missing-platforms.jsonc │ │ │ ├── dotslash-test.js │ │ │ └── electron-dependency-test.js │ │ ├── bin/ │ │ │ └── react-native-devtools │ │ ├── package.json │ │ └── src/ │ │ ├── electron/ │ │ │ ├── BuildInfo.js │ │ │ ├── BuildInfo.js.tpl │ │ │ ├── MainInstanceEntryPoint.js │ │ │ ├── SettingsStore.js │ │ │ ├── index.flow.js │ │ │ ├── index.js │ │ │ ├── preload.js │ │ │ └── resources/ │ │ │ └── icon.icns │ │ ├── index.js │ │ └── node/ │ │ ├── __tests__/ │ │ │ └── debugger-shell-test.js │ │ ├── index.flow.js │ │ ├── index.js │ │ └── private/ │ │ └── LaunchUtils.js │ ├── dev-middleware/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ └── src/ │ │ ├── __tests__/ │ │ │ ├── FetchUtils.js │ │ │ ├── InspectorDebuggerUtils.js │ │ │ ├── InspectorDeviceUtils.js │ │ │ ├── InspectorProtocolUtils.js │ │ │ ├── InspectorProxyCdpRewritingHacks-test.js │ │ │ ├── InspectorProxyCdpTransport-test.js │ │ │ ├── InspectorProxyConcurrentSessions-test.js │ │ │ ├── InspectorProxyCustomMessageHandler-test.js │ │ │ ├── InspectorProxyDeviceHandoff-test.js │ │ │ ├── InspectorProxyHttpApi-test.js │ │ │ ├── InspectorProxyReactNativeReloads-test.js │ │ │ ├── ResourceUtils.js │ │ │ ├── ServerUtils.js │ │ │ ├── StandaloneFuseboxShell-test.js │ │ │ ├── __snapshots__/ │ │ │ │ └── InspectorProxyHttpApi-test.js.snap │ │ │ ├── embedderScriptStub-test.js │ │ │ ├── getBaseUrlFromRequest-test.js │ │ │ └── getDevToolsFrontendUrl-test.js │ │ ├── createDevMiddleware.js │ │ ├── index.flow.js │ │ ├── index.js │ │ ├── inspector-proxy/ │ │ │ ├── CdpDebugLogging.js │ │ │ ├── CustomMessageHandler.js │ │ │ ├── Device.js │ │ │ ├── DeviceEventReporter.js │ │ │ ├── EventLoopPerfTracker.js │ │ │ ├── InspectorProxy.js │ │ │ ├── InspectorProxyHeartbeat.js │ │ │ ├── __docs__/ │ │ │ │ └── README.md │ │ │ ├── cdp-types/ │ │ │ │ ├── messages.js │ │ │ │ └── protocol.js │ │ │ └── types.js │ │ ├── middleware/ │ │ │ └── openDebuggerMiddleware.js │ │ ├── types/ │ │ │ ├── DevToolLauncher.js │ │ │ ├── EventReporter.js │ │ │ ├── Experiments.js │ │ │ ├── Logger.js │ │ │ └── ReadonlyURL.js │ │ └── utils/ │ │ ├── DefaultToolLauncher.js │ │ ├── __mocks__/ │ │ │ └── DefaultToolLauncher.js │ │ ├── getBaseUrlFromRequest.js │ │ └── getDevToolsFrontendUrl.js │ ├── eslint-config-react-native/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ └── prettier-config-test.js │ │ ├── flat.js │ │ ├── index.js │ │ ├── package.json │ │ └── shared.js │ ├── eslint-plugin-react-native/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── eslint-tester.js │ │ │ ├── no-deep-imports-test.js │ │ │ └── platform-colors-test.js │ │ ├── index.js │ │ ├── no-deep-imports.js │ │ ├── package.json │ │ ├── platform-colors.js │ │ └── utils.js │ ├── eslint-plugin-specs/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── eslint-tester.js │ │ │ └── react-native-modules-test.js │ │ ├── index.js │ │ ├── package.json │ │ ├── postpack.js │ │ ├── prepack.js │ │ ├── react-native-modules.js │ │ └── with-babel-register/ │ │ ├── disk-cache.js │ │ └── index.js │ ├── gradle-plugin/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── build.gradle.kts │ │ ├── gradle/ │ │ │ ├── libs.versions.toml │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── package.json │ │ ├── react-native-gradle-plugin/ │ │ │ ├── README.md │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── facebook/ │ │ │ │ └── react/ │ │ │ │ ├── ReactExtension.kt │ │ │ │ ├── ReactPlugin.kt │ │ │ │ ├── ReactRootProjectPlugin.kt │ │ │ │ ├── TaskConfiguration.kt │ │ │ │ ├── internal/ │ │ │ │ │ └── PrivateReactExtension.kt │ │ │ │ ├── tasks/ │ │ │ │ │ ├── BundleHermesCTask.kt │ │ │ │ │ ├── GenerateAutolinkingNewArchitecturesFileTask.kt │ │ │ │ │ ├── GenerateCodegenArtifactsTask.kt │ │ │ │ │ ├── GenerateCodegenSchemaTask.kt │ │ │ │ │ ├── GenerateEntryPointTask.kt │ │ │ │ │ ├── GeneratePackageListTask.kt │ │ │ │ │ └── internal/ │ │ │ │ │ ├── BuildCodegenCLITask.kt │ │ │ │ │ ├── CustomExecTask.kt │ │ │ │ │ ├── PrepareBoostTask.kt │ │ │ │ │ ├── PrepareGflagsTask.kt │ │ │ │ │ ├── PrepareGlogTask.kt │ │ │ │ │ ├── PreparePrefabHeadersTask.kt │ │ │ │ │ └── utils/ │ │ │ │ │ └── PrefabPreprocessingEntry.kt │ │ │ │ └── utils/ │ │ │ │ ├── AgpConfiguratorUtils.kt │ │ │ │ ├── BackwardCompatUtils.kt │ │ │ │ ├── DependencyUtils.kt │ │ │ │ ├── FileUtils.kt │ │ │ │ ├── JdkConfiguratorUtils.kt │ │ │ │ ├── NdkConfiguratorUtils.kt │ │ │ │ ├── PathUtils.kt │ │ │ │ ├── ProjectUtils.kt │ │ │ │ └── PropertyUtils.kt │ │ │ └── test/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── facebook/ │ │ │ └── react/ │ │ │ ├── ReactExtensionTest.kt │ │ │ ├── TestReactExtension.kt │ │ │ ├── model/ │ │ │ │ └── ModelAutolinkingDependenciesJsonTest.kt │ │ │ ├── tasks/ │ │ │ │ ├── BundleHermesCTaskTest.kt │ │ │ │ ├── GenerateAutolinkingNewArchitecturesFileTaskTest.kt │ │ │ │ ├── GenerateCodegenArtifactsTaskTest.kt │ │ │ │ ├── GenerateCodegenSchemaTaskTest.kt │ │ │ │ ├── GenerateEntryPointTaskTest.kt │ │ │ │ ├── GeneratePackageListTaskTest.kt │ │ │ │ └── internal/ │ │ │ │ ├── BuildCodegenCLITaskTest.kt │ │ │ │ ├── CustomExecTaskTest.kt │ │ │ │ ├── PrepareBoostTaskTest.kt │ │ │ │ ├── PrepareGflagsTaskTest.kt │ │ │ │ ├── PrepareGlogTaskTest.kt │ │ │ │ ├── PreparePrefabHeadersTaskTest.kt │ │ │ │ └── utils/ │ │ │ │ └── PrefabPreprocessingEntryTest.kt │ │ │ ├── tests/ │ │ │ │ └── TaskTestUtils.kt │ │ │ └── utils/ │ │ │ ├── AgpConfiguratorUtilsTest.kt │ │ │ ├── BackwardCompatUtilsTest.kt │ │ │ ├── DependencyUtilsTest.kt │ │ │ ├── FileUtilsTest.kt │ │ │ ├── NdkConfiguratorUtilsTest.kt │ │ │ ├── PathUtilsTest.kt │ │ │ └── ProjectUtilsTest.kt │ │ ├── settings-plugin/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── facebook/ │ │ │ │ └── react/ │ │ │ │ ├── ReactSettingsExtension.kt │ │ │ │ └── ReactSettingsPlugin.kt │ │ │ └── test/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── facebook/ │ │ │ └── react/ │ │ │ └── ReactSettingsExtensionTest.kt │ │ ├── settings.gradle.kts │ │ ├── shared/ │ │ │ ├── build.gradle.kts │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ └── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── facebook/ │ │ │ │ └── react/ │ │ │ │ ├── model/ │ │ │ │ │ ├── ModelAutolinkingAndroidProjectJson.kt │ │ │ │ │ ├── ModelAutolinkingConfigJson.kt │ │ │ │ │ ├── ModelAutolinkingDependenciesJson.kt │ │ │ │ │ ├── ModelAutolinkingDependenciesPlatformAndroidJson.kt │ │ │ │ │ ├── ModelAutolinkingDependenciesPlatformJson.kt │ │ │ │ │ ├── ModelAutolinkingProjectJson.kt │ │ │ │ │ ├── ModelCodegenConfig.kt │ │ │ │ │ ├── ModelCodegenConfigAndroid.kt │ │ │ │ │ └── ModelPackageJson.kt │ │ │ │ └── utils/ │ │ │ │ ├── JsonUtils.kt │ │ │ │ ├── KotlinStdlibCompatUtils.kt │ │ │ │ ├── Os.kt │ │ │ │ └── TaskUtils.kt │ │ │ └── test/ │ │ │ └── kotlin/ │ │ │ └── com/ │ │ │ └── facebook/ │ │ │ └── react/ │ │ │ └── utils/ │ │ │ ├── JsonUtilsTest.kt │ │ │ ├── KotlinStdlibCompatUtilsTest.kt │ │ │ ├── OsTest.kt │ │ │ └── TaskUtilsTest.kt │ │ └── shared-testutil/ │ │ ├── build.gradle.kts │ │ └── src/ │ │ └── main/ │ │ └── kotlin/ │ │ └── com/ │ │ └── facebook/ │ │ └── react/ │ │ └── tests/ │ │ ├── OsRule.kt │ │ └── WithOs.kt │ ├── jest-preset/ │ │ ├── README.md │ │ ├── jest/ │ │ │ ├── MockNativeMethods.js │ │ │ ├── RefreshControlMock.js │ │ │ ├── __tests__/ │ │ │ │ └── setup-test.js │ │ │ ├── assetFileTransformer.js │ │ │ ├── local-setup.js │ │ │ ├── mock.js │ │ │ ├── mockComponent.js │ │ │ ├── mockNativeComponent.js │ │ │ ├── mocks/ │ │ │ │ ├── AccessibilityInfo.js │ │ │ │ ├── ActivityIndicator.js │ │ │ │ ├── AppState.js │ │ │ │ ├── Clipboard.js │ │ │ │ ├── Image.js │ │ │ │ ├── InitializeCore.js │ │ │ │ ├── Linking.js │ │ │ │ ├── Modal.js │ │ │ │ ├── NativeComponentRegistry.js │ │ │ │ ├── NativeModules.js │ │ │ │ ├── RefreshControl.js │ │ │ │ ├── RendererProxy.js │ │ │ │ ├── ScrollView.js │ │ │ │ ├── Text.js │ │ │ │ ├── TextInput.js │ │ │ │ ├── UIManager.js │ │ │ │ ├── Vibration.js │ │ │ │ ├── View.js │ │ │ │ ├── ViewNativeComponent.js │ │ │ │ ├── requireNativeComponent.js │ │ │ │ └── useColorScheme.js │ │ │ ├── react-native-env.js │ │ │ ├── renderer.js │ │ │ ├── resolver.js │ │ │ └── setup.js │ │ ├── jest-preset.js │ │ └── package.json │ ├── metro-config/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ └── src/ │ │ ├── index.flow.js │ │ └── index.js │ ├── new-app-screen/ │ │ ├── README.md │ │ ├── package.json │ │ └── src/ │ │ ├── Links.js │ │ ├── NewAppScreen.js │ │ ├── Theme.js │ │ ├── index.d.ts │ │ └── index.js │ ├── normalize-color/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ └── normalizeColor-test.js │ │ ├── index.js │ │ ├── index.js.flow │ │ └── package.json │ ├── polyfills/ │ │ ├── README.md │ │ ├── __tests__/ │ │ │ ├── consoleTable-itest.js │ │ │ └── consoleTimeStamp-itest.js │ │ ├── console.js │ │ ├── error-guard.js │ │ ├── index.js │ │ └── package.json │ ├── react-native/ │ │ ├── .doxygen.config.template │ │ ├── LICENSE │ │ ├── Libraries/ │ │ │ ├── ActionSheetIOS/ │ │ │ │ ├── ActionSheetIOS.d.ts │ │ │ │ ├── ActionSheetIOS.js │ │ │ │ ├── NativeActionSheetManager.js │ │ │ │ └── React-RCTActionSheet.podspec │ │ │ ├── Alert/ │ │ │ │ ├── Alert.d.ts │ │ │ │ ├── Alert.js │ │ │ │ ├── NativeAlertManager.js │ │ │ │ ├── RCTAlertManager.android.js │ │ │ │ ├── RCTAlertManager.ios.js │ │ │ │ ├── RCTAlertManager.js │ │ │ │ └── RCTAlertManager.js.flow │ │ │ ├── Animated/ │ │ │ │ ├── Animated.d.ts │ │ │ │ ├── Animated.js │ │ │ │ ├── Animated.js.flow │ │ │ │ ├── AnimatedEvent.js │ │ │ │ ├── AnimatedExports.js │ │ │ │ ├── AnimatedExports.js.flow │ │ │ │ ├── AnimatedImplementation.js │ │ │ │ ├── AnimatedMock.js │ │ │ │ ├── AnimatedPlatformConfig.js │ │ │ │ ├── Easing.d.ts │ │ │ │ ├── Easing.js │ │ │ │ ├── NativeAnimatedAllowlist.js │ │ │ │ ├── NativeAnimatedModule.js │ │ │ │ ├── NativeAnimatedTurboModule.js │ │ │ │ ├── SpringConfig.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── Animated-benchmark-itest.js │ │ │ │ │ ├── Animated-itest.js │ │ │ │ │ ├── Animated-test.js │ │ │ │ │ ├── Animated-web-test.js │ │ │ │ │ ├── AnimatedBackend-benchmark-itest.js │ │ │ │ │ ├── AnimatedBackend-itest.js │ │ │ │ │ ├── AnimatedBackendSuspense-itest.js │ │ │ │ │ ├── AnimatedMock-test.js │ │ │ │ │ ├── AnimatedObject-test.js │ │ │ │ │ ├── AnimatedProps-test.js │ │ │ │ │ ├── AnimatedValue-test.js │ │ │ │ │ ├── Easing-test.js │ │ │ │ │ ├── Interpolation-test.js │ │ │ │ │ ├── NativeAnimatedAllowlist-test.js │ │ │ │ │ ├── TimingAnimation-test.js │ │ │ │ │ └── bezier-test.js │ │ │ │ ├── animations/ │ │ │ │ │ ├── Animation.js │ │ │ │ │ ├── DecayAnimation.js │ │ │ │ │ ├── SpringAnimation.js │ │ │ │ │ └── TimingAnimation.js │ │ │ │ ├── bezier.js │ │ │ │ ├── components/ │ │ │ │ │ ├── AnimatedFlatList.js │ │ │ │ │ ├── AnimatedImage.js │ │ │ │ │ ├── AnimatedScrollView.js │ │ │ │ │ ├── AnimatedSectionList.js │ │ │ │ │ ├── AnimatedText.js │ │ │ │ │ └── AnimatedView.js │ │ │ │ ├── createAnimatedComponent.js │ │ │ │ ├── nodes/ │ │ │ │ │ ├── AnimatedAddition.js │ │ │ │ │ ├── AnimatedColor.js │ │ │ │ │ ├── AnimatedDiffClamp.js │ │ │ │ │ ├── AnimatedDivision.js │ │ │ │ │ ├── AnimatedInterpolation.js │ │ │ │ │ ├── AnimatedModulo.js │ │ │ │ │ ├── AnimatedMultiplication.js │ │ │ │ │ ├── AnimatedNode.js │ │ │ │ │ ├── AnimatedObject.js │ │ │ │ │ ├── AnimatedProps.js │ │ │ │ │ ├── AnimatedStyle.js │ │ │ │ │ ├── AnimatedSubtraction.js │ │ │ │ │ ├── AnimatedTracking.js │ │ │ │ │ ├── AnimatedTransform.js │ │ │ │ │ ├── AnimatedValue.js │ │ │ │ │ ├── AnimatedValueXY.js │ │ │ │ │ └── AnimatedWithChildren.js │ │ │ │ ├── shouldUseTurboAnimatedModule.js │ │ │ │ ├── useAnimatedColor.d.ts │ │ │ │ ├── useAnimatedColor.js │ │ │ │ ├── useAnimatedProps.js │ │ │ │ ├── useAnimatedValue.d.ts │ │ │ │ ├── useAnimatedValue.js │ │ │ │ ├── useAnimatedValueXY.d.ts │ │ │ │ └── useAnimatedValueXY.js │ │ │ ├── AppDelegate/ │ │ │ │ ├── RCTAppDelegate.h │ │ │ │ ├── RCTAppDelegate.mm │ │ │ │ ├── RCTAppSetupUtils.h │ │ │ │ ├── RCTAppSetupUtils.mm │ │ │ │ ├── RCTArchConfiguratorProtocol.h │ │ │ │ ├── RCTDefaultReactNativeFactoryDelegate.h │ │ │ │ ├── RCTDefaultReactNativeFactoryDelegate.mm │ │ │ │ ├── RCTDependencyProvider.h │ │ │ │ ├── RCTJSRuntimeConfiguratorProtocol.h │ │ │ │ ├── RCTReactNativeFactory.h │ │ │ │ ├── RCTReactNativeFactory.mm │ │ │ │ ├── RCTRootViewFactory.h │ │ │ │ ├── RCTRootViewFactory.mm │ │ │ │ ├── RCTUIConfiguratorProtocol.h │ │ │ │ └── React-RCTAppDelegate.podspec │ │ │ ├── AppState/ │ │ │ │ ├── AppState.d.ts │ │ │ │ ├── AppState.js │ │ │ │ └── NativeAppState.js │ │ │ ├── BatchedBridge/ │ │ │ │ ├── BatchedBridge.js │ │ │ │ ├── MessageQueue.js │ │ │ │ ├── NativeModules.d.ts │ │ │ │ ├── NativeModules.js │ │ │ │ ├── __mocks__/ │ │ │ │ │ ├── MessageQueueTestConfig.js │ │ │ │ │ └── MessageQueueTestModule.js │ │ │ │ └── __tests__/ │ │ │ │ ├── MessageQueue-test.js │ │ │ │ └── NativeModules-test.js │ │ │ ├── Blob/ │ │ │ │ ├── Blob.js │ │ │ │ ├── BlobManager.js │ │ │ │ ├── BlobRegistry.js │ │ │ │ ├── BlobTypes.js │ │ │ │ ├── File.js │ │ │ │ ├── FileReader.js │ │ │ │ ├── NativeBlobModule.js │ │ │ │ ├── NativeFileReaderModule.js │ │ │ │ ├── RCTBlobCollector.h │ │ │ │ ├── RCTBlobCollector.mm │ │ │ │ ├── RCTBlobManager.h │ │ │ │ ├── RCTBlobManager.mm │ │ │ │ ├── RCTBlobPlugins.h │ │ │ │ ├── RCTBlobPlugins.mm │ │ │ │ ├── RCTFileReaderModule.h │ │ │ │ ├── RCTFileReaderModule.mm │ │ │ │ ├── React-RCTBlob.podspec │ │ │ │ ├── URL.js │ │ │ │ ├── URLSearchParams.js │ │ │ │ ├── URLSearchParams.js.flow │ │ │ │ ├── __mocks__/ │ │ │ │ │ ├── BlobModule.js │ │ │ │ │ └── FileReaderModule.js │ │ │ │ └── __tests__/ │ │ │ │ ├── Blob-test.js │ │ │ │ ├── BlobManager-test.js │ │ │ │ ├── BlobRegistry-test.js │ │ │ │ ├── File-test.js │ │ │ │ ├── FileReader-test.js │ │ │ │ └── URL-test.js │ │ │ ├── Components/ │ │ │ │ ├── AccessibilityInfo/ │ │ │ │ │ ├── AccessibilityInfo.d.ts │ │ │ │ │ ├── AccessibilityInfo.js │ │ │ │ │ ├── NativeAccessibilityInfo.js │ │ │ │ │ ├── NativeAccessibilityManager.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── AccessibilityInfo-test.js │ │ │ │ │ ├── legacySendAccessibilityEvent.android.js │ │ │ │ │ ├── legacySendAccessibilityEvent.ios.js │ │ │ │ │ ├── legacySendAccessibilityEvent.js │ │ │ │ │ └── legacySendAccessibilityEvent.js.flow │ │ │ │ ├── ActivityIndicator/ │ │ │ │ │ ├── ActivityIndicator.d.ts │ │ │ │ │ ├── ActivityIndicator.js │ │ │ │ │ ├── ActivityIndicatorViewNativeComponent.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── ActivityIndicator-itest.js │ │ │ │ │ ├── ActivityIndicator-test.js │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── ActivityIndicator-test.js.snap │ │ │ │ ├── Button.d.ts │ │ │ │ ├── Button.js │ │ │ │ ├── Clipboard/ │ │ │ │ │ ├── Clipboard.d.ts │ │ │ │ │ ├── Clipboard.js │ │ │ │ │ └── NativeClipboard.js │ │ │ │ ├── DrawerAndroid/ │ │ │ │ │ ├── AndroidDrawerLayoutNativeComponent.js │ │ │ │ │ ├── DrawerLayoutAndroid.android.js │ │ │ │ │ ├── DrawerLayoutAndroid.d.ts │ │ │ │ │ ├── DrawerLayoutAndroid.ios.js │ │ │ │ │ ├── DrawerLayoutAndroid.js │ │ │ │ │ ├── DrawerLayoutAndroid.js.flow │ │ │ │ │ ├── DrawerLayoutAndroidFallback.js │ │ │ │ │ ├── DrawerLayoutAndroidTypes.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── DrawerAndroid-test.js │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── DrawerAndroid-test.js.snap │ │ │ │ ├── Keyboard/ │ │ │ │ │ ├── Keyboard.d.ts │ │ │ │ │ ├── Keyboard.js │ │ │ │ │ ├── KeyboardAvoidingView.d.ts │ │ │ │ │ ├── KeyboardAvoidingView.js │ │ │ │ │ ├── NativeKeyboardObserver.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Keyboard-test.js │ │ │ │ ├── LayoutConformance/ │ │ │ │ │ ├── LayoutConformance.d.ts │ │ │ │ │ ├── LayoutConformance.js │ │ │ │ │ └── LayoutConformanceNativeComponent.js │ │ │ │ ├── Pressable/ │ │ │ │ │ ├── Pressable.d.ts │ │ │ │ │ ├── Pressable.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── Pressable-itest.js │ │ │ │ │ │ ├── Pressable-test.js │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── Pressable-test.js.snap │ │ │ │ │ └── useAndroidRippleForView.js │ │ │ │ ├── ProgressBarAndroid/ │ │ │ │ │ ├── ProgressBarAndroid.android.js │ │ │ │ │ ├── ProgressBarAndroid.d.ts │ │ │ │ │ ├── ProgressBarAndroid.js │ │ │ │ │ ├── ProgressBarAndroidNativeComponent.js │ │ │ │ │ ├── ProgressBarAndroidTypes.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── ProgressBarAndroid-test.js │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── ProgressBarAndroid-test.js.snap │ │ │ │ ├── RefreshControl/ │ │ │ │ │ ├── AndroidSwipeRefreshLayoutNativeComponent.js │ │ │ │ │ ├── PullToRefreshViewNativeComponent.js │ │ │ │ │ ├── RefreshControl.d.ts │ │ │ │ │ └── RefreshControl.js │ │ │ │ ├── SafeAreaView/ │ │ │ │ │ ├── RCTSafeAreaViewNativeComponent.js │ │ │ │ │ ├── SafeAreaView.d.ts │ │ │ │ │ ├── SafeAreaView.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── SafeAreaView-test.js │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ └── SafeAreaView-test.js.snap │ │ │ │ ├── ScrollView/ │ │ │ │ │ ├── AndroidHorizontalScrollContentViewNativeComponent.js │ │ │ │ │ ├── AndroidHorizontalScrollViewNativeComponent.js │ │ │ │ │ ├── ScrollContentViewNativeComponent.js │ │ │ │ │ ├── ScrollView.d.ts │ │ │ │ │ ├── ScrollView.js │ │ │ │ │ ├── ScrollViewCommands.js │ │ │ │ │ ├── ScrollViewContext.js │ │ │ │ │ ├── ScrollViewNativeComponent.js │ │ │ │ │ ├── ScrollViewNativeComponentType.js │ │ │ │ │ ├── ScrollViewStickyHeader.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── ScrollView-itest.js │ │ │ │ │ │ ├── ScrollView-test.js │ │ │ │ │ │ ├── ScrollView-viewCulling-itest.js │ │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ │ └── ScrollView-test.js.snap │ │ │ │ │ └── processDecelerationRate.js │ │ │ │ ├── Sound/ │ │ │ │ │ ├── NativeSoundManager.js │ │ │ │ │ └── SoundManager.js │ │ │ │ ├── StaticRenderer.js │ │ │ │ ├── StatusBar/ │ │ │ │ │ ├── NativeStatusBarManagerAndroid.js │ │ │ │ │ ├── NativeStatusBarManagerIOS.js │ │ │ │ │ ├── StatusBar.d.ts │ │ │ │ │ ├── StatusBar.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── StatusBar-test.js │ │ │ │ ├── Switch/ │ │ │ │ │ ├── AndroidSwitchNativeComponent.js │ │ │ │ │ ├── Switch.d.ts │ │ │ │ │ ├── Switch.js │ │ │ │ │ ├── SwitchNativeComponent.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ └── Switch-itest.js │ │ │ │ ├── TextInput/ │ │ │ │ │ ├── AndroidTextInputNativeComponent.js │ │ │ │ │ ├── InputAccessoryView.d.ts │ │ │ │ │ ├── InputAccessoryView.js │ │ │ │ │ ├── RCTInputAccessoryViewNativeComponent.js │ │ │ │ │ ├── RCTMultilineTextInputNativeComponent.js │ │ │ │ │ ├── RCTSingelineTextInputNativeComponent.js │ │ │ │ │ ├── RCTTextInputViewConfig.js │ │ │ │ │ ├── TextInput.d.ts │ │ │ │ │ ├── TextInput.flow.js │ │ │ │ │ ├── TextInput.js │ │ │ │ │ ├── TextInputNativeCommands.js │ │ │ │ │ ├── TextInputState.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── InputAccessoryView-test.js │ │ │ │ │ ├── TextInput-itest.js │ │ │ │ │ ├── TextInput-test.js │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── InputAccessoryView-test.js.snap │ │ │ │ │ └── TextInput-test.js.snap │ │ │ │ ├── ToastAndroid/ │ │ │ │ │ ├── NativeToastAndroid.js │ │ │ │ │ ├── ToastAndroid.android.js │ │ │ │ │ ├── ToastAndroid.d.ts │ │ │ │ │ ├── ToastAndroid.ios.js │ │ │ │ │ ├── ToastAndroid.js │ │ │ │ │ ├── ToastAndroid.js.flow │ │ │ │ │ └── ToastAndroidFallback.js │ │ │ │ ├── Touchable/ │ │ │ │ │ ├── BoundingDimensions.js │ │ │ │ │ ├── PooledClass.js │ │ │ │ │ ├── Position.js │ │ │ │ │ ├── Touchable.d.ts │ │ │ │ │ ├── Touchable.js │ │ │ │ │ ├── TouchableBounce.js │ │ │ │ │ ├── TouchableHighlight.d.ts │ │ │ │ │ ├── TouchableHighlight.js │ │ │ │ │ ├── TouchableNativeFeedback.d.ts │ │ │ │ │ ├── TouchableNativeFeedback.js │ │ │ │ │ ├── TouchableOpacity.d.ts │ │ │ │ │ ├── TouchableOpacity.js │ │ │ │ │ ├── TouchableWithoutFeedback.d.ts │ │ │ │ │ ├── TouchableWithoutFeedback.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── TouchableHighlight-itest.js │ │ │ │ │ ├── TouchableNativeFeedback-test.js │ │ │ │ │ ├── TouchableOpacity-itest.js │ │ │ │ │ ├── TouchableOpacity-test.js │ │ │ │ │ ├── TouchableWithoutFeedback-itest.js │ │ │ │ │ ├── TouchableWithoutFeedback-test.js │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── TouchableNativeFeedback-test.js.snap │ │ │ │ │ ├── TouchableOpacity-test.js.snap │ │ │ │ │ └── TouchableWithoutFeedback-test.js.snap │ │ │ │ ├── UnimplementedViews/ │ │ │ │ │ ├── UnimplementedNativeViewNativeComponent.js │ │ │ │ │ └── UnimplementedView.js │ │ │ │ ├── View/ │ │ │ │ │ ├── ReactNativeStyleAttributes.js │ │ │ │ │ ├── View.d.ts │ │ │ │ │ ├── View.js │ │ │ │ │ ├── ViewAccessibility.d.ts │ │ │ │ │ ├── ViewAccessibility.js │ │ │ │ │ ├── ViewNativeComponent.js │ │ │ │ │ ├── ViewPropTypes.d.ts │ │ │ │ │ ├── ViewPropTypes.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── FantomEventHandlers-itest.js │ │ │ │ │ ├── View-benchmark-itest.js │ │ │ │ │ ├── View-itest.js │ │ │ │ │ ├── View-test.js │ │ │ │ │ └── View-vs-ViewNativeComponent-benchmark-itest.js │ │ │ │ └── __tests__/ │ │ │ │ ├── Button-itest.js │ │ │ │ ├── Button-test.js │ │ │ │ └── __snapshots__/ │ │ │ │ └── Button-test.js.snap │ │ │ ├── Core/ │ │ │ │ ├── Devtools/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── loadBundleFromServer-test.js │ │ │ │ │ │ ├── parseErrorStack-test.js │ │ │ │ │ │ └── parseHermesStack-test.js │ │ │ │ │ ├── getDevServer.js │ │ │ │ │ ├── loadBundleFromServer.js │ │ │ │ │ ├── openFileInEditor.js │ │ │ │ │ ├── openURLInBrowser.js │ │ │ │ │ ├── parseErrorStack.js │ │ │ │ │ ├── parseHermesStack.js │ │ │ │ │ └── symbolicateStackTrace.js │ │ │ │ ├── ExceptionsManager.js │ │ │ │ ├── ExtendedError.js │ │ │ │ ├── InitializeCore.js │ │ │ │ ├── NativeExceptionsManager.js │ │ │ │ ├── RawEventEmitter.js │ │ │ │ ├── ReactFiberErrorDialog.js │ │ │ │ ├── ReactNativeVersion.js │ │ │ │ ├── ReactNativeVersionCheck.js │ │ │ │ ├── SegmentFetcher/ │ │ │ │ │ └── NativeSegmentFetcher.js │ │ │ │ ├── Timers/ │ │ │ │ │ ├── JSTimers.js │ │ │ │ │ ├── NativeTiming.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── JSTimers-test.js │ │ │ │ │ ├── immediateShim.js │ │ │ │ │ └── queueMicrotask.js │ │ │ │ ├── __mocks__/ │ │ │ │ │ └── NativeExceptionsManager.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── ExceptionsManager-test.js │ │ │ │ │ └── ReactNativeVersionCheck-test.js │ │ │ │ ├── checkNativeVersion.js │ │ │ │ ├── polyfillPromise.js │ │ │ │ ├── registerCallableModule.d.ts │ │ │ │ ├── registerCallableModule.js │ │ │ │ ├── setUpAlert.js │ │ │ │ ├── setUpBatchedBridge.js │ │ │ │ ├── setUpDeveloperTools.js │ │ │ │ ├── setUpErrorHandling.js │ │ │ │ ├── setUpGlobals.js │ │ │ │ ├── setUpNavigator.js │ │ │ │ ├── setUpPerformance.js │ │ │ │ ├── setUpReactDevTools.js │ │ │ │ ├── setUpReactRefresh.js │ │ │ │ ├── setUpRegeneratorRuntime.js │ │ │ │ ├── setUpSegmentFetcher.js │ │ │ │ ├── setUpTimers.js │ │ │ │ └── setUpXHR.js │ │ │ ├── Debugging/ │ │ │ │ ├── DebuggingOverlay.js │ │ │ │ ├── DebuggingOverlayNativeComponent.js │ │ │ │ ├── DebuggingOverlayRegistry.js │ │ │ │ └── useSubscribeToDebuggingOverlayRegistry.js │ │ │ ├── EventEmitter/ │ │ │ │ ├── NativeEventEmitter.d.ts │ │ │ │ ├── NativeEventEmitter.js │ │ │ │ ├── RCTDeviceEventEmitter.d.ts │ │ │ │ ├── RCTDeviceEventEmitter.js │ │ │ │ ├── RCTEventEmitter.js │ │ │ │ ├── RCTNativeAppEventEmitter.d.ts │ │ │ │ ├── RCTNativeAppEventEmitter.js │ │ │ │ └── __mocks__/ │ │ │ │ └── NativeEventEmitter.js │ │ │ ├── FBLazyVector/ │ │ │ │ ├── FBLazyVector/ │ │ │ │ │ ├── FBLazyIterator.h │ │ │ │ │ └── FBLazyVector.h │ │ │ │ └── FBLazyVector.podspec │ │ │ ├── Image/ │ │ │ │ ├── AssetRegistry.js │ │ │ │ ├── AssetSourceResolver.js │ │ │ │ ├── AssetUtils.js │ │ │ │ ├── Image.android.js │ │ │ │ ├── Image.d.ts │ │ │ │ ├── Image.ios.js │ │ │ │ ├── Image.js │ │ │ │ ├── Image.js.flow │ │ │ │ ├── ImageAnalyticsTagContext.js │ │ │ │ ├── ImageBackground.js │ │ │ │ ├── ImageInjection.js │ │ │ │ ├── ImageProps.js │ │ │ │ ├── ImageResizeMode.d.ts │ │ │ │ ├── ImageResizeMode.js │ │ │ │ ├── ImageSource.d.ts │ │ │ │ ├── ImageSource.js │ │ │ │ ├── ImageSourceUtils.js │ │ │ │ ├── ImageTypes.flow.js │ │ │ │ ├── ImageUtils.js │ │ │ │ ├── ImageViewNativeComponent.js │ │ │ │ ├── NativeImageEditor.js │ │ │ │ ├── NativeImageLoaderAndroid.js │ │ │ │ ├── NativeImageLoaderIOS.js │ │ │ │ ├── NativeImageStoreAndroid.js │ │ │ │ ├── NativeImageStoreIOS.js │ │ │ │ ├── RCTAnimatedImage.h │ │ │ │ ├── RCTAnimatedImage.mm │ │ │ │ ├── RCTBundleAssetImageLoader.h │ │ │ │ ├── RCTBundleAssetImageLoader.mm │ │ │ │ ├── RCTDisplayWeakRefreshable.h │ │ │ │ ├── RCTDisplayWeakRefreshable.mm │ │ │ │ ├── RCTGIFImageDecoder.h │ │ │ │ ├── RCTGIFImageDecoder.mm │ │ │ │ ├── RCTImageBlurUtils.h │ │ │ │ ├── RCTImageBlurUtils.mm │ │ │ │ ├── RCTImageCache.h │ │ │ │ ├── RCTImageCache.mm │ │ │ │ ├── RCTImageDataDecoder.h │ │ │ │ ├── RCTImageEditingManager.h │ │ │ │ ├── RCTImageEditingManager.mm │ │ │ │ ├── RCTImageLoader.h │ │ │ │ ├── RCTImageLoader.mm │ │ │ │ ├── RCTImageLoaderLoggable.h │ │ │ │ ├── RCTImageLoaderProtocol.h │ │ │ │ ├── RCTImageLoaderWithAttributionProtocol.h │ │ │ │ ├── RCTImagePlugins.h │ │ │ │ ├── RCTImagePlugins.mm │ │ │ │ ├── RCTImageShadowView.h │ │ │ │ ├── RCTImageShadowView.mm │ │ │ │ ├── RCTImageStoreManager.h │ │ │ │ ├── RCTImageStoreManager.mm │ │ │ │ ├── RCTImageURLLoader.h │ │ │ │ ├── RCTImageURLLoaderWithAttribution.h │ │ │ │ ├── RCTImageURLLoaderWithAttribution.mm │ │ │ │ ├── RCTImageUtils.h │ │ │ │ ├── RCTImageUtils.mm │ │ │ │ ├── RCTImageView.h │ │ │ │ ├── RCTImageView.mm │ │ │ │ ├── RCTImageViewManager.h │ │ │ │ ├── RCTImageViewManager.mm │ │ │ │ ├── RCTLocalAssetImageLoader.h │ │ │ │ ├── RCTLocalAssetImageLoader.mm │ │ │ │ ├── RCTResizeMode.h │ │ │ │ ├── RCTResizeMode.mm │ │ │ │ ├── RCTUIImageViewAnimated.h │ │ │ │ ├── RCTUIImageViewAnimated.mm │ │ │ │ ├── React-RCTImage.podspec │ │ │ │ ├── RelativeImageStub.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── AssetUtils-test.js │ │ │ │ │ ├── Image-benchmark-itest.js │ │ │ │ │ ├── Image-itest.js │ │ │ │ │ ├── Image-test.js │ │ │ │ │ ├── ImageBackground-itest.js │ │ │ │ │ ├── ImageBackground-test.js │ │ │ │ │ ├── ImageSourceUtils-test.js │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── Image-test.js.snap │ │ │ │ │ │ ├── ImageBackground-test.js.snap │ │ │ │ │ │ └── assetRelativePathInSnapshot-test.js.snap │ │ │ │ │ ├── assetRelativePathInSnapshot-test.js │ │ │ │ │ └── resolveAssetSource-test.js │ │ │ │ ├── nativeImageSource.js │ │ │ │ └── resolveAssetSource.js │ │ │ ├── Interaction/ │ │ │ │ ├── FrameRateLogger.js │ │ │ │ ├── InteractionManager.d.ts │ │ │ │ ├── InteractionManager.js │ │ │ │ ├── NativeFrameRateLogger.js │ │ │ │ ├── PanResponder.d.ts │ │ │ │ ├── PanResponder.js │ │ │ │ └── TouchHistoryMath.js │ │ │ ├── LayoutAnimation/ │ │ │ │ ├── LayoutAnimation.d.ts │ │ │ │ └── LayoutAnimation.js │ │ │ ├── Linking/ │ │ │ │ ├── Linking.d.ts │ │ │ │ ├── Linking.js │ │ │ │ ├── NativeIntentAndroid.js │ │ │ │ └── NativeLinkingManager.js │ │ │ ├── LinkingIOS/ │ │ │ │ ├── RCTLinkingManager.h │ │ │ │ ├── RCTLinkingManager.mm │ │ │ │ ├── RCTLinkingPlugins.h │ │ │ │ ├── RCTLinkingPlugins.mm │ │ │ │ └── React-RCTLinking.podspec │ │ │ ├── Lists/ │ │ │ │ ├── FillRateHelper.js │ │ │ │ ├── FlatList.d.ts │ │ │ │ ├── FlatList.js │ │ │ │ ├── SectionList.d.ts │ │ │ │ ├── SectionList.js │ │ │ │ ├── SectionListModern.js │ │ │ │ ├── ViewabilityHelper.js │ │ │ │ ├── VirtualizeUtils.js │ │ │ │ ├── VirtualizedList.js │ │ │ │ ├── VirtualizedListContext.js │ │ │ │ ├── VirtualizedSectionList.js │ │ │ │ ├── __flowtests__/ │ │ │ │ │ ├── FlatList-flowtest.js │ │ │ │ │ └── SectionList-flowtest.js │ │ │ │ └── __tests__/ │ │ │ │ ├── FlatList-itest.js │ │ │ │ ├── FlatList-test.js │ │ │ │ ├── SectionList-itest.js │ │ │ │ └── __snapshots__/ │ │ │ │ └── FlatList-test.js.snap │ │ │ ├── LogBox/ │ │ │ │ ├── Data/ │ │ │ │ │ ├── LogBoxData.js │ │ │ │ │ ├── LogBoxLog.js │ │ │ │ │ ├── LogBoxSymbolication.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── LogBoxData-test.js │ │ │ │ │ │ ├── LogBoxLog-test.js │ │ │ │ │ │ ├── LogBoxSymbolication-test.js │ │ │ │ │ │ └── parseLogBoxLog-test.js │ │ │ │ │ └── parseLogBoxLog.js │ │ │ │ ├── LogBox.d.ts │ │ │ │ ├── LogBox.js │ │ │ │ ├── LogBoxInspectorContainer.js │ │ │ │ ├── LogBoxNotificationContainer.js │ │ │ │ ├── UI/ │ │ │ │ │ ├── AnsiHighlight.js │ │ │ │ │ ├── LogBoxButton.js │ │ │ │ │ ├── LogBoxInspector.js │ │ │ │ │ ├── LogBoxInspectorBody.js │ │ │ │ │ ├── LogBoxInspectorCodeFrame.js │ │ │ │ │ ├── LogBoxInspectorFooter.js │ │ │ │ │ ├── LogBoxInspectorFooterButton.js │ │ │ │ │ ├── LogBoxInspectorHeader.js │ │ │ │ │ ├── LogBoxInspectorHeaderButton.js │ │ │ │ │ ├── LogBoxInspectorMessageHeader.js │ │ │ │ │ ├── LogBoxInspectorReactFrames.js │ │ │ │ │ ├── LogBoxInspectorSection.js │ │ │ │ │ ├── LogBoxInspectorSourceMapStatus.js │ │ │ │ │ ├── LogBoxInspectorStackFrame.js │ │ │ │ │ ├── LogBoxInspectorStackFrames.js │ │ │ │ │ ├── LogBoxMessage.js │ │ │ │ │ ├── LogBoxNotification.js │ │ │ │ │ ├── LogBoxNotificationCountBadge.js │ │ │ │ │ ├── LogBoxNotificationDismissButton.js │ │ │ │ │ ├── LogBoxNotificationMessage.js │ │ │ │ │ ├── LogBoxStyle.js │ │ │ │ │ └── __tests__/ │ │ │ │ │ ├── LogBoxButton-test.js │ │ │ │ │ ├── LogBoxInspector-test.js │ │ │ │ │ ├── LogBoxInspectorCodeFrame-test.js │ │ │ │ │ ├── LogBoxInspectorFooter-test.js │ │ │ │ │ ├── LogBoxInspectorHeader-test.js │ │ │ │ │ ├── LogBoxInspectorMessageHeader-test.js │ │ │ │ │ ├── LogBoxInspectorReactFrames-test.js │ │ │ │ │ ├── LogBoxInspectorSection-test.js │ │ │ │ │ ├── LogBoxInspectorSourceMapStatus-test.js │ │ │ │ │ ├── LogBoxInspectorStackFrame-test.js │ │ │ │ │ ├── LogBoxInspectorStackFrames-test.js │ │ │ │ │ ├── LogBoxMessage-test.js │ │ │ │ │ ├── LogBoxNotification-test.js │ │ │ │ │ └── __snapshots__/ │ │ │ │ │ ├── LogBoxButton-test.js.snap │ │ │ │ │ ├── LogBoxInspector-test.js.snap │ │ │ │ │ ├── LogBoxInspectorCodeFrame-test.js.snap │ │ │ │ │ ├── LogBoxInspectorFooter-test.js.snap │ │ │ │ │ ├── LogBoxInspectorHeader-test.js.snap │ │ │ │ │ ├── LogBoxInspectorMessageHeader-test.js.snap │ │ │ │ │ ├── LogBoxInspectorReactFrames-test.js.snap │ │ │ │ │ ├── LogBoxInspectorSection-test.js.snap │ │ │ │ │ ├── LogBoxInspectorSourceMapStatus-test.js.snap │ │ │ │ │ ├── LogBoxInspectorStackFrame-test.js.snap │ │ │ │ │ ├── LogBoxInspectorStackFrames-test.js.snap │ │ │ │ │ ├── LogBoxMessage-test.js.snap │ │ │ │ │ └── LogBoxNotification-test.js.snap │ │ │ │ └── __tests__/ │ │ │ │ ├── LogBox-test.js │ │ │ │ ├── LogBoxInspectorContainer-test.js │ │ │ │ ├── LogBoxNotificationContainer-test.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── LogBoxInspectorContainer-test.js.snap │ │ │ │ │ └── LogBoxNotificationContainer-test.js.snap │ │ │ │ └── fantomHelpers.js │ │ │ ├── Modal/ │ │ │ │ ├── Modal.d.ts │ │ │ │ ├── Modal.js │ │ │ │ ├── NativeModalManager.js │ │ │ │ ├── RCTModalHostViewNativeComponent.js │ │ │ │ └── __tests__/ │ │ │ │ ├── Modal-itest.js │ │ │ │ ├── Modal-test.js │ │ │ │ └── __snapshots__/ │ │ │ │ └── Modal-test.js.snap │ │ │ ├── NativeAnimation/ │ │ │ │ ├── Drivers/ │ │ │ │ │ ├── RCTAnimationDriver.h │ │ │ │ │ ├── RCTDecayAnimation.h │ │ │ │ │ ├── RCTDecayAnimation.mm │ │ │ │ │ ├── RCTEventAnimation.h │ │ │ │ │ ├── RCTEventAnimation.mm │ │ │ │ │ ├── RCTFrameAnimation.h │ │ │ │ │ ├── RCTFrameAnimation.mm │ │ │ │ │ ├── RCTSpringAnimation.h │ │ │ │ │ └── RCTSpringAnimation.mm │ │ │ │ ├── Nodes/ │ │ │ │ │ ├── RCTAdditionAnimatedNode.h │ │ │ │ │ ├── RCTAdditionAnimatedNode.mm │ │ │ │ │ ├── RCTAnimatedNode.h │ │ │ │ │ ├── RCTAnimatedNode.mm │ │ │ │ │ ├── RCTColorAnimatedNode.h │ │ │ │ │ ├── RCTColorAnimatedNode.mm │ │ │ │ │ ├── RCTDiffClampAnimatedNode.h │ │ │ │ │ ├── RCTDiffClampAnimatedNode.mm │ │ │ │ │ ├── RCTDivisionAnimatedNode.h │ │ │ │ │ ├── RCTDivisionAnimatedNode.mm │ │ │ │ │ ├── RCTInterpolationAnimatedNode.h │ │ │ │ │ ├── RCTInterpolationAnimatedNode.mm │ │ │ │ │ ├── RCTModuloAnimatedNode.h │ │ │ │ │ ├── RCTModuloAnimatedNode.mm │ │ │ │ │ ├── RCTMultiplicationAnimatedNode.h │ │ │ │ │ ├── RCTMultiplicationAnimatedNode.mm │ │ │ │ │ ├── RCTObjectAnimatedNode.h │ │ │ │ │ ├── RCTObjectAnimatedNode.mm │ │ │ │ │ ├── RCTPropsAnimatedNode.h │ │ │ │ │ ├── RCTPropsAnimatedNode.mm │ │ │ │ │ ├── RCTStyleAnimatedNode.h │ │ │ │ │ ├── RCTStyleAnimatedNode.mm │ │ │ │ │ ├── RCTSubtractionAnimatedNode.h │ │ │ │ │ ├── RCTSubtractionAnimatedNode.mm │ │ │ │ │ ├── RCTTrackingAnimatedNode.h │ │ │ │ │ ├── RCTTrackingAnimatedNode.mm │ │ │ │ │ ├── RCTTransformAnimatedNode.h │ │ │ │ │ ├── RCTTransformAnimatedNode.mm │ │ │ │ │ ├── RCTValueAnimatedNode.h │ │ │ │ │ └── RCTValueAnimatedNode.mm │ │ │ │ ├── RCTAnimationPlugins.h │ │ │ │ ├── RCTAnimationPlugins.mm │ │ │ │ ├── RCTAnimationUtils.h │ │ │ │ ├── RCTAnimationUtils.mm │ │ │ │ ├── RCTNativeAnimatedModule.h │ │ │ │ ├── RCTNativeAnimatedModule.mm │ │ │ │ ├── RCTNativeAnimatedNodesManager.h │ │ │ │ ├── RCTNativeAnimatedNodesManager.mm │ │ │ │ ├── RCTNativeAnimatedTurboModule.h │ │ │ │ ├── RCTNativeAnimatedTurboModule.mm │ │ │ │ └── React-RCTAnimation.podspec │ │ │ ├── NativeComponent/ │ │ │ │ ├── BaseViewConfig.android.js │ │ │ │ ├── BaseViewConfig.ios.js │ │ │ │ ├── BaseViewConfig.js │ │ │ │ ├── BaseViewConfig.js.flow │ │ │ │ ├── NativeComponentRegistry.d.ts │ │ │ │ ├── NativeComponentRegistry.js │ │ │ │ ├── NativeComponentRegistryUnstable.js │ │ │ │ ├── PlatformBaseViewConfig.js │ │ │ │ ├── StaticViewConfigValidator.js │ │ │ │ ├── ViewConfig.js │ │ │ │ ├── ViewConfigIgnore.js │ │ │ │ └── __tests__/ │ │ │ │ └── StaticViewConfigValidator-test.js │ │ │ ├── NativeModules/ │ │ │ │ └── specs/ │ │ │ │ ├── NativeDevMenu.js │ │ │ │ ├── NativeDevSettings.js │ │ │ │ ├── NativeDeviceEventManager.js │ │ │ │ ├── NativeDialogManagerAndroid.js │ │ │ │ ├── NativeLogBox.js │ │ │ │ ├── NativeRedBox.js │ │ │ │ └── NativeSourceCode.js │ │ │ ├── Network/ │ │ │ │ ├── FormData.js │ │ │ │ ├── NativeNetworkingAndroid.js │ │ │ │ ├── NativeNetworkingIOS.js │ │ │ │ ├── RCTDataRequestHandler.h │ │ │ │ ├── RCTDataRequestHandler.mm │ │ │ │ ├── RCTFileRequestHandler.h │ │ │ │ ├── RCTFileRequestHandler.mm │ │ │ │ ├── RCTHTTPRequestHandler.h │ │ │ │ ├── RCTHTTPRequestHandler.mm │ │ │ │ ├── RCTInspectorNetworkReporter.h │ │ │ │ ├── RCTInspectorNetworkReporter.mm │ │ │ │ ├── RCTNetworkConversions.h │ │ │ │ ├── RCTNetworkPlugins.h │ │ │ │ ├── RCTNetworkPlugins.mm │ │ │ │ ├── RCTNetworkTask.h │ │ │ │ ├── RCTNetworkTask.mm │ │ │ │ ├── RCTNetworking+Internal.h │ │ │ │ ├── RCTNetworking.android.js │ │ │ │ ├── RCTNetworking.h │ │ │ │ ├── RCTNetworking.ios.js │ │ │ │ ├── RCTNetworking.js │ │ │ │ ├── RCTNetworking.js.flow │ │ │ │ ├── RCTNetworking.mm │ │ │ │ ├── RCTNetworkingEventDefinitions.flow.js │ │ │ │ ├── React-RCTNetwork.podspec │ │ │ │ ├── XMLHttpRequest.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── FormData-test.js │ │ │ │ │ └── XMLHttpRequest-test.js │ │ │ │ ├── convertRequestBody.js │ │ │ │ └── fetch.js │ │ │ ├── Performance/ │ │ │ │ ├── Systrace.d.ts │ │ │ │ └── Systrace.js │ │ │ ├── PermissionsAndroid/ │ │ │ │ ├── NativePermissionsAndroid.js │ │ │ │ ├── PermissionsAndroid.d.ts │ │ │ │ └── PermissionsAndroid.js │ │ │ ├── Pressability/ │ │ │ │ ├── HoverState.js │ │ │ │ ├── Pressability.js │ │ │ │ ├── PressabilityDebug.js │ │ │ │ ├── PressabilityPerformanceEventEmitter.js │ │ │ │ ├── PressabilityTypes.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── Pressability-itest.js │ │ │ │ │ └── Pressability-test.js │ │ │ │ └── usePressability.js │ │ │ ├── Promise.js │ │ │ ├── PushNotificationIOS/ │ │ │ │ ├── NativePushNotificationManagerIOS.js │ │ │ │ ├── PushNotificationIOS.d.ts │ │ │ │ ├── PushNotificationIOS.js │ │ │ │ ├── RCTPushNotificationManager.h │ │ │ │ ├── RCTPushNotificationManager.mm │ │ │ │ ├── RCTPushNotificationPlugins.h │ │ │ │ ├── RCTPushNotificationPlugins.mm │ │ │ │ └── React-RCTPushNotification.podspec │ │ │ ├── ReactNative/ │ │ │ │ ├── AppContainer-dev.js │ │ │ │ ├── AppContainer-prod.js │ │ │ │ ├── AppContainer.js │ │ │ │ ├── AppRegistry.d.ts │ │ │ │ ├── AppRegistry.flow.js │ │ │ │ ├── AppRegistry.js │ │ │ │ ├── AppRegistry.js.flow │ │ │ │ ├── AppRegistryImpl.js │ │ │ │ ├── BridgelessUIManager.js │ │ │ │ ├── DisplayMode.js │ │ │ │ ├── FabricUIManager.js │ │ │ │ ├── HeadlessJsTaskError.js │ │ │ │ ├── I18nManager.d.ts │ │ │ │ ├── I18nManager.js │ │ │ │ ├── NativeHeadlessJsTaskSupport.js │ │ │ │ ├── NativeI18nManager.js │ │ │ │ ├── NativeUIManager.js │ │ │ │ ├── PaperUIManager.js │ │ │ │ ├── ReactFabricPublicInstance/ │ │ │ │ │ ├── ReactFabricPublicInstance.js │ │ │ │ │ ├── ReactFabricPublicInstanceUtils.js │ │ │ │ │ ├── ReactNativeAttributePayload.js │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ └── ReactNativeAttributePayload-test.js │ │ │ │ │ └── warnForStyleProps.js │ │ │ │ ├── ReactNativeRuntimeDiagnostics.js │ │ │ │ ├── RendererImplementation.js │ │ │ │ ├── RendererProxy.d.ts │ │ │ │ ├── RendererProxy.js │ │ │ │ ├── RootTag.d.ts │ │ │ │ ├── RootTag.js │ │ │ │ ├── UIManager.d.ts │ │ │ │ ├── UIManager.js │ │ │ │ ├── UIManagerProperties.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── FabricUIManager-test.js │ │ │ │ │ ├── StaleEventHandlersFromInterruptedRender-itest.js │ │ │ │ │ ├── State-ForcedCloneCommitHook-itest.js │ │ │ │ │ └── SyncOnCommit-itest.js │ │ │ │ ├── getCachedComponentWithDebugName.js │ │ │ │ ├── getNativeComponentAttributes.js │ │ │ │ ├── renderApplication.js │ │ │ │ ├── requireNativeComponent.d.ts │ │ │ │ └── requireNativeComponent.js │ │ │ ├── ReactNativeDependencies/ │ │ │ │ └── Package.swift │ │ │ ├── ReactPrivate/ │ │ │ │ ├── README │ │ │ │ ├── ReactNativePrivateInitializeCore.js │ │ │ │ ├── ReactNativePrivateInterface.js │ │ │ │ └── ReactNativePrivateInterface.js.flow │ │ │ ├── Renderer/ │ │ │ │ ├── README.md │ │ │ │ ├── implementations/ │ │ │ │ │ ├── ReactFabric-dev.js │ │ │ │ │ ├── ReactFabric-prod.js │ │ │ │ │ ├── ReactFabric-profiling.js │ │ │ │ │ ├── ReactNativeRenderer-dev.js │ │ │ │ │ ├── ReactNativeRenderer-prod.js │ │ │ │ │ └── ReactNativeRenderer-profiling.js │ │ │ │ └── shims/ │ │ │ │ ├── ReactFabric.js │ │ │ │ ├── ReactFeatureFlags.js │ │ │ │ ├── ReactNative.js │ │ │ │ ├── ReactNativeTypes.js │ │ │ │ ├── ReactNativeViewConfigRegistry.js │ │ │ │ └── createReactNativeComponentClass.js │ │ │ ├── Required/ │ │ │ │ ├── RCTRequired.h │ │ │ │ └── RCTRequired.podspec │ │ │ ├── Settings/ │ │ │ │ ├── NativeSettingsManager.js │ │ │ │ ├── RCTSettingsManager.h │ │ │ │ ├── RCTSettingsManager.mm │ │ │ │ ├── RCTSettingsPlugins.h │ │ │ │ ├── RCTSettingsPlugins.mm │ │ │ │ ├── React-RCTSettings.podspec │ │ │ │ ├── Settings.d.ts │ │ │ │ ├── Settings.ios.js │ │ │ │ ├── Settings.js │ │ │ │ └── SettingsFallback.js │ │ │ ├── Share/ │ │ │ │ ├── NativeShareModule.js │ │ │ │ ├── Share.d.ts │ │ │ │ └── Share.js │ │ │ ├── StyleSheet/ │ │ │ │ ├── EdgeInsetsPropType.js │ │ │ │ ├── PlatformColorValueTypes.android.js │ │ │ │ ├── PlatformColorValueTypes.d.ts │ │ │ │ ├── PlatformColorValueTypes.ios.js │ │ │ │ ├── PlatformColorValueTypes.js │ │ │ │ ├── PlatformColorValueTypes.js.flow │ │ │ │ ├── PlatformColorValueTypesIOS.d.ts │ │ │ │ ├── PlatformColorValueTypesIOS.ios.js │ │ │ │ ├── PlatformColorValueTypesIOS.js │ │ │ │ ├── PointPropType.js │ │ │ │ ├── Rect.js │ │ │ │ ├── StyleSheet.d.ts │ │ │ │ ├── StyleSheet.js │ │ │ │ ├── StyleSheet.js.flow │ │ │ │ ├── StyleSheetExports.js │ │ │ │ ├── StyleSheetExports.js.flow │ │ │ │ ├── StyleSheetTypes.d.ts │ │ │ │ ├── StyleSheetTypes.js │ │ │ │ ├── __flowtests__/ │ │ │ │ │ └── StyleSheet-flowtest.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── StyleSheet-test.js │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── processAspectRatio-test.js.snap │ │ │ │ │ │ ├── processTransform-test.js.snap │ │ │ │ │ │ └── processTransformOrigin-test.js.snap │ │ │ │ │ ├── flattenStyle-test.js │ │ │ │ │ ├── normalizeColor-test.js │ │ │ │ │ ├── processAspectRatio-test.js │ │ │ │ │ ├── processBackgroundImage-test.js │ │ │ │ │ ├── processBackgroundPosition-test.js │ │ │ │ │ ├── processBackgroundRepeat-test.js │ │ │ │ │ ├── processBackgroundSize-test.js │ │ │ │ │ ├── processBoxShadow-itest.js │ │ │ │ │ ├── processColor-test.js │ │ │ │ │ ├── processColorArray-test.js │ │ │ │ │ ├── processFilter-test.js │ │ │ │ │ ├── processFontVariant-test.js │ │ │ │ │ ├── processTransform-test.js │ │ │ │ │ ├── processTransformOrigin-test.js │ │ │ │ │ ├── setNormalizedColorAlpha-test.js │ │ │ │ │ └── splitLayoutProps-test.js │ │ │ │ ├── flattenStyle.js │ │ │ │ ├── normalizeColor.js │ │ │ │ ├── private/ │ │ │ │ │ ├── _StyleSheetTypesOverrides.js │ │ │ │ │ └── _TransformStyle.js │ │ │ │ ├── processAspectRatio.js │ │ │ │ ├── processBackgroundImage.js │ │ │ │ ├── processBackgroundPosition.js │ │ │ │ ├── processBackgroundRepeat.js │ │ │ │ ├── processBackgroundSize.js │ │ │ │ ├── processBoxShadow.js │ │ │ │ ├── processColor.d.ts │ │ │ │ ├── processColor.js │ │ │ │ ├── processColorArray.js │ │ │ │ ├── processFilter.js │ │ │ │ ├── processFontVariant.js │ │ │ │ ├── processTransform.js │ │ │ │ ├── processTransformOrigin.js │ │ │ │ ├── setNormalizedColorAlpha.js │ │ │ │ └── splitLayoutProps.js │ │ │ ├── Text/ │ │ │ │ ├── BaseText/ │ │ │ │ │ ├── RCTBaseTextShadowView.h │ │ │ │ │ ├── RCTBaseTextShadowView.mm │ │ │ │ │ ├── RCTBaseTextViewManager.h │ │ │ │ │ └── RCTBaseTextViewManager.mm │ │ │ │ ├── RCTConvert+Text.h │ │ │ │ ├── RCTConvert+Text.mm │ │ │ │ ├── RCTTextAttributes.h │ │ │ │ ├── RCTTextAttributes.mm │ │ │ │ ├── RCTTextTransform.h │ │ │ │ ├── RawText/ │ │ │ │ │ ├── RCTRawTextShadowView.h │ │ │ │ │ ├── RCTRawTextShadowView.mm │ │ │ │ │ ├── RCTRawTextViewManager.h │ │ │ │ │ └── RCTRawTextViewManager.mm │ │ │ │ ├── React-RCTText.podspec │ │ │ │ ├── Text/ │ │ │ │ │ ├── NSTextStorage+FontScaling.h │ │ │ │ │ ├── NSTextStorage+FontScaling.m │ │ │ │ │ ├── RCTDynamicTypeRamp.h │ │ │ │ │ ├── RCTDynamicTypeRamp.mm │ │ │ │ │ ├── RCTTextShadowView.h │ │ │ │ │ ├── RCTTextShadowView.mm │ │ │ │ │ ├── RCTTextView.h │ │ │ │ │ ├── RCTTextView.mm │ │ │ │ │ ├── RCTTextViewManager.h │ │ │ │ │ └── RCTTextViewManager.mm │ │ │ │ ├── Text.d.ts │ │ │ │ ├── Text.js │ │ │ │ ├── TextAncestor.js │ │ │ │ ├── TextAncestorContext.js │ │ │ │ ├── TextInput/ │ │ │ │ │ ├── Multiline/ │ │ │ │ │ │ ├── RCTMultilineTextInputView.h │ │ │ │ │ │ ├── RCTMultilineTextInputView.mm │ │ │ │ │ │ ├── RCTMultilineTextInputViewManager.h │ │ │ │ │ │ ├── RCTMultilineTextInputViewManager.mm │ │ │ │ │ │ ├── RCTUITextView.h │ │ │ │ │ │ └── RCTUITextView.mm │ │ │ │ │ ├── RCTBackedTextInputDelegate.h │ │ │ │ │ ├── RCTBackedTextInputDelegateAdapter.h │ │ │ │ │ ├── RCTBackedTextInputDelegateAdapter.mm │ │ │ │ │ ├── RCTBackedTextInputViewProtocol.h │ │ │ │ │ ├── RCTBaseTextInputShadowView.h │ │ │ │ │ ├── RCTBaseTextInputShadowView.mm │ │ │ │ │ ├── RCTBaseTextInputView.h │ │ │ │ │ ├── RCTBaseTextInputView.mm │ │ │ │ │ ├── RCTBaseTextInputViewManager.h │ │ │ │ │ ├── RCTBaseTextInputViewManager.mm │ │ │ │ │ ├── RCTInputAccessoryShadowView.h │ │ │ │ │ ├── RCTInputAccessoryShadowView.mm │ │ │ │ │ ├── RCTInputAccessoryView.h │ │ │ │ │ ├── RCTInputAccessoryView.mm │ │ │ │ │ ├── RCTInputAccessoryViewContent.h │ │ │ │ │ ├── RCTInputAccessoryViewContent.mm │ │ │ │ │ ├── RCTInputAccessoryViewManager.h │ │ │ │ │ ├── RCTInputAccessoryViewManager.mm │ │ │ │ │ ├── RCTTextSelection.h │ │ │ │ │ ├── RCTTextSelection.mm │ │ │ │ │ └── Singleline/ │ │ │ │ │ ├── RCTSinglelineTextInputView.h │ │ │ │ │ ├── RCTSinglelineTextInputView.mm │ │ │ │ │ ├── RCTSinglelineTextInputViewManager.h │ │ │ │ │ ├── RCTSinglelineTextInputViewManager.mm │ │ │ │ │ ├── RCTUITextField.h │ │ │ │ │ └── RCTUITextField.mm │ │ │ │ ├── TextNativeComponent.js │ │ │ │ ├── TextProps.js │ │ │ │ ├── VirtualText/ │ │ │ │ │ ├── RCTVirtualTextShadowView.h │ │ │ │ │ ├── RCTVirtualTextShadowView.mm │ │ │ │ │ ├── RCTVirtualTextView.h │ │ │ │ │ ├── RCTVirtualTextView.mm │ │ │ │ │ ├── RCTVirtualTextViewManager.h │ │ │ │ │ └── RCTVirtualTextViewManager.mm │ │ │ │ └── __tests__/ │ │ │ │ ├── Text-benchmark-itest.js │ │ │ │ ├── Text-itest.js │ │ │ │ └── Text-test.js │ │ │ ├── TurboModule/ │ │ │ │ ├── RCTExport.d.ts │ │ │ │ ├── RCTExport.js │ │ │ │ ├── TurboModuleRegistry.d.ts │ │ │ │ ├── TurboModuleRegistry.js │ │ │ │ └── samples/ │ │ │ │ └── NativeSampleTurboModule.js │ │ │ ├── TypeSafety/ │ │ │ │ ├── RCTConvertHelpers.h │ │ │ │ ├── RCTConvertHelpers.mm │ │ │ │ ├── RCTTypeSafety.podspec │ │ │ │ ├── RCTTypedModuleConstants.h │ │ │ │ └── RCTTypedModuleConstants.mm │ │ │ ├── Types/ │ │ │ │ ├── CodegenTypes.js │ │ │ │ ├── CodegenTypesNamespace.d.ts │ │ │ │ ├── CodegenTypesNamespace.js │ │ │ │ ├── CoreEventTypes.d.ts │ │ │ │ ├── CoreEventTypes.js │ │ │ │ ├── ReactDevToolsTypes.js │ │ │ │ ├── RootTagTypes.js │ │ │ │ └── UIManagerJSInterface.js │ │ │ ├── UTFSequence.js │ │ │ ├── Utilities/ │ │ │ │ ├── Appearance.d.ts │ │ │ │ ├── Appearance.js │ │ │ │ ├── BackHandler.android.js │ │ │ │ ├── BackHandler.d.ts │ │ │ │ ├── BackHandler.ios.js │ │ │ │ ├── BackHandler.js │ │ │ │ ├── BackHandler.js.flow │ │ │ │ ├── DevLoadingView.js │ │ │ │ ├── DevSettings.d.ts │ │ │ │ ├── DevSettings.js │ │ │ │ ├── DeviceInfo.js │ │ │ │ ├── Dimensions.d.ts │ │ │ │ ├── Dimensions.js │ │ │ │ ├── FeatureDetection.js │ │ │ │ ├── GlobalPerformanceLogger.js │ │ │ │ ├── HMRClient.js │ │ │ │ ├── HMRClientProdShim.js │ │ │ │ ├── HardwareBackPressEvent.js │ │ │ │ ├── IPerformanceLogger.d.ts │ │ │ │ ├── IPerformanceLogger.js │ │ │ │ ├── NativeAppearance.js │ │ │ │ ├── NativeDevLoadingView.js │ │ │ │ ├── NativeDeviceInfo.js │ │ │ │ ├── NativePlatformConstantsAndroid.js │ │ │ │ ├── NativePlatformConstantsIOS.js │ │ │ │ ├── PerformanceLoggerContext.js │ │ │ │ ├── PixelRatio.d.ts │ │ │ │ ├── PixelRatio.js │ │ │ │ ├── Platform.android.js │ │ │ │ ├── Platform.d.ts │ │ │ │ ├── Platform.ios.js │ │ │ │ ├── Platform.js │ │ │ │ ├── Platform.js.flow │ │ │ │ ├── PlatformTypes.js │ │ │ │ ├── PolyfillFunctions.js │ │ │ │ ├── RCTLog.js │ │ │ │ ├── ReactNativeTestTools.js │ │ │ │ ├── SceneTracker.js │ │ │ │ ├── __mocks__/ │ │ │ │ │ ├── BackHandler.js │ │ │ │ │ ├── GlobalPerformanceLogger.js │ │ │ │ │ └── PixelRatio.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── BackHandler-itest.js │ │ │ │ │ ├── DeviceInfo-test.js │ │ │ │ │ ├── Dimensions-test.js │ │ │ │ │ ├── HardwareBackPressEvent-itest.js │ │ │ │ │ ├── PerformanceLogger-test.js │ │ │ │ │ ├── PixelRatio-test.js │ │ │ │ │ ├── Platform-test.js │ │ │ │ │ ├── ReactNativeTestTools-test.js │ │ │ │ │ ├── SceneTracker-test.js │ │ │ │ │ ├── binaryToBase64-test.js │ │ │ │ │ ├── codegenNativeComponent-test.js │ │ │ │ │ ├── deepFreezeAndThrowOnMutationInDev-test.js │ │ │ │ │ ├── logError-test.js │ │ │ │ │ ├── mapWithSeparator-test.js │ │ │ │ │ ├── stringifySafe-test.js │ │ │ │ │ ├── useColorScheme-test.js │ │ │ │ │ ├── useMergeRefs-test.js │ │ │ │ │ ├── useRefEffect-test.js │ │ │ │ │ └── warnOnce-test.js │ │ │ │ ├── binaryToBase64.js │ │ │ │ ├── codegenNativeCommands.d.ts │ │ │ │ ├── codegenNativeCommands.js │ │ │ │ ├── codegenNativeComponent.d.ts │ │ │ │ ├── codegenNativeComponent.js │ │ │ │ ├── createPerformanceLogger.js │ │ │ │ ├── deepFreezeAndThrowOnMutationInDev.js │ │ │ │ ├── defineLazyObjectProperty.js │ │ │ │ ├── differ/ │ │ │ │ │ ├── __tests__/ │ │ │ │ │ │ ├── deepDiffer-test.js │ │ │ │ │ │ └── matricesDiffer-test.js │ │ │ │ │ ├── deepDiffer.js │ │ │ │ │ ├── insetsDiffer.js │ │ │ │ │ ├── matricesDiffer.js │ │ │ │ │ ├── pointsDiffer.js │ │ │ │ │ └── sizesDiffer.js │ │ │ │ ├── dismissKeyboard.js │ │ │ │ ├── logError.js │ │ │ │ ├── mapWithSeparator.js │ │ │ │ ├── stringifySafe.js │ │ │ │ ├── stringifyViewConfig.js │ │ │ │ ├── useColorScheme.js │ │ │ │ ├── useMergeRefs.js │ │ │ │ ├── useRefEffect.js │ │ │ │ ├── useWindowDimensions.js │ │ │ │ └── warnOnce.js │ │ │ ├── Vibration/ │ │ │ │ ├── NativeVibration.js │ │ │ │ ├── RCTVibration.h │ │ │ │ ├── RCTVibration.mm │ │ │ │ ├── RCTVibrationPlugins.h │ │ │ │ ├── RCTVibrationPlugins.mm │ │ │ │ ├── React-RCTVibration.podspec │ │ │ │ ├── Vibration.d.ts │ │ │ │ └── Vibration.js │ │ │ ├── WebSocket/ │ │ │ │ ├── NativeWebSocketModule.js │ │ │ │ ├── RCTReconnectingWebSocket.h │ │ │ │ ├── RCTReconnectingWebSocket.m │ │ │ │ ├── WebSocket.js │ │ │ │ ├── WebSocketInterceptor.js │ │ │ │ └── __tests__/ │ │ │ │ └── WebSocket-test.js │ │ │ ├── Wrapper/ │ │ │ │ ├── Example/ │ │ │ │ │ ├── RCTWrapperExampleView.h │ │ │ │ │ ├── RCTWrapperExampleView.m │ │ │ │ │ ├── RCTWrapperExampleViewController.h │ │ │ │ │ ├── RCTWrapperExampleViewController.m │ │ │ │ │ ├── RCTWrapperReactRootViewController.h │ │ │ │ │ ├── RCTWrapperReactRootViewController.m │ │ │ │ │ ├── RCTWrapperReactRootViewManager.h │ │ │ │ │ └── RCTWrapperReactRootViewManager.m │ │ │ │ ├── RCTWrapper.h │ │ │ │ ├── RCTWrapperShadowView.h │ │ │ │ ├── RCTWrapperShadowView.m │ │ │ │ ├── RCTWrapperView.h │ │ │ │ ├── RCTWrapperView.m │ │ │ │ ├── RCTWrapperViewControllerHostingView.h │ │ │ │ ├── RCTWrapperViewControllerHostingView.m │ │ │ │ ├── RCTWrapperViewManager.h │ │ │ │ └── RCTWrapperViewManager.m │ │ │ ├── __flowtests__/ │ │ │ │ └── ReactNativeTypes-flowtest.js │ │ │ └── promiseRejectionTrackingOptions.js │ │ ├── Package.swift │ │ ├── README.md │ │ ├── React/ │ │ │ ├── Base/ │ │ │ │ ├── RCTAssert.h │ │ │ │ ├── RCTAssert.m │ │ │ │ ├── RCTBridge+Inspector.h │ │ │ │ ├── RCTBridge+Private.h │ │ │ │ ├── RCTBridge.h │ │ │ │ ├── RCTBridge.mm │ │ │ │ ├── RCTBridgeConstants.h │ │ │ │ ├── RCTBridgeConstants.m │ │ │ │ ├── RCTBridgeDelegate.h │ │ │ │ ├── RCTBridgeMethod.h │ │ │ │ ├── RCTBridgeModule.h │ │ │ │ ├── RCTBridgeModuleDecorator.h │ │ │ │ ├── RCTBridgeModuleDecorator.m │ │ │ │ ├── RCTBridgeProxy+Cxx.h │ │ │ │ ├── RCTBridgeProxy.h │ │ │ │ ├── RCTBridgeProxy.mm │ │ │ │ ├── RCTBundleManager.h │ │ │ │ ├── RCTBundleManager.m │ │ │ │ ├── RCTBundleURLProvider.h │ │ │ │ ├── RCTBundleURLProvider.mm │ │ │ │ ├── RCTCallInvoker.h │ │ │ │ ├── RCTCallInvoker.mm │ │ │ │ ├── RCTCallInvokerModule.h │ │ │ │ ├── RCTCallableJSModules.m │ │ │ │ ├── RCTComponentEvent.h │ │ │ │ ├── RCTComponentEvent.m │ │ │ │ ├── RCTConstants.h │ │ │ │ ├── RCTConstants.m │ │ │ │ ├── RCTConvert.h │ │ │ │ ├── RCTConvert.mm │ │ │ │ ├── RCTCxxConvert.h │ │ │ │ ├── RCTCxxConvert.m │ │ │ │ ├── RCTDefines.h │ │ │ │ ├── RCTDevSupportHttpHeaders.h │ │ │ │ ├── RCTDevSupportHttpHeaders.m │ │ │ │ ├── RCTDisplayLink.h │ │ │ │ ├── RCTDisplayLink.m │ │ │ │ ├── RCTErrorCustomizer.h │ │ │ │ ├── RCTErrorInfo.h │ │ │ │ ├── RCTErrorInfo.m │ │ │ │ ├── RCTEventDispatcher.m │ │ │ │ ├── RCTEventDispatcherProtocol.h │ │ │ │ ├── RCTFrameUpdate.h │ │ │ │ ├── RCTFrameUpdate.m │ │ │ │ ├── RCTImageSource.h │ │ │ │ ├── RCTImageSource.m │ │ │ │ ├── RCTInitializing.h │ │ │ │ ├── RCTInvalidating.h │ │ │ │ ├── RCTJSStackFrame.h │ │ │ │ ├── RCTJSStackFrame.m │ │ │ │ ├── RCTJSThread.h │ │ │ │ ├── RCTJSThread.m │ │ │ │ ├── RCTJavaScriptExecutor.h │ │ │ │ ├── RCTJavaScriptLoader.h │ │ │ │ ├── RCTJavaScriptLoader.mm │ │ │ │ ├── RCTKeyCommands.h │ │ │ │ ├── RCTKeyCommands.m │ │ │ │ ├── RCTLog.h │ │ │ │ ├── RCTLog.mm │ │ │ │ ├── RCTManagedPointer.h │ │ │ │ ├── RCTManagedPointer.mm │ │ │ │ ├── RCTMockDef.h │ │ │ │ ├── RCTModuleData.h │ │ │ │ ├── RCTModuleData.mm │ │ │ │ ├── RCTModuleMethod.h │ │ │ │ ├── RCTModuleMethod.mm │ │ │ │ ├── RCTModuleRegistry.m │ │ │ │ ├── RCTMultipartDataTask.h │ │ │ │ ├── RCTMultipartDataTask.m │ │ │ │ ├── RCTMultipartStreamReader.h │ │ │ │ ├── RCTMultipartStreamReader.m │ │ │ │ ├── RCTNullability.h │ │ │ │ ├── RCTPLTag.h │ │ │ │ ├── RCTParserUtils.h │ │ │ │ ├── RCTParserUtils.m │ │ │ │ ├── RCTPerformanceLogger.h │ │ │ │ ├── RCTPerformanceLogger.mm │ │ │ │ ├── RCTPerformanceLoggerLabels.h │ │ │ │ ├── RCTPerformanceLoggerLabels.m │ │ │ │ ├── RCTRedBoxSetEnabled.h │ │ │ │ ├── RCTRedBoxSetEnabled.m │ │ │ │ ├── RCTReloadCommand.h │ │ │ │ ├── RCTReloadCommand.m │ │ │ │ ├── RCTRootContentView.h │ │ │ │ ├── RCTRootContentView.m │ │ │ │ ├── RCTRootView.h │ │ │ │ ├── RCTRootView.m │ │ │ │ ├── RCTRootViewDelegate.h │ │ │ │ ├── RCTRootViewInternal.h │ │ │ │ ├── RCTTouchEvent.h │ │ │ │ ├── RCTTouchEvent.m │ │ │ │ ├── RCTTouchHandler.h │ │ │ │ ├── RCTTouchHandler.m │ │ │ │ ├── RCTTurboModuleRegistry.h │ │ │ │ ├── RCTURLRequestDelegate.h │ │ │ │ ├── RCTURLRequestHandler.h │ │ │ │ ├── RCTUtils.h │ │ │ │ ├── RCTUtils.mm │ │ │ │ ├── RCTUtilsUIOverride.h │ │ │ │ ├── RCTUtilsUIOverride.m │ │ │ │ ├── RCTVersion.h │ │ │ │ ├── RCTVersion.m │ │ │ │ ├── RCTViewRegistry.m │ │ │ │ └── Surface/ │ │ │ │ ├── RCTSurface.h │ │ │ │ ├── RCTSurface.mm │ │ │ │ ├── RCTSurfaceDelegate.h │ │ │ │ ├── RCTSurfaceProtocol.h │ │ │ │ ├── RCTSurfaceRootShadowView.h │ │ │ │ ├── RCTSurfaceRootShadowView.m │ │ │ │ ├── RCTSurfaceRootShadowViewDelegate.h │ │ │ │ ├── RCTSurfaceRootView.h │ │ │ │ ├── RCTSurfaceRootView.mm │ │ │ │ ├── RCTSurfaceStage.h │ │ │ │ ├── RCTSurfaceStage.m │ │ │ │ ├── RCTSurfaceView+Internal.h │ │ │ │ ├── RCTSurfaceView.h │ │ │ │ ├── RCTSurfaceView.mm │ │ │ │ └── SurfaceHostingView/ │ │ │ │ ├── RCTSurfaceHostingProxyRootView.h │ │ │ │ ├── RCTSurfaceHostingProxyRootView.mm │ │ │ │ ├── RCTSurfaceHostingView.h │ │ │ │ ├── RCTSurfaceHostingView.mm │ │ │ │ ├── RCTSurfaceSizeMeasureMode.h │ │ │ │ └── RCTSurfaceSizeMeasureMode.mm │ │ │ ├── CoreModules/ │ │ │ │ ├── CoreModulesPlugins.h │ │ │ │ ├── CoreModulesPlugins.mm │ │ │ │ ├── PlatformStubs/ │ │ │ │ │ └── RCTStatusBarManager.mm │ │ │ │ ├── RCTAccessibilityManager+Internal.h │ │ │ │ ├── RCTAccessibilityManager.h │ │ │ │ ├── RCTAccessibilityManager.mm │ │ │ │ ├── RCTActionSheetManager.h │ │ │ │ ├── RCTActionSheetManager.mm │ │ │ │ ├── RCTAlertController.h │ │ │ │ ├── RCTAlertController.mm │ │ │ │ ├── RCTAlertManager.h │ │ │ │ ├── RCTAlertManager.mm │ │ │ │ ├── RCTAppState.h │ │ │ │ ├── RCTAppState.mm │ │ │ │ ├── RCTAppearance.h │ │ │ │ ├── RCTAppearance.mm │ │ │ │ ├── RCTClipboard.h │ │ │ │ ├── RCTClipboard.mm │ │ │ │ ├── RCTDevLoadingView.h │ │ │ │ ├── RCTDevLoadingView.mm │ │ │ │ ├── RCTDevMenu.h │ │ │ │ ├── RCTDevMenu.mm │ │ │ │ ├── RCTDevMenuConfigurationDecorator.h │ │ │ │ ├── RCTDevMenuConfigurationDecorator.mm │ │ │ │ ├── RCTDevSettings.h │ │ │ │ ├── RCTDevSettings.mm │ │ │ │ ├── RCTDevToolsRuntimeSettingsModule.h │ │ │ │ ├── RCTDevToolsRuntimeSettingsModule.mm │ │ │ │ ├── RCTDeviceInfo.h │ │ │ │ ├── RCTDeviceInfo.mm │ │ │ │ ├── RCTEventDispatcher.h │ │ │ │ ├── RCTEventDispatcher.mm │ │ │ │ ├── RCTExceptionsManager.h │ │ │ │ ├── RCTExceptionsManager.mm │ │ │ │ ├── RCTFPSGraph.h │ │ │ │ ├── RCTFPSGraph.mm │ │ │ │ ├── RCTI18nManager.h │ │ │ │ ├── RCTI18nManager.mm │ │ │ │ ├── RCTKeyboardObserver.h │ │ │ │ ├── RCTKeyboardObserver.mm │ │ │ │ ├── RCTLogBox.h │ │ │ │ ├── RCTLogBox.mm │ │ │ │ ├── RCTLogBoxView.h │ │ │ │ ├── RCTLogBoxView.mm │ │ │ │ ├── RCTPerfMonitor.mm │ │ │ │ ├── RCTPlatform.h │ │ │ │ ├── RCTPlatform.mm │ │ │ │ ├── RCTRedBox.h │ │ │ │ ├── RCTRedBox.mm │ │ │ │ ├── RCTSourceCode.h │ │ │ │ ├── RCTSourceCode.mm │ │ │ │ ├── RCTStatusBarManager.h │ │ │ │ ├── RCTStatusBarManager.mm │ │ │ │ ├── RCTTiming.h │ │ │ │ ├── RCTTiming.mm │ │ │ │ ├── RCTWebSocketModule.h │ │ │ │ ├── RCTWebSocketModule.mm │ │ │ │ └── React-CoreModules.podspec │ │ │ ├── CxxBridge/ │ │ │ │ ├── NSDataBigString.h │ │ │ │ ├── NSDataBigString.mm │ │ │ │ ├── RCTCxxBridge.mm │ │ │ │ ├── RCTCxxBridgeDelegate.h │ │ │ │ ├── RCTJSIExecutorRuntimeInstaller.h │ │ │ │ ├── RCTJSIExecutorRuntimeInstaller.mm │ │ │ │ ├── RCTMessageThread.h │ │ │ │ ├── RCTMessageThread.mm │ │ │ │ ├── RCTObjcExecutor.h │ │ │ │ └── RCTObjcExecutor.mm │ │ │ ├── CxxLogUtils/ │ │ │ │ ├── RCTDefaultCxxLogFunction.h │ │ │ │ └── RCTDefaultCxxLogFunction.mm │ │ │ ├── CxxModule/ │ │ │ │ ├── DispatchMessageQueueThread.h │ │ │ │ ├── RCTCxxMethod.h │ │ │ │ ├── RCTCxxMethod.mm │ │ │ │ ├── RCTCxxUtils.h │ │ │ │ ├── RCTCxxUtils.mm │ │ │ │ ├── RCTNativeModule.h │ │ │ │ └── RCTNativeModule.mm │ │ │ ├── CxxUtils/ │ │ │ │ └── RCTFollyConvert.h │ │ │ ├── DevSupport/ │ │ │ │ ├── RCTDevLoadingViewProtocol.h │ │ │ │ ├── RCTDevLoadingViewSetEnabled.h │ │ │ │ ├── RCTDevLoadingViewSetEnabled.m │ │ │ │ ├── RCTFrameTimingsObserver.h │ │ │ │ ├── RCTFrameTimingsObserver.mm │ │ │ │ ├── RCTInspectorDevServerHelper.h │ │ │ │ ├── RCTInspectorDevServerHelper.mm │ │ │ │ ├── RCTInspectorNetworkHelper.h │ │ │ │ ├── RCTInspectorNetworkHelper.mm │ │ │ │ ├── RCTInspectorUtils.h │ │ │ │ ├── RCTInspectorUtils.mm │ │ │ │ ├── RCTPackagerClient.h │ │ │ │ ├── RCTPackagerClient.m │ │ │ │ ├── RCTPackagerConnection.h │ │ │ │ ├── RCTPackagerConnection.mm │ │ │ │ ├── RCTPausedInDebuggerOverlayController.h │ │ │ │ └── RCTPausedInDebuggerOverlayController.mm │ │ │ ├── Fabric/ │ │ │ │ ├── AppleEventBeat.cpp │ │ │ │ ├── AppleEventBeat.h │ │ │ │ ├── Mounting/ │ │ │ │ │ ├── ComponentViews/ │ │ │ │ │ │ ├── ActivityIndicator/ │ │ │ │ │ │ │ ├── RCTActivityIndicatorViewComponentView.h │ │ │ │ │ │ │ └── RCTActivityIndicatorViewComponentView.mm │ │ │ │ │ │ ├── DebuggingOverlay/ │ │ │ │ │ │ │ ├── RCTDebuggingOverlayComponentView.h │ │ │ │ │ │ │ └── RCTDebuggingOverlayComponentView.mm │ │ │ │ │ │ ├── Image/ │ │ │ │ │ │ │ ├── RCTImageComponentView.h │ │ │ │ │ │ │ └── RCTImageComponentView.mm │ │ │ │ │ │ ├── InputAccessory/ │ │ │ │ │ │ │ ├── RCTInputAccessoryComponentView.h │ │ │ │ │ │ │ ├── RCTInputAccessoryComponentView.mm │ │ │ │ │ │ │ ├── RCTInputAccessoryContentView.h │ │ │ │ │ │ │ └── RCTInputAccessoryContentView.mm │ │ │ │ │ │ ├── LegacyViewManagerInterop/ │ │ │ │ │ │ │ ├── RCTLegacyViewManagerInteropComponentView.h │ │ │ │ │ │ │ ├── RCTLegacyViewManagerInteropComponentView.mm │ │ │ │ │ │ │ ├── RCTLegacyViewManagerInteropCoordinatorAdapter.h │ │ │ │ │ │ │ └── RCTLegacyViewManagerInteropCoordinatorAdapter.mm │ │ │ │ │ │ ├── Modal/ │ │ │ │ │ │ │ ├── RCTFabricModalHostViewController.h │ │ │ │ │ │ │ ├── RCTFabricModalHostViewController.mm │ │ │ │ │ │ │ ├── RCTModalHostViewComponentView.h │ │ │ │ │ │ │ └── RCTModalHostViewComponentView.mm │ │ │ │ │ │ ├── RCTFabricComponentsPlugins.h │ │ │ │ │ │ ├── RCTFabricComponentsPlugins.mm │ │ │ │ │ │ ├── Root/ │ │ │ │ │ │ │ ├── RCTRootComponentView.h │ │ │ │ │ │ │ └── RCTRootComponentView.mm │ │ │ │ │ │ ├── SafeAreaView/ │ │ │ │ │ │ │ ├── RCTSafeAreaViewComponentView.h │ │ │ │ │ │ │ └── RCTSafeAreaViewComponentView.mm │ │ │ │ │ │ ├── ScrollView/ │ │ │ │ │ │ │ ├── RCTCustomPullToRefreshViewProtocol.h │ │ │ │ │ │ │ ├── RCTEnhancedScrollView.h │ │ │ │ │ │ │ ├── RCTEnhancedScrollView.mm │ │ │ │ │ │ │ ├── RCTPullToRefreshViewComponentView.h │ │ │ │ │ │ │ ├── RCTPullToRefreshViewComponentView.mm │ │ │ │ │ │ │ ├── RCTScrollViewComponentView.h │ │ │ │ │ │ │ ├── RCTScrollViewComponentView.mm │ │ │ │ │ │ │ ├── RCTVirtualViewContainerProtocol.h │ │ │ │ │ │ │ ├── RCTVirtualViewContainerState.h │ │ │ │ │ │ │ ├── RCTVirtualViewContainerState.mm │ │ │ │ │ │ │ └── RCTVirtualViewProtocol.h │ │ │ │ │ │ ├── Switch/ │ │ │ │ │ │ │ ├── RCTSwitchComponentView.h │ │ │ │ │ │ │ └── RCTSwitchComponentView.mm │ │ │ │ │ │ ├── Text/ │ │ │ │ │ │ │ ├── RCTAccessibilityElement.h │ │ │ │ │ │ │ ├── RCTAccessibilityElement.mm │ │ │ │ │ │ │ ├── RCTParagraphComponentAccessibilityProvider.h │ │ │ │ │ │ │ ├── RCTParagraphComponentAccessibilityProvider.mm │ │ │ │ │ │ │ ├── RCTParagraphComponentView.h │ │ │ │ │ │ │ └── RCTParagraphComponentView.mm │ │ │ │ │ │ ├── TextInput/ │ │ │ │ │ │ │ ├── RCTTextInputComponentView.h │ │ │ │ │ │ │ ├── RCTTextInputComponentView.mm │ │ │ │ │ │ │ ├── RCTTextInputNativeCommands.h │ │ │ │ │ │ │ ├── RCTTextInputUtils.h │ │ │ │ │ │ │ └── RCTTextInputUtils.mm │ │ │ │ │ │ ├── UnimplementedComponent/ │ │ │ │ │ │ │ ├── RCTUnimplementedNativeComponentView.h │ │ │ │ │ │ │ └── RCTUnimplementedNativeComponentView.mm │ │ │ │ │ │ ├── UnimplementedView/ │ │ │ │ │ │ │ ├── RCTUnimplementedViewComponentView.h │ │ │ │ │ │ │ └── RCTUnimplementedViewComponentView.mm │ │ │ │ │ │ ├── View/ │ │ │ │ │ │ │ ├── RCTViewComponentView.h │ │ │ │ │ │ │ └── RCTViewComponentView.mm │ │ │ │ │ │ └── VirtualView/ │ │ │ │ │ │ ├── RCTVirtualViewComponentView.h │ │ │ │ │ │ ├── RCTVirtualViewComponentView.mm │ │ │ │ │ │ ├── RCTVirtualViewMode.h │ │ │ │ │ │ └── RCTVirtualViewRenderState.h │ │ │ │ │ ├── RCTComponentViewClassDescriptor.h │ │ │ │ │ ├── RCTComponentViewDescriptor.h │ │ │ │ │ ├── RCTComponentViewFactory.h │ │ │ │ │ ├── RCTComponentViewFactory.mm │ │ │ │ │ ├── RCTComponentViewProtocol.h │ │ │ │ │ ├── RCTComponentViewRegistry.h │ │ │ │ │ ├── RCTComponentViewRegistry.mm │ │ │ │ │ ├── RCTMountingManager.h │ │ │ │ │ ├── RCTMountingManager.mm │ │ │ │ │ ├── RCTMountingManagerDelegate.h │ │ │ │ │ ├── RCTMountingTransactionObserverCoordinator.h │ │ │ │ │ ├── RCTMountingTransactionObserverCoordinator.mm │ │ │ │ │ ├── RCTMountingTransactionObserving.h │ │ │ │ │ ├── UIView+ComponentViewProtocol.h │ │ │ │ │ └── UIView+ComponentViewProtocol.mm │ │ │ │ ├── RCTConversions.h │ │ │ │ ├── RCTImageResponseDelegate.h │ │ │ │ ├── RCTImageResponseObserverProxy.h │ │ │ │ ├── RCTImageResponseObserverProxy.mm │ │ │ │ ├── RCTLocalizationProvider.h │ │ │ │ ├── RCTLocalizationProvider.mm │ │ │ │ ├── RCTPrimitives.h │ │ │ │ ├── RCTScheduler.h │ │ │ │ ├── RCTScheduler.mm │ │ │ │ ├── RCTSurfacePointerHandler.h │ │ │ │ ├── RCTSurfacePointerHandler.mm │ │ │ │ ├── RCTSurfacePresenter.h │ │ │ │ ├── RCTSurfacePresenter.mm │ │ │ │ ├── RCTSurfacePresenterBridgeAdapter.h │ │ │ │ ├── RCTSurfacePresenterBridgeAdapter.mm │ │ │ │ ├── RCTSurfaceRegistry.h │ │ │ │ ├── RCTSurfaceRegistry.mm │ │ │ │ ├── RCTSurfaceTouchHandler.h │ │ │ │ ├── RCTSurfaceTouchHandler.mm │ │ │ │ ├── RCTTouchableComponentViewProtocol.h │ │ │ │ ├── Surface/ │ │ │ │ │ ├── RCTFabricSurface.h │ │ │ │ │ └── RCTFabricSurface.mm │ │ │ │ └── Utils/ │ │ │ │ ├── PlatformRunLoopObserver.h │ │ │ │ ├── PlatformRunLoopObserver.mm │ │ │ │ ├── RCTBackgroundImageUtils.h │ │ │ │ ├── RCTBackgroundImageUtils.mm │ │ │ │ ├── RCTBoxShadow.h │ │ │ │ ├── RCTBoxShadow.mm │ │ │ │ ├── RCTColorSpaceUtils.h │ │ │ │ ├── RCTColorSpaceUtils.mm │ │ │ │ ├── RCTGenericDelegateSplitter.h │ │ │ │ ├── RCTGenericDelegateSplitter.mm │ │ │ │ ├── RCTGradientUtils.h │ │ │ │ ├── RCTGradientUtils.mm │ │ │ │ ├── RCTIdentifierPool.h │ │ │ │ ├── RCTLinearGradient.h │ │ │ │ ├── RCTLinearGradient.mm │ │ │ │ ├── RCTRadialGradient.h │ │ │ │ ├── RCTRadialGradient.mm │ │ │ │ ├── RCTReactTaggedView.h │ │ │ │ └── RCTReactTaggedView.mm │ │ │ ├── I18n/ │ │ │ │ ├── .clang-format-ignore │ │ │ │ ├── FBXXHashUtils.h │ │ │ │ ├── RCTLocalizedString.h │ │ │ │ ├── RCTLocalizedString.mm │ │ │ │ └── strings/ │ │ │ │ ├── ar.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── cs.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── da.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── de.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── el.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── en-GB.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── en.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── es-ES.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── es.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── fi.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── fr.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── he.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── hi.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── hr.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── hu.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── id.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── it.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── ja.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── ko.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── ms.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── nb.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── nl.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── pl.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── pt-PT.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── pt.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── ro.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── ru.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── sk.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── sv.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── th.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── tr.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── uk.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── vi.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── zh-Hans.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── zh-Hant-HK.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ ├── zh-Hant.lproj/ │ │ │ │ │ └── Localizable.strings │ │ │ │ └── zu.lproj/ │ │ │ │ └── Localizable.strings │ │ │ ├── Inspector/ │ │ │ │ ├── RCTCxxInspectorPackagerConnection.h │ │ │ │ ├── RCTCxxInspectorPackagerConnection.mm │ │ │ │ ├── RCTCxxInspectorPackagerConnectionDelegate.h │ │ │ │ ├── RCTCxxInspectorPackagerConnectionDelegate.mm │ │ │ │ ├── RCTCxxInspectorWebSocketAdapter.h │ │ │ │ ├── RCTCxxInspectorWebSocketAdapter.mm │ │ │ │ ├── RCTInspector.h │ │ │ │ ├── RCTInspector.mm │ │ │ │ └── RCTInspectorPackagerConnection.h │ │ │ ├── Modules/ │ │ │ │ ├── RCTEventEmitter.h │ │ │ │ ├── RCTEventEmitter.m │ │ │ │ ├── RCTI18nUtil.h │ │ │ │ ├── RCTI18nUtil.m │ │ │ │ ├── RCTLayoutAnimation.h │ │ │ │ ├── RCTLayoutAnimation.m │ │ │ │ ├── RCTLayoutAnimationGroup.h │ │ │ │ ├── RCTLayoutAnimationGroup.m │ │ │ │ ├── RCTRedBoxExtraDataViewController.h │ │ │ │ ├── RCTRedBoxExtraDataViewController.m │ │ │ │ ├── RCTSurfacePresenterStub.h │ │ │ │ ├── RCTSurfacePresenterStub.m │ │ │ │ ├── RCTUIManager.h │ │ │ │ ├── RCTUIManager.mm │ │ │ │ ├── RCTUIManagerObserverCoordinator.h │ │ │ │ ├── RCTUIManagerObserverCoordinator.mm │ │ │ │ ├── RCTUIManagerUtils.h │ │ │ │ └── RCTUIManagerUtils.m │ │ │ ├── Profiler/ │ │ │ │ ├── RCTMacros.h │ │ │ │ ├── RCTProfile.h │ │ │ │ ├── RCTProfile.m │ │ │ │ ├── RCTProfileTrampoline-arm.S │ │ │ │ ├── RCTProfileTrampoline-arm64.S │ │ │ │ ├── RCTProfileTrampoline-i386.S │ │ │ │ └── RCTProfileTrampoline-x86_64.S │ │ │ ├── React-RCTFBReactNativeSpec.podspec │ │ │ ├── React-RCTFabric.podspec │ │ │ ├── Resources/ │ │ │ │ └── PrivacyInfo.xcprivacy │ │ │ ├── Runtime/ │ │ │ │ ├── RCTHermesInstanceFactory.h │ │ │ │ ├── RCTHermesInstanceFactory.mm │ │ │ │ └── React-RCTRuntime.podspec │ │ │ ├── Tests/ │ │ │ │ ├── Mounting/ │ │ │ │ │ ├── RCTComponentViewRegistryTests.mm │ │ │ │ │ └── RCTViewComponentViewTests.mm │ │ │ │ └── Text/ │ │ │ │ ├── RCTAttributedTextUtilsTest.mm │ │ │ │ ├── RCTParagraphComponentViewTests.mm │ │ │ │ └── RCTTextAttributesTest.mm │ │ │ ├── Views/ │ │ │ │ ├── RCTActivityIndicatorView.h │ │ │ │ ├── RCTActivityIndicatorView.m │ │ │ │ ├── RCTActivityIndicatorViewManager.h │ │ │ │ ├── RCTActivityIndicatorViewManager.m │ │ │ │ ├── RCTAnimationType.h │ │ │ │ ├── RCTAutoInsetsProtocol.h │ │ │ │ ├── RCTBorderCurve.h │ │ │ │ ├── RCTBorderDrawing.h │ │ │ │ ├── RCTBorderDrawing.m │ │ │ │ ├── RCTBorderStyle.h │ │ │ │ ├── RCTComponent.h │ │ │ │ ├── RCTComponentData.h │ │ │ │ ├── RCTComponentData.mm │ │ │ │ ├── RCTConvert+CoreLocation.h │ │ │ │ ├── RCTConvert+CoreLocation.m │ │ │ │ ├── RCTConvert+Transform.h │ │ │ │ ├── RCTConvert+Transform.m │ │ │ │ ├── RCTCursor.h │ │ │ │ ├── RCTDebuggingOverlay.h │ │ │ │ ├── RCTDebuggingOverlay.m │ │ │ │ ├── RCTDebuggingOverlayManager.h │ │ │ │ ├── RCTDebuggingOverlayManager.m │ │ │ │ ├── RCTFont+Private.h │ │ │ │ ├── RCTFont.h │ │ │ │ ├── RCTFont.mm │ │ │ │ ├── RCTLayout.h │ │ │ │ ├── RCTLayout.m │ │ │ │ ├── RCTModalHostView.h │ │ │ │ ├── RCTModalHostView.m │ │ │ │ ├── RCTModalHostViewController.h │ │ │ │ ├── RCTModalHostViewController.m │ │ │ │ ├── RCTModalHostViewManager.h │ │ │ │ ├── RCTModalHostViewManager.m │ │ │ │ ├── RCTModalManager.h │ │ │ │ ├── RCTModalManager.m │ │ │ │ ├── RCTPointerEvents.h │ │ │ │ ├── RCTRootShadowView.h │ │ │ │ ├── RCTRootShadowView.m │ │ │ │ ├── RCTShadowView+Internal.h │ │ │ │ ├── RCTShadowView+Internal.m │ │ │ │ ├── RCTShadowView+Layout.h │ │ │ │ ├── RCTShadowView+Layout.m │ │ │ │ ├── RCTShadowView.h │ │ │ │ ├── RCTShadowView.m │ │ │ │ ├── RCTSwitch.h │ │ │ │ ├── RCTSwitch.m │ │ │ │ ├── RCTSwitchManager.h │ │ │ │ ├── RCTSwitchManager.m │ │ │ │ ├── RCTTextDecorationLineType.h │ │ │ │ ├── RCTView.h │ │ │ │ ├── RCTView.m │ │ │ │ ├── RCTViewManager.h │ │ │ │ ├── RCTViewManager.m │ │ │ │ ├── RCTViewUtils.h │ │ │ │ ├── RCTViewUtils.m │ │ │ │ ├── RCTWrapperViewController.h │ │ │ │ ├── RCTWrapperViewController.m │ │ │ │ ├── RefreshControl/ │ │ │ │ │ ├── RCTRefreshControl.h │ │ │ │ │ ├── RCTRefreshControl.m │ │ │ │ │ ├── RCTRefreshControlManager.h │ │ │ │ │ ├── RCTRefreshControlManager.m │ │ │ │ │ └── RCTRefreshableProtocol.h │ │ │ │ ├── SafeAreaView/ │ │ │ │ │ ├── RCTSafeAreaShadowView.h │ │ │ │ │ ├── RCTSafeAreaShadowView.m │ │ │ │ │ ├── RCTSafeAreaView.h │ │ │ │ │ ├── RCTSafeAreaView.m │ │ │ │ │ ├── RCTSafeAreaViewLocalData.h │ │ │ │ │ ├── RCTSafeAreaViewLocalData.m │ │ │ │ │ ├── RCTSafeAreaViewManager.h │ │ │ │ │ └── RCTSafeAreaViewManager.m │ │ │ │ ├── ScrollView/ │ │ │ │ │ ├── RCTScrollContentShadowView.h │ │ │ │ │ ├── RCTScrollContentShadowView.m │ │ │ │ │ ├── RCTScrollContentView.h │ │ │ │ │ ├── RCTScrollContentView.m │ │ │ │ │ ├── RCTScrollContentViewManager.h │ │ │ │ │ ├── RCTScrollContentViewManager.m │ │ │ │ │ ├── RCTScrollEvent.h │ │ │ │ │ ├── RCTScrollEvent.m │ │ │ │ │ ├── RCTScrollView.h │ │ │ │ │ ├── RCTScrollView.m │ │ │ │ │ ├── RCTScrollViewManager.h │ │ │ │ │ ├── RCTScrollViewManager.m │ │ │ │ │ └── RCTScrollableProtocol.h │ │ │ │ ├── UIView+Private.h │ │ │ │ ├── UIView+React.h │ │ │ │ └── UIView+React.m │ │ │ └── third-party.xcconfig │ │ ├── React-Core-prebuilt.podspec │ │ ├── React-Core.podspec │ │ ├── React.podspec │ │ ├── ReactAndroid/ │ │ │ ├── README.md │ │ │ ├── api/ │ │ │ │ └── ReactAndroid.api │ │ │ ├── build.gradle.kts │ │ │ ├── cmake-utils/ │ │ │ │ ├── ReactNative-application.cmake │ │ │ │ ├── default-app-setup/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── OnLoad.cpp │ │ │ │ └── folly-flags.cmake │ │ │ ├── external-artifacts/ │ │ │ │ └── build.gradle.kts │ │ │ ├── gradle.properties │ │ │ ├── hermes-engine/ │ │ │ │ ├── build.gradle.kts │ │ │ │ └── gradle.properties │ │ │ ├── proguard-rules.pro │ │ │ ├── publish.gradle │ │ │ └── src/ │ │ │ ├── debug/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── facebook/ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ ├── debugoverlay/ │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── DebugOverlayTag.kt │ │ │ │ │ │ ├── holder/ │ │ │ │ │ │ │ ├── NoopPrinter.kt │ │ │ │ │ │ │ ├── Printer.kt │ │ │ │ │ │ │ └── PrinterHolder.kt │ │ │ │ │ │ └── tags/ │ │ │ │ │ │ └── ReactDebugOverlayTags.kt │ │ │ │ │ ├── hermes/ │ │ │ │ │ │ ├── instrumentation/ │ │ │ │ │ │ │ ├── HermesMemoryDumper.kt │ │ │ │ │ │ │ └── HermesSamplingProfiler.kt │ │ │ │ │ │ └── reactexecutor/ │ │ │ │ │ │ ├── HermesExecutor.kt │ │ │ │ │ │ ├── HermesExecutorFactory.kt │ │ │ │ │ │ └── fbjni.pro │ │ │ │ │ ├── react/ │ │ │ │ │ │ ├── BaseReactPackage.kt │ │ │ │ │ │ ├── DebugCorePackage.kt │ │ │ │ │ │ ├── HeadlessJsTaskService.kt │ │ │ │ │ │ ├── MemoryPressureRouter.kt │ │ │ │ │ │ ├── NativeModuleRegistryBuilder.kt │ │ │ │ │ │ ├── ReactActivity.java │ │ │ │ │ │ ├── ReactActivityDelegate.java │ │ │ │ │ │ ├── ReactAndroidHWInputDeviceHelper.kt │ │ │ │ │ │ ├── ReactApplication.kt │ │ │ │ │ │ ├── ReactDelegate.kt │ │ │ │ │ │ ├── ReactFragment.kt │ │ │ │ │ │ ├── ReactHost.kt │ │ │ │ │ │ ├── ReactInstanceEventListener.kt │ │ │ │ │ │ ├── ReactInstanceManager.java │ │ │ │ │ │ ├── ReactInstanceManagerBuilder.kt │ │ │ │ │ │ ├── ReactNativeHost.java │ │ │ │ │ │ ├── ReactPackage.kt │ │ │ │ │ │ ├── ReactPackageHelper.kt │ │ │ │ │ │ ├── ReactPackageTurboModuleManagerDelegate.kt │ │ │ │ │ │ ├── ReactRootView.java │ │ │ │ │ │ ├── TurboReactPackage.kt │ │ │ │ │ │ ├── ViewManagerOnDemandReactPackage.kt │ │ │ │ │ │ ├── animated/ │ │ │ │ │ │ │ ├── AdditionAnimatedNode.kt │ │ │ │ │ │ │ ├── AnimatedNode.kt │ │ │ │ │ │ │ ├── AnimatedNodeValueListener.kt │ │ │ │ │ │ │ ├── AnimatedNodeWithUpdateableConfig.kt │ │ │ │ │ │ │ ├── AnimationDriver.kt │ │ │ │ │ │ │ ├── ColorAnimatedNode.kt │ │ │ │ │ │ │ ├── DecayAnimation.kt │ │ │ │ │ │ │ ├── DiffClampAnimatedNode.kt │ │ │ │ │ │ │ ├── DivisionAnimatedNode.kt │ │ │ │ │ │ │ ├── EventAnimationDriver.kt │ │ │ │ │ │ │ ├── FrameBasedAnimationDriver.kt │ │ │ │ │ │ │ ├── InterpolationAnimatedNode.kt │ │ │ │ │ │ │ ├── ModulusAnimatedNode.kt │ │ │ │ │ │ │ ├── MultiplicationAnimatedNode.kt │ │ │ │ │ │ │ ├── NativeAnimatedModule.kt │ │ │ │ │ │ │ ├── NativeAnimatedNodesManager.kt │ │ │ │ │ │ │ ├── ObjectAnimatedNode.kt │ │ │ │ │ │ │ ├── PropsAnimatedNode.kt │ │ │ │ │ │ │ ├── SpringAnimation.kt │ │ │ │ │ │ │ ├── StyleAnimatedNode.kt │ │ │ │ │ │ │ ├── SubtractionAnimatedNode.kt │ │ │ │ │ │ │ ├── TrackingAnimatedNode.kt │ │ │ │ │ │ │ ├── TransformAnimatedNode.kt │ │ │ │ │ │ │ └── ValueAnimatedNode.kt │ │ │ │ │ │ ├── bridge/ │ │ │ │ │ │ │ ├── ActivityEventListener.kt │ │ │ │ │ │ │ ├── Arguments.kt │ │ │ │ │ │ │ ├── AssertionException.kt │ │ │ │ │ │ │ ├── BaseActivityEventListener.kt │ │ │ │ │ │ │ ├── BaseJavaModule.java │ │ │ │ │ │ │ ├── BridgeReactContext.java │ │ │ │ │ │ │ ├── Callback.kt │ │ │ │ │ │ │ ├── CatalystInstance.kt │ │ │ │ │ │ │ ├── ColorPropConverter.kt │ │ │ │ │ │ │ ├── CxxCallbackImpl.kt │ │ │ │ │ │ │ ├── DefaultJSExceptionHandler.kt │ │ │ │ │ │ │ ├── DimensionPropConverter.kt │ │ │ │ │ │ │ ├── Dynamic.kt │ │ │ │ │ │ │ ├── DynamicFromArray.kt │ │ │ │ │ │ │ ├── DynamicFromMap.kt │ │ │ │ │ │ │ ├── DynamicFromObject.kt │ │ │ │ │ │ │ ├── DynamicNative.kt │ │ │ │ │ │ │ ├── GuardedAsyncTask.kt │ │ │ │ │ │ │ ├── GuardedRunnable.kt │ │ │ │ │ │ │ ├── JSApplicationCausedNativeException.kt │ │ │ │ │ │ │ ├── JSApplicationIllegalArgumentException.kt │ │ │ │ │ │ │ ├── JSBundleLoader.kt │ │ │ │ │ │ │ ├── JSBundleLoaderDelegate.kt │ │ │ │ │ │ │ ├── JSExceptionHandler.kt │ │ │ │ │ │ │ ├── JSInstance.kt │ │ │ │ │ │ │ ├── JavaMethodWrapper.kt │ │ │ │ │ │ │ ├── JavaModuleWrapper.kt │ │ │ │ │ │ │ ├── JavaOnlyArray.kt │ │ │ │ │ │ │ ├── JavaOnlyMap.kt │ │ │ │ │ │ │ ├── JavaScriptContextHolder.kt │ │ │ │ │ │ │ ├── JavaScriptExecutor.kt │ │ │ │ │ │ │ ├── JavaScriptExecutorFactory.kt │ │ │ │ │ │ │ ├── JavaScriptModule.kt │ │ │ │ │ │ │ ├── JavaScriptModuleRegistry.kt │ │ │ │ │ │ │ ├── JsonWriterHelper.kt │ │ │ │ │ │ │ ├── LifecycleEventListener.kt │ │ │ │ │ │ │ ├── MemoryPressureListener.kt │ │ │ │ │ │ │ ├── ModuleHolder.kt │ │ │ │ │ │ │ ├── ModuleSpec.kt │ │ │ │ │ │ │ ├── NativeArray.kt │ │ │ │ │ │ │ ├── NativeArrayInterface.kt │ │ │ │ │ │ │ ├── NativeMap.kt │ │ │ │ │ │ │ ├── NativeModule.java │ │ │ │ │ │ │ ├── NativeModuleRegistry.kt │ │ │ │ │ │ │ ├── NoSuchKeyException.kt │ │ │ │ │ │ │ ├── ObjectAlreadyConsumedException.kt │ │ │ │ │ │ │ ├── PerformanceCounter.kt │ │ │ │ │ │ │ ├── Promise.kt │ │ │ │ │ │ │ ├── PromiseImpl.kt │ │ │ │ │ │ │ ├── ReactApplicationContext.kt │ │ │ │ │ │ │ ├── ReactContext.java │ │ │ │ │ │ │ ├── ReactContextBaseJavaModule.kt │ │ │ │ │ │ │ ├── ReactIgnorableMountingException.kt │ │ │ │ │ │ │ ├── ReactMarker.kt │ │ │ │ │ │ │ ├── ReactMarkerConstants.kt │ │ │ │ │ │ │ ├── ReactMethod.kt │ │ │ │ │ │ │ ├── ReactModuleWithSpec.kt │ │ │ │ │ │ │ ├── ReactNativeJNISoLoader.kt │ │ │ │ │ │ │ ├── ReactNativeJniCommonSoLoader.kt │ │ │ │ │ │ │ ├── ReactNoCrashSoftException.kt │ │ │ │ │ │ │ ├── ReactSoftExceptionLogger.kt │ │ │ │ │ │ │ ├── ReadableArray.kt │ │ │ │ │ │ │ ├── ReadableArrayBuilder.kt │ │ │ │ │ │ │ ├── ReadableMap.kt │ │ │ │ │ │ │ ├── ReadableMapBuilder.kt │ │ │ │ │ │ │ ├── ReadableMapKeySetIterator.kt │ │ │ │ │ │ │ ├── ReadableNativeArray.kt │ │ │ │ │ │ │ ├── ReadableNativeMap.kt │ │ │ │ │ │ │ ├── ReadableType.kt │ │ │ │ │ │ │ ├── RetryableMountingLayerException.kt │ │ │ │ │ │ │ ├── RuntimeExecutor.kt │ │ │ │ │ │ │ ├── RuntimeScheduler.kt │ │ │ │ │ │ │ ├── ScrollEndedListener.kt │ │ │ │ │ │ │ ├── SoftAssertions.kt │ │ │ │ │ │ │ ├── Systrace.kt │ │ │ │ │ │ │ ├── UIManager.kt │ │ │ │ │ │ │ ├── UIManagerListener.kt │ │ │ │ │ │ │ ├── UIManagerProvider.kt │ │ │ │ │ │ │ ├── UiThreadUtil.kt │ │ │ │ │ │ │ ├── UnexpectedNativeTypeException.kt │ │ │ │ │ │ │ ├── WindowFocusChangeListener.kt │ │ │ │ │ │ │ ├── WritableArray.kt │ │ │ │ │ │ │ ├── WritableMap.kt │ │ │ │ │ │ │ ├── WritableNativeArray.kt │ │ │ │ │ │ │ ├── WritableNativeMap.kt │ │ │ │ │ │ │ ├── interop/ │ │ │ │ │ │ │ │ └── InteropModuleRegistry.kt │ │ │ │ │ │ │ ├── queue/ │ │ │ │ │ │ │ │ ├── MessageQueueThread.kt │ │ │ │ │ │ │ │ ├── MessageQueueThreadHandler.kt │ │ │ │ │ │ │ │ ├── MessageQueueThreadImpl.kt │ │ │ │ │ │ │ │ ├── MessageQueueThreadPerfStats.kt │ │ │ │ │ │ │ │ ├── MessageQueueThreadSpec.kt │ │ │ │ │ │ │ │ ├── QueueThreadExceptionHandler.kt │ │ │ │ │ │ │ │ ├── ReactQueueConfiguration.kt │ │ │ │ │ │ │ │ ├── ReactQueueConfigurationImpl.kt │ │ │ │ │ │ │ │ └── ReactQueueConfigurationSpec.kt │ │ │ │ │ │ │ └── reactnative.pro │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ ├── ClassFinder.kt │ │ │ │ │ │ │ ├── ClearableSynchronizedPool.kt │ │ │ │ │ │ │ ├── DebugServerException.kt │ │ │ │ │ │ │ ├── JavascriptException.kt │ │ │ │ │ │ │ ├── LifecycleState.kt │ │ │ │ │ │ │ ├── MapBuilder.kt │ │ │ │ │ │ │ ├── ReactConstants.kt │ │ │ │ │ │ │ ├── ReleaseLevel.kt │ │ │ │ │ │ │ ├── ShakeDetector.kt │ │ │ │ │ │ │ ├── SurfaceDelegate.kt │ │ │ │ │ │ │ ├── SurfaceDelegateFactory.kt │ │ │ │ │ │ │ ├── SystemClock.kt │ │ │ │ │ │ │ ├── annotations/ │ │ │ │ │ │ │ │ ├── FrameworkAPI.kt │ │ │ │ │ │ │ │ ├── LegacyArchitectureShadowNodeWithCxxImpl.kt │ │ │ │ │ │ │ │ ├── StableReactNativeAPI.kt │ │ │ │ │ │ │ │ ├── UnstableReactNativeAPI.kt │ │ │ │ │ │ │ │ ├── VisibleForTesting.kt │ │ │ │ │ │ │ │ └── internal/ │ │ │ │ │ │ │ │ ├── InteropLegacyArchitecture.kt │ │ │ │ │ │ │ │ ├── LegacyArchitecture.kt │ │ │ │ │ │ │ │ ├── LegacyArchitectureLogLevel.kt │ │ │ │ │ │ │ │ └── LegacyArchitectureLogger.kt │ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ │ └── ReactFontManager.kt │ │ │ │ │ │ │ ├── build/ │ │ │ │ │ │ │ │ └── ReactBuildConfig.kt │ │ │ │ │ │ │ ├── futures/ │ │ │ │ │ │ │ │ └── SimpleSettableFuture.kt │ │ │ │ │ │ │ ├── mapbuffer/ │ │ │ │ │ │ │ │ ├── MapBuffer.kt │ │ │ │ │ │ │ │ ├── ReadableMapBuffer.kt │ │ │ │ │ │ │ │ └── WritableMapBuffer.kt │ │ │ │ │ │ │ └── network/ │ │ │ │ │ │ │ └── OkHttpCallUtil.kt │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── ReactFeatureFlags.kt │ │ │ │ │ │ ├── defaults/ │ │ │ │ │ │ │ ├── DefaultComponentsRegistry.kt │ │ │ │ │ │ │ ├── DefaultNewArchitectureEntryPoint.kt │ │ │ │ │ │ │ ├── DefaultReactActivityDelegate.kt │ │ │ │ │ │ │ ├── DefaultReactHost.kt │ │ │ │ │ │ │ ├── DefaultReactHostDelegate.kt │ │ │ │ │ │ │ ├── DefaultReactNativeHost.kt │ │ │ │ │ │ │ ├── DefaultSoLoader.kt │ │ │ │ │ │ │ └── DefaultTurboModuleManagerDelegate.kt │ │ │ │ │ │ ├── devsupport/ │ │ │ │ │ │ │ ├── BridgelessDevSupportManager.kt │ │ │ │ │ │ │ ├── BundleDownloader.kt │ │ │ │ │ │ │ ├── ChangeBundleLocationDialog.kt │ │ │ │ │ │ │ ├── CxxInspectorPackagerConnection.kt │ │ │ │ │ │ │ ├── DebugOverlayController.kt │ │ │ │ │ │ │ ├── DefaultDevLoadingViewImplementation.kt │ │ │ │ │ │ │ ├── DefaultDevSupportManagerFactory.kt │ │ │ │ │ │ │ ├── DevInternalSettings.kt │ │ │ │ │ │ │ ├── DevMenuConfiguration.kt │ │ │ │ │ │ │ ├── DevServerHelper.kt │ │ │ │ │ │ │ ├── DevSettingsActivity.kt │ │ │ │ │ │ │ ├── DevSupportManagerBase.kt │ │ │ │ │ │ │ ├── DevSupportManagerFactory.kt │ │ │ │ │ │ │ ├── DoubleTapReloadRecognizer.kt │ │ │ │ │ │ │ ├── FpsView.kt │ │ │ │ │ │ │ ├── HMRClient.kt │ │ │ │ │ │ │ ├── IInspectorPackagerConnection.kt │ │ │ │ │ │ │ ├── InspectorFlags.kt │ │ │ │ │ │ │ ├── LogBoxDialog.kt │ │ │ │ │ │ │ ├── LogBoxDialogSurfaceDelegate.kt │ │ │ │ │ │ │ ├── LogBoxModule.kt │ │ │ │ │ │ │ ├── MultipartStreamReader.kt │ │ │ │ │ │ │ ├── PackagerStatusCheck.kt │ │ │ │ │ │ │ ├── PausedInDebuggerOverlayDialogManager.kt │ │ │ │ │ │ │ ├── PerftestDevSupportManager.kt │ │ │ │ │ │ │ ├── ReactInstanceDevHelper.kt │ │ │ │ │ │ │ ├── RedBoxContentView.kt │ │ │ │ │ │ │ ├── RedBoxDialogSurfaceDelegate.kt │ │ │ │ │ │ │ ├── ReleaseDevSupportManager.kt │ │ │ │ │ │ │ ├── StackTraceHelper.kt │ │ │ │ │ │ │ ├── WindowOverlayCompat.kt │ │ │ │ │ │ │ ├── inspector/ │ │ │ │ │ │ │ │ ├── DevSupportHttpClient.kt │ │ │ │ │ │ │ │ ├── FrameTimingSequence.kt │ │ │ │ │ │ │ │ ├── FrameTimingsObserver.kt │ │ │ │ │ │ │ │ ├── InspectorNetworkHelper.kt │ │ │ │ │ │ │ │ ├── InspectorNetworkRequestListener.kt │ │ │ │ │ │ │ │ ├── TracingState.kt │ │ │ │ │ │ │ │ ├── TracingStateListener.kt │ │ │ │ │ │ │ │ └── TracingStateProvider.kt │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ ├── BundleLoadCallback.kt │ │ │ │ │ │ │ │ ├── DebuggerFrontendPanelName.kt │ │ │ │ │ │ │ │ ├── DevBundleDownloadListener.kt │ │ │ │ │ │ │ │ ├── DevLoadingViewManager.kt │ │ │ │ │ │ │ │ ├── DevOptionHandler.kt │ │ │ │ │ │ │ │ ├── DevSupportManager.kt │ │ │ │ │ │ │ │ ├── ErrorCustomizer.kt │ │ │ │ │ │ │ │ ├── ErrorType.kt │ │ │ │ │ │ │ │ ├── PackagerStatusCallback.kt │ │ │ │ │ │ │ │ ├── PausedInDebuggerOverlayManager.kt │ │ │ │ │ │ │ │ ├── RedBoxHandler.kt │ │ │ │ │ │ │ │ └── StackFrame.kt │ │ │ │ │ │ │ └── perfmonitor/ │ │ │ │ │ │ │ ├── PerfMonitorDevHelper.kt │ │ │ │ │ │ │ ├── PerfMonitorEventDispatcher.kt │ │ │ │ │ │ │ ├── PerfMonitorInspectorTarget.kt │ │ │ │ │ │ │ ├── PerfMonitorInspectorTargetBinding.kt │ │ │ │ │ │ │ ├── PerfMonitorOverlayManager.kt │ │ │ │ │ │ │ ├── PerfMonitorOverlayView.kt │ │ │ │ │ │ │ └── PerfMonitorUpdateListener.kt │ │ │ │ │ │ ├── fabric/ │ │ │ │ │ │ │ ├── AnimationBackendChoreographer.kt │ │ │ │ │ │ │ ├── ComponentFactory.kt │ │ │ │ │ │ │ ├── DevToolsReactPerfLogger.kt │ │ │ │ │ │ │ ├── FabricSoLoader.kt │ │ │ │ │ │ │ ├── FabricUIManager.java │ │ │ │ │ │ │ ├── FabricUIManagerBinding.kt │ │ │ │ │ │ │ ├── FabricUIManagerProviderImpl.kt │ │ │ │ │ │ │ ├── LongStreamingStats.kt │ │ │ │ │ │ │ ├── StateWrapperImpl.kt │ │ │ │ │ │ │ ├── SurfaceHandlerBinding.kt │ │ │ │ │ │ │ ├── SynchronousEvent.kt │ │ │ │ │ │ │ ├── events/ │ │ │ │ │ │ │ │ ├── EventBeatManager.kt │ │ │ │ │ │ │ │ ├── EventEmitterWrapper.kt │ │ │ │ │ │ │ │ ├── FabricEventEmitter.kt │ │ │ │ │ │ │ │ └── __docs__/ │ │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ │ └── interop/ │ │ │ │ │ │ │ │ └── InteropUIBlockListener.kt │ │ │ │ │ │ │ ├── interop/ │ │ │ │ │ │ │ │ ├── UIBlock.kt │ │ │ │ │ │ │ │ └── UIBlockViewResolver.kt │ │ │ │ │ │ │ └── mounting/ │ │ │ │ │ │ │ ├── LayoutMetricsConversions.kt │ │ │ │ │ │ │ ├── MountItemDispatcher.kt │ │ │ │ │ │ │ ├── MountingManager.kt │ │ │ │ │ │ │ ├── SurfaceMountingManager.kt │ │ │ │ │ │ │ └── mountitems/ │ │ │ │ │ │ │ ├── BatchMountItem.kt │ │ │ │ │ │ │ ├── DestroyUnmountedViewMountItem.kt │ │ │ │ │ │ │ ├── DispatchCommandMountItem.kt │ │ │ │ │ │ │ ├── DispatchIntCommandMountItem.kt │ │ │ │ │ │ │ ├── DispatchStringCommandMountItem.kt │ │ │ │ │ │ │ ├── FabricNameComponentMapping.kt │ │ │ │ │ │ │ ├── IntBufferBatchMountItem.kt │ │ │ │ │ │ │ ├── MountItem.kt │ │ │ │ │ │ │ ├── MountItemFactory.kt │ │ │ │ │ │ │ ├── PreAllocateViewMountItem.kt │ │ │ │ │ │ │ ├── PrefetchResourcesMountItem.kt │ │ │ │ │ │ │ ├── SendAccessibilityEventMountItem.kt │ │ │ │ │ │ │ └── SynchronousMountItem.kt │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── TaskInterface.kt │ │ │ │ │ │ │ ├── exceptionmanager/ │ │ │ │ │ │ │ │ └── ReactJsExceptionHandler.kt │ │ │ │ │ │ │ └── fabric/ │ │ │ │ │ │ │ └── ReactSurface.kt │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ ├── AndroidChoreographerProvider.kt │ │ │ │ │ │ │ ├── ChoreographerProvider.kt │ │ │ │ │ │ │ ├── SystraceSection.kt │ │ │ │ │ │ │ ├── featureflags/ │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlags.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsAccessor.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsCxxAccessor.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsCxxInterop.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsDefaults.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsForTests.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsLocalAccessor.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsOverrides_RNOSS_Canary_Android.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsOverrides_RNOSS_Experimental_Android.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsOverrides_RNOSS_Stable_Android.kt │ │ │ │ │ │ │ │ ├── ReactNativeFeatureFlagsProvider.kt │ │ │ │ │ │ │ │ ├── ReactNativeNewArchitectureFeatureFlags.kt │ │ │ │ │ │ │ │ ├── ReactNativeNewArchitectureFeatureFlagsDefaults.kt │ │ │ │ │ │ │ │ └── __docs__/ │ │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ │ ├── interop/ │ │ │ │ │ │ │ │ ├── InteropEvent.kt │ │ │ │ │ │ │ │ └── InteropEventEmitter.kt │ │ │ │ │ │ │ ├── tracing/ │ │ │ │ │ │ │ │ └── PerformanceTracer.kt │ │ │ │ │ │ │ └── turbomodule/ │ │ │ │ │ │ │ └── core/ │ │ │ │ │ │ │ ├── TurboModuleInteropUtils.kt │ │ │ │ │ │ │ ├── TurboModuleManager.kt │ │ │ │ │ │ │ ├── TurboModuleManagerDelegate.kt │ │ │ │ │ │ │ ├── TurboModulePerfLogger.kt │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ └── TurboModuleRegistry.kt │ │ │ │ │ │ ├── jstasks/ │ │ │ │ │ │ │ ├── HeadlessJsTaskConfig.kt │ │ │ │ │ │ │ ├── HeadlessJsTaskContext.kt │ │ │ │ │ │ │ ├── HeadlessJsTaskEventListener.kt │ │ │ │ │ │ │ ├── HeadlessJsTaskRetryPolicy.kt │ │ │ │ │ │ │ ├── LinearCountingRetryPolicy.kt │ │ │ │ │ │ │ └── NoRetryPolicy.kt │ │ │ │ │ │ ├── module/ │ │ │ │ │ │ │ ├── annotations/ │ │ │ │ │ │ │ │ ├── ReactModule.kt │ │ │ │ │ │ │ │ └── ReactModuleList.kt │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ ├── ReactModuleInfo.kt │ │ │ │ │ │ │ └── ReactModuleInfoProvider.kt │ │ │ │ │ │ ├── modules/ │ │ │ │ │ │ │ ├── accessibilityinfo/ │ │ │ │ │ │ │ │ └── AccessibilityInfoModule.kt │ │ │ │ │ │ │ ├── appearance/ │ │ │ │ │ │ │ │ └── AppearanceModule.kt │ │ │ │ │ │ │ ├── appregistry/ │ │ │ │ │ │ │ │ └── AppRegistry.kt │ │ │ │ │ │ │ ├── appstate/ │ │ │ │ │ │ │ │ └── AppStateModule.kt │ │ │ │ │ │ │ ├── blob/ │ │ │ │ │ │ │ │ ├── BlobCollector.kt │ │ │ │ │ │ │ │ ├── BlobModule.kt │ │ │ │ │ │ │ │ ├── BlobProvider.kt │ │ │ │ │ │ │ │ └── FileReaderModule.kt │ │ │ │ │ │ │ ├── camera/ │ │ │ │ │ │ │ │ └── ImageStoreManager.kt │ │ │ │ │ │ │ ├── clipboard/ │ │ │ │ │ │ │ │ └── ClipboardModule.kt │ │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ │ └── ModuleDataCleaner.kt │ │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ │ ├── DefaultHardwareBackBtnHandler.kt │ │ │ │ │ │ │ │ ├── DeviceEventManagerModule.kt │ │ │ │ │ │ │ │ ├── ExceptionsManagerModule.kt │ │ │ │ │ │ │ │ ├── HeadlessJsTaskSupportModule.kt │ │ │ │ │ │ │ │ ├── JSTimers.kt │ │ │ │ │ │ │ │ ├── JavaScriptTimerExecutor.kt │ │ │ │ │ │ │ │ ├── JavaTimerManager.kt │ │ │ │ │ │ │ │ ├── PermissionAwareActivity.kt │ │ │ │ │ │ │ │ ├── PermissionListener.kt │ │ │ │ │ │ │ │ ├── RCTNativeAppEventEmitter.kt │ │ │ │ │ │ │ │ ├── ReactChoreographer.kt │ │ │ │ │ │ │ │ └── TimingModule.kt │ │ │ │ │ │ │ ├── debug/ │ │ │ │ │ │ │ │ ├── DevMenuModule.kt │ │ │ │ │ │ │ │ ├── DevSettingsModule.kt │ │ │ │ │ │ │ │ ├── FpsDebugFrameCallback.kt │ │ │ │ │ │ │ │ ├── SourceCodeModule.kt │ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ │ └── DeveloperSettings.kt │ │ │ │ │ │ │ ├── deviceinfo/ │ │ │ │ │ │ │ │ └── DeviceInfoModule.kt │ │ │ │ │ │ │ ├── devloading/ │ │ │ │ │ │ │ │ └── DevLoadingModule.kt │ │ │ │ │ │ │ ├── devtoolsruntimesettings/ │ │ │ │ │ │ │ │ └── ReactDevToolsRuntimeSettingsModule.kt │ │ │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ │ │ ├── AlertFragment.kt │ │ │ │ │ │ │ │ ├── DialogModule.kt │ │ │ │ │ │ │ │ └── DialogTitle.kt │ │ │ │ │ │ │ ├── fresco/ │ │ │ │ │ │ │ │ ├── FrescoModule.kt │ │ │ │ │ │ │ │ ├── ImageCacheControl.kt │ │ │ │ │ │ │ │ ├── ReactNetworkImageRequest.kt │ │ │ │ │ │ │ │ ├── ReactOkHttpNetworkFetcher.kt │ │ │ │ │ │ │ │ └── SystraceRequestListener.kt │ │ │ │ │ │ │ ├── i18nmanager/ │ │ │ │ │ │ │ │ ├── I18nManagerModule.kt │ │ │ │ │ │ │ │ └── I18nUtil.kt │ │ │ │ │ │ │ ├── image/ │ │ │ │ │ │ │ │ └── ImageLoaderModule.kt │ │ │ │ │ │ │ ├── intent/ │ │ │ │ │ │ │ │ └── IntentModule.kt │ │ │ │ │ │ │ ├── network/ │ │ │ │ │ │ │ │ ├── CookieJarContainer.kt │ │ │ │ │ │ │ │ ├── CustomClientBuilder.kt │ │ │ │ │ │ │ │ ├── ForwardingCookieHandler.kt │ │ │ │ │ │ │ │ ├── HeaderUtil.kt │ │ │ │ │ │ │ │ ├── InspectorNetworkReporter.kt │ │ │ │ │ │ │ │ ├── NetworkEventUtil.kt │ │ │ │ │ │ │ │ ├── NetworkInterceptorCreator.kt │ │ │ │ │ │ │ │ ├── NetworkingModule.kt │ │ │ │ │ │ │ │ ├── OkHttpClientFactory.kt │ │ │ │ │ │ │ │ ├── OkHttpClientProvider.kt │ │ │ │ │ │ │ │ ├── ProgressListener.kt │ │ │ │ │ │ │ │ ├── ProgressRequestBody.kt │ │ │ │ │ │ │ │ ├── ProgressResponseBody.kt │ │ │ │ │ │ │ │ ├── ProgressiveStringDecoder.kt │ │ │ │ │ │ │ │ ├── ReactCookieJarContainer.kt │ │ │ │ │ │ │ │ └── RequestBodyUtil.kt │ │ │ │ │ │ │ ├── permissions/ │ │ │ │ │ │ │ │ └── PermissionsModule.kt │ │ │ │ │ │ │ ├── reactdevtoolssettings/ │ │ │ │ │ │ │ │ └── ReactDevToolsSettingsManagerModule.kt │ │ │ │ │ │ │ ├── share/ │ │ │ │ │ │ │ │ └── ShareModule.kt │ │ │ │ │ │ │ ├── sound/ │ │ │ │ │ │ │ │ └── SoundManagerModule.kt │ │ │ │ │ │ │ ├── statusbar/ │ │ │ │ │ │ │ │ └── StatusBarModule.kt │ │ │ │ │ │ │ ├── systeminfo/ │ │ │ │ │ │ │ │ ├── AndroidInfoHelpers.kt │ │ │ │ │ │ │ │ ├── AndroidInfoModule.kt │ │ │ │ │ │ │ │ └── ReactNativeVersion.kt │ │ │ │ │ │ │ ├── toast/ │ │ │ │ │ │ │ │ └── ToastModule.kt │ │ │ │ │ │ │ ├── vibration/ │ │ │ │ │ │ │ │ └── VibrationModule.kt │ │ │ │ │ │ │ └── websocket/ │ │ │ │ │ │ │ └── WebSocketModule.kt │ │ │ │ │ │ ├── packagerconnection/ │ │ │ │ │ │ │ ├── FileIoHandler.kt │ │ │ │ │ │ │ ├── JSPackagerClient.kt │ │ │ │ │ │ │ ├── NotificationOnlyHandler.kt │ │ │ │ │ │ │ ├── PackagerConnectionSettings.kt │ │ │ │ │ │ │ ├── ReconnectingWebSocket.kt │ │ │ │ │ │ │ ├── RequestHandler.kt │ │ │ │ │ │ │ ├── RequestOnlyHandler.kt │ │ │ │ │ │ │ └── Responder.kt │ │ │ │ │ │ ├── reactperflogger/ │ │ │ │ │ │ │ └── NativeModulePerfLogger.kt │ │ │ │ │ │ ├── runtime/ │ │ │ │ │ │ │ ├── BindingsInstaller.kt │ │ │ │ │ │ │ ├── BridgelessAtomicRef.kt │ │ │ │ │ │ │ ├── BridgelessCatalystInstance.kt │ │ │ │ │ │ │ ├── BridgelessReactContext.kt │ │ │ │ │ │ │ ├── CoreReactPackage.kt │ │ │ │ │ │ │ ├── JSRuntimeFactory.kt │ │ │ │ │ │ │ ├── JSTimerExecutor.kt │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── ReactHostDelegate.kt │ │ │ │ │ │ │ ├── ReactHostImpl.kt │ │ │ │ │ │ │ ├── ReactHostImplDevHelper.kt │ │ │ │ │ │ │ ├── ReactHostInspectorTarget.kt │ │ │ │ │ │ │ ├── ReactHostStateTracker.kt │ │ │ │ │ │ │ ├── ReactInstance.kt │ │ │ │ │ │ │ ├── ReactLifecycleStateManager.kt │ │ │ │ │ │ │ ├── ReactSurfaceImpl.kt │ │ │ │ │ │ │ ├── ReactSurfaceView.kt │ │ │ │ │ │ │ ├── cxxreactpackage/ │ │ │ │ │ │ │ │ └── CxxReactPackage.kt │ │ │ │ │ │ │ ├── hermes/ │ │ │ │ │ │ │ │ └── HermesInstance.kt │ │ │ │ │ │ │ └── internal/ │ │ │ │ │ │ │ └── bolts/ │ │ │ │ │ │ │ ├── Continuation.kt │ │ │ │ │ │ │ ├── ExecutorException.kt │ │ │ │ │ │ │ ├── Executors.kt │ │ │ │ │ │ │ ├── Task.kt │ │ │ │ │ │ │ └── TaskCompletionSource.kt │ │ │ │ │ │ ├── shell/ │ │ │ │ │ │ │ ├── MainPackageConfig.kt │ │ │ │ │ │ │ └── MainReactPackage.kt │ │ │ │ │ │ ├── soloader/ │ │ │ │ │ │ │ └── OpenSourceMergedSoMapping.kt │ │ │ │ │ │ ├── touch/ │ │ │ │ │ │ │ ├── JSResponderHandler.kt │ │ │ │ │ │ │ ├── OnInterceptTouchEventListener.kt │ │ │ │ │ │ │ ├── ReactHitSlopView.kt │ │ │ │ │ │ │ └── ReactInterceptingViewGroup.kt │ │ │ │ │ │ ├── turbomodule/ │ │ │ │ │ │ │ └── core/ │ │ │ │ │ │ │ ├── CallInvokerHolderImpl.kt │ │ │ │ │ │ │ ├── NativeMethodCallInvokerHolderImpl.kt │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── BindingsInstallerHolder.kt │ │ │ │ │ │ │ ├── CallInvokerHolder.kt │ │ │ │ │ │ │ ├── NativeMethodCallInvokerHolder.kt │ │ │ │ │ │ │ ├── TurboModule.kt │ │ │ │ │ │ │ └── TurboModuleWithJSIBindings.kt │ │ │ │ │ │ ├── uimanager/ │ │ │ │ │ │ │ ├── BackgroundStyleApplicator.kt │ │ │ │ │ │ │ ├── BaseViewManager.java │ │ │ │ │ │ │ ├── BaseViewManagerDelegate.kt │ │ │ │ │ │ │ ├── BlendModeHelper.kt │ │ │ │ │ │ │ ├── ComponentNameResolver.kt │ │ │ │ │ │ │ ├── ComponentNameResolverBinding.kt │ │ │ │ │ │ │ ├── DisplayMetricsHolder.kt │ │ │ │ │ │ │ ├── FilterHelper.kt │ │ │ │ │ │ │ ├── FloatUtil.kt │ │ │ │ │ │ │ ├── GuardedFrameCallback.kt │ │ │ │ │ │ │ ├── IViewGroupManager.kt │ │ │ │ │ │ │ ├── IViewManagerWithChildren.kt │ │ │ │ │ │ │ ├── IllegalViewOperationException.kt │ │ │ │ │ │ │ ├── JSKeyDispatcher.kt │ │ │ │ │ │ │ ├── JSPointerDispatcher.java │ │ │ │ │ │ │ ├── JSTouchDispatcher.kt │ │ │ │ │ │ │ ├── LayoutShadowNode.kt │ │ │ │ │ │ │ ├── LengthPercentage.kt │ │ │ │ │ │ │ ├── MatrixMathHelper.kt │ │ │ │ │ │ │ ├── MeasureSpecAssertions.kt │ │ │ │ │ │ │ ├── NativeViewHierarchyManager.java │ │ │ │ │ │ │ ├── NativeViewHierarchyOptimizer.kt │ │ │ │ │ │ │ ├── OnLayoutEvent.kt │ │ │ │ │ │ │ ├── PixelUtil.kt │ │ │ │ │ │ │ ├── PointerEvents.kt │ │ │ │ │ │ │ ├── ReactAccessibilityDelegate.kt │ │ │ │ │ │ │ ├── ReactAxOrderHelper.kt │ │ │ │ │ │ │ ├── ReactClippingProhibitedView.kt │ │ │ │ │ │ │ ├── ReactClippingViewGroup.kt │ │ │ │ │ │ │ ├── ReactClippingViewGroupHelper.kt │ │ │ │ │ │ │ ├── ReactCompoundView.kt │ │ │ │ │ │ │ ├── ReactCompoundViewGroup.kt │ │ │ │ │ │ │ ├── ReactOverflowView.kt │ │ │ │ │ │ │ ├── ReactOverflowViewWithInset.kt │ │ │ │ │ │ │ ├── ReactPointerEventsView.kt │ │ │ │ │ │ │ ├── ReactRoot.kt │ │ │ │ │ │ │ ├── ReactRootViewTagGenerator.kt │ │ │ │ │ │ │ ├── ReactShadowNode.java │ │ │ │ │ │ │ ├── ReactShadowNodeImpl.java │ │ │ │ │ │ │ ├── ReactStage.kt │ │ │ │ │ │ │ ├── ReactStylesDiffMap.kt │ │ │ │ │ │ │ ├── ReactZIndexedViewGroup.kt │ │ │ │ │ │ │ ├── ReferenceStateWrapper.kt │ │ │ │ │ │ │ ├── RootView.kt │ │ │ │ │ │ │ ├── RootViewManager.kt │ │ │ │ │ │ │ ├── RootViewUtil.kt │ │ │ │ │ │ │ ├── ShadowNodeRegistry.kt │ │ │ │ │ │ │ ├── SimpleViewManager.kt │ │ │ │ │ │ │ ├── Spacing.kt │ │ │ │ │ │ │ ├── StateWrapper.kt │ │ │ │ │ │ │ ├── ThemedReactContext.kt │ │ │ │ │ │ │ ├── TouchTargetHelper.kt │ │ │ │ │ │ │ ├── TransformHelper.kt │ │ │ │ │ │ │ ├── UIBlock.kt │ │ │ │ │ │ │ ├── UIConstantsProviderBinding.kt │ │ │ │ │ │ │ ├── UIImplementation.java │ │ │ │ │ │ │ ├── UIManagerHelper.kt │ │ │ │ │ │ │ ├── UIManagerModule.java │ │ │ │ │ │ │ ├── UIManagerModuleConstants.kt │ │ │ │ │ │ │ ├── UIManagerModuleConstantsHelper.kt │ │ │ │ │ │ │ ├── UIViewOperationQueue.java │ │ │ │ │ │ │ ├── ViewAtIndex.kt │ │ │ │ │ │ │ ├── ViewDefaults.kt │ │ │ │ │ │ │ ├── ViewGroupDrawingOrderHelper.kt │ │ │ │ │ │ │ ├── ViewGroupManager.kt │ │ │ │ │ │ │ ├── ViewManager.java │ │ │ │ │ │ │ ├── ViewManagerDelegate.kt │ │ │ │ │ │ │ ├── ViewManagerPropertyUpdater.kt │ │ │ │ │ │ │ ├── ViewManagerRegistry.kt │ │ │ │ │ │ │ ├── ViewManagerResolver.kt │ │ │ │ │ │ │ ├── ViewManagerWithGeneratedInterface.kt │ │ │ │ │ │ │ ├── ViewManagersPropertyCache.java │ │ │ │ │ │ │ ├── ViewProps.kt │ │ │ │ │ │ │ ├── annotations/ │ │ │ │ │ │ │ │ ├── ReactProp.kt │ │ │ │ │ │ │ │ ├── ReactPropGroup.kt │ │ │ │ │ │ │ │ └── ReactPropertyHolder.kt │ │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ │ ├── UIManagerType.kt │ │ │ │ │ │ │ │ └── ViewUtil.kt │ │ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ │ │ ├── BackgroundDrawable.kt │ │ │ │ │ │ │ │ ├── BackgroundImageDrawable.kt │ │ │ │ │ │ │ │ ├── BorderDrawable.kt │ │ │ │ │ │ │ │ ├── BoxShadowBorderRadius.kt │ │ │ │ │ │ │ │ ├── CompositeBackgroundDrawable.kt │ │ │ │ │ │ │ │ ├── InsetBoxShadowDrawable.kt │ │ │ │ │ │ │ │ ├── OutlineDrawable.kt │ │ │ │ │ │ │ │ └── OutsetBoxShadowDrawable.kt │ │ │ │ │ │ │ ├── events/ │ │ │ │ │ │ │ │ ├── BatchEventDispatchedListener.kt │ │ │ │ │ │ │ │ ├── BlackHoleEventDispatcher.kt │ │ │ │ │ │ │ │ ├── BlurEvent.kt │ │ │ │ │ │ │ │ ├── ContentSizeChangeEvent.kt │ │ │ │ │ │ │ │ ├── Event.kt │ │ │ │ │ │ │ │ ├── EventCategoryDef.kt │ │ │ │ │ │ │ │ ├── EventDispatcher.kt │ │ │ │ │ │ │ │ ├── EventDispatcherListener.kt │ │ │ │ │ │ │ │ ├── EventDispatcherProvider.kt │ │ │ │ │ │ │ │ ├── FabricEventDispatcher.kt │ │ │ │ │ │ │ │ ├── FocusEvent.kt │ │ │ │ │ │ │ │ ├── KeyDownEvent.kt │ │ │ │ │ │ │ │ ├── KeyEvent.kt │ │ │ │ │ │ │ │ ├── KeyUpEvent.kt │ │ │ │ │ │ │ │ ├── NativeGestureUtil.kt │ │ │ │ │ │ │ │ ├── PointerEvent.kt │ │ │ │ │ │ │ │ ├── PointerEventHelper.kt │ │ │ │ │ │ │ │ ├── RCTEventEmitter.kt │ │ │ │ │ │ │ │ ├── RCTModernEventEmitter.kt │ │ │ │ │ │ │ │ ├── SynchronousEventReceiver.kt │ │ │ │ │ │ │ │ ├── TouchEvent.kt │ │ │ │ │ │ │ │ ├── TouchEventCoalescingKeyHelper.kt │ │ │ │ │ │ │ │ ├── TouchEventType.kt │ │ │ │ │ │ │ │ └── TouchesHelper.kt │ │ │ │ │ │ │ ├── internal/ │ │ │ │ │ │ │ │ └── LegacyArchitectureShadowNodeLogger.kt │ │ │ │ │ │ │ ├── style/ │ │ │ │ │ │ │ │ ├── BackgroundImageLayer.kt │ │ │ │ │ │ │ │ ├── BackgroundPosition.kt │ │ │ │ │ │ │ │ ├── BackgroundRepeat.kt │ │ │ │ │ │ │ │ ├── BackgroundSize.kt │ │ │ │ │ │ │ │ ├── BorderColors.kt │ │ │ │ │ │ │ │ ├── BorderInsets.kt │ │ │ │ │ │ │ │ ├── BorderRadiusStyle.kt │ │ │ │ │ │ │ │ ├── BorderStyle.kt │ │ │ │ │ │ │ │ ├── BoxShadow.kt │ │ │ │ │ │ │ │ ├── ColorStop.kt │ │ │ │ │ │ │ │ ├── ComputedBorderRadius.kt │ │ │ │ │ │ │ │ ├── CornerRadii.kt │ │ │ │ │ │ │ │ ├── Gradient.kt │ │ │ │ │ │ │ │ ├── LinearGradient.kt │ │ │ │ │ │ │ │ ├── LogicalEdge.kt │ │ │ │ │ │ │ │ ├── OutlineStyle.kt │ │ │ │ │ │ │ │ ├── Overflow.kt │ │ │ │ │ │ │ │ └── RadialGradient.kt │ │ │ │ │ │ │ └── util/ │ │ │ │ │ │ │ └── ReactFindViewUtil.kt │ │ │ │ │ │ ├── util/ │ │ │ │ │ │ │ ├── AndroidVersion.kt │ │ │ │ │ │ │ ├── ExceptionDataHelper.kt │ │ │ │ │ │ │ ├── JSStackTrace.kt │ │ │ │ │ │ │ ├── RCTLog.kt │ │ │ │ │ │ │ └── RNLog.kt │ │ │ │ │ │ └── views/ │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ ├── ContextUtils.kt │ │ │ │ │ │ │ └── UiModeUtils.kt │ │ │ │ │ │ ├── debuggingoverlay/ │ │ │ │ │ │ │ ├── DebuggingOverlay.kt │ │ │ │ │ │ │ ├── DebuggingOverlayManager.kt │ │ │ │ │ │ │ └── TraceUpdate.kt │ │ │ │ │ │ ├── drawer/ │ │ │ │ │ │ │ ├── ReactDrawerLayout.kt │ │ │ │ │ │ │ ├── ReactDrawerLayoutManager.kt │ │ │ │ │ │ │ └── events/ │ │ │ │ │ │ │ ├── DrawerClosedEvent.kt │ │ │ │ │ │ │ ├── DrawerOpenedEvent.kt │ │ │ │ │ │ │ ├── DrawerSlideEvent.kt │ │ │ │ │ │ │ └── DrawerStateChangedEvent.kt │ │ │ │ │ │ ├── image/ │ │ │ │ │ │ │ ├── GlobalImageLoadListener.kt │ │ │ │ │ │ │ ├── ImageLoadEvent.kt │ │ │ │ │ │ │ ├── ImageResizeMethod.kt │ │ │ │ │ │ │ ├── ImageResizeMode.kt │ │ │ │ │ │ │ ├── MultiPostprocessor.kt │ │ │ │ │ │ │ ├── ReactCallerContextFactory.kt │ │ │ │ │ │ │ ├── ReactImageDownloadListener.kt │ │ │ │ │ │ │ ├── ReactImageManager.kt │ │ │ │ │ │ │ ├── ReactImageView.kt │ │ │ │ │ │ │ └── ScaleTypeStartInside.kt │ │ │ │ │ │ ├── imagehelper/ │ │ │ │ │ │ │ ├── ImageSource.kt │ │ │ │ │ │ │ ├── MultiSourceHelper.kt │ │ │ │ │ │ │ └── ResourceDrawableIdHelper.kt │ │ │ │ │ │ ├── modal/ │ │ │ │ │ │ │ ├── ReactModalHostManager.kt │ │ │ │ │ │ │ ├── ReactModalHostView.kt │ │ │ │ │ │ │ ├── RequestCloseEvent.kt │ │ │ │ │ │ │ └── ShowEvent.kt │ │ │ │ │ │ ├── progressbar/ │ │ │ │ │ │ │ ├── ProgressBarContainerView.kt │ │ │ │ │ │ │ └── ReactProgressBarViewManager.kt │ │ │ │ │ │ ├── safeareaview/ │ │ │ │ │ │ │ ├── ReactSafeAreaView.kt │ │ │ │ │ │ │ └── ReactSafeAreaViewManager.kt │ │ │ │ │ │ ├── scroll/ │ │ │ │ │ │ │ ├── FpsListener.kt │ │ │ │ │ │ │ ├── MaintainVisibleScrollPositionHelper.kt │ │ │ │ │ │ │ ├── OnScrollDispatchHelper.kt │ │ │ │ │ │ │ ├── ReactAccessibleScrollView.kt │ │ │ │ │ │ │ ├── ReactHorizontalScrollContainerLegacyView.kt │ │ │ │ │ │ │ ├── ReactHorizontalScrollContainerViewManager.kt │ │ │ │ │ │ │ ├── ReactHorizontalScrollView.java │ │ │ │ │ │ │ ├── ReactHorizontalScrollViewManager.kt │ │ │ │ │ │ │ ├── ReactNestedScrollView.java │ │ │ │ │ │ │ ├── ReactNestedScrollViewManager.kt │ │ │ │ │ │ │ ├── ReactScrollView.java │ │ │ │ │ │ │ ├── ReactScrollViewAccessibilityDelegate.kt │ │ │ │ │ │ │ ├── ReactScrollViewCommandHelper.kt │ │ │ │ │ │ │ ├── ReactScrollViewHelper.kt │ │ │ │ │ │ │ ├── ReactScrollViewManager.kt │ │ │ │ │ │ │ ├── ScrollEvent.kt │ │ │ │ │ │ │ ├── ScrollEventType.kt │ │ │ │ │ │ │ ├── VelocityHelper.kt │ │ │ │ │ │ │ ├── VirtualViewContainer.kt │ │ │ │ │ │ │ ├── VirtualViewContainerStateClassic.kt │ │ │ │ │ │ │ ├── VirtualViewContainerStateExperimental.kt │ │ │ │ │ │ │ └── generate-nested-scroll-view.js │ │ │ │ │ │ ├── swiperefresh/ │ │ │ │ │ │ │ ├── ReactSwipeRefreshLayout.kt │ │ │ │ │ │ │ ├── RefreshEvent.kt │ │ │ │ │ │ │ └── SwipeRefreshLayoutManager.kt │ │ │ │ │ │ ├── switchview/ │ │ │ │ │ │ │ ├── ReactSwitch.kt │ │ │ │ │ │ │ ├── ReactSwitchEvent.kt │ │ │ │ │ │ │ └── ReactSwitchManager.kt │ │ │ │ │ │ ├── text/ │ │ │ │ │ │ │ ├── DefaultStyleValuesUtil.kt │ │ │ │ │ │ │ ├── FontMetricsUtil.kt │ │ │ │ │ │ │ ├── PreparedLayout.kt │ │ │ │ │ │ │ ├── PreparedLayoutTextView.kt │ │ │ │ │ │ │ ├── PreparedLayoutTextViewManager.kt │ │ │ │ │ │ │ ├── ReactFontManager.kt │ │ │ │ │ │ │ ├── ReactTextUpdate.kt │ │ │ │ │ │ │ ├── ReactTextView.java │ │ │ │ │ │ │ ├── ReactTextViewAccessibilityDelegate.kt │ │ │ │ │ │ │ ├── ReactTextViewManager.kt │ │ │ │ │ │ │ ├── ReactTextViewManagerCallback.kt │ │ │ │ │ │ │ ├── ReactTypefaceUtils.kt │ │ │ │ │ │ │ ├── SelectableTextViewManager.kt │ │ │ │ │ │ │ ├── TextAttributeProps.kt │ │ │ │ │ │ │ ├── TextAttributes.kt │ │ │ │ │ │ │ ├── TextLayoutManager.kt │ │ │ │ │ │ │ ├── TextTransform.kt │ │ │ │ │ │ │ └── internal/ │ │ │ │ │ │ │ └── span/ │ │ │ │ │ │ │ ├── CustomLetterSpacingSpan.kt │ │ │ │ │ │ │ ├── CustomLineHeightSpan.kt │ │ │ │ │ │ │ ├── CustomStyleSpan.kt │ │ │ │ │ │ │ ├── DrawCommandSpan.kt │ │ │ │ │ │ │ ├── ReactAbsoluteSizeSpan.kt │ │ │ │ │ │ │ ├── ReactBackgroundColorSpan.kt │ │ │ │ │ │ │ ├── ReactClickableSpan.kt │ │ │ │ │ │ │ ├── ReactForegroundColorSpan.kt │ │ │ │ │ │ │ ├── ReactFragmentIndexSpan.kt │ │ │ │ │ │ │ ├── ReactLinkSpan.kt │ │ │ │ │ │ │ ├── ReactOpacitySpan.kt │ │ │ │ │ │ │ ├── ReactSpan.kt │ │ │ │ │ │ │ ├── ReactStrikethroughSpan.kt │ │ │ │ │ │ │ ├── ReactTagSpan.kt │ │ │ │ │ │ │ ├── ReactTextPaintHolderSpan.kt │ │ │ │ │ │ │ ├── ReactUnderlineSpan.kt │ │ │ │ │ │ │ ├── SetSpanOperation.kt │ │ │ │ │ │ │ ├── ShadowStyleSpan.kt │ │ │ │ │ │ │ └── TextInlineViewPlaceholderSpan.kt │ │ │ │ │ │ ├── textinput/ │ │ │ │ │ │ │ ├── ContentSizeWatcher.kt │ │ │ │ │ │ │ ├── ReactContentSizeChangedEvent.kt │ │ │ │ │ │ │ ├── ReactEditText.kt │ │ │ │ │ │ │ ├── ReactEditTextInputConnectionWrapper.kt │ │ │ │ │ │ │ ├── ReactTextChangedEvent.kt │ │ │ │ │ │ │ ├── ReactTextContentSizeWatcher.kt │ │ │ │ │ │ │ ├── ReactTextInputEndEditingEvent.kt │ │ │ │ │ │ │ ├── ReactTextInputKeyPressEvent.kt │ │ │ │ │ │ │ ├── ReactTextInputLocalData.kt │ │ │ │ │ │ │ ├── ReactTextInputManager.kt │ │ │ │ │ │ │ ├── ReactTextInputSelectionEvent.kt │ │ │ │ │ │ │ ├── ReactTextInputSubmitEditingEvent.kt │ │ │ │ │ │ │ ├── ReactTextInputTextWatcher.kt │ │ │ │ │ │ │ ├── ReactTextScrollWatcher.kt │ │ │ │ │ │ │ ├── ReactTextSelectionWatcher.kt │ │ │ │ │ │ │ ├── ScrollWatcher.kt │ │ │ │ │ │ │ └── SelectionWatcher.kt │ │ │ │ │ │ ├── unimplementedview/ │ │ │ │ │ │ │ ├── ReactUnimplementedView.kt │ │ │ │ │ │ │ └── ReactUnimplementedViewManager.kt │ │ │ │ │ │ ├── view/ │ │ │ │ │ │ │ ├── CanvasUtil.kt │ │ │ │ │ │ │ ├── ColorUtil.kt │ │ │ │ │ │ │ ├── ImportantForInteractionHelper.kt │ │ │ │ │ │ │ ├── MeasureUtil.kt │ │ │ │ │ │ │ ├── ReactClippingViewManager.kt │ │ │ │ │ │ │ ├── ReactDrawableHelper.kt │ │ │ │ │ │ │ ├── ReactViewGroup.kt │ │ │ │ │ │ │ ├── ReactViewManager.kt │ │ │ │ │ │ │ ├── ViewGroupClickEvent.kt │ │ │ │ │ │ │ └── WindowUtil.kt │ │ │ │ │ │ └── virtual/ │ │ │ │ │ │ ├── VirtualViewMode.kt │ │ │ │ │ │ ├── VirtualViewModeChangeEmitter.kt │ │ │ │ │ │ ├── VirtualViewModeChangeEvent.kt │ │ │ │ │ │ ├── VirtualViewRenderState.kt │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── ReactVirtualView.kt │ │ │ │ │ │ └── ReactVirtualViewManager.kt │ │ │ │ │ ├── soloader/ │ │ │ │ │ │ └── annotation/ │ │ │ │ │ │ └── SoLoaderLibrary.kt │ │ │ │ │ ├── systrace/ │ │ │ │ │ │ ├── Systrace.kt │ │ │ │ │ │ ├── SystraceMessage.kt │ │ │ │ │ │ └── TraceListener.kt │ │ │ │ │ └── yoga/ │ │ │ │ │ ├── LayoutPassReason.kt │ │ │ │ │ ├── YogaAlign.java │ │ │ │ │ ├── YogaBaselineFunction.kt │ │ │ │ │ ├── YogaBoxSizing.java │ │ │ │ │ ├── YogaConfig.kt │ │ │ │ │ ├── YogaConfigFactory.kt │ │ │ │ │ ├── YogaConfigJNIBase.kt │ │ │ │ │ ├── YogaConfigJNIFinalizer.kt │ │ │ │ │ ├── YogaConstants.kt │ │ │ │ │ ├── YogaDimension.java │ │ │ │ │ ├── YogaDirection.kt │ │ │ │ │ ├── YogaDisplay.java │ │ │ │ │ ├── YogaEdge.java │ │ │ │ │ ├── YogaErrata.java │ │ │ │ │ ├── YogaExperimentalFeature.java │ │ │ │ │ ├── YogaFlexDirection.java │ │ │ │ │ ├── YogaGridTrackType.java │ │ │ │ │ ├── YogaGutter.java │ │ │ │ │ ├── YogaJustify.java │ │ │ │ │ ├── YogaLayoutType.kt │ │ │ │ │ ├── YogaLogLevel.java │ │ │ │ │ ├── YogaLogger.kt │ │ │ │ │ ├── YogaMeasureFunction.kt │ │ │ │ │ ├── YogaMeasureMode.java │ │ │ │ │ ├── YogaMeasureOutput.kt │ │ │ │ │ ├── YogaNative.kt │ │ │ │ │ ├── YogaNode.kt │ │ │ │ │ ├── YogaNodeFactory.kt │ │ │ │ │ ├── YogaNodeJNIBase.java │ │ │ │ │ ├── YogaNodeJNIFinalizer.kt │ │ │ │ │ ├── YogaNodeType.java │ │ │ │ │ ├── YogaOverflow.java │ │ │ │ │ ├── YogaPositionType.java │ │ │ │ │ ├── YogaProps.kt │ │ │ │ │ ├── YogaStyleInputs.kt │ │ │ │ │ ├── YogaUnit.java │ │ │ │ │ ├── YogaValue.kt │ │ │ │ │ ├── YogaWrap.java │ │ │ │ │ └── annotations/ │ │ │ │ │ └── DoNotStrip.kt │ │ │ │ ├── jni/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── first-party/ │ │ │ │ │ │ ├── fbgloginit/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ ├── fb/ │ │ │ │ │ │ │ │ └── glog_init.h │ │ │ │ │ │ │ └── glog_init.cpp │ │ │ │ │ │ ├── hermes/ │ │ │ │ │ │ │ └── CMakeLists.txt │ │ │ │ │ │ ├── jni-hack/ │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── jni.h │ │ │ │ │ │ │ └── real/ │ │ │ │ │ │ │ └── jni.h │ │ │ │ │ │ ├── jni-lib-merge/ │ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ │ ├── SoMerging-utils.cmake │ │ │ │ │ │ │ ├── jni_lib_merge.c │ │ │ │ │ │ │ └── jni_lib_merge.h │ │ │ │ │ │ └── yogajni/ │ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ │ └── jni/ │ │ │ │ │ │ ├── LayoutContext.cpp │ │ │ │ │ │ ├── LayoutContext.h │ │ │ │ │ │ ├── ScopedGlobalRef.h │ │ │ │ │ │ ├── ScopedLocalRef.h │ │ │ │ │ │ ├── YGJNI.h │ │ │ │ │ │ ├── YGJNIVanilla.cpp │ │ │ │ │ │ ├── YGJNIVanilla.h │ │ │ │ │ │ ├── YGJTypesVanilla.h │ │ │ │ │ │ ├── YogaJniException.cpp │ │ │ │ │ │ ├── YogaJniException.h │ │ │ │ │ │ ├── common.cpp │ │ │ │ │ │ ├── common.h │ │ │ │ │ │ ├── corefunctions.cpp │ │ │ │ │ │ ├── corefunctions.h │ │ │ │ │ │ ├── macros.h │ │ │ │ │ │ └── yogajni.cpp │ │ │ │ │ ├── react/ │ │ │ │
Showing preview only (4,710K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (46668 symbols across 3058 files)
FILE: .github/workflow-scripts/__tests__/verifyPublishedPackage-test.js
constant REACT_NATIVE_PACKAGE (line 17) | const REACT_NATIVE_PACKAGE = 'react-native';
FILE: .github/workflow-scripts/checkBranchTarget.js
function checkBranchTarget (line 18) | function checkBranchTarget(baseRef) {
FILE: .github/workflow-scripts/checkForReproducer.js
constant NEEDS_REPRO_LABEL (line 10) | const NEEDS_REPRO_LABEL = 'Needs: Repro';
constant NEEDS_AUTHOR_FEEDBACK_LABEL (line 11) | const NEEDS_AUTHOR_FEEDBACK_LABEL = 'Needs: Author Feedback';
constant SKIP_ISSUES_OLDER_THAN (line 12) | const SKIP_ISSUES_OLDER_THAN = '2023-07-01T00:00:00Z';
function containsPattern (line 80) | function containsPattern(body, pattern) {
function hasMaintainerChangedLabel (line 86) | async function hasMaintainerChangedLabel(github, issueData, author) {
function isDateBefore (line 100) | function isDateBefore(firstDate, secondDate) {
FILE: .github/workflow-scripts/createDraftRelease.js
function _headers (line 13) | function _headers(token) {
function _extractChangelog (line 21) | function _extractChangelog(version) {
function _computeBody (line 43) | function _computeBody(changelog, version, hermesVersion, hermesV1Version) {
function _verifyTagExists (line 79) | async function _verifyTagExists(version) {
function _createDraftReleaseOnGitHub (line 88) | async function _createDraftReleaseOnGitHub(version, body, latest, token) {
function moveToChangelogBranch (line 121) | function moveToChangelogBranch(version) {
function createDraftRelease (line 126) | async function createDraftRelease(
FILE: .github/workflow-scripts/extractIssueOncalls.js
constant MSEC_IN_DAY (line 12) | const MSEC_IN_DAY = 1000 * 60 * 60 * 24;
function formatUsers (line 14) | function formatUsers(users) {
function extractUsersFromScheduleAndDate (line 18) | function extractUsersFromScheduleAndDate(schedule, userMap, date) {
function main (line 53) | function main() {
function extractIssueOncalls (line 59) | function extractIssueOncalls(schedule, userMap) {
FILE: .github/workflow-scripts/generateChangelog.js
function _computePreviousVersionFrom (line 12) | async function _computePreviousVersionFrom(version) {
function _generateChangelog (line 43) | function _generateChangelog(previousVersion, version, token) {
function _pushCommit (line 52) | function _pushCommit(version) {
function _createPR (line 60) | async function _createPR(version, token) {
function generateChangelog (line 98) | async function generateChangelog(version, token) {
FILE: .github/workflow-scripts/maestro-android.js
constant APP_PATH (line 31) | const APP_PATH = args[0];
constant APP_ID (line 32) | const APP_ID = args[1];
constant MAESTRO_FLOW (line 33) | const MAESTRO_FLOW = args[2];
constant IS_DEBUG (line 34) | const IS_DEBUG = args[3] === 'debug';
constant WORKING_DIRECTORY (line 35) | const WORKING_DIRECTORY = args[4];
constant MAX_ATTEMPTS (line 37) | const MAX_ATTEMPTS = 3;
function executeFlowWithRetries (line 39) | async function executeFlowWithRetries(flow, currentAttempt) {
function executeFlowInFolder (line 57) | async function executeFlowInFolder(flowFolder) {
function main (line 69) | async function main() {
function sleep (line 146) | function sleep(ms) {
FILE: .github/workflow-scripts/maestro-ios.js
constant APP_PATH (line 32) | const APP_PATH = args[0];
constant APP_ID (line 33) | const APP_ID = args[1];
constant MAESTRO_FLOW (line 34) | const MAESTRO_FLOW = args[2];
constant JS_ENGINE (line 35) | const JS_ENGINE = args[3];
constant IS_DEBUG (line 36) | const IS_DEBUG = args[4] === 'Debug';
constant WORKING_DIRECTORY (line 37) | const WORKING_DIRECTORY = args[5];
constant MAX_ATTEMPTS (line 39) | const MAX_ATTEMPTS = 5;
function launchSimulator (line 41) | function launchSimulator(simulatorName) {
function installAppOnSimulator (line 54) | function installAppOnSimulator(appPath) {
function extractSimulatorUDID (line 59) | function extractSimulatorUDID() {
function bringSimulatorInForeground (line 67) | function bringSimulatorInForeground() {
function sleep (line 72) | function sleep(ms) {
function launchAppOnSimulator (line 78) | async function launchAppOnSimulator(appId, udid, isDebug) {
function startVideoRecording (line 88) | function startVideoRecording(jsengine, currentAttempt) {
function stopVideoRecording (line 105) | function stopVideoRecording(recordingProcess) {
function executeTestsWithRetries (line 116) | function executeTestsWithRetries(
function main (line 154) | async function main() {
FILE: .github/workflow-scripts/publishTemplate.js
constant TAG_AS_LATEST_REGEX (line 13) | const TAG_AS_LATEST_REGEX = /#publish-packages-to-npm&latest/;
function isLatest (line 18) | function isLatest() {
constant MAX_RETRIES (line 57) | const MAX_RETRIES = 3 * 6;
constant TEMPLATE_NPM_PKG (line 58) | const TEMPLATE_NPM_PKG = '@react-native-community/template';
FILE: .github/workflow-scripts/selectLatestHermesV1Version.js
constant PATCH_FILE_PATH (line 12) | const PATCH_FILE_PATH = path.join(__dirname, 'hermes-v1.patch');
function getLatestHermesV1Version (line 14) | function getLatestHermesV1Version() {
function setHermesV1VersionInPatch (line 25) | function setHermesV1VersionInPatch(version) {
FILE: .github/workflow-scripts/utils.js
function getNpmPackageInfo (line 14) | async function getNpmPackageInfo(pkg, versionOrTag) {
function sleep (line 20) | async function sleep(seconds) {
function run (line 24) | function run(cmd) {
FILE: .github/workflow-scripts/validatePRBody.js
function validateChangelog (line 17) | function validateChangelog(commitMsg) {
function validatePRBody (line 31) | function validatePRBody(prBody) {
FILE: .github/workflow-scripts/verifyArtifactsAreOnMaven.js
constant SLEEP_S (line 12) | const SLEEP_S = 60;
constant MAX_RETRIES (line 13) | const MAX_RETRIES = 90;
constant ARTIFACT_URL (line 14) | const ARTIFACT_URL =
constant ARTIFACT_NAME (line 16) | const ARTIFACT_NAME = 'react-native-artifacts-';
function verifyArtifactsAreOnMaven (line 18) | async function verifyArtifactsAreOnMaven(version, retries = MAX_RETRIES) {
FILE: .github/workflow-scripts/verifyPublishedPackage.js
constant SLEEP_S (line 12) | const SLEEP_S = 10;
constant MAX_RETRIES (line 13) | const MAX_RETRIES = 3 * 6;
function verifyPublishedPackage (line 15) | async function verifyPublishedPackage(
FILE: .github/workflow-scripts/verifyReleaseOnNpm.js
constant REACT_NATIVE_NPM_PKG (line 12) | const REACT_NATIVE_NPM_PKG = 'react-native';
constant MAX_RETRIES (line 13) | const MAX_RETRIES = 3 * 6;
FILE: .github/workflow-scripts/verifyVersion.js
function isVersionSupported (line 55) | function isVersionSupported(actualVersion, latestVersion) {
function isVersionTooOld (line 71) | function isVersionTooOld(actualVersion, latestVersion) {
function getReactNativeVersionFromIssueBodyIfExists (line 78) | function getReactNativeVersionFromIssueBodyIfExists(issue) {
function reportedVersionIsNightly (line 86) | function reportedVersionIsNightly(unparsedVersionString, version) {
function parseVersionFromString (line 98) | function parseVersionFromString(version) {
FILE: flow-typed/environment/node.js
method toWeb (line 3747) | static toWeb(streamDuplex: stream$Duplex): {
FILE: flow-typed/npm/@octokit/rest_v22.x.x.js
class Octokit (line 13) | class Octokit {
FILE: flow-typed/npm/@react-native-community/cli-server-api_v19.x.x.js
function createDevServerMiddleware (line 20) | function createDevServerMiddleware(
FILE: flow-typed/npm/chrome-launcher_v0.15.x.js
class Launcher (line 43) | class Launcher {
FILE: flow-typed/npm/chromium-edge-launcher_v0.2.x.js
class Launcher (line 43) | class Launcher {
FILE: flow-typed/npm/commander_v12.x.x.js
class InvalidArgumentError (line 36) | class InvalidArgumentError mixins CommanderError {
FILE: flow-typed/npm/tinybench_v4.1.x.js
class Task (line 12) | class Task extends EventTarget {
FILE: flow-typed/npm/undici_v6.x.x.js
class Dispatcher (line 25) | class Dispatcher extends events$EventEmitter {
class Agent (line 29) | class Agent extends Dispatcher {
FILE: jest.config.js
constant PODS_LOCATIONS (line 17) | const PODS_LOCATIONS = [
FILE: jest/preprocessor.js
method process (line 61) | process(src /*: string */, file /*: string */) /*: {code: string, ...} */ {
FILE: packages/assets/__tests__/path-support-test.js
constant DRAWABLE_ASSET (line 13) | const DRAWABLE_ASSET = {
constant NON_DRAWABLE_ASSET (line 25) | const NON_DRAWABLE_ASSET = {
FILE: packages/assets/path-support.js
constant ANDROID_BASE_DENSITY (line 24) | const ANDROID_BASE_DENSITY = 160;
function getAndroidAssetSuffix (line 30) | function getAndroidAssetSuffix(scale /*: number */) /*: string */ {
function getAndroidResourceFolderName (line 56) | function getAndroidResourceFolderName(
function getAndroidResourceIdentifier (line 77) | function getAndroidResourceIdentifier(
function getBasePath (line 87) | function getBasePath(asset /*: PackagerAsset */) /*: string */ {
FILE: packages/assets/registry.js
function registerAsset (line 33) | function registerAsset(asset /*: PackagerAsset */) /*: number */ {
function getAssetByID (line 39) | function getAssetByID(assetId /*: number */) /*: PackagerAsset */ {
FILE: packages/babel-plugin-codegen/__test_fixtures__/failures.js
constant COMMANDS_EXPORTED_WITH_DIFFERENT_NAME (line 13) | const COMMANDS_EXPORTED_WITH_DIFFERENT_NAME = `
constant OTHER_COMMANDS_EXPORT (line 36) | const OTHER_COMMANDS_EXPORT = `
constant COMMANDS_EXPORTED_WITH_SHORTHAND (line 59) | const COMMANDS_EXPORTED_WITH_SHORTHAND = `
constant COMMANDS_WITH_COVERAGE_INVALID (line 84) | const COMMANDS_WITH_COVERAGE_INVALID = `
constant COMMANDS_WITH_COVERAGE_WRONG_FUNCTION (line 107) | const COMMANDS_WITH_COVERAGE_WRONG_FUNCTION = `
constant COMMANDS_WITH_COMPLEX_COVERAGE_INVALID (line 129) | const COMMANDS_WITH_COMPLEX_COVERAGE_INVALID = `
constant COMMANDS_WITH_COVERAGE_WRONG_NAME (line 156) | const COMMANDS_WITH_COVERAGE_WRONG_NAME = `
constant COMMANDS_WITH_COVERAGE_TYPE_CAST_INVALID (line 184) | const COMMANDS_WITH_COVERAGE_TYPE_CAST_INVALID = `
FILE: packages/babel-plugin-codegen/__test_fixtures__/fixtures.js
constant NOT_A_NATIVE_COMPONENT (line 12) | const NOT_A_NATIVE_COMPONENT = `
constant FULL_NATIVE_COMPONENT (line 18) | const FULL_NATIVE_COMPONENT = `
constant COMMANDS_WITH_SIMPLE_COVERAGE (line 63) | const COMMANDS_WITH_SIMPLE_COVERAGE = `
constant COMMANDS_WITH_COMPLEX_COVERAGE (line 90) | const COMMANDS_WITH_COMPLEX_COVERAGE = `
constant COMMANDS_WITH_TYPE_CAST_COVERAGE (line 121) | const COMMANDS_WITH_TYPE_CAST_COVERAGE = `
constant FULL_NATIVE_COMPONENT_WITH_TYPE_EXPORT (line 148) | const FULL_NATIVE_COMPONENT_WITH_TYPE_EXPORT = `
FILE: packages/babel-plugin-codegen/index.js
function parseFile (line 39) | function parseFile(filename /*: string */, code /*: string */) {
function generateViewConfig (line 53) | function generateViewConfig(filename /*: string */, code /*: string */) {
function isCodegenDeclaration (line 66) | function isCodegenDeclaration(declaration) {
function isCodegenNativeCommandsDeclaration (line 105) | function isCodegenNativeCommandsDeclaration(declaration) {
method pre (line 159) | pre(state) {
method ExportNamedDeclaration (line 167) | ExportNamedDeclaration(path) {
method ExportDefaultDeclaration (line 218) | ExportDefaultDeclaration(path, state) {
method exit (line 225) | exit(path) {
FILE: packages/community-cli-plugin/src/commands/bundle/__mocks__/sign.js
function sign (line 11) | function sign(source: string): string {
FILE: packages/community-cli-plugin/src/commands/bundle/assetCatalogIOS.js
function cleanAssetCatalog (line 17) | function cleanAssetCatalog(catalogDir: string): void {
function getImageSet (line 31) | function getImageSet(
function isCatalogAsset (line 50) | function isCatalogAsset(asset: AssetData): boolean {
function writeImageSet (line 54) | function writeImageSet(imageSet: ImageSet): void {
FILE: packages/community-cli-plugin/src/commands/bundle/assetPathUtils.js
function getAndroidAssetSuffix (line 22) | function getAndroidAssetSuffix(scale: number): string {
FILE: packages/community-cli-plugin/src/commands/bundle/createKeepFileAsync.js
function createKeepFileAsync (line 17) | async function createKeepFileAsync(
FILE: packages/community-cli-plugin/src/commands/bundle/filterPlatformAssetScales.js
function filterPlatformAssetScales (line 15) | function filterPlatformAssetScales(
FILE: packages/community-cli-plugin/src/commands/bundle/getAssetDestPathAndroid.js
function getAssetDestPathAndroid (line 16) | function getAssetDestPathAndroid(asset: PackagerAsset, scale: number): s...
FILE: packages/community-cli-plugin/src/commands/bundle/getAssetDestPathIOS.js
function getAssetDestPathIOS (line 15) | function getAssetDestPathIOS(asset: PackagerAsset, scale: number): string {
FILE: packages/community-cli-plugin/src/commands/bundle/saveAssets.js
method if (line 37) | if (assetsDest == null) {
method if (line 107) | if (error) {
method if (line 134) | if (err) {
FILE: packages/community-cli-plugin/src/commands/start/attachKeyHandlers.js
constant CTRL_C (line 19) | const CTRL_C = '\u0003';
constant CTRL_D (line 20) | const CTRL_D = '\u0004';
constant RELOAD_TIMEOUT (line 21) | const RELOAD_TIMEOUT = 500;
function attachKeyHandlers (line 42) | function attachKeyHandlers({
function setRawMode (line 127) | function setRawMode(enable: boolean) {
FILE: packages/community-cli-plugin/src/commands/start/runServer.js
function runServer (line 47) | async function runServer(
method if (line 171) | if (customLogReporterPath == null) {
method catch (line 179) | catch (e) {
FILE: packages/community-cli-plugin/src/utils/createDevMiddlewareLogger.js
function createDevMiddlewareLogger (line 19) | function createDevMiddlewareLogger(
function makeLogger (line 33) | function makeLogger(
FILE: packages/community-cli-plugin/src/utils/errors.js
class CLIError (line 15) | class CLIError extends Error {
method constructor (line 16) | constructor(msg: string, originalError?: Error | string) {
class UnknownProjectError (line 35) | class UnknownProjectError extends Error {}
FILE: packages/community-cli-plugin/src/utils/loadMetroConfig.js
function getCommunityCliDefaultConfig (line 33) | function getCommunityCliDefaultConfig(
function loadMetroConfig (line 84) | async function loadMetroConfig(
FILE: packages/community-cli-plugin/src/utils/version.js
function logIfUpdateAvailable (line 52) | async function logIfUpdateAvailable(
method if (line 173) | if (result.candidate != null && version.includes('-rc')) {
FILE: packages/core-cli-utils/src/private/app.js
constant FIRST (line 68) | const FIRST = 1,
constant SECOND (line 68) | const FIRST = 1,
constant THIRD (line 68) | const FIRST = 1,
constant FOURTH (line 68) | const FIRST = 1,
function getNodePackagePath (line 73) | function getNodePackagePath(packageName: string): string {
method if (line 119) | if (options.outputJsBundle === options.outputBundle) {
FILE: packages/core-cli-utils/src/private/apple.js
function checkPodfileInSyncWithManifest (line 54) | function checkPodfileInSyncWithManifest(
constant FIRST (line 71) | const FIRST = 1,
constant SECOND (line 71) | const FIRST = 1,
constant THIRD (line 71) | const FIRST = 1,
constant FOURTH (line 71) | const FIRST = 1,
constant FIFTH (line 71) | const FIRST = 1,
function getNodePackagePath (line 77) | function getNodePackagePath(packageName: string): string {
FILE: packages/core-cli-utils/src/private/clean.js
constant FIRST (line 20) | const FIRST = 1,
constant SECOND (line 20) | const FIRST = 1,
FILE: packages/core-cli-utils/src/private/utils.js
function isOnPath (line 40) | function isOnPath(dep: string, description: string): PathCheckResult {
method for (line 60) | for (const {found, dep, description} of deps) {
FILE: packages/debugger-frontend/dist/third-party/front_end/Tests.js
method constructor (line 62) | constructor(domAutomationController) {
method createKeyEvent (line 72) | static createKeyEvent(key) {
function hasSomethingScheduled (line 261) | function hasSomethingScheduled() {
function checkState (line 265) | function checkState() {
function onSchedule (line 275) | function onSchedule() {
function switchToElementsTab (line 343) | function switchToElementsTab() {
function switchToScriptsTab (line 349) | function switchToScriptsTab() {
function checkScriptsPanel (line 355) | function checkScriptsPanel() {
function checkNoDuplicates (line 361) | function checkNoDuplicates() {
function finishRequest (line 407) | function finishRequest(request, finishTime) {
function finishRequest (line 426) | function finishRequest(request, finishTime) {
function finishRequest (line 446) | function finishRequest(request, finishTime) {
function finishRequest (line 470) | function finishRequest(request, finishTime) {
function finishRequest (line 503) | function finishRequest(request, finishTime) {
function filteredMessages (line 532) | function filteredMessages() {
function firstConsoleMessageReceived (line 544) | function firstConsoleMessageReceived(event) {
function didClickLink (line 553) | function didClickLink() {
function didNavigateBack (line 559) | function didNavigateBack() {
function didCompleteNavigation (line 564) | function didCompleteNavigation() {
function didEvaluateInConsole (line 573) | function didEvaluateInConsole(resultText) {
function callback (line 586) | function callback() {
function callback (line 595) | function callback() {
function onConsoleMessage (line 606) | function onConsoleMessage(event) {
function dumpPageMetrics (line 649) | function dumpPageMetrics() {
function testOverrides (line 656) | async function testOverrides(params, metrics, callback) {
function step1 (line 670) | function step1() {
function step2 (line 676) | function step2() {
function step3 (line 682) | function step3() {
function step4 (line 688) | function step4() {
function finish (line 694) | function finish() {
function signalToShowAutofill (line 706) | function signalToShowAutofill() {
function selectTopAutoFill (line 713) | function selectTopAutoFill() {
function onResultOfInput (line 722) | function onResultOfInput(value) {
function onConsoleMessage (line 728) | function onConsoleMessage(event) {
function onKeyEventUnhandledKeyDown (line 756) | function onKeyEventUnhandledKeyDown(event) {
function onKeyEventUnhandledKeyUp (line 769) | function onKeyEventUnhandledKeyUp(event) {
function finishRequest (line 897) | function finishRequest(request) {
function testPreset (line 912) | function testPreset(preset, messages, next) {
function step1 (line 936) | function step1() {
function step2 (line 945) | function step2() {
function step3 (line 955) | function step3() {
function step4 (line 961) | function step4() {
function performActionsInPage (line 972) | function performActionsInPage(callback) {
function onTimelineDone (line 996) | function onTimelineDone() {
function loadFrameImages (line 1004) | function loadFrameImages(frames) {
function validateImagesAndCompleteTest (line 1025) | function validateImagesAndCompleteTest(images) {
function createSettings (line 1064) | function createSettings() {
function reset (line 1071) | function reset() {
function gotPreferences (line 1076) | function gotPreferences(prefs) {
function checkMessages (line 1102) | function checkMessages() {
function onExecutionContexts (line 1115) | function onExecutionContexts() {
function onResponseReceived (line 1137) | function onResponseReceived(event) {
function onConsoleMessage (line 1187) | function onConsoleMessage(event) {
function onConsoleMessage (line 1262) | function onConsoleMessage(event) {
function onRecordingStarted (line 1277) | function onRecordingStarted() {
function pageActionsDone (line 1281) | function pageActionsDone() {
function createIsolatedTarget (line 1367) | async function createIsolatedTarget(url, opt_browserContextIds) {
function disposeBrowserContext (line 1384) | async function disposeBrowserContext(browserContextId) {
function evalCode (line 1389) | async function evalCode(target, code) {
function takeLogs (line 1398) | async function takeLogs(target) {
function testCase (line 1446) | function testCase(url, headers, expectedStatus, expectedHeaders, expecte...
function onRequestUpdated (line 1501) | function onRequestUpdated(event) {
function filterOutService (line 1585) | function filterOutService(uiSourceCode) {
function innerEvaluate (line 1600) | function innerEvaluate() {
function showConsoleAndEvaluate (line 1611) | function showConsoleAndEvaluate() {
function waitForAllScripts (line 1660) | function waitForAllScripts() {
function checkTargets (line 1675) | function checkTargets() {
function checkForExecutionContexts (line 1689) | function checkForExecutionContexts() {
FILE: packages/debugger-frontend/dist/third-party/front_end/core/common/common.js
method toChar (line 1) | toChar(t){let e=this.#t.get(t);if(!e){if(this.#r>=65535)throw new Error(...
method fromChar (line 1) | fromChar(t){const e=this.#e.get(t);return void 0===e?null:e}
class g (line 1) | class g{values=[0,0,0];constructor(t){t&&(this.values=t)}}
method constructor (line 1) | constructor(t){t&&(this.values=t)}
class d (line 1) | class d{values=[[0,0,0],[0,0,0],[0,0,0]];constructor(t){t&&(this.values=...
method constructor (line 1) | constructor(t){t&&(this.values=t)}
method multiply (line 1) | multiply(t){const e=new g;for(let r=0;r<3;++r)e.values[r]=this.values[...
class p (line 1) | class p{g;a;b;c;d;e;f;constructor(t,e,r=0,s=0,n=0,i=0,a=0){this.g=t,this...
method constructor (line 1) | constructor(t,e,r=0,s=0,n=0,i=0,a=0){this.g=t,this.a=e,this.b=r,this.c...
method eval (line 1) | eval(t){const e=t<0?-1:1,r=t*e;return r<this.d?e*(this.c*r+this.f):e*(...
function b (line 1) | function b(t){return t*(Math.PI/180)}
function f (line 1) | function f(t,e,r,s){return[t.eval(e),t.eval(r),t.eval(s)]}
class A (line 1) | class A{static labToXyzd50(t,e,r){let s=(t+16)/116,n=s+e/500,i=s-r/200;f...
method labToXyzd50 (line 1) | static labToXyzd50(t,e,r){let s=(t+16)/116,n=s+e/500,i=s-r/200;functio...
method xyzd50ToLab (line 1) | static xyzd50ToLab(t,e,r){function s(t){return t<=.008856451679035631?...
method oklabToXyzd65 (line 1) | static oklabToXyzd65(t,e,r){const s=new g([t,e,r]),n=w.multiply(s);n.v...
method xyzd65ToOklab (line 1) | static xyzd65ToOklab(t,e,r){const s=new g([t,e,r]),n=x.multiply(s);n.v...
method lchToLab (line 1) | static lchToLab(t,e,r){return void 0===r?[t,0,0]:[t,e*Math.cos(b(r)),e...
method labToLch (line 1) | static labToLch(t,e,r){return[t,Math.sqrt(e*e+r*r),(s=Math.atan2(r,e),...
method displayP3ToXyzd50 (line 1) | static displayP3ToXyzd50(t,e,r){const[s,n,i]=f(m.sRGB,t,e,r),a=new g([...
method xyzd50ToDisplayP3 (line 1) | static xyzd50ToDisplayP3(t,e,r){const s=new g([t,e,r]),n=y.displayP3_I...
method proPhotoToXyzd50 (line 1) | static proPhotoToXyzd50(t,e,r){const[s,n,i]=f(m.proPhotoRGB,t,e,r),a=n...
method xyzd50ToProPhoto (line 1) | static xyzd50ToProPhoto(t,e,r){const s=new g([t,e,r]),n=R.multiply(s);...
method adobeRGBToXyzd50 (line 1) | static adobeRGBToXyzd50(t,e,r){const[s,n,i]=f(m.k2Dot2,t,e,r),a=new g(...
method xyzd50ToAdobeRGB (line 1) | static xyzd50ToAdobeRGB(t,e,r){const s=new g([t,e,r]),n=y.adobeRGB_INV...
method rec2020ToXyzd50 (line 1) | static rec2020ToXyzd50(t,e,r){const[s,n,i]=f(m.rec2020,t,e,r),a=new g(...
method xyzd50ToRec2020 (line 1) | static xyzd50ToRec2020(t,e,r){const s=new g([t,e,r]),n=y.rec2020_INVER...
method xyzd50ToD65 (line 1) | static xyzd50ToD65(t,e,r){const s=new g([t,e,r]);return I.multiply(s)....
method xyzd65ToD50 (line 1) | static xyzd65ToD50(t,e,r){const s=new g([t,e,r]);return z.multiply(s)....
method xyzd50TosRGBLinear (line 1) | static xyzd50TosRGBLinear(t,e,r){const s=new g([t,e,r]);return y.sRGB_...
method srgbLinearToXyzd50 (line 1) | static srgbLinearToXyzd50(t,e,r){const s=new g([t,e,r]);return y.sRGB....
method srgbToXyzd50 (line 1) | static srgbToXyzd50(t,e,r){const[s,n,i]=f(m.sRGB,t,e,r),a=new g([s,n,i...
method xyzd50ToSrgb (line 1) | static xyzd50ToSrgb(t,e,r){const s=new g([t,e,r]),n=y.sRGB_INVERSE.mul...
method oklchToXyzd50 (line 1) | static oklchToXyzd50(t,e,r){const[s,n,i]=A.lchToLab(t,e,r),[a,o,l]=A.o...
method xyzd50ToOklch (line 1) | static xyzd50ToOklch(t,e,r){const[s,n,i]=A.xyzd50ToD65(t,e,r),[a,o,l]=...
function E (line 1) | function E(t,e){const r=t[3];return[(1-r)*e[0]+r*t[0],(1-r)*e[1]+r*t[1],...
function k (line 1) | function k([t,e,r]){const s=Math.max(t,e,r),n=Math.min(t,e,r),i=s-n;let ...
function L (line 1) | function L(t){const[e,r,s]=C([...t,void 0]);return[e,r,s]}
function C (line 1) | function C([t,e,r,s]){const n=Math.max(t,e,r),i=Math.min(t,e,r),a=n-i,o=...
function _ (line 1) | function _(t){const[e,r,s]=N([...t,void 0]);return[e,r,s]}
function N (line 1) | function N([t,e,r,s]){const n=k([t,e,r]),i=Math.max(t,e,r);return[n,Math...
function O (line 1) | function O([t,e,r]){return.2126*(t<=.04045?t/12.92:Math.pow((t+.055)/1.0...
function B (line 1) | function B([t,e,r]){return.2126729*Math.pow(t,2.4)+.7151522*Math.pow(e,2...
function G (line 1) | function G(t,e){return W(B(E(t,e)),B(e))}
function M (line 1) | function M(t){return t>.022?t:t+Math.pow(.022-t,1.414)}
function W (line 1) | function W(t,e){if(t=M(t),e=M(e),Math.abs(t-e)<5e-4)return 0;let r=0;ret...
function X (line 1) | function X(t,e,r){function s(){return r?Math.pow(Math.abs(Math.pow(t,.65...
function F (line 1) | function F(t,e){const r=72*parseFloat(t.replace("px",""))/96;return(isNa...
function H (line 1) | function H(t){return(t%360+360)%360}
function q (line 1) | function q(t){const e=t.replace(/(deg|g?rad|turn)$/,"");if(isNaN(e)||t.m...
function Y (line 1) | function Y(t){switch(t){case"srgb":return"srgb";case"srgb-linear":return...
function Z (line 1) | function Z(t,e){const r=Math.sign(t),s=Math.abs(t),[n,i]=e;return r*(s*(...
function K (line 1) | function K(t,{min:e,max:r}){return null===t||(void 0!==e&&(t=Math.max(t,...
function J (line 1) | function J(t,e){if(!t.endsWith("%"))return null;const r=parseFloat(t.sub...
function Q (line 1) | function Q(t){const e=parseFloat(t);return isNaN(e)?null:e}
function tt (line 1) | function tt(t){return void 0===t?null:K(J(t,[0,1])??Q(t),{min:0,max:1})}
function et (line 1) | function et(t,e=[0,1]){if(isNaN(t.replace("%","")))return null;const r=p...
function rt (line 1) | function rt(t){const e=et(t);return null===e?null:-1!==t.indexOf("%")?e:...
function st (line 1) | function st(t){const e=t.replace(/(deg|g?rad|turn)$/,"");if(isNaN(e)||t....
function nt (line 1) | function nt(t){if(t.indexOf("%")!==t.length-1||isNaN(t.replace("%","")))...
function it (line 1) | function it(t){const e=t[0];let r=t[1];const s=t[2];function n(t,e,r){re...
function at (line 1) | function at(t){return it(function(t){const e=t[0];let r=t[1];const s=t[2...
function ot (line 1) | function ot(t,e,r){function s(){return r?(t+.05)*e-.05:(t+.05)/e-.05}let...
function lt (line 1) | function lt(t,e,r,s,n){let i=t[r],a=1,o=n(t)-s,l=Math.sign(o);for(let e=...
function ht (line 1) | function ht(t,e,r=.01){if(Array.isArray(t)&&Array.isArray(e)){if(t.lengt...
function ct (line 1) | function ct(t,e,r=.01){return t-e<=r}
class ut (line 1) | class ut{l;a;b;alpha;#s;#n;static#i={hex:t=>new vt(t.#a(!1),"hex"),hexa:...
method #o (line 1) | #o(){return A.labToXyzd50(this.l,this.a,this.b)}
method #a (line 1) | #a(t=!0){const e=A.xyzd50ToSrgb(...this.#o());return t?[...e,this.alph...
method constructor (line 1) | constructor(t,e,r,s,n){this.#n=[t,e,r],this.l=K(t,{min:0,max:100}),(ht...
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return ut.#i[t](this)}
method asLegacyColor (line 1) | asLegacyColor(){return this.as("rgba")}
method equal (line 1) | equal(t){const e=t.as("lab");return ht(e.l,this.l,1)&&ht(e.a,this.a)&&...
method format (line 1) | format(){return"lab"}
method setAlpha (line 1) | setAlpha(t){return new ut(this.l,this.a,this.b,t,void 0)}
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(this.l,this.a,this.b)}
method #l (line 1) | #l(t,r,s){const n=null===this.alpha||ht(this.alpha,1)?"":` / ${e.Strin...
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(...this...
method isGamutClipped (line 1) | isGamutClipped(){return!1}
method fromSpec (line 1) | static fromSpec(t,e){const r=J(t[0],[0,100])??Q(t[0]);if(null===r)retu...
class gt (line 1) | class gt{#n;l;c;h;alpha;#s;static#i={hex:t=>new vt(t.#a(!1),"hex"),hexa:...
method #o (line 1) | #o(){return A.labToXyzd50(...A.lchToLab(this.l,this.c,this.h))}
method #a (line 1) | #a(t=!0){const e=A.xyzd50ToSrgb(...this.#o());return t?[...e,this.alph...
method constructor (line 1) | constructor(t,e,r,s,n){this.#n=[t,e,r],this.l=K(t,{min:0,max:100}),e=h...
method asLegacyColor (line 1) | asLegacyColor(){return this.as("rgba")}
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return gt.#i[t](this)}
method equal (line 1) | equal(t){const e=t.as("lch");return ht(e.l,this.l,1)&&ht(e.c,this.c)&&...
method format (line 1) | format(){return"lch"}
method setAlpha (line 1) | setAlpha(t){return new gt(this.l,this.c,this.h,t)}
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(this.l,this.c,this.h)}
method #l (line 1) | #l(t,r,s){const n=null===this.alpha||ht(this.alpha,1)?"":` / ${e.Strin...
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(...this...
method isGamutClipped (line 1) | isGamutClipped(){return!1}
method isHuePowerless (line 1) | isHuePowerless(){return ht(this.c,0)}
method fromSpec (line 1) | static fromSpec(t,e){const r=J(t[0],[0,100])??Q(t[0]);if(null===r)retu...
class dt (line 1) | class dt{#n;l;a;b;alpha;#s;static#i={hex:t=>new vt(t.#a(!1),"hex"),hexa:...
method #o (line 1) | #o(){return A.xyzd65ToD50(...A.oklabToXyzd65(this.l,this.a,this.b))}
method #a (line 1) | #a(t=!0){const e=A.xyzd50ToSrgb(...this.#o());return t?[...e,this.alph...
method constructor (line 1) | constructor(t,e,r,s,n){this.#n=[t,e,r],this.l=K(t,{min:0,max:1}),(ht(t...
method asLegacyColor (line 1) | asLegacyColor(){return this.as("rgba")}
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return dt.#i[t](this)}
method equal (line 1) | equal(t){const e=t.as("oklab");return ht(e.l,this.l)&&ht(e.a,this.a)&&...
method format (line 1) | format(){return"oklab"}
method setAlpha (line 1) | setAlpha(t){return new dt(this.l,this.a,this.b,t)}
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(this.l,this.a,this.b)}
method #l (line 1) | #l(t,r,s){const n=null===this.alpha||ht(this.alpha,1)?"":` / ${e.Strin...
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(...this...
method isGamutClipped (line 1) | isGamutClipped(){return!1}
method fromSpec (line 1) | static fromSpec(t,e){const r=J(t[0],[0,1])??Q(t[0]);if(null===r)return...
class pt (line 1) | class pt{#n;l;c;h;alpha;#s;static#i={hex:t=>new vt(t.#a(!1),"hex"),hexa:...
method #o (line 1) | #o(){return A.oklchToXyzd50(this.l,this.c,this.h)}
method #a (line 1) | #a(t=!0){const e=A.xyzd50ToSrgb(...this.#o());return t?[...e,this.alph...
method constructor (line 1) | constructor(t,e,r,s,n){this.#n=[t,e,r],this.l=K(t,{min:0,max:1}),e=ht(...
method asLegacyColor (line 1) | asLegacyColor(){return this.as("rgba")}
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return pt.#i[t](this)}
method equal (line 1) | equal(t){const e=t.as("oklch");return ht(e.l,this.l)&&ht(e.c,this.c)&&...
method format (line 1) | format(){return"oklch"}
method setAlpha (line 1) | setAlpha(t){return new pt(this.l,this.c,this.h,t)}
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(this.l,this.c,this.h)}
method #l (line 1) | #l(t,r,s){const n=null===this.alpha||ht(this.alpha,1)?"":` / ${e.Strin...
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(...this...
method isGamutClipped (line 1) | isGamutClipped(){return!1}
method fromSpec (line 1) | static fromSpec(t,e){const r=J(t[0],[0,1])??Q(t[0]);if(null===r)return...
class mt (line 1) | class mt{#n;p0;p1;p2;alpha;colorSpace;#s;static#i={hex:t=>new vt(t.#a(!1...
method #o (line 1) | #o(){const[t,e,r]=this.#n;switch(this.colorSpace){case"srgb":return A....
method #a (line 1) | #a(t=!0){const[e,r,s]=this.#n,n="srgb"===this.colorSpace?[e,r,s]:[...A...
method constructor (line 1) | constructor(t,e,r,s,n,i){this.#n=[e,r,s],this.colorSpace=t,this.#s=i,"...
method asLegacyColor (line 1) | asLegacyColor(){return this.as("rgba")}
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return this.colorSpace===t?this:mt.#i[t](this)}
method equal (line 1) | equal(t){const e=t.as(this.colorSpace);return ht(this.p0,e.p0)&&ht(thi...
method format (line 1) | format(){return this.colorSpace}
method setAlpha (line 1) | setAlpha(t){return new mt(this.colorSpace,this.p0,this.p1,this.p2,t)}
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(this.p0,this.p1,thi...
method #l (line 1) | #l(t,r,s){const n=null===this.alpha||ht(this.alpha,1)?"":` / ${e.Strin...
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(...this...
method isGamutClipped (line 1) | isGamutClipped(){return"xyz-d50"!==this.colorSpace&&"xyz-d65"!==this.c...
method fromSpec (line 1) | static fromSpec(t,e){const[r,s]=e.split("/",2),n=r.trim().split(/\s+/)...
class yt (line 1) | class yt{h;s;l;alpha;#n;#s;static#i={hex:t=>new vt(t.#a(!1),"hex"),hexa:...
method #a (line 1) | #a(t=!0){const e=it([this.h,this.s,this.l,0]);return t?[e[0],e[1],e[2]...
method #o (line 1) | #o(){const t=this.#a(!1);return A.srgbToXyzd50(t[0],t[1],t[2])}
method constructor (line 1) | constructor(t,e,r,s,n){this.#n=[t,e,r],this.l=K(r,{min:0,max:1}),e=ht(...
method equal (line 1) | equal(t){const e=t.as("hsl");return ht(this.h,e.h)&&ht(this.s,e.s)&&ht...
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(this.h,this.s,this.l)}
method #l (line 1) | #l(t,r,s){const n=e.StringUtilities.sprintf("hsl(%sdeg %s% %s%",e.Stri...
method setAlpha (line 1) | setAlpha(t){return new yt(this.h,this.s,this.l,t)}
method format (line 1) | format(){return null===this.alpha||1===this.alpha?"hsl":"hsla"}
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return t===this.format()?this:yt.#i[t](this)}
method asLegacyColor (line 1) | asLegacyColor(){return this.as("rgba")}
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(...this...
method isGamutClipped (line 1) | isGamutClipped(){return!ct(this.#n[1],1)||!ct(0,this.#n[1])}
method fromSpec (line 1) | static fromSpec(t,e){const r=st(t[0]);if(null===r)return null;const s=...
method hsva (line 1) | hsva(){const t=this.s*(this.l<.5?this.l:1-this.l);return[this.h,0!==t?...
method canonicalHSLA (line 1) | canonicalHSLA(){return[Math.round(360*this.h),Math.round(100*this.s),M...
class bt (line 1) | class bt{h;w;b;alpha;#n;#s;static#i={hex:t=>new vt(t.#a(!1),"hex"),hexa:...
method #a (line 1) | #a(t=!0){const e=function(t){const e=t[0],r=t[1],s=t[2],n=r/(r+s);let ...
method #o (line 1) | #o(){const t=this.#a(!1);return A.srgbToXyzd50(t[0],t[1],t[2])}
method constructor (line 1) | constructor(t,e,r,s,n){if(this.#n=[t,e,r],this.w=K(e,{min:0,max:1}),th...
method equal (line 1) | equal(t){const e=t.as("hwb");return ht(this.h,e.h)&&ht(this.w,e.w)&&ht...
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(this.h,this.w,this.b)}
method #l (line 1) | #l(t,r,s){const n=e.StringUtilities.sprintf("hwb(%sdeg %s% %s%",e.Stri...
method setAlpha (line 1) | setAlpha(t){return new bt(this.h,this.w,this.b,t,this.#s)}
method format (line 1) | format(){return null===this.alpha||ht(this.alpha,1)?"hwb":"hwba"}
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return t===this.format()?this:bt.#i[t](this)}
method asLegacyColor (line 1) | asLegacyColor(){return this.as("rgba")}
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method canonicalHWBA (line 1) | canonicalHWBA(){return[Math.round(360*this.h),Math.round(100*this.w),M...
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(...this...
method isGamutClipped (line 1) | isGamutClipped(){return!(ct(this.#n[1],1)&&ct(0,this.#n[1])&&ct(this.#...
method fromSpec (line 1) | static fromSpec(t,e){const r=st(t[0]);if(null===r)return null;const s=...
function ft (line 1) | function ft(t){return Math.round(255*t)}
class wt (line 1) | class wt{color;constructor(t){this.color=t}get alpha(){return this.color...
method constructor (line 1) | constructor(t){this.color=t}
method alpha (line 1) | get alpha(){return this.color.alpha}
method rgba (line 1) | rgba(){return this.color.rgba()}
method equal (line 1) | equal(t){return this.color.equal(t)}
method setAlpha (line 1) | setAlpha(t){return this.color.setAlpha(t)}
method format (line 1) | format(){return 1!==(this.alpha??1)?"hexa":"hex"}
method as (line 1) | as(t){return this.color.as(t)}
method is (line 1) | is(t){return this.color.is(t)}
method asLegacyColor (line 1) | asLegacyColor(){return this.color.asLegacyColor()}
method getAuthoredText (line 1) | getAuthoredText(){return this.color.getAuthoredText()}
method getRawParameters (line 1) | getRawParameters(){return this.color.getRawParameters()}
method isGamutClipped (line 1) | isGamutClipped(){return this.color.isGamutClipped()}
method asString (line 1) | asString(t){if(t)return this.as(t).asString();const[e,r,s]=this.color....
method getAsRawString (line 1) | getAsRawString(t){if(t)return this.as(t).getAsRawString();const[e,r,s]...
class St (line 1) | class St extends wt{setAlpha(t){return new St(this.color.setAlpha(t))}as...
method setAlpha (line 1) | setAlpha(t){return new St(this.color.setAlpha(t))}
method asString (line 1) | asString(t){return t&&t!==this.format()?super.as(t).asString():super.a...
method stringify (line 1) | stringify(t,r,s){function n(t){return(Math.round(255*t)/17).toString(1...
class xt (line 1) | class xt extends wt{nickname;constructor(t,e){super(e),this.nickname=t}s...
method constructor (line 1) | constructor(t,e){super(e),this.nickname=t}
method fromName (line 1) | static fromName(t,e){const r=t.toLowerCase(),s=Rt.get(r);return void 0...
method stringify (line 1) | stringify(){return this.nickname}
method getAsRawString (line 1) | getAsRawString(t){return this.color.getAsRawString(t)}
class vt (line 1) | class vt{#n;#h;#s;#c;static#i={hex:t=>new vt(t.#h,"hex"),hexa:t=>new vt(...
method #o (line 1) | #o(){const[t,e,r]=this.#h;return A.srgbToXyzd50(t,e,r)}
method alpha (line 1) | get alpha(){switch(this.format()){case"hexa":case"rgba":return this.#h...
method asLegacyColor (line 1) | asLegacyColor(){return this}
method nickname (line 1) | nickname(){const t=zt.get(String(this.canonicalRGBA()));return t?new x...
method shortHex (line 1) | shortHex(){for(let t=0;t<4;++t){if(Math.round(255*this.#h[t])%17)retur...
method constructor (line 1) | constructor(t,e,r){this.#s=r||null,this.#c=e,this.#n=[t[0],t[1],t[2]],...
method fromHex (line 1) | static fromHex(t,e){const r=4===(t=t.toLowerCase()).length||8===t.leng...
method fromRGBAFunction (line 1) | static fromRGBAFunction(t,r,s,n,i){const a=[rt(t),rt(r),rt(s),n?(o=n,e...
method fromRGBA (line 1) | static fromRGBA(t,e){return new vt([t[0]/255,t[1]/255,t[2]/255,t[3]],"...
method fromHSVA (line 1) | static fromHSVA(t){const e=at(t);return new vt(e,"rgba")}
method is (line 1) | is(t){return t===this.format()}
method as (line 1) | as(t){return t===this.format()?this:vt.#i[t](this)}
method format (line 1) | format(){return this.#c}
method hasAlpha (line 1) | hasAlpha(){return 1!==this.#h[3]}
method detectHEXFormat (line 1) | detectHEXFormat(){return this.hasAlpha()?"hexa":"hex"}
method asString (line 1) | asString(t){return t?this.as(t).asString():this.#l(t,this.#h[0],this.#...
method #l (line 1) | #l(t,r,s,n){function i(t){const e=Math.round(255*t).toString(16);retur...
method getAuthoredText (line 1) | getAuthoredText(){return this.#s??null}
method getRawParameters (line 1) | getRawParameters(){return[...this.#n]}
method getAsRawString (line 1) | getAsRawString(t){return t?this.as(t).getAsRawString():this.#l(t,...th...
method isGamutClipped (line 1) | isGamutClipped(){return!ht(this.#n.map(ft),[this.#h[0],this.#h[1],this...
method rgba (line 1) | rgba(){return[...this.#h]}
method canonicalRGBA (line 1) | canonicalRGBA(){const t=new Array(4);for(let e=0;e<3;++e)t[e]=Math.rou...
method toProtocolRGBA (line 1) | toProtocolRGBA(){const t=this.canonicalRGBA(),e={r:t[0],g:t[1],b:t[2],...
method invert (line 1) | invert(){const t=[0,0,0,0];return t[0]=1-this.#h[0],t[1]=1-this.#h[1],...
method grayscale (line 1) | grayscale(){const[t,e,r]=this.#h,s=.299*t+.587*e+.114*r;return new vt(...
method setAlpha (line 1) | setAlpha(t){const e=[...this.#h];return e[3]=t,new vt(e,"rgba")}
method blendWith (line 1) | blendWith(t){const e=E(t.#h,this.#h);return new vt(e,"rgba")}
method blendWithAlpha (line 1) | blendWithAlpha(t){const e=[...this.#h];return e[3]*=t,new vt(e,"rgba")}
method setFormat (line 1) | setFormat(t){this.#c=t}
method equal (line 1) | equal(t){const e=t.as(this.#c);return ht(ft(this.#h[0]),ft(e.#h[0]),1)...
method constructor (line 1) | constructor(t,e,r,s){this.#u=t||{min:0,max:360,count:void 0},this.#g=e||...
method setColorForID (line 1) | setColorForID(t,e){this.#m.set(t,e)}
method colorForID (line 1) | colorForID(t){let e=this.#m.get(t);return e||(e=this.generateColorForID(...
method generateColorForID (line 1) | generateColorForID(t){const r=e.StringUtilities.hashCode(t),s=this.index...
method indexToValueInSpace (line 1) | indexToValueInSpace(t,e){if("number"==typeof e)return e;const r=e.count|...
class Lt (line 1) | class Lt{listeners;addEventListener(t,e,r){this.listeners||(this.listene...
method addEventListener (line 1) | addEventListener(t,e,r){this.listeners||(this.listeners=new Map);let s...
method once (line 1) | once(t){return new Promise((e=>{const r=this.addEventListener(t,(s=>{t...
method removeEventListener (line 1) | removeEventListener(t,e,r){const s=this.listeners?.get(t);if(s){for(co...
method hasEventListeners (line 1) | hasEventListeners(t){return Boolean(this.listeners?.has(t))}
method dispatchEventToListeners (line 1) | dispatchEventToListeners(t,...[e]){const r=this.listeners?.get(t);if(!...
method addEventListener (line 1) | addEventListener(t,e,r){return this.#y.addEventListener(t,e,r)}
method once (line 1) | once(t){return this.#y.once(t)}
method removeEventListener (line 1) | removeEventListener(t,e,r){this.#y.removeEventListener(t,e,r)}
method hasEventListeners (line 1) | hasEventListeners(t){return this.#y.hasEventListeners(t)}
method dispatchEventToListeners (line 1) | dispatchEventToListeners(t,...e){this.#y.dispatchEventToListeners(t,...e)}
class Bt (line 1) | class Bt{registeredRevealers=[];static instance(){return void 0===Vt&&(V...
method instance (line 1) | static instance(){return void 0===Vt&&(Vt=new Bt),Vt}
method removeInstance (line 1) | static removeInstance(){Vt=void 0}
method register (line 1) | register(t){this.registeredRevealers.push(t)}
method reveal (line 1) | async reveal(t,e){const r=await Promise.all(this.getApplicableRegister...
method getApplicableRegisteredRevealers (line 1) | getApplicableRegisteredRevealers(t){return this.registeredRevealers.fi...
function Gt (line 1) | async function Gt(t,e=!1){await Bt.instance().reveal(t,e)}
class Dt (line 1) | class Dt extends Lt{#b;constructor(){super(),this.#b=[]}static instance(...
method constructor (line 1) | constructor(){super(),this.#b=[]}
method instance (line 1) | static instance(t){return Xt&&!t?.forceNew||(Xt=new Dt),Xt}
method removeInstance (line 1) | static removeInstance(){Xt=void 0}
method addMessage (line 1) | addMessage(t,e="info",r=!1,s){const n=new jt(t,e,Date.now(),r,s);this....
method log (line 1) | log(t){this.addMessage(t,"info")}
method warn (line 1) | warn(t,e){this.addMessage(t,"warning",void 0,e)}
method error (line 1) | error(t,e=!0){this.addMessage(t,"error",e)}
method messages (line 1) | messages(){return this.#b}
method show (line 1) | show(){this.showPromise()}
method showPromise (line 1) | showPromise(){return Gt(this)}
class jt (line 1) | class jt{text;level;timestamp;show;source;constructor(t,e,r,s,n){this.te...
method constructor (line 1) | constructor(t,e,r,s,n){this.text=t,this.level=e,this.timestamp="number...
method FrontendMessageSource (line 1) | get FrontendMessageSource(){return Ft}
function Qt (line 1) | function Qt(t){return Jt.filter((function(e){if(!e.contextTypes)return!0...
method linkify (line 1) | static async linkify(t,e){if(!t)throw new Error("Can't linkify "+t);cons...
class ee (line 1) | class ee extends Map{getOrInsert(t,e){return this.has(t)||this.set(t,e),...
method getOrInsert (line 1) | getOrInsert(t,e){return this.has(t)||this.set(t,e),this.get(t)}
method getOrInsertComputed (line 1) | getOrInsertComputed(t,e){return this.has(t)||this.set(t,e(t)),this.get...
method acquire (line 1) | acquire(){const t={resolved:!1};return this.#f?new Promise((e=>{this.#w....
method #S (line 1) | #S(t){if(t.resolved)throw new Error("Cannot release more than once.");t....
method run (line 1) | async run(t){const e=await this.acquire();try{return await t()}finally{e...
function ne (line 1) | function ne(t){if(-1===t.indexOf("..")&&-1===t.indexOf("."))return t;con...
class ie (line 1) | class ie{isValid;url;scheme;user;host;port;path;queryParams;fragment;fol...
method constructor (line 1) | constructor(t){this.isValid=!1,this.url=t,this.scheme="",this.user="",...
method fromString (line 1) | static fromString(t){const e=new ie(t.toString());return e.isValid?e:n...
method preEncodeSpecialCharactersInPath (line 1) | static preEncodeSpecialCharactersInPath(t){for(const e of["%",";","#",...
method rawPathToEncodedPathString (line 1) | static rawPathToEncodedPathString(t){const e=ie.preEncodeSpecialCharac...
method encodedFromParentPathAndName (line 1) | static encodedFromParentPathAndName(t,e){return ie.concatenate(t,"/",i...
method urlFromParentUrlAndName (line 1) | static urlFromParentUrlAndName(t,e){return ie.concatenate(t,"/",ie.pre...
method encodedPathToRawPathString (line 1) | static encodedPathToRawPathString(t){return decodeURIComponent(t)}
method rawPathToUrlString (line 1) | static rawPathToUrlString(t){let e=ie.preEncodeSpecialCharactersInPath...
method relativePathToUrlString (line 1) | static relativePathToUrlString(t,e){const r=ie.preEncodeSpecialCharact...
method urlToRawPathString (line 1) | static urlToRawPathString(t,e){console.assert(t.startsWith("file://"),...
method sliceUrlToEncodedPathString (line 1) | static sliceUrlToEncodedPathString(t,e){return t.substring(e)}
method substr (line 1) | static substr(t,e,r){return t.substr(e,r)}
method substring (line 1) | static substring(t,e,r){return t.substring(e,r)}
method prepend (line 1) | static prepend(t,e){return t+e}
method concatenate (line 1) | static concatenate(t,...e){return t.concat(...e)}
method trim (line 1) | static trim(t){return t.trim()}
method slice (line 1) | static slice(t,e,r){return t.slice(e,r)}
method join (line 1) | static join(t,e){return t.join(e)}
method split (line 1) | static split(t,e,r){return t.split(e,r)}
method toLowerCase (line 1) | static toLowerCase(t){return t.toLowerCase()}
method isValidUrlString (line 1) | static isValidUrlString(t){return new ie(t).isValid}
method urlWithoutHash (line 1) | static urlWithoutHash(t){const e=t.indexOf("#");return-1!==e?t.substr(...
method urlRegex (line 1) | static urlRegex(){if(ie.urlRegexInstance)return ie.urlRegexInstance;re...
method extractPath (line 1) | static extractPath(t){const e=this.fromString(t);return e?e.path:""}
method extractOrigin (line 1) | static extractOrigin(t){const r=this.fromString(t);return r?r.security...
method extractExtension (line 1) | static extractExtension(t){const e=(t=ie.urlWithoutHash(t)).indexOf("?...
method extractName (line 1) | static extractName(t){let e=t.lastIndexOf("/");const r=-1!==e?t.substr...
method completeURL (line 1) | static completeURL(t,e){if(e.startsWith("data:")||e.startsWith("blob:"...
method splitLineAndColumn (line 1) | static splitLineAndColumn(t){const e=t.match(ie.urlRegex());let r="",s...
method removeWasmFunctionInfoFromURL (line 1) | static removeWasmFunctionInfoFromURL(t){const e=t.search(/:wasm-functi...
method beginsWithWindowsDriveLetter (line 1) | static beginsWithWindowsDriveLetter(t){return/^[A-Za-z]:/.test(t)}
method beginsWithScheme (line 1) | static beginsWithScheme(t){return/^[A-Za-z][A-Za-z0-9+.-]*:/.test(t)}
method isRelativeURL (line 1) | static isRelativeURL(t){return!this.beginsWithScheme(t)||this.beginsWi...
method displayName (line 1) | get displayName(){return this.#x?this.#x:this.isDataURL()?this.dataURL...
method dataURLDisplayName (line 1) | dataURLDisplayName(){return this.#v?this.#v:this.isDataURL()?(this.#v=...
method isAboutBlank (line 1) | isAboutBlank(){return"about:blank"===this.url}
method isDataURL (line 1) | isDataURL(){return"data"===this.scheme}
method extractDataUrlMimeType (line 1) | extractDataUrlMimeType(){const t=this.url.match(/^data:((?<type>\w+)\/...
method isBlobURL (line 1) | isBlobURL(){return this.url.startsWith("blob:")}
method lastPathComponentWithFragment (line 1) | lastPathComponentWithFragment(){return this.lastPathComponent+(this.fr...
method domain (line 1) | domain(){return this.isDataURL()?"data:":this.host+(this.port?":"+this...
method securityOrigin (line 1) | securityOrigin(){if(this.isDataURL())return"data:";return(this.isBlobU...
method urlWithoutScheme (line 1) | urlWithoutScheme(){return this.scheme&&this.url.startsWith(this.scheme...
class oe (line 1) | class oe{#T;#R;#z;#I;constructor(t,e){this.#T=t,this.#R=e||1,this.#z=0,t...
method constructor (line 1) | constructor(t,e){this.#T=t,this.#R=e||1,this.#z=0,this.#I=0}
method isCanceled (line 1) | isCanceled(){return this.#T.parent.isCanceled()}
method setTitle (line 1) | setTitle(t){this.#T.parent.setTitle(t)}
method done (line 1) | done(){this.setWorked(this.#I),this.#T.childDone()}
method setTotalWork (line 1) | setTotalWork(t){this.#I=t,this.#T.update()}
method setWorked (line 1) | setWorked(t,e){this.#z=t,void 0!==e&&this.setTitle(e),this.#T.update()}
method incrementWorked (line 1) | incrementWorked(t){this.setWorked(this.#z+(t||1))}
method getWeight (line 1) | getWeight(){return this.#R}
method getWorked (line 1) | getWorked(){return this.#z}
method getTotalWork (line 1) | getTotalWork(){return this.#I}
method constructor (line 1) | constructor(t){this.parent=t,this.#A=[],this.#P=0,this.parent.setTotalWo...
method childDone (line 1) | childDone(){++this.#P===this.#A.length&&this.parent.done()}
method createSubProgress (line 1) | createSubProgress(t){const e=new oe(this,t);return this.#A.push(e),e}
method update (line 1) | update(){let t=0,e=0;for(let r=0;r<this.#A.length;++r){const s=this.#A[r...
method setTotalWork (line 1) | setTotalWork(t){}
method setTitle (line 1) | setTitle(t){}
method setWorked (line 1) | setWorked(t,e){}
method incrementWorked (line 1) | incrementWorked(t){}
method done (line 1) | done(){}
method isCanceled (line 1) | isCanceled(){return!1}
method constructor (line 1) | constructor(t,e){this.#E=t,this.#k=e}
method isCanceled (line 1) | isCanceled(){return!!this.#E&&this.#E.isCanceled()}
method setTitle (line 1) | setTitle(t){this.#E&&this.#E.setTitle(t)}
method done (line 1) | done(){this.#E&&this.#E.done(),this.#k&&this.#k()}
method setTotalWork (line 1) | setTotalWork(t){this.#E&&this.#E.setTotalWork(t)}
method setWorked (line 1) | setWorked(t,e){this.#E&&this.#E.setWorked(t,e)}
method incrementWorked (line 1) | incrementWorked(t){this.#E&&this.#E.incrementWorked(t)}
method waitFor (line 1) | async waitFor(t){const e=this.getForId(t);return e||await this.getOrCrea...
method tryGet (line 1) | tryGet(t,e){const r=this.getForId(t);if(!r){const r=()=>{};return this.g...
method clear (line 1) | clear(){this.stopListening();for(const[t,{reject:e}]of this.#L.entries()...
method getOrCreatePromise (line 1) | getOrCreatePromise(t){const e=this.#L.get(t);if(e)return e.promise;const...
method onResolve (line 1) | onResolve(t,e){const r=this.#L.get(t);this.#L.delete(t),0===this.#L.size...
class pe (line 1) | class pe{#C;#_;#N;#O;constructor(t,e,r,s){this.#C=t,this.#_=e,this.#N=r,...
method constructor (line 1) | constructor(t,e,r,s){this.#C=t,this.#_=e,this.#N=r,this.#O=s}
method fromMimeType (line 1) | static fromMimeType(t){return t?t.startsWith("text/html")?fe.Document:...
method fromMimeTypeOverride (line 1) | static fromMimeTypeOverride(t){return"application/manifest+json"===t?f...
method fromURL (line 1) | static fromURL(t){return Se.get(ie.extractExtension(t))||null}
method fromName (line 1) | static fromName(t){for(const e in fe){const r=fe[e];if(r.name()===t)re...
method mimeFromURL (line 1) | static mimeFromURL(t){if(t.startsWith("snippet://")||t.startsWith("deb...
method mimeFromExtension (line 1) | static mimeFromExtension(t){return xe.get(t)}
method simplifyContentType (line 1) | static simplifyContentType(t){return new RegExp("^application(.*json$|...
method mediaTypeForMetrics (line 1) | static mediaTypeForMetrics(t,e,r,s,n){return"text/javascript"!==t?t:e?...
method name (line 1) | name(){return this.#C}
method title (line 1) | title(){return this.#_()}
method category (line 1) | category(){return this.#N}
method isTextType (line 1) | isTextType(){return this.#O}
method isScript (line 1) | isScript(){return"script"===this.#C||"sm-script"===this.#C}
method hasScripts (line 1) | hasScripts(){return this.isScript()||this.isDocument()}
method isStyleSheet (line 1) | isStyleSheet(){return"stylesheet"===this.#C||"sm-stylesheet"===this.#C}
method hasStyleSheets (line 1) | hasStyleSheets(){return this.isStyleSheet()||this.isDocument()}
method isDocument (line 1) | isDocument(){return"document"===this.#C}
method isDocumentOrScriptOrStyleSheet (line 1) | isDocumentOrScriptOrStyleSheet(){return this.isDocument()||this.isScri...
method isFont (line 1) | isFont(){return"font"===this.#C}
method isImage (line 1) | isImage(){return"image"===this.#C}
method isFromSourceMap (line 1) | isFromSourceMap(){return this.#C.startsWith("sm-")}
method isWebbundle (line 1) | isWebbundle(){return"webbundle"===this.#C}
method toString (line 1) | toString(){return this.#C}
method canonicalMimeType (line 1) | canonicalMimeType(){return this.isDocument()?"text/html":this.isScript...
class me (line 1) | class me{name;title;shortTitle;constructor(t,e,r){this.name=t,this.title...
method constructor (line 1) | constructor(t,e,r){this.name=t,this.title=e,this.shortTitle=r}
class Ie (line 1) | class Ie{begin;end;data;constructor(t,e,r){if(t>e)throw new Error("Inval...
method constructor (line 1) | constructor(t,e,r){if(t>e)throw new Error("Invalid segment");this.begi...
method intersects (line 1) | intersects(t){return this.begin<t.end&&t.begin<this.end}
method constructor (line 1) | constructor(t){this.#V=[],this.#B=t}
method append (line 1) | append(t){let r=e.ArrayUtilities.lowerBound(this.#V,t,((t,e)=>t.begin-e....
method segments (line 1) | segments(){return this.#V}
method tryMerge (line 1) | tryMerge(t,e){const r=this.#B&&this.#B(t,e);return r?(r.begin=t.begin,r....
function _e (line 1) | function _e(t){const e=t.settingName;if(Ce.has(e))throw new Error(`Dupli...
function Ne (line 1) | function Ne(){return Le.filter((e=>t.Runtime.Runtime.isDescriptorEnabled...
function Oe (line 1) | function Oe(t,e=!1){if(0===Le.length||e){Le=t,Ce.clear();for(const e of ...
function Ve (line 1) | function Ve(){Le=[],Ce.clear()}
function Be (line 1) | function Be(t){const e=Le.findIndex((e=>e.settingName===t));return!(e<0|...
function Ge (line 1) | function Ge(t){switch(t){case"ELEMENTS":return ke(Pe.elements);case"AI":...
class Xe (line 1) | class Xe{syncedStorage;globalStorage;localStorage;#G=new Fe({});settingN...
method constructor (line 1) | constructor(e,r,s,n){this.syncedStorage=e,this.globalStorage=r,this.lo...
method getRegisteredSettings (line 1) | getRegisteredSettings(){return Ne()}
method hasInstance (line 1) | static hasInstance(){return void 0!==We}
method instance (line 1) | static instance(t={forceNew:null,syncedStorage:null,globalStorage:null...
method removeInstance (line 1) | static removeInstance(){We=void 0}
method registerModuleSetting (line 1) | registerModuleSetting(t){const e=t.name,r=t.category(),s=t.order();if(...
method normalizeSettingName (line 1) | static normalizeSettingName(t){return[qe.GLOBAL_VERSION_SETTING_NAME,q...
method moduleSetting (line 1) | moduleSetting(t){const e=this.moduleSettings.get(t);if(!e)throw new Er...
method settingForTest (line 1) | settingForTest(t){const e=this.#W.get(t);if(!e)throw new Error("No set...
method createSetting (line 1) | createSetting(t,e,r){const s=this.storageFromType(r);let n=this.#W.get...
method createLocalSetting (line 1) | createLocalSetting(t,e){return this.createSetting(t,e,"Local")}
method createRegExpSetting (line 1) | createRegExpSetting(t,e,r,s){return this.#W.get(t)||this.#W.set(t,new ...
method clearAll (line 1) | clearAll(){this.globalStorage.removeAll(),this.syncedStorage.removeAll...
method storageFromType (line 1) | storageFromType(t){switch(t){case"Local":return this.localStorage;case...
method getRegistry (line 1) | getRegistry(){return this.#W}
class Fe (line 1) | class Fe{object;backingStore;storagePrefix;constructor(t,e=De,r=""){this...
method constructor (line 1) | constructor(t,e=De,r=""){this.object=t,this.backingStore=e,this.storag...
method register (line 1) | register(t){t=this.storagePrefix+t,this.backingStore.register(t)}
method set (line 1) | set(t,e){t=this.storagePrefix+t,this.object[t]=e,this.backingStore.set...
method has (line 1) | has(t){return(t=this.storagePrefix+t)in this.object}
method get (line 1) | get(t){return t=this.storagePrefix+t,this.object[t]}
method forceGet (line 1) | async forceGet(t){const e=this.storagePrefix+t,r=await this.backingSto...
method remove (line 1) | remove(t){t=this.storagePrefix+t,delete this.object[t],this.backingSto...
method removeAll (line 1) | removeAll(){this.object={},this.backingStore.clear()}
method keys (line 1) | keys(){return Object.keys(this.object)}
method dumpSizes (line 1) | dumpSizes(){Dt.instance().log("Ten largest settings: ");const t={__pro...
function je (line 1) | function je(t){const e=t.name,r=Xe.instance();r.getRegistry().delete(e),...
class Ue (line 1) | class Ue{disabled;warning;experiment;constructor({deprecationNotice:e}){...
method constructor (line 1) | constructor({deprecationNotice:e}){if(!e)throw new Error("Cannot creat...
class $e (line 1) | class $e{name;defaultValue;eventSupport;storage;#D;#_;#F=null;#j;#U;#$=J...
method constructor (line 1) | constructor(t,e,r,s,n){this.name=t,this.defaultValue=e,this.eventSuppo...
method setSerializer (line 1) | setSerializer(t){this.#$=t}
method addChangeListener (line 1) | addChangeListener(t,e){return this.eventSupport.addEventListener(this....
method removeChangeListener (line 1) | removeChangeListener(t,e){this.eventSupport.removeEventListener(this.n...
method title (line 1) | title(){return this.#_?this.#_:this.#D?this.#D():""}
method setTitleFunction (line 1) | setTitleFunction(t){t&&(this.#D=t)}
method setTitle (line 1) | setTitle(t){this.#_=t}
method setRequiresUserAction (line 1) | setRequiresUserAction(t){this.#j=t}
method disabled (line 1) | disabled(){if(this.#F?.disabledCondition){const{disabled:e}=this.#F.di...
method disabledReasons (line 1) | disabledReasons(){if(this.#F?.disabledCondition){const e=this.#F.disab...
method setDisabled (line 1) | setDisabled(t){this.#q=t,this.eventSupport.dispatchEventToListeners(th...
method #K (line 1) | #K(t){const e="string"==typeof t||"number"==typeof t||"boolean"==typeo...
method #J (line 1) | #J(t){this.#Z||(this.#K(t),this.#Z=!0)}
method get (line 1) | get(){if(this.#j&&!this.#H)return this.#J(this.defaultValue),this.defa...
method getIfNotDisabled (line 1) | getIfNotDisabled(){if(!this.disabled())return this.get()}
method forceGet (line 1) | async forceGet(){const t=this.name,e=this.storage.get(t),r=await this....
method set (line 1) | set(t){this.#K(t),this.#H=!0,this.#U=t;try{const e=this.#$.stringify(t...
method setRegistration (line 1) | setRegistration(e){this.#F=e;const{deprecationNotice:r}=e;if(r?.disabl...
method type (line 1) | type(){return this.#F?this.#F.settingType:null}
method options (line 1) | options(){return this.#F&&this.#F.options?this.#F.options.map((t=>{con...
method reloadRequired (line 1) | reloadRequired(){return this.#F&&this.#F.reloadRequired||null}
method category (line 1) | category(){return this.#F&&this.#F.category||null}
method tags (line 1) | tags(){return this.#F&&this.#F.tags?this.#F.tags.map((t=>t())).join("\...
method order (line 1) | order(){return this.#F&&this.#F.order||null}
method learnMore (line 1) | learnMore(){return this.#F?.learnMore??null}
method deprecation (line 1) | get deprecation(){return this.#F&&this.#F.deprecationNotice?(this.#Y||...
method printSettingsSavingError (line 1) | printSettingsSavingError(t,e,r){const s="Error saving setting with nam...
class He (line 1) | class He extends $e{#Q;#tt;constructor(t,e,r,s,n,i){super(t,e?[{pattern:...
method constructor (line 1) | constructor(t,e,r,s,n,i){super(t,e?[{pattern:e}]:[],r,s,i),this.#Q=n}
method get (line 1) | get(){const t=[],e=this.getAsArray();for(let r=0;r<e.length;++r){const...
method getAsArray (line 1) | getAsArray(){return super.get()}
method set (line 1) | set(t){this.setAsArray([{pattern:t,disabled:!1}])}
method setAsArray (line 1) | setAsArray(t){this.#tt=void 0,super.set(t)}
method asRegExp (line 1) | asRegExp(){if(void 0!==this.#tt)return this.#tt;this.#tt=null;try{cons...
class qe (line 1) | class qe{static GLOBAL_VERSION_SETTING_NAME="inspectorVersion";static SY...
method constructor (line 1) | constructor(){this.#et=Xe.instance().createSetting(qe.GLOBAL_VERSION_S...
method resetToCurrent (line 1) | resetToCurrent(){this.#et.set(qe.CURRENT_VERSION),this.#rt.set(qe.CURR...
method updateVersion (line 1) | updateVersion(){const t=qe.CURRENT_VERSION,e=Math.min(this.#et.get(),t...
method methodsToRunToUpdateVersion (line 1) | methodsToRunToUpdateVersion(t,e){const r=[];for(let s=t;s<e;++s)r.push...
method updateVersionFrom0To1 (line 1) | updateVersionFrom0To1(){this.clearBreakpointsWhenTooMany(Xe.instance()...
method updateVersionFrom1To2 (line 1) | updateVersionFrom1To2(){Xe.instance().createSetting("previouslyViewedF...
method updateVersionFrom2To3 (line 1) | updateVersionFrom2To3(){Xe.instance().createSetting("fileSystemMapping...
method updateVersionFrom3To4 (line 1) | updateVersionFrom3To4(){const t=Xe.instance().createSetting("showHeaSn...
method updateVersionFrom4To5 (line 1) | updateVersionFrom4To5(){const t={FileSystemViewSidebarWidth:"fileSyste...
method updateVersionFrom5To6 (line 1) | updateVersionFrom5To6(){const t={debuggerSidebarHidden:"sourcesPanelSp...
method updateVersionFrom6To7 (line 1) | updateVersionFrom6To7(){const t={sourcesPanelNavigatorSplitViewState:"...
method updateVersionFrom7To8 (line 1) | updateVersionFrom7To8(){}
method updateVersionFrom8To9 (line 1) | updateVersionFrom8To9(){const t=["skipStackFramesPattern","workspaceFo...
method updateVersionFrom9To10 (line 1) | updateVersionFrom9To10(){if(window.localStorage)for(const t in window....
method updateVersionFrom10To11 (line 1) | updateVersionFrom10To11(){const t=Xe.instance().createSetting("customD...
method updateVersionFrom11To12 (line 1) | updateVersionFrom11To12(){this.migrateSettingsFromLocalStorage()}
method updateVersionFrom12To13 (line 1) | updateVersionFrom12To13(){this.migrateSettingsFromLocalStorage(),je(Xe...
method updateVersionFrom13To14 (line 1) | updateVersionFrom13To14(){const t={throughput:-1,latency:0};Xe.instanc...
method updateVersionFrom14To15 (line 1) | updateVersionFrom14To15(){const t=Xe.instance().createLocalSetting("wo...
method updateVersionFrom15To16 (line 1) | updateVersionFrom15To16(){const t=Xe.instance().createSetting("Inspect...
method updateVersionFrom16To17 (line 1) | updateVersionFrom16To17(){const t=Xe.instance().createSetting("network...
method updateVersionFrom17To18 (line 1) | updateVersionFrom17To18(){const t=Xe.instance().createLocalSetting("wo...
method updateVersionFrom18To19 (line 1) | updateVersionFrom18To19(){const t=Xe.instance().createSetting("network...
method updateVersionFrom19To20 (line 1) | updateVersionFrom19To20(){const t=Xe.instance().createSetting("Inspect...
method updateVersionFrom20To21 (line 1) | updateVersionFrom20To21(){const t=Xe.instance().createSetting("network...
method updateVersionFrom21To22 (line 1) | updateVersionFrom21To22(){const t=Xe.instance().createLocalSetting("br...
method updateVersionFrom22To23 (line 1) | updateVersionFrom22To23(){}
method updateVersionFrom23To24 (line 1) | updateVersionFrom23To24(){const t=Xe.instance().createSetting("searchI...
method updateVersionFrom24To25 (line 1) | updateVersionFrom24To25(){const t=Xe.instance().createSetting("network...
method updateVersionFrom25To26 (line 1) | updateVersionFrom25To26(){const t=Xe.instance().createSetting("message...
method updateVersionFrom26To27 (line 1) | updateVersionFrom26To27(){function t(t,e,r){const s=Xe.instance().crea...
method updateVersionFrom27To28 (line 1) | updateVersionFrom27To28(){const t=Xe.instance().createSetting("uiTheme...
method updateVersionFrom28To29 (line 1) | updateVersionFrom28To29(){function t(t,e,r){const s=Xe.instance().crea...
method updateVersionFrom29To30 (line 1) | updateVersionFrom29To30(){const t=Xe.instance().createSetting("closeab...
method updateVersionFrom30To31 (line 1) | updateVersionFrom30To31(){je(Xe.instance().createSetting("recorder_rec...
method updateVersionFrom31To32 (line 1) | updateVersionFrom31To32(){const t=Xe.instance().createLocalSetting("br...
method updateVersionFrom32To33 (line 1) | updateVersionFrom32To33(){const t=Xe.instance().createLocalSetting("pr...
method updateVersionFrom33To34 (line 1) | updateVersionFrom33To34(){const t=Xe.instance().createLocalSetting("br...
method updateVersionFrom34To35 (line 1) | updateVersionFrom34To35(){const t=Xe.instance().createLocalSetting("br...
method updateVersionFrom35To36 (line 1) | updateVersionFrom35To36(){Xe.instance().createSetting("showThirdPartyI...
method updateVersionFrom36To37 (line 1) | updateVersionFrom36To37(){const t=t=>{for(const e of t.keys()){const r...
method updateVersionFrom37To38 (line 1) | updateVersionFrom37To38(){const t=(()=>{try{return Ye("console-insight...
method migrateSettingsFromLocalStorage (line 1) | migrateSettingsFromLocalStorage(){const t=new Set(["advancedSearchConf...
method clearBreakpointsWhenTooMany (line 1) | clearBreakpointsWhenTooMany(t,e){t.get().length>e&&t.set([])}
function Ye (line 1) | function Ye(t){return Xe.instance().moduleSetting(t)}
method constructor (line 1) | constructor(t){this.#nt=[],this.#it=-1,this.#at=0,this.#ot=t}
method readOnlyLock (line 1) | readOnlyLock(){++this.#at}
method releaseReadOnlyLock (line 1) | releaseReadOnlyLock(){--this.#at}
method getPreviousValidIndex (line 1) | getPreviousValidIndex(){if(this.empty())return-1;let t=this.#it-1;for(;t...
method getNextValidIndex (line 1) | getNextValidIndex(){let t=this.#it+1;for(;t<this.#nt.length&&!this.#nt[t...
method readOnly (line 1) | readOnly(){return Boolean(this.#at)}
method filterOut (line 1) | filterOut(t){if(this.readOnly())return;const e=[];let r=0;for(let s=0;s<...
method empty (line 1) | empty(){return!this.#nt.length}
method active (line 1) | active(){return this.empty()?null:this.#nt[this.#it]}
method push (line 1) | push(t){this.readOnly()||(this.empty()||this.#nt.splice(this.#it+1),this...
method canRollback (line 1) | canRollback(){return this.getPreviousValidIndex()>=0}
method canRollover (line 1) | canRollover(){return this.getNextValidIndex()>=0}
method rollback (line 1) | rollback(){const t=this.getPreviousValidIndex();return-1!==t&&(this.read...
method rollover (line 1) | rollover(){const t=this.getNextValidIndex();return-1!==t&&(this.readOnly...
method constructor (line 1) | constructor(){this.#lt=""}
method write (line 1) | async write(t){this.#lt+=t}
method close (line 1) | async close(){}
method data (line 1) | data(){return this.#lt}
class Qe (line 1) | class Qe{#ht;#ct;#ut;#gt;#dt;#pt;#mt;constructor(t){this.#ct=0,this.#mt=...
method constructor (line 1) | constructor(t){this.#ct=0,this.#mt=t,this.clear()}
method newStringTrie (line 1) | static newStringTrie(){return new Qe({empty:()=>"",append:(t,e)=>t+e,s...
method newArrayTrie (line 1) | static newArrayTrie(){return new Qe({empty:()=>[],append:(t,e)=>t.conc...
method add (line 1) | add(t){let e=this.#ct;++this.#dt[this.#ct];for(let r=0;r<t.length;++r)...
method remove (line 1) | remove(t){if(!this.has(t))return!1;let e=this.#ct;--this.#dt[this.#ct]...
method has (line 1) | has(t){let e=this.#ct;for(let r=0;r<t.length;++r)if(e=this.#ut[e].get(...
method words (line 1) | words(t){t=t??this.#mt.empty();let e=this.#ct;for(let r=0;r<t.length;+...
method dfs (line 1) | dfs(t,e,r){this.#gt[t]&&r.push(e);const s=this.#ut[t];for(const[t,n]of...
method longestPrefix (line 1) | longestPrefix(t,e){let r=this.#ct,s=0;for(let n=0;n<t.length&&(r=this....
method clear (line 1) | clear(){this.#ht=1,this.#ct=0,this.#ut=[new Map],this.#gt=[!1],this.#d...
method addWord (line 1) | addWord(t){let e=this.words.get(t)||0;++e,this.words.set(t,e),this.index...
method removeWord (line 1) | removeWord(t){let e=this.words.get(t)||0;if(e){if(1===e)return this.word...
method wordsWithPrefix (line 1) | wordsWithPrefix(t){return this.index.words(t)}
method hasWord (line 1) | hasWord(t){return this.words.has(t)}
method wordCount (line 1) | wordCount(t){return this.words.get(t)||0}
method reset (line 1) | reset(){this.words.clear(),this.index.clear()}
method constructor (line 1) | constructor(t){this.#yt=t,this.#bt=!1,this.#ft=!1,this.#wt=null,this.#St=0}
method #Tt (line 1) | #Tt(){this.#St=this.#Rt(),this.#bt=!1,this.#wt&&this.#zt(!1)}
method process (line 1) | get process(){return this.#wt}
method processCompleted (line 1) | get processCompleted(){return this.#wt?this.#xt.promise:null}
method #It (line 1) | #It(){this.#vt=void 0,this.#ft=!1,this.#bt=!0,Promise.resolve().then(thi...
method schedule (line 1) | async schedule(t,e="Default"){this.#wt=t;const r=Boolean(this.#vt)||this...
method #zt (line 1) | #zt(t){if(this.#bt)return;if(this.#vt&&!t)return;clearTimeout(this.#vt);...
method #Rt (line 1) | #Rt(){return window.performance.now()}
class sr (line 1) | class sr{#At;#Pt;constructor(t){this.#At=new Promise((e=>{const r=new Wo...
method constructor (line 1) | constructor(t){this.#At=new Promise((e=>{const r=new Worker(t,{type:"m...
method fromURL (line 1) | static fromURL(t){return new sr(t)}
method postMessage (line 1) | postMessage(t,e){this.#At.then((r=>{this.#Pt||r.postMessage(t,e??[])}))}
method dispose (line 1) | dispose(){this.#Pt=!0,this.#At.then((t=>t.terminate()))}
method terminate (line 1) | terminate(){this.dispose()}
method onmessage (line 1) | set onmessage(t){this.#At.then((e=>{e.onmessage=t}))}
method onerror (line 1) | set onerror(t){this.#At.then((e=>{e.onerror=t}))}
FILE: packages/debugger-frontend/dist/third-party/front_end/core/dom_extension/dom_extension.js
method constructor (line 1) | constructor(t,e,o,n){this.x=t||0,this.y=e||0,this.width=o||0,this.height...
method contains (line 1) | contains(t,e){return t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this...
method relativeTo (line 1) | relativeTo(t){return new AnchorBox(this.x-t.x,this.y-t.y,this.width,this...
method relativeToElement (line 1) | relativeToElement(t){return this.relativeTo(t.boxInWindow(t.ownerDocumen...
method equals (line 1) | equals(t){return Boolean(t)&&this.x===t.x&&this.y===t.y&&this.width===t....
function r (line 1) | function r(t){if(!t.assignedSlot)return t.nextSibling;const e=t.assigned...
FILE: packages/debugger-frontend/dist/third-party/front_end/core/host/host.js
method Events (line 1) | get Events(){return o}
function h (line 1) | function h(e,r,t){if(void 0===e||void 0===t)return null;if(0!==e){if(fun...
function l (line 1) | function l(e){if(o){const{success:r,description:t}=function(e){const{sta...
class E (line 1) | class E{#e=new Map;events;#r=null;recordedCountHistograms=[];recordedEnu...
method constructor (line 1) | constructor(){function e(e){!("mac"===this.platform()?e.metaKey:e.ctrl...
method platform (line 1) | platform(){const e=navigator.userAgent;return e.includes("Windows NT")...
method loadCompleted (line 1) | loadCompleted(){}
method bringToFront (line 1) | bringToFront(){}
method closeWindow (line 1) | closeWindow(){}
method setIsDocked (line 1) | setIsDocked(e,r){window.setTimeout(r,0)}
method showSurvey (line 1) | showSurvey(e,r){window.setTimeout((()=>r({surveyShown:!1})),0)}
method canShowSurvey (line 1) | canShowSurvey(e,r){window.setTimeout((()=>r({canShowSurvey:!1})),0)}
method setInspectedPageBounds (line 1) | setInspectedPageBounds(e){}
method inspectElementCompleted (line 1) | inspectElementCompleted(){}
method setInjectedScriptForOrigin (line 1) | setInjectedScriptForOrigin(e,r){}
method inspectedURLChanged (line 1) | inspectedURLChanged(e){document.title=w(C.devtoolsS,{PH1:e.replace(/^h...
method copyText (line 1) | copyText(e){null!=e&&navigator.clipboard.writeText(e)}
method openInNewTab (line 1) | openInNewTab(r){e.ParsedURL.schemeIs(r,"javascript:")||window.open(r,"...
method openSearchResultsInNewTab (line 1) | openSearchResultsInNewTab(r){e.Console.Console.instance().error("Searc...
method showItemInFolder (line 1) | showItemInFolder(r){e.Console.Console.instance().error("Show item in f...
method save (line 1) | save(e,r,t,n){let s=this.#e.get(e);s||(s=[],this.#e.set(e,s)),s.push(r...
method append (line 1) | append(e,r){const t=this.#e.get(e);t&&(t.push(r),this.events.dispatchE...
method close (line 1) | close(e){const r=this.#e.get(e)||[];this.#e.delete(e);let t="";if(e)tr...
method sendMessageToBackend (line 1) | sendMessageToBackend(e){}
method recordCountHistogram (line 1) | recordCountHistogram(e,r,t,n,o){this.recordedCountHistograms.length>=1...
method recordEnumeratedHistogram (line 1) | recordEnumeratedHistogram(e,r,t){this.recordedEnumeratedHistograms.len...
method recordPerformanceHistogram (line 1) | recordPerformanceHistogram(e,r){this.recordedPerformanceHistograms.len...
method recordUserMetricsAction (line 1) | recordUserMetricsAction(e){}
method connectAutomaticFileSystem (line 1) | connectAutomaticFileSystem(e,r,t,n){queueMicrotask((()=>n({success:!1}...
method disconnectAutomaticFileSystem (line 1) | disconnectAutomaticFileSystem(e){}
method requestFileSystems (line 1) | requestFileSystems(){this.events.dispatchEventToListeners(o.FileSystem...
method addFileSystem (line 1) | addFileSystem(e){window.webkitRequestFileSystem(window.TEMPORARY,10485...
method removeFileSystem (line 1) | removeFileSystem(e){const r=e=>{e.forEach((e=>{e.isDirectory?e.removeR...
method isolatedFileSystem (line 1) | isolatedFileSystem(e,r){return this.#r}
method loadNetworkResource (line 1) | loadNetworkResource(e,r,t,n){fetch(e).then((async e=>{const r=await e....
method registerPreference (line 1) | registerPreference(e,r){}
method getPreferences (line 1) | getPreferences(e){const r={};for(const e in window.localStorage)r[e]=w...
method getPreference (line 1) | getPreference(e,r){r(window.localStorage[e])}
method setPreference (line 1) | setPreference(e,r){window.localStorage[e]=r}
method removePreference (line 1) | removePreference(e){delete window.localStorage[e]}
method clearPreferences (line 1) | clearPreferences(){window.localStorage.clear()}
method getSyncInformation (line 1) | getSyncInformation(e){if("getSyncInformationForTesting"in globalThis)r...
method getHostConfig (line 1) | getHostConfig(e){const r={devToolsVeLogging:{enabled:!0},thirdPartyCoo...
method upgradeDraggedFileSystemPermissions (line 1) | upgradeDraggedFileSystemPermissions(e){}
method indexPath (line 1) | indexPath(e,r,t){}
method stopIndexing (line 1) | stopIndexing(e){}
method searchInPath (line 1) | searchInPath(e,r,t){}
method zoomFactor (line 1) | zoomFactor(){return 1}
method zoomIn (line 1) | zoomIn(){}
method zoomOut (line 1) | zoomOut(){}
method resetZoom (line 1) | resetZoom(){}
method setWhitelistedShortcuts (line 1) | setWhitelistedShortcuts(e){}
method setEyeDropperActive (line 1) | setEyeDropperActive(e){}
method showCertificateViewer (line 1) | showCertificateViewer(e){}
method reattach (line 1) | reattach(e){e()}
method readyForTest (line 1) | readyForTest(){}
method connectionReady (line 1) | connectionReady(){}
method setOpenNewWindowForPopups (line 1) | setOpenNewWindowForPopups(e){}
method setDevicesDiscoveryConfig (line 1) | setDevicesDiscoveryConfig(e){}
method setDevicesUpdatesEnabled (line 1) | setDevicesUpdatesEnabled(e){}
method openRemotePage (line 1) | openRemotePage(e,r){}
method openNodeFrontend (line 1) | openNodeFrontend(){}
method showContextMenuAtPoint (line 1) | showContextMenuAtPoint(e,r,t,n){throw new Error("Soft context menu sho...
method isHostedMode (line 1) | isHostedMode(){return!0}
method setAddExtensionCallback (line 1) | setAddExtensionCallback(e){}
method initialTargetId (line 1) | async initialTargetId(){return null}
method doAidaConversation (line 1) | doAidaConversation(e,r,t){t({error:"Not implemented"})}
method registerAidaClientEvent (line 1) | registerAidaClientEvent(e,r){r({error:"Not implemented"})}
method recordImpression (line 1) | recordImpression(e){}
method recordResize (line 1) | recordResize(e){}
method recordClick (line 1) | recordClick(e){}
method recordHover (line 1) | recordHover(e){}
method recordDrag (line 1) | recordDrag(e){}
method recordChange (line 1) | recordChange(e){}
method recordKeyDown (line 1) | recordKeyDown(e){}
method recordSettingAccess (line 1) | recordSettingAccess(e){}
class y (line 1) | class y{constructor(){for(const e of s)this[e[1]]=this.dispatch.bind(thi...
method constructor (line 1) | constructor(){for(const e of s)this[e[1]]=this.dispatch.bind(this,e[0]...
method dispatch (line 1) | dispatch(e,r,t,...n){if(r.length<2){try{f.events.dispatchEventToListen...
method streamWrite (line 1) | streamWrite(e,r){p(e,r)}
method InspectorFrontendHostInstance (line 1) | get InspectorFrontendHostInstance(){return f}
class O (line 1) | class O extends Error{}
class N (line 1) | class N extends Error{}
class L (line 1) | class L{static buildConsoleInsightsRequest(e){const t=r.Runtime.hostConf...
method buildConsoleInsightsRequest (line 1) | static buildConsoleInsightsRequest(e){const t=r.Runtime.hostConfig.aid...
method checkAccessPreconditions (line 1) | static async checkAccessPreconditions(){if(!navigator.onLine)return"no...
method fetch (line 1) | async*fetch(e,r){if(!f.doAidaConversation)throw new Error("doAidaConve...
method registerClientEvent (line 1) | registerClientEvent(e){const{promise:r,resolve:t}=Promise.withResolver...
class H (line 1) | class H extends e.ObjectWrapper.ObjectWrapper{#t;#n;constructor(){super(...
method constructor (line 1) | constructor(){super()}
method instance (line 1) | static instance(){return D||(D=new H),D}
method addEventListener (line 1) | addEventListener(e,r){const t=!this.hasEventListeners(e),n=super.addEv...
method removeEventListener (line 1) | removeEventListener(e,r){super.removeEventListener(e,r),this.hasEventL...
method pollAidaAvailability (line 1) | async pollAidaAvailability(){this.#t=window.setTimeout((()=>this.pollA...
method CitationSourceType (line 1) | get CitationSourceType(){return x}
method ClientFeature (line 1) | get ClientFeature(){return P}
method FunctionalityType (line 1) | get FunctionalityType(){return A}
method RecitationAction (line 1) | get RecitationAction(){return T}
method Role (line 1) | get Role(){return b}
method UserTier (line 1) | get UserTier(){return R}
function q (line 1) | function q(){return W||(W=f.platform()),W}
function K (line 1) | function K(){return null===z&&(z=new $),z}
class $ (line 1) | class ${#o="error";#s=new Set;#i=null;#a=null;#d="rn_fusebox";#c={};#l=n...
method isEnabled (line 1) | isEnabled(){return!0===globalThis.enableReactNativePerfMetrics}
method addEventListener (line 1) | addEventListener(e){this.#s.add(e);return()=>{this.#s.delete(e)}}
method removeAllEventListeners (line 1) | removeAllEventListeners(){this.#s.clear()}
method sendEvent (line 1) | sendEvent(e){if(!0!==globalThis.enableReactNativePerfMetrics)return;co...
method registerPerfMetricsGlobalPostMessageHandler (line 1) | registerPerfMetricsGlobalPostMessageHandler(){!0===globalThis.enableRe...
method registerGlobalErrorReporting (line 1) | registerGlobalErrorReporting(){window.addEventListener("error",(e=>{co...
method setLaunchId (line 1) | setLaunchId(e){this.#i=e}
method setAppId (line 1) | setAppId(e){this.#a=e}
method setTelemetryInfo (line 1) | setTelemetryInfo(e){this.#c=e}
method entryPointLoadingStarted (line 1) | entryPointLoadingStarted(e){this.#d=e,this.sendEvent({eventName:"Entry...
method entryPointLoadingFinished (line 1) | entryPointLoadingFinished(e){this.sendEvent({eventName:"Entrypoint.Loa...
method browserVisibilityChanged (line 1) | browserVisibilityChanged(e){this.sendEvent({eventName:"Browser.Visibil...
method remoteDebuggingTerminated (line 1) | remoteDebuggingTerminated(e={}){this.sendEvent({eventName:"Connection....
method developerResourceLoadingStarted (line 1) | developerResourceLoadingStarted(e,r){const t=Q(e);this.sendEvent({even...
method developerResourceLoadingFinished (line 1) | developerResourceLoadingFinished(e,r,t){const n=Q(e);this.sendEvent({e...
method developerResourcesStartupLoadingFinishedEvent (line 1) | developerResourcesStartupLoadingFinishedEvent(e,r){this.sendEvent({eve...
method fuseboxSetClientMetadataStarted (line 1) | fuseboxSetClientMetadataStarted(){this.sendEvent({eventName:"FuseboxSe...
method fuseboxSetClientMetadataFinished (line 1) | fuseboxSetClientMetadataFinished(e,r){if(e)this.sendEvent({eventName:"...
method traceRequested (line 1) | traceRequested(){this.sendEvent({eventName:"Tracing.TraceRequested"})}
method heapSnapshotStarted (line 1) | heapSnapshotStarted(){this.sendEvent({eventName:"MemoryPanelActionStar...
method heapSnapshotFinished (line 1) | heapSnapshotFinished(e){this.sendEvent({eventName:"MemoryPanelActionFi...
method heapProfilingStarted (line 1) | heapProfilingStarted(){this.sendEvent({eventName:"MemoryPanelActionSta...
method heapProfilingFinished (line 1) | heapProfilingFinished(e){this.sendEvent({eventName:"MemoryPanelActionF...
method heapSamplingStarted (line 1) | heapSamplingStarted(){this.sendEvent({eventName:"MemoryPanelActionStar...
method heapSamplingFinished (line 1) | heapSamplingFinished(e){this.sendEvent({eventName:"MemoryPanelActionFi...
method stackTraceSymbolicationSucceeded (line 1) | stackTraceSymbolicationSucceeded(e){this.sendEvent({eventName:"StackTr...
method stackTraceSymbolicationFailed (line 1) | stackTraceSymbolicationFailed(e,r,t){this.sendEvent({eventName:"StackT...
method stackTraceFrameUrlResolutionSucceeded (line 1) | stackTraceFrameUrlResolutionSucceeded(){this.sendEvent({eventName:"Sta...
method stackTraceFrameUrlResolutionFailed (line 1) | stackTraceFrameUrlResolutionFailed(e){this.sendEvent({eventName:"Stack...
method manualBreakpointSetSucceeded (line 1) | manualBreakpointSetSucceeded(e){this.sendEvent({eventName:"ManualBreak...
method stackTraceFrameClicked (line 1) | stackTraceFrameClicked(e){this.sendEvent({eventName:"StackTraceFrameCl...
method panelShown (line 1) | panelShown(e,r){}
method panelShownInLocation (line 1) | panelShownInLocation(e,r){this.sendEvent({eventName:"PanelShown",param...
method #u (line 1) | #u(e){return{...e,...{timestamp:performance.timeOrigin+performance.now...
function Q (line 1) | function Q(e){const{url:r}=e;return"http"===e.scheme||"https"===e.scheme...
function Y (line 1) | function Y(e,r){if(r instanceof Error){return[`${e}: ${r.message}`,r]}co...
class me (line 1) | class me{#m;#g;#p;constructor(){this.#m=!1,this.#g=!1,this.#p=""}panelSh...
method constructor (line 1) | constructor(){this.#m=!1,this.#g=!1,this.#p=""}
method panelShown (line 1) | panelShown(e,r){const t=Z[e]||0;f.recordEnumeratedHistogram("DevTools....
method panelShownInLocation (line 1) | panelShownInLocation(e,r){const t=ee[`${e}-${r}`]||0;f.recordEnumerate...
method settingsPanelShown (line 1) | settingsPanelShown(e){this.panelShown("settings-"+e)}
method sourcesPanelFileDebugged (line 1) | sourcesPanelFileDebugged(e){const r=e&&te[e]||te.Unknown;f.recordEnume...
method sourcesPanelFileOpened (line 1) | sourcesPanelFileOpened(e){const r=e&&te[e]||te.Unknown;f.recordEnumera...
method networkPanelResponsePreviewOpened (line 1) | networkPanelResponsePreviewOpened(e){const r=e&&te[e]||te.Unknown;f.re...
method actionTaken (line 1) | actionTaken(e){f.recordEnumeratedHistogram("DevTools.ActionTaken",e,J....
method panelLoaded (line 1) | panelLoaded(e,r){this.#g||e!==this.#p||(this.#g=!0,requestAnimationFra...
method setLaunchPanel (line 1) | setLaunchPanel(e){this.#p=e}
method performanceTraceLoad (line 1) | performanceTraceLoad(e){f.recordPerformanceHistogram("DevTools.TraceLo...
method keybindSetSettingChanged (line 1) | keybindSetSettingChanged(e){const r=ne[e]||0;f.recordEnumeratedHistogr...
method keyboardShortcutFired (line 1) | keyboardShortcutFired(e){const r=oe[e]||oe.OtherShortcut;f.recordEnume...
method issuesPanelOpenedFrom (line 1) | issuesPanelOpenedFrom(e){f.recordEnumeratedHistogram("DevTools.IssuesP...
method issuesPanelIssueExpanded (line 1) | issuesPanelIssueExpanded(e){if(void 0===e)return;const r=ie[e];void 0!...
method issuesPanelResourceOpened (line 1) | issuesPanelResourceOpened(e,r){const t=ae[e+r];void 0!==t&&f.recordEnu...
method issueCreated (line 1) | issueCreated(e){const r=de[e];void 0!==r&&f.recordEnumeratedHistogram(...
method experimentEnabledAtLaunch (line 1) | experimentEnabledAtLaunch(e){const r=se[e];void 0!==r&&f.recordEnumera...
method navigationSettingAtFirstTimelineLoad (line 1) | navigationSettingAtFirstTimelineLoad(e){f.recordEnumeratedHistogram("D...
method experimentDisabledAtLaunch (line 1) | experimentDisabledAtLaunch(e){const r=se[e];void 0!==r&&f.recordEnumer...
method experimentChanged (line 1) | experimentChanged(e,r){const t=se[e];if(void 0===t)return;const n=r?"D...
method developerResourceLoaded (line 1) | developerResourceLoaded(e){e>=8||f.recordEnumeratedHistogram("DevTools...
method developerResourceScheme (line 1) | developerResourceScheme(e){e>=9||f.recordEnumeratedHistogram("DevTools...
method language (line 1) | language(e){const r=ce[e];void 0!==r&&f.recordEnumeratedHistogram("Dev...
method syncSetting (line 1) | syncSetting(e){f.getSyncInformation((r=>{let t=1;r.isSyncActive&&!r.ar...
method recordingAssertion (line 1) | recordingAssertion(e){f.recordEnumeratedHistogram("DevTools.RecordingA...
method recordingToggled (line 1) | recordingToggled(e){f.recordEnumeratedHistogram("DevTools.RecordingTog...
method recordingReplayFinished (line 1) | recordingReplayFinished(e){f.recordEnumeratedHistogram("DevTools.Recor...
method recordingReplaySpeed (line 1) | recordingReplaySpeed(e){f.recordEnumeratedHistogram("DevTools.Recordin...
method recordingReplayStarted (line 1) | recordingReplayStarted(e){f.recordEnumeratedHistogram("DevTools.Record...
method recordingEdited (line 1) | recordingEdited(e){f.recordEnumeratedHistogram("DevTools.RecordingEdit...
method recordingExported (line 1) | recordingExported(e){f.recordEnumeratedHistogram("DevTools.RecordingEx...
method recordingCodeToggled (line 1) | recordingCodeToggled(e){f.recordEnumeratedHistogram("DevTools.Recordin...
method recordingCopiedToClipboard (line 1) | recordingCopiedToClipboard(e){f.recordEnumeratedHistogram("DevTools.Re...
method cssHintShown (line 1) | cssHintShown(e){f.recordEnumeratedHistogram("DevTools.CSSHintShown",e,...
method lighthouseModeRun (line 1) | lighthouseModeRun(e){f.recordEnumeratedHistogram("DevTools.LighthouseM...
method lighthouseCategoryUsed (line 1) | lighthouseCategoryUsed(e){f.recordEnumeratedHistogram("DevTools.Lighth...
method swatchActivated (line 1) | swatchActivated(e){f.recordEnumeratedHistogram("DevTools.SwatchActivat...
method animationPlaybackRateChanged (line 1) | animationPlaybackRateChanged(e){f.recordEnumeratedHistogram("DevTools....
method animationPointDragged (line 1) | animationPointDragged(e){f.recordEnumeratedHistogram("DevTools.Animati...
method workspacesPopulated (line 1) | workspacesPopulated(e){f.recordPerformanceHistogram("DevTools.Workspac...
method visualLoggingProcessingDone (line 1) | visualLoggingProcessingDone(e){f.recordPerformanceHistogram("DevTools....
method freestylerQueryLength (line 1) | freestylerQueryLength(e){f.recordCountHistogram("DevTools.Freestyler.Q...
method freestylerEvalResponseSize (line 1) | freestylerEvalResponseSize(e){f.recordCountHistogram("DevTools.Freesty...
method Action (line 1) | get Action(){return J}
method DevtoolsExperiments (line 1) | get DevtoolsExperiments(){return se}
method ElementsSidebarTabCodes (line 1) | get ElementsSidebarTabCodes(){return re}
method IssueCreated (line 1) | get IssueCreated(){return de}
method IssueExpanded (line 1) | get IssueExpanded(){return ie}
method IssueResourceOpened (line 1) | get IssueResourceOpened(){return ae}
method KeybindSetSettings (line 1) | get KeybindSetSettings(){return ne}
method KeyboardShortcutAction (line 1) | get KeyboardShortcutAction(){return oe}
method Language (line 1) | get Language(){return ce}
method ManifestSectionCodes (line 1) | get ManifestSectionCodes(){return le}
method MediaTypes (line 1) | get MediaTypes(){return te}
method PanelCodes (line 1) | get PanelCodes(){return Z}
method PanelWithLocation (line 1) | get PanelWithLocation(){return ee}
FILE: packages/debugger-frontend/dist/third-party/front_end/core/i18n/i18n.js
class o (line 1) | class o{locale;lookupClosestDevToolsLocale;constructor(t){this.lookupClo...
method constructor (line 1) | constructor(t){this.lookupClosestDevToolsLocale=t.lookupClosestDevTool...
method instance (line 1) | static instance(t={create:!1}){if(!n&&!t.create)throw new Error("No La...
method removeInstance (line 1) | static removeInstance(){n=null}
method forceFallbackLocale (line 1) | forceFallbackLocale(){this.locale="en-US"}
method languageIsSupportedByDevTools (line 1) | languageIsSupportedByDevTools(t){return r(t,this.lookupClosestDevTools...
function r (line 1) | function r(t,i){const e=new Intl.Locale(t),n=new Intl.Locale(i);return e...
function s (line 1) | function s(t){let i;return{format:e=>(i||(i=new Intl.NumberFormat(o.inst...
function S (line 1) | function S(t,i,e={}){return t.getLocalizedStringSetFor(o.instance().loca...
function x (line 1) | function x(t,i){if(!isFinite(t))return"-";if(i&&t<.1)return T.format(1e3...
FILE: packages/debugger-frontend/dist/third-party/front_end/core/platform/platform.js
function e (line 1) | function e(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}
function t (line 1) | function t(r,n,o,i,a,s){if(i<=o)return;const l=function(t,r,n,o,i){const...
function r (line 1) | function r(e,t,r,n){const o=[];let i=0,a=0;for(;i<e.length&&a<t.length;)...
function n (line 1) | function n(e,t,r,n,o){let i=n||0,a=void 0!==o?o:e.length;for(;i<a;){cons...
function o (line 1) | function o(e,t,r){const n="END"===r;if(0===e.length)return null;let o=0,...
function t (line 1) | function t(e){return(e>9?"":"0")+e}
class p (line 1) | class p{map=new Map;set(e,t){let r=this.map.get(e);r||(r=new Set,this.ma...
method set (line 1) | set(e,t){let r=this.map.get(e);r||(r=new Set,this.map.set(e,r)),r.add(t)}
method get (line 1) | get(e){return this.map.get(e)||new Set}
method has (line 1) | has(e){return this.map.has(e)}
method hasValue (line 1) | hasValue(e,t){const r=this.map.get(e);return!!r&&r.has(t)}
method size (line 1) | get size(){return this.map.size}
method delete (line 1) | delete(e,t){const r=this.get(e);if(!r)return!1;const n=r.delete(t);ret...
method deleteAll (line 1) | deleteAll(e){this.map.delete(e)}
method keysArray (line 1) | keysArray(){return[...this.map.keys()]}
method keys (line 1) | keys(){return this.map.keys()}
method valuesArray (line 1) | valuesArray(){const e=[];for(const t of this.map.values())e.push(...t....
method clear (line 1) | clear(){this.map.clear()}
function m (line 1) | function m(e,t,r=0){for(let n=r;n<e.length;n++)if(t.includes(e[n]))retur...
function b (line 1) | function b(e,t,r=0){for(let n=r;n<e.length;n++)if(!t.includes(e[n]))retu...
function t (line 1) | function t(e){return e<26?e+65:e<52?e+71:e<62?e-4:62===e?43:63===e?47:65}
class R (line 1) | class R extends Uint32Array{getValue(e){return this[e]}setValue(e,t){thi...
method getValue (line 1) | getValue(e){return this[e]}
method setValue (line 1) | setValue(e,t){this[e]=t}
method asUint32ArrayOrFail (line 1) | asUint32ArrayOrFail(){return this}
method asArrayOrFail (line 1) | asArrayOrFail(){throw new Error("Not an array")}
class j (line 1) | class j{#e;#t;length;constructor(e,t){this.#e=[],this.length=e;let r=1;f...
method constructor (line 1) | constructor(e,t){this.#e=[],this.length=e;let r=1;for(;;){r*=2,this.#t...
method getValue (line 1) | getValue(e){if(e>=0&&e<this.length){const t=this.#t;return this.#e[Mat...
method setValue (line 1) | setValue(e,t){if(e>=0&&e<this.length){const r=this.#t;this.#e[Math.flo...
method asUint32ArrayOrFail (line 1) | asUint32ArrayOrFail(){throw new Error("Not a Uint32Array")}
method asArrayOrFail (line 1) | asArrayOrFail(){throw new Error("Not an array")}
class F (line 1) | class F extends Array{getValue(e){return this[e]}setValue(e,t){this[e]=t...
method getValue (line 1) | getValue(e){return this[e]}
method setValue (line 1) | setValue(e,t){this[e]=t}
method asUint32ArrayOrFail (line 1) | asUint32ArrayOrFail(){throw new Error("Not a Uint32Array")}
method asArrayOrFail (line 1) | asArrayOrFail(){return this}
class $ (line 1) | class $ extends Uint8Array{constructor(e){super("number"==typeof e?Math....
method constructor (line 1) | constructor(e){super("number"==typeof e?Math.ceil(e/8):e)}
method getBit (line 1) | getBit(e){return 0!==(this[e>>3]&1<<(7&e))}
method setBit (line 1) | setBit(e){this[e>>3]|=1<<(7&e)}
method clearBit (line 1) | clearBit(e){this[e>>3]&=~(1<<(7&e))}
method previous (line 1) | previous(e){for(;e!==e>>3<<3;)if(--e,this.getBit(e))return e;let t=(e>...
function V (line 1) | function V(e,t){if(null==e)throw new Error(`Expected given value to not ...
function k (line 1) | function k(e,t){throw new Error(t)}
function D (line 1) | function D(e){return e}
class K (line 1) | class K extends Error{message;constructor(e){super(e),this.message=e}}
method constructor (line 1) | constructor(e){super(e),this.message=e}
FILE: packages/debugger-frontend/dist/third-party/front_end/core/protocol_client/protocol_client.js
class n (line 1) | class n{static patch(i){!function i(o,r){o.url&&n.isPlatformPath(o.url,t...
method patch (line 1) | static patch(i){!function i(o,r){o.url&&n.isPlatformPath(o.url,t.Platf...
method isPlatformPath (line 1) | static isPlatformPath(e,t){if(t){return/^([a-z]:[\/\\]|\\\\)/i.test(e)...
class l (line 1) | class l{agentPrototypes=new Map;#e=!1;#t=new Map;typeMap=new Map;enumMap...
method getOrCreateEventParameterNamesForDomain (line 1) | getOrCreateEventParameterNamesForDomain(e){let t=this.#t.get(e);return...
method getOrCreateEventParameterNamesForDomainForTesting (line 1) | getOrCreateEventParameterNamesForDomainForTesting(e){return this.getOr...
method getEventParameterNames (line 1) | getEventParameterNames(){return this.#t}
method reportProtocolError (line 1) | static reportProtocolError(e,t){console.error(e+": "+JSON.stringify(t))}
method reportProtocolWarning (line 1) | static reportProtocolWarning(e,t){console.warn(e+": "+JSON.stringify(t))}
method isInitialized (line 1) | isInitialized(){return this.#e}
method agentPrototype (line 1) | agentPrototype(e){let t=this.agentPrototypes.get(e);return t||(t=new y...
method registerCommand (line 1) | registerCommand(e,t,n,i){const[o,r]=s(e);this.agentPrototype(o).regist...
method registerEnum (line 1) | registerEnum(e,t){const[n,i]=s(e);globalThis.Protocol[n]||(globalThis....
method registerType (line 1) | registerType(e,t){this.typeMap.set(e,t),this.#e=!0}
method registerEvent (line 1) | registerEvent(e,t){const n=e.split(".")[0];this.getOrCreateEventParame...
class m (line 1) | class m{#n;#i=1;#o=0;#r=new Set;#a=new Map;#s=[];constructor(e){this.#n=...
method constructor (line 1) | constructor(e){this.#n=e,c.deprecatedRunAfterPendingDispatches=this.de...
method registerSession (line 1) | registerSession(e,t,n){if(n)for(const e of this.#a.values())if(e.proxy...
method unregisterSession (line 1) | unregisterSession(e){const t=this.#a.get(e);if(t){for(const e of t.cal...
method getTargetBySessionId (line 1) | getTargetBySessionId(e){const t=this.#a.get(e||"");return t?t.target:n...
method nextMessageId (line 1) | nextMessageId(){return this.#i++}
method connection (line 1) | connection(){return this.#n}
method sendMessage (line 1) | sendMessage(e,t,n,i,o){const r=this.nextMessageId(),a={id:r,method:n};...
method sendRawMessageForTesting (line 1) | sendRawMessageForTesting(e,t,n,i=""){const o=e.split(".")[0];this.send...
method onMessage (line 1) | onMessage(e){if(c.dumpProtocol&&c.dumpProtocol("backend: "+("string"==...
method hasOutstandingNonLongPollingRequests (line 1) | hasOutstandingNonLongPollingRequests(){return this.#o-this.#r.size>0}
method deprecatedRunAfterPendingDispatches (line 1) | deprecatedRunAfterPendingDispatches(e){e&&this.#s.push(e),window.setTi...
method executeAfterPendingDispatches (line 1) | executeAfterPendingDispatches(){if(!this.hasOutstandingNonLongPollingR...
method dispatchConnectionError (line 1) | static dispatchConnectionError(e,t){const n={message:`Connection is cl...
method dispatchUnregisterSessionError (line 1) | static dispatchUnregisterSessionError({callback:e,method:t}){const n={...
class y (line 1) | class y{replyArgs;description="";metadata;domain;target;constructor(e){t...
method constructor (line 1) | constructor(e){this.replyArgs={},this.domain=e,this.metadata={}}
method registerCommand (line 1) | registerCommand(e,t,n,i){const o=p(this.domain,e);this[e]=function(......
method prepareParameters (line 1) | prepareParameters(e,t,n,i){const o={};let r=!1;for(const a of t){const...
method sendMessageToBackendPromise (line 1) | sendMessageToBackendPromise(e,t,n){let i;const s=this.prepareParameter...
method invoke (line 1) | invoke(e,t){return new Promise((n=>{const i=(t,i)=>{t&&!c.suppressRequ...
class g (line 1) | class g{#p;#l=[];constructor(e){this.#p=e}addDomainDispatcher(e){this.#l...
method constructor (line 1) | constructor(e){this.#p=e}
method addDomainDispatcher (line 1) | addDomainDispatcher(e){this.#l.push(e)}
method removeDomainDispatcher (line 1) | removeDomainDispatcher(e){const t=this.#l.indexOf(e);-1!==t&&this.#l.s...
method dispatch (line 1) | dispatch(e,t){if(this.#l.length)if(this.#p.has(t.method))for(let n=0;n...
method constructor (line 1) | constructor(){}
method setOnMessage (line 1) | setOnMessage(e){}
method setOnDisconnect (line 1) | setOnDisconnect(e){}
method sendRawMessage (line 1) | sendRawMessage(e){}
method disconnect (line 1) | disconnect(){throw new Error("not implemented")}
method setFactory (line 1) | static setFactory(e){d=e}
method getFactory (line 1) | static getFactory(){return d}
method constructor (line 1) | constructor(e,t,n,i){if(this.needsNodeJSPatching=e,this.sessionId=n,!t&&...
method dispatch (line 1) | dispatch(e){const[t,n]=s(e.method),i=this.#l.get(t);i?i.dispatch(n,e):l....
method dispose (line 1) | dispose(e){this.routerInternal&&(this.routerInternal.unregisterSession(t...
method isDisposed (line 1) | isDisposed(){return!this.routerInternal}
method markAsNodeJSForTest (line 1) | markAsNodeJSForTest(){this.needsNodeJSPatching=!0}
method router (line 1) | router(){return this.routerInternal}
method getAgent (line 1) | getAgent(e){const t=this.#d.get(e);if(!t)throw new Error("Accessing unde...
method accessibilityAgent (line 1) | accessibilityAgent(){return this.getAgent("Accessibility")}
method animationAgent (line 1) | animationAgent(){return this.getAgent("Animation")}
method auditsAgent (line 1) | auditsAgent(){return this.getAgent("Audits")}
method autofillAgent (line 1) | autofillAgent(){return this.getAgent("Autofill")}
method browserAgent (line 1) | browserAgent(){return this.getAgent("Browser")}
method backgroundServiceAgent (line 1) | backgroundServiceAgent(){return this.getAgent("BackgroundService")}
method cacheStorageAgent (line 1) | cacheStorageAgent(){return this.getAgent("CacheStorage")}
method cssAgent (line 1) | cssAgent(){return this.getAgent("CSS")}
method debuggerAgent (line 1) | debuggerAgent(){return this.getAgent("Debugger")}
method deviceOrientationAgent (line 1) | deviceOrientationAgent(){return this.getAgent("DeviceOrientation")}
method domAgent (line 1) | domAgent(){return this.getAgent("DOM")}
method domdebuggerAgent (line 1) | domdebuggerAgent(){return this.getAgent("DOMDebugger")}
method domsnapshotAgent (line 1) | domsnapshotAgent(){return this.getAgent("DOMSnapshot")}
method domstorageAgent (line 1) | domstorageAgent(){return this.getAgent("DOMStorage")}
method emulationAgent (line 1) | emulationAgent(){return this.getAgent("Emulation")}
method eventBreakpointsAgent (line 1) | eventBreakpointsAgent(){return this.getAgent("EventBreakpoints")}
method extensionsAgent (line 1) | extensionsAgent(){return this.getAgent("Extensions")}
method fetchAgent (line 1) | fetchAgent(){return this.getAgent("Fetch")}
method heapProfilerAgent (line 1) | heapProfilerAgent(){return this.getAgent("HeapProfiler")}
method indexedDBAgent (line 1) | indexedDBAgent(){return this.getAgent("IndexedDB")}
method inputAgent (line 1) | inputAgent(){return this.getAgent("Input")}
method ioAgent (line 1) | ioAgent(){return this.getAgent("IO")}
method inspectorAgent (line 1) | inspectorAgent(){return this.getAgent("Inspector")}
method layerTreeAgent (line 1) | layerTreeAgent(){return this.getAgent("LayerTree")}
method logAgent (line 1) | logAgent(){return this.getAgent("Log")}
method mediaAgent (line 1) | mediaAgent(){return this.getAgent("Media")}
method memoryAgent (line 1) | memoryAgent(){return this.getAgent("Memory")}
method networkAgent (line 1) | networkAgent(){return this.getAgent("Network")}
method overlayAgent (line 1) | overlayAgent(){return this.getAgent("Overlay")}
method pageAgent (line 1) | pageAgent(){return this.getAgent("Page")}
method preloadAgent (line 1) | preloadAgent(){return this.getAgent("Preload")}
method profilerAgent (line 1) | profilerAgent(){return this.getAgent("Profiler")}
method performanceAgent (line 1) | performanceAgent(){return this.getAgent("Performance")}
method reactNativeApplicationAgent (line 1) | reactNativeApplicationAgent(){return this.getAgent("ReactNativeApplicati...
method runtimeAgent (line 1) | runtimeAgent(){return this.getAgent("Runtime")}
method securityAgent (line 1) | securityAgent(){return this.getAgent("Security")}
method serviceWorkerAgent (line 1) | serviceWorkerAgent(){return this.getAgent("ServiceWorker")}
method storageAgent (line 1) | storageAgent(){return this.getAgent("Storage")}
method systemInfo (line 1) | systemInfo(){return this.getAgent("SystemInfo")}
method targetAgent (line 1) | targetAgent(){return this.getAgent("Target")}
method tracingAgent (line 1) | tracingAgent(){return this.getAgent("Tracing")}
method webAudioAgent (line 1) | webAudioAgent(){return this.getAgent("WebAudio")}
method webAuthnAgent (line 1) | webAuthnAgent(){return this.getAgent("WebAuthn")}
method registerDispatcher (line 1) | registerDispatcher(e,t){const n=this.#l.get(e);n&&n.addDomainDispatcher(t)}
method unregisterDispatcher (line 1) | unregisterDispatcher(e,t){const n=this.#l.get(e);n&&n.removeDomainDispat...
method registerAccessibilityDispatcher (line 1) | registerAccessibilityDispatcher(e){this.registerDispatcher("Accessibilit...
method registerAutofillDispatcher (line 1) | registerAutofillDispatcher(e){this.registerDispatcher("Autofill",e)}
method registerAnimationDispatcher (line 1) | registerAnimationDispatcher(e){this.registerDispatcher("Animation",e)}
method registerAuditsDispatcher (line 1) | registerAuditsDispatcher(e){this.registerDispatcher("Audits",e)}
method registerCSSDispatcher (line 1) | registerCSSDispatcher(e){this.registerDispatcher("CSS",e)}
method registerBackgroundServiceDispatcher (line 1) | registerBackgroundServiceDispatcher(e){this.registerDispatcher("Backgrou...
method registerDebuggerDispatcher (line 1) | registerDebuggerDispatcher(e){this.registerDispatcher("Debugger",e)}
method unregisterDebuggerDispatcher (line 1) | unregisterDebuggerDispatcher(e){this.unregisterDispatcher("Debugger",e)}
method registerDOMDispatcher (line 1) | registerDOMDispatcher(e){this.registerDispatcher("DOM",e)}
method registerDOMStorageDispatcher (line 1) | registerDOMStorageDispatcher(e){this.registerDispatcher("DOMStorage",e)}
method registerFetchDispatcher (line 1) | registerFetchDispatcher(e){this.registerDispatcher("Fetch",e)}
method registerHeapProfilerDispatcher (line 1) | registerHeapProfilerDispatcher(e){this.registerDispatcher("HeapProfiler"...
method registerInspectorDispatcher (line 1) | registerInspectorDispatcher(e){this.registerDispatcher("Inspector",e)}
method registerLayerTreeDispatcher (line 1) | registerLayerTreeDispatcher(e){this.registerDispatcher("LayerTree",e)}
method registerLogDispatcher (line 1) | registerLogDispatcher(e){this.registerDispatcher("Log",e)}
method registerMediaDispatcher (line 1) | registerMediaDispatcher(e){this.registerDispatcher("Media",e)}
method registerNetworkDispatcher (line 1) | registerNetworkDispatcher(e){this.registerDispatcher("Network",e)}
method registerOverlayDispatcher (line 1) | registerOverlayDispatcher(e){this.registerDispatcher("Overlay",e)}
method registerPageDispatcher (line 1) | registerPageDispatcher(e){this.registerDispatcher("Page",e)}
method registerPreloadDispatcher (line 1) | registerPreloadDispatcher(e){this.registerDispatcher("Preload",e)}
method registerProfilerDispatcher (line 1) | registerProfilerDispatcher(e){this.registerDispatcher("Profiler",e)}
method registerReactNativeApplicationDispatcher (line 1) | registerReactNativeApplicationDispatcher(e){this.registerDispatcher("Rea...
method registerRuntimeDispatcher (line 1) | registerRuntimeDispatcher(e){this.registerDispatcher("Runtime",e)}
method registerSecurityDispatcher (line 1) | registerSecurityDispatcher(e){this.registerDispatcher("Security",e)}
method registerServiceWorkerDispatcher (line 1) | registerServiceWorkerDispatcher(e){this.registerDispatcher("ServiceWorke...
method registerStorageDispatcher (line 1) | registerStorageDispatcher(e){this.registerDispatcher("Storage",e)}
method registerTargetDispatcher (line 1) | registerTargetDispatcher(e){this.registerDispatcher("Target",e)}
method registerTracingDispatcher (line 1) | registerTracingDispatcher(e){this.registerDispatcher("Tracing",e)}
method registerWebAudioDispatcher (line 1) | registerWebAudioDispatcher(e){this.registerDispatcher("WebAudio",e)}
method registerWebAuthnDispatcher (line 1) | registerWebAuthnDispatcher(e){this.registerDispatcher("WebAuthn",e)}
method getNeedsNodeJSPatching (line 1) | getNeedsNodeJSPatching(){return this.needsNodeJSPatching}
FILE: packages/debugger-frontend/dist/third-party/front_end/core/rn_experiments/rn_experiments.js
class n (line 1) | class n{name;title;unstable;docLink;feedbackLink;enabledByDefault;constr...
method constructor (line 1) | constructor(e){this.name=e.name,this.title=e.title,this.unstable=e.uns...
method register (line 1) | register(e){if(i.didInitializeExperiments)throw new Error("Experiments m...
method enableExperimentsByDefault (line 1) | enableExperimentsByDefault(e){if(i.didInitializeExperiments)throw new Er...
method copyInto (line 1) | copyInto(e,t=""){for(const[n,r]of this.#e)e.register(n,t+r.title,r.unsta...
FILE: packages/debugger-frontend/dist/third-party/front_end/core/root/root.js
function i (line 1) | function i(){return window.location.pathname}
function a (line 1) | function a(e){return["node_app","js_app"].some((t=>e.includes(t)))}
class o (line 1) | class o{constructor(){}static instance(e={forceNew:null}){const{forceNew...
method constructor (line 1) | constructor(){}
method instance (line 1) | static instance(e={forceNew:null}){const{forceNew:t}=e;return n&&!t||(...
method removeInstance (line 1) | static removeInstance(){n=void 0}
method queryParam (line 1) | static queryParam(e){return t.get(e)}
method setQueryParamForTesting (line 1) | static setQueryParamForTesting(e,n){t.set(e,n)}
method isNode (line 1) | static isNode(){return void 0===r&&(r=a(i())),r}
method setPlatform (line 1) | static setPlatform(e){s=e}
method platform (line 1) | static platform(){return s}
method isDescriptorEnabled (line 1) | static isDescriptorEnabled(e){const{experiment:t}=e;if("*"===t)return!...
method loadLegacyModule (line 1) | loadLegacyModule(e){console.log("Loading legacy module: "+e);return im...
class l (line 1) | class l{#e=[];#t=new Set;#n=new Set;#r=new Set;#s=new Set;#i=new c;allCo...
method allConfigurableExperiments (line 1) | allConfigurableExperiments(){const e=[];for(const t of this.#e)this.#n...
method register (line 1) | register(t,n,r,s,i){if(this.#t.has(t))throw new Error(`Duplicate regis...
method isEnabled (line 1) | isEnabled(e){return this.checkExperiment(e),!1!==this.#i.get(e)&&(!(!t...
method setEnabled (line 1) | setEnabled(e,t){this.checkExperiment(e),this.#i.set(e,t)}
method enableExperimentsTransiently (line 1) | enableExperimentsTransiently(e){for(const t of e)this.checkExperiment(...
method enableExperimentsByDefault (line 1) | enableExperimentsByDefault(e){for(const t of e)this.checkExperiment(t)...
method setServerEnabledExperiments (line 1) | setServerEnabledExperiments(e){for(const t of e)this.checkExperiment(t...
method enableForTest (line 1) | enableForTest(e){this.checkExperiment(e),this.#n.add(e)}
method disableForTest (line 1) | disableForTest(e){this.checkExperiment(e),this.#n.delete(e)}
method clearForTest (line 1) | clearForTest(){this.#e=[],this.#t.clear(),this.#n.clear(),this.#r.clea...
method cleanUpStaleExperiments (line 1) | cleanUpStaleExperiments(){this.#i.cleanUpStaleExperiments(this.#t)}
method checkExperiment (line 1) | checkExperiment(e){if(!this.#t.has(e))throw new Error(`Unknown experim...
class c (line 1) | class c{#e={};constructor(){try{const e=self.localStorage?.getItem("expe...
method constructor (line 1) | constructor(){try{const e=self.localStorage?.getItem("experiments");e&...
method get (line 1) | get(e){return this.#e[e]}
method set (line 1) | set(e,t){this.#e[e]=t,this.#a()}
method cleanUpStaleExperiments (line 1) | cleanUpStaleExperiments(e){for(const[t]of Object.entries(this.#e))e.ha...
method #a (line 1) | #a(){self.localStorage?.setItem("experiments",JSON.stringify(this.#e))}
class m (line 1) | class m{name;title;unstable;docLink;feedbackLink;#e;constructor(e,t,n,r,...
method constructor (line 1) | constructor(e,t,n,r,s,i){this.name=t,this.title=n,this.unstable=r,this...
method isEnabled (line 1) | isEnabled(){return this.#e.isEnabled(this.name)}
method setEnabled (line 1) | setEnabled(e){this.#e.setEnabled(this.name,e)}
method ConditionName (line 1) | get ConditionName(){return p}
method GenAiEnterprisePolicyValue (line 1) | get GenAiEnterprisePolicyValue(){return d}
method HostConfigFreestylerExecutionMode (line 1) | get HostConfigFreestylerExecutionMode(){return u}
method RNExperimentName (line 1) | get RNExperimentName(){return E}
FILE: packages/debugger-frontend/dist/third-party/front_end/core/sdk/sdk.js
class h (line 1) | class h extends e.ObjectWrapper.ObjectWrapper{#e;constructor(e){super(),...
method constructor (line 1) | constructor(e){super(),this.#e=e}
method target (line 1) | target(){return this.#e}
method preSuspendModel (line 1) | async preSuspendModel(e){}
method suspendModel (line 1) | async suspendModel(e){}
method resumeModel (line 1) | async resumeModel(){}
method postResumeModel (line 1) | async postResumeModel(){}
method dispose (line 1) | dispose(){}
method register (line 1) | static register(e,t){if(t.early&&!t.autostart)throw new Error(`Error r...
method registeredModels (line 1) | static get registeredModels(){return c}
class f (line 1) | class f{#t=[];#n=new Map;#r=new Map;#s=new Set;#i=new Set;#o=new Map;#a=...
method constructor (line 1) | constructor(e,t){this.#a=t;for(let t=0;t<e.length;++t){const n=e[t],r=...
method isCSSWideKeyword (line 1) | static isCSSWideKeyword(e){return y.includes(e)}
method isPositionTryOrderKeyword (line 1) | static isPositionTryOrderKeyword(e){return v.includes(e)}
method sortPrefixesAndCSSWideKeywordsToEnd (line 1) | static sortPrefixesAndCSSWideKeywordsToEnd(e,t){const n=f.isCSSWideKey...
method allProperties (line 1) | allProperties(){return this.#t}
method aliasesFor (line 1) | aliasesFor(){return this.#a}
method nameValuePresets (line 1) | nameValuePresets(e){return e?this.#d:this.#l}
method isSVGProperty (line 1) | isSVGProperty(e){return e=e.toLowerCase(),this.#i.has(e)}
method getLonghands (line 1) | getLonghands(e){return this.#n.get(e)||null}
method getShorthands (line 1) | getShorthands(e){return this.#r.get(e)||null}
method isColorAwareProperty (line 1) | isColorAwareProperty(e){return E.has(e.toLowerCase())||this.isCustomPr...
method isFontFamilyProperty (line 1) | isFontFamilyProperty(e){return"font-family"===e.toLowerCase()}
method isAngleAwareProperty (line 1) | isAngleAwareProperty(e){const t=e.toLowerCase();return E.has(t)||L.has...
method isGridAreaDefiningProperty (line 1) | isGridAreaDefiningProperty(e){return"grid"===(e=e.toLowerCase())||"gri...
method isGridColumnNameAwareProperty (line 1) | isGridColumnNameAwareProperty(e){return e=e.toLowerCase(),["grid-colum...
method isGridRowNameAwareProperty (line 1) | isGridRowNameAwareProperty(e){return e=e.toLowerCase(),["grid-row","gr...
method isGridAreaNameAwareProperty (line 1) | isGridAreaNameAwareProperty(e){return"grid-area"===(e=e.toLowerCase())}
method isGridNameAwareProperty (line 1) | isGridNameAwareProperty(e){return this.isGridAreaNameAwareProperty(e)|...
method isLengthProperty (line 1) | isLengthProperty(e){return"line-height"!==(e=e.toLowerCase())&&(T.has(...
method isBezierAwareProperty (line 1) | isBezierAwareProperty(e){return e=e.toLowerCase(),M.has(e)||this.isCus...
method isFontAwareProperty (line 1) | isFontAwareProperty(e){return e=e.toLowerCase(),P.has(e)||this.isCusto...
method isCustomProperty (line 1) | isCustomProperty(e){return e.startsWith("--")}
method isShadowProperty (line 1) | isShadowProperty(e){return"box-shadow"===(e=e.toLowerCase())||"text-sh...
method isStringProperty (line 1) | isStringProperty(e){return"content"===(e=e.toLowerCase())}
method canonicalPropertyName (line 1) | canonicalPropertyName(e){if(this.isCustomProperty(e))return e;e=e.toLo...
method isCSSPropertyName (line 1) | isCSSPropertyName(e){return!!((e=e.toLowerCase()).startsWith("--")&&e....
method isPropertyInherited (line 1) | isPropertyInherited(e){return(e=e.toLowerCase()).startsWith("--")||thi...
method specificPropertyValues (line 1) | specificPropertyValues(e){const t=e.replace(/^-webkit-/,""),n=this.#o;...
method getPropertyValues (line 1) | getPropertyValues(t){t=t.toLowerCase();const n=[...this.specificProper...
method propertyUsageWeight (line 1) | propertyUsageWeight(e){return N.get(e)||N.get(this.canonicalPropertyNa...
method getValuePreset (line 1) | getValuePreset(e,t){const n=R.get(e);let r=n?n.get(t):null;if(!r)retur...
method isHighlightPseudoType (line 1) | isHighlightPseudoType(e){return"highlight"===e||"selection"===e||"targ...
function S (line 1) | function S(){if(!w){w=new f(g,m)}return w}
class H (line 1) | class H{#h;#u;#g;#p=new Map;#m=0;#f;#b=null;#y;constructor(e,t,n,r,s){th...
method constructor (line 1) | constructor(e,t,n,r,s){this.#h=e,this.#u=t,this.#g=n,this.#f=r||"Mediu...
method fromProtocolCookie (line 1) | static fromProtocolCookie(e){const t=new H(e.name,e.value,null,e.prior...
method key (line 1) | key(){return(this.domain()||"-")+" "+this.name()+" "+(this.path()||"-"...
method name (line 1) | name(){return this.#h}
method value (line 1) | value(){return this.#u}
method type (line 1) | type(){return this.#g}
method httpOnly (line 1) | httpOnly(){return this.#p.has("http-only")}
method secure (line 1) | secure(){return this.#p.has("secure")}
method partitioned (line 1) | partitioned(){return this.#p.has("partitioned")||Boolean(this.partitio...
method sameSite (line 1) | sameSite(){return this.#p.get("same-site")}
method partitionKey (line 1) | partitionKey(){return this.#y}
method setPartitionKey (line 1) | setPartitionKey(e,t){this.#y={topLevelSite:e,hasCrossSiteAncestor:t},t...
method topLevelSite (line 1) | topLevelSite(){return this.#y?this.#y?.topLevelSite:""}
method setTopLevelSite (line 1) | setTopLevelSite(e,t){this.setPartitionKey(e,t)}
method hasCrossSiteAncestor (line 1) | hasCrossSiteAncestor(){return!!this.#y&&this.#y?.hasCrossSiteAncestor}
method setHasCrossSiteAncestor (line 1) | setHasCrossSiteAncestor(e){this.partitionKey()&&Boolean(this.topLevelS...
method partitionKeyOpaque (line 1) | partitionKeyOpaque(){return!!this.#y&&this.topLevelSite()===_}
method setPartitionKeyOpaque (line 1) | setPartitionKeyOpaque(){this.addAttribute("partition-key",_),this.setP...
method priority (line 1) | priority(){return this.#f}
method session (line 1) | session(){return!(this.#p.has("expires")||this.#p.has("max-age"))}
method path (line 1) | path(){return this.#p.get("path")}
method domain (line 1) | domain(){return this.#p.get("domain")}
method expires (line 1) | expires(){return this.#p.get("expires")}
method maxAge (line 1) | maxAge(){return this.#p.get("max-age")}
method sourcePort (line 1) | sourcePort(){return this.#p.get("source-port")}
method sourceScheme (line 1) | sourceScheme(){return this.#p.get("source-scheme")}
method size (line 1) | size(){return this.#m}
method url (line 1) | url(){if(!this.domain()||!this.path())return null;let e="";const t=thi...
method setSize (line 1) | setSize(e){this.#m=e}
method expiresDate (line 1) | expiresDate(e){return this.maxAge()?new Date(e.getTime()+1e3*this.maxA...
method addAttribute (line 1) | addAttribute(e,t){if(e)if("priority"===e)this.#f=t;else this.#p.set(e,t)}
method hasAttribute (line 1) | hasAttribute(e){return this.#p.has(e)}
method getAttribute (line 1) | getAttribute(e){return this.#p.get(e)}
method setCookieLine (line 1) | setCookieLine(e){this.#b=e}
method getCookieLine (line 1) | getCookieLine(){return this.#b}
method matchesSecurityOrigin (line 1) | matchesSecurityOrigin(e){const t=new URL(e).hostname;return H.isDomain...
method isDomainMatch (line 1) | static isDomainMatch(e,t){return t===e||!(!e||"."!==e[0])&&(e.substr(1...
class z (line 1) | class z extends l.InspectorBackend.TargetBase{#v;#h;#I=r.DevToolsPath.Em...
method constructor (line 1) | constructor(t,n,r,s,i,o,a,l,d){switch(super(s===U.NODE,i,o,l),this.#v=...
method createModels (line 1) | createModels(e){this.#P=!0;const t=Array.from(h.registeredModels.entri...
method id (line 1) | id(){return this.#C}
method name (line 1) | name(){return this.#h||this.#w}
method setName (line 1) | setName(e){this.#h!==e&&(this.#h=e,this.#v.onNameChange(this))}
method type (line 1) | type(){return this.#g}
method markAsNodeJSForTest (line 1) | markAsNodeJSForTest(){super.markAsNodeJSForTest(),this.#g=U.NODE}
method targetManager (line 1) | targetManager(){return this.#v}
method hasAllCapabilities (line 1) | hasAllCapabilities(e){return(this.#S&e)===e}
method decorateLabel (line 1) | decorateLabel(e){return this.#g===U.Worker||this.#g===U.ServiceWorker?...
method parentTarget (line 1) | parentTarget(){return this.#k}
method outermostTarget (line 1) | outermostTarget(){let e=null,t=this;do{t.type()!==U.TAB&&t.type()!==U....
method dispose (line 1) | dispose(e){super.dispose(e),this.#v.removeTarget(this);for(const e of ...
method model (line 1) | model(e){if(!this.#x.get(e)){const t=h.registeredModels.get(e);if(void...
method models (line 1) | models(){return this.#x}
method inspectedURL (line 1) | inspectedURL(){return this.#I}
method setInspectedURL (line 1) | setInspectedURL(t){this.#I=t;const n=e.ParsedURL.ParsedURL.fromString(...
method hasCrashed (line 1) | hasCrashed(){return this.#T}
method setHasCrashed (line 1) | setHasCrashed(e){const t=this.#T;this.#T=e,t&&!e&&this.resume()}
method suspend (line 1) | async suspend(e){this.#R||(this.#R=!0,this.#T||(await Promise.all(Arra...
method resume (line 1) | async resume(){this.#R&&(this.#R=!1,this.#T||(await Promise.all(Array....
method suspended (line 1) | suspended(){return this.#R}
method updateTargetInfo (line 1) | updateTargetInfo(e){this.#M=e}
method targetInfo (line 1) | targetInfo(){return this.#M}
method Type (line 1) | get Type(){return U}
class W (line 1) | class W extends e.ObjectWrapper.ObjectWrapper{#E;#L;#A;#O;#D;#R;#N;#F;#B...
method constructor (line 1) | constructor(){super(),this.#E=new Set,this.#L=new Set,this.#A=new r.Ma...
method instance (line 1) | static instance({forceNew:e}={forceNew:!1}){return V&&!e||(V=new W),V}
method removeInstance (line 1) | static removeInstance(){V=void 0}
method onInspectedURLChange (line 1) | onInspectedURLChange(e){e===this.#F&&(a.InspectorFrontendHost.Inspecto...
method onNameChange (line 1) | onNameChange(e){this.dispatchEventToListeners("NameChanged",e)}
method suspendAllTargets (line 1) | async suspendAllTargets(e){if(this.#R)return;this.#R=!0,this.dispatchE...
method resumeAllTargets (line 1) | async resumeAllTargets(){if(!this.#R)return;this.#R=!1,this.dispatchEv...
method allTargetsSuspended (line 1) | allTargetsSuspended(){return this.#R}
method models (line 1) | models(e,t){const n=[];for(const r of this.#E){if(t?.scoped&&!this.isI...
method inspectedURL (line 1) | inspectedURL(){const e=this.primaryPageTarget();return e?e.inspectedUR...
method observeModels (line 1) | observeModels(e,t,n){const r=this.models(e,n);this.#O.set(e,t),n?.scop...
method unobserveModels (line 1) | unobserveModels(e,t){this.#O.delete(e,t),this.#D.delete(t)}
method modelAdded (line 1) | modelAdded(e,t,n,r){for(const e of this.#O.get(t).values())this.#D.has...
method modelRemoved (line 1) | modelRemoved(e,t,n,r){for(const e of this.#O.get(t).values())this.#D.h...
method addModelListener (line 1) | addModelListener(e,t,n,r,s){const i=e=>{s?.scoped&&!this.isInScope(e)|...
method removeModelListener (line 1) | removeModelListener(e,t,n,r){if(!this.#A.has(t))return;let s=null;for(...
method observeTargets (line 1) | observeTargets(e,t){if(this.#L.has(e))throw new Error("Observer can on...
method unobserveTargets (line 1) | unobserveTargets(e){this.#L.delete(e),this.#D.delete(e)}
method createTarget (line 1) | createTarget(e,t,n,r,s,i,o,a){const l=new z(this,e,t,n,r,s||"",this.#R...
method removeTarget (line 1) | removeTarget(e){if(!this.#E.has(e))return;const t=this.isInScope(e);th...
method targets (line 1) | targets(){return[...this.#E]}
method targetById (line 1) | targetById(e){return this.targets().find((t=>t.id()===e))||null}
method rootTarget (line 1) | rootTarget(){return 0===this.#E.size?null:this.#E.values().next().valu...
method primaryPageTarget (line 1) | primaryPageTarget(){let e=this.rootTarget();return e?.type()===U.TAB&&...
method browserTarget (line 1) | browserTarget(){return this.#N}
method maybeAttachInitialTarget (line 1) | async maybeAttachInitialTarget(){if(!Boolean(o.Runtime.Runtime.queryPa...
method clearAllTargetsForTest (line 1) | clearAllTargetsForTest(){this.#E.clear()}
method isInScope (line 1) | isInScope(e){if(!e)return!1;for(function(e){return"source"in e&&e.sour...
method setScopeTarget (line 1) | setScopeTarget(e){if(e!==this.#F){for(const e of this.targets())if(thi...
method addScopeChangeListener (line 1) | addScopeChangeListener(e){this.#_.add(e)}
method scopeTarget (line 1) | scopeTarget(){return this.#F}
method targetAdded (line 1) | targetAdded(e){}
method targetRemoved (line 1) | targetRemoved(e){}
method modelAdded (line 1) | modelAdded(e){}
method modelRemoved (line 1) | modelRemoved(e){}
class Z (line 1) | class Z extends h{dispatcher;fetchDispatcher;#H;#U;constructor(t){super(...
method constructor (line 1) | constructor(t){super(t),this.dispatcher=new le(this),this.fetchDispatc...
method forRequest (line 1) | static forRequest(e){return J.get(e)||null}
method canReplayRequest (line 1) | static canReplayRequest(t){return Boolean(J.get(t))&&Boolean(t.backend...
method replayRequest (line 1) | static replayRequest(e){const t=J.get(e),n=e.backendRequestId();t&&n&&...
method searchInRequest (line 1) | static async searchInRequest(e,n,r,s){const i=Z.forRequest(e),o=e.back...
method requestContentData (line 1) | static async requestContentData(n){if(n.resourceType()===e.ResourceTyp...
method streamResponseBody (line 1) | static async streamResponseBody(e){if(e.finished)return{error:"Streami...
method requestPostData (line 1) | static async requestPostData(e){const t=Z.forRequest(e);if(!t)return c...
method connectionType (line 1) | static connectionType(e){if(!e.download&&!e.upload)return"none";try{co...
method lowercaseHeaders (line 1) | static lowercaseHeaders(e){const t={};for(const n in e)t[n.toLowerCase...
method requestForURL (line 1) | requestForURL(e){return this.dispatcher.requestForURL(e)}
method requestForId (line 1) | requestForId(e){return this.dispatcher.requestForId(e)}
method requestForLoaderId (line 1) | requestForLoaderId(e){return this.dispatcher.requestForLoaderId(e)}
method cacheDisabledSettingChanged (line 1) | cacheDisabledSettingChanged({data:e}){this.#H.invoke_setCacheDisabled(...
method cookieControlFlagsSettingChanged (line 1) | cookieControlFlagsSettingChanged(){const t=Boolean(e.Settings.Settings...
method dispose (line 1) | dispose(){e.Settings.Settings.instance().moduleSetting("cache-disabled...
method bypassServiceWorkerChanged (line 1) | bypassServiceWorkerChanged(){this.#H.invoke_setBypassServiceWorker({by...
method getSecurityIsolationStatus (line 1) | async getSecurityIsolationStatus(e){const t=await this.#H.invoke_getSe...
method enableReportingApi (line 1) | async enableReportingApi(e=!0){return await this.#H.invoke_enableRepor...
method loadNetworkResource (line 1) | async loadNetworkResource(e,t,n){const r=await this.#H.invoke_loadNetw...
method clearRequests (line 1) | clearRequests(){this.dispatcher.clearRequests()}
class ae (line 1) | class ae{#q;#z;constructor(e,t){this.#q=e,this.#z=t}requestPaused({reque...
method constructor (line 1) | constructor(e,t){this.#q=e,this.#z=t}
method requestPaused (line 1) | requestPaused({requestId:e,request:t,resourceType:n,responseStatusCode...
method authRequired (line 1) | authRequired({}){}
class le (line 1) | class le{#z;#j=new Map;#V=new Map;#W=new Map;#G=new Map;#K=new Map;const...
method constructor (line 1) | constructor(e){this.#z=e,ce.instance().addEventListener("RequestInterc...
method #Q (line 1) | #Q(e){const t=this.requestForId(e.data);t&&t.setWasIntercepted(!0)}
method headersMapToHeadersArray (line 1) | headersMapToHeadersArray(e){const t=[];for(const n in e){const r=e[n]....
method updateNetworkRequestWithRequest (line 1) | updateNetworkRequestWithRequest(e,t){e.requestMethod=t.method,e.setReq...
method updateNetworkRequestWithResponse (line 1) | updateNetworkRequestWithResponse(t,n){n.url&&t.url()!==n.url&&t.setUrl...
method requestForId (line 1) | requestForId(e){return this.#j.get(e)||null}
method requestForURL (line 1) | requestForURL(e){return this.#V.get(e)||null}
method requestForLoaderId (line 1) | requestForLoaderId(e){return this.#W.get(e)||null}
method resourceChangedPriority (line 1) | resourceChangedPriority({requestId:e,newPriority:t}){const n=this.#j.g...
method signedExchangeReceived (line 1) | signedExchangeReceived({requestId:t,info:n}){let r=this.#j.get(t);(r||...
method requestWillBeSent (line 1) | requestWillBeSent({requestId:t,loaderId:n,documentURL:r,request:s,time...
method requestServedFromCache (line 1) | requestServedFromCache({requestId:e}){const t=this.#j.get(e);t&&t.setF...
method responseReceived (line 1) | responseReceived({requestId:t,loaderId:n,timestamp:r,type:s,response:i...
method dataReceived (line 1) | dataReceived(e){let t=this.#j.get(e.requestId);t||(t=this.maybeAdoptMa...
method loadingFinished (line 1) | loadingFinished({requestId:e,timestamp:t,encodedDataLength:n}){let r=t...
method loadingFailed (line 1) | loadingFailed({requestId:t,timestamp:n,type:r,errorText:s,canceled:i,b...
method webSocketCreated (line 1) | webSocketCreated({requestId:t,url:n,initiator:r}){const s=Ri.createFor...
method webSocketWillSendHandshakeRequest (line 1) | webSocketWillSendHandshakeRequest({requestId:e,timestamp:t,wallTime:n,...
method webSocketHandshakeResponseReceived (line 1) | webSocketHandshakeResponseReceived({requestId:e,timestamp:t,response:n...
method webSocketFrameReceived (line 1) | webSocketFrameReceived({requestId:e,timestamp:t,response:n}){const r=t...
method webSocketFrameSent (line 1) | webSocketFrameSent({requestId:e,timestamp:t,response:n}){const r=this....
method webSocketFrameError (line 1) | webSocketFrameError({requestId:e,timestamp:t,errorMessage:n}){const r=...
method webSocketClosed (line 1) | webSocketClosed({requestId:e,timestamp:t}){const n=this.#j.get(e);n&&t...
method eventSourceMessageReceived (line 1) | eventSourceMessageReceived({requestId:e,timestamp:t,eventName:n,eventI...
method requestIntercepted (line 1) | requestIntercepted({}){}
method requestWillBeSentExtraInfo (line 1) | requestWillBeSentExtraInfo({requestId:e,associatedCookies:t,headers:n,...
method responseReceivedEarlyHints (line 1) | responseReceivedEarlyHints({requestId:e,headers:t}){this.getExtraInfoB...
method responseReceivedExtraInfo (line 1) | responseReceivedExtraInfo({requestId:e,blockedCookies:t,headers:n,head...
method getExtraInfoBuilder (line 1) | getExtraInfoBuilder(e){let t;return this.#G.has(e)?t=this.#G.get(e):(t...
method appendRedirect (line 1) | appendRedirect(e,t,n){const r=this.#j.get(e);if(!r)throw new Error(`Co...
method maybeAdoptMainResourceRequest (line 1) | maybeAdoptMainResourceRequest(e){const t=ce.instance().inflightMainRes...
method startNetworkRequest (line 1) | startNetworkRequest(e,t){this.#j.set(e.requestId(),e),this.#V.set(e.ur...
method updateNetworkRequest (line 1) | updateNetworkRequest(e){this.#z.dispatchEventToListeners(ee.RequestUpd...
method finishNetworkRequest (line 1) | finishNetworkRequest(t,n,r){if(t.endTime=n,t.finished=!0,r>=0){const e...
method clearRequests (line 1) | clearRequests(){for(const[e,t]of this.#j)t.finished&&this.#j.delete(e)...
method webTransportCreated (line 1) | webTransportCreated({transportId:t,url:n,timestamp:r,initiator:s}){con...
method webTransportConnectionEstablished (line 1) | webTransportConnectionEstablished({transportId:e,timestamp:t}){const n...
method webTransportClosed (line 1) | webTransportClosed({transportId:e,timestamp:t}){const n=this.#j.get(e)...
method directTCPSocketCreated (line 1) | directTCPSocketCreated(t){const r=0===t.remotePort?t.remoteAddr:`${t.r...
method directTCPSocketOpened (line 1) | directTCPSocketOpened(e){const t=this.#j.get(e.identifier);if(!t?.dire...
method directTCPSocketAborted (line 1) | directTCPSocketAborted(e){const t=this.#j.get(e.identifier);t?.directS...
method directTCPSocketClosed (line 1) | directTCPSocketClosed(e){const t=this.#j.get(e.identifier);t?.directSo...
method trustTokenOperationDone (line 1) | trustTokenOperationDone(e){const t=this.#j.get(e.requestId);t?t.setTru...
method subresourceWebBundleMetadataReceived (line 1) | subresourceWebBundleMetadataReceived({requestId:e,urls:t}){const n=thi...
method subresourceWebBundleMetadataError (line 1) | subresourceWebBundleMetadataError({requestId:e,errorMessage:t}){const ...
method subresourceWebBundleInnerResponseParsed (line 1) | subresourceWebBundleInnerResponseParsed({innerRequestId:e,bundleReques...
method subresourceWebBundleInnerResponseError (line 1) | subresourceWebBundleInnerResponseError({innerRequestId:e,errorMessage:...
method reportingApiReportAdded (line 1) | reportingApiReportAdded(e){this.#z.dispatchEventToListeners(ee.Reporti...
method reportingApiReportUpdated (line 1) | reportingApiReportUpdated(e){this.#z.dispatchEventToListeners(ee.Repor...
method reportingApiEndpointsChangedForOrigin (line 1) | reportingApiEndpointsChangedForOrigin(e){this.#z.dispatchEventToListen...
method policyUpdated (line 1) | policyUpdated(){}
method createNetworkRequest (line 1) | createNetworkRequest(e,t,n,r,s,i){const o=Ri.create(e,r,s,t,n,i);retur...
class ce (line 1) | class ce extends e.ObjectWrapper.ObjectWrapper{#$="";#X=null;#J=null;#Y=...
method constructor (line 1) | constructor(){super();const e=()=>{this.updateBlockedPatterns(),this.d...
method instance (line 1) | static instance(e={forceNew:null}){const{forceNew:t}=e;return de&&!t||...
method dispose (line 1) | static dispose(){de=null}
method patchUserAgentWithChromeVersion (line 1) | static patchUserAgentWithChromeVersion(e){const t=o.Runtime.getChromeV...
method patchUserAgentMetadataWithChromeVersion (line 1) | static patchUserAgentMetadataWithChromeVersion(e){if(!e.brands)return;...
method modelAdded (line 1) | modelAdded(e){const t=e.target().networkAgent(),n=e.target().fetchAgen...
method modelRemoved (line 1) | modelRemoved(e){for(const t of this.inflightMainResourceRequests){Z.fo...
method isThrottling (line 1) | isThrottling(){return this.#ee.download>=0||this.#ee.upload>=0||this.#...
method isOffline (line 1) | isOffline(){return!this.#ee.download&&!this.#ee.upload}
method setNetworkConditions (line 1) | setNetworkConditions(e){this.#ee=e;for(const e of this.#Y)this.updateN...
method networkConditions (line 1) | networkConditions(){return this.#ee}
method updateNetworkConditions (line 1) | updateNetworkConditions(e){const t=this.#ee;this.isThrottling()?e.invo...
method setExtraHTTPHeaders (line 1) | setExtraHTTPHeaders(e){this.#oe=e;for(const e of this.#Y)e.invoke_setE...
method currentUserAgent (line 1) | currentUserAgent(){return this.#ae?this.#ae:this.#$}
method updateUserAgentOverride (line 1) | updateUserAgentOverride(){const e=this.currentUserAgent();for(const t ...
method setUserAgentOverride (line 1) | setUserAgentOverride(e,t){const n=this.#$!==e;this.#$=e,this.#ae?this....
method userAgentOverride (line 1) | userAgentOverride(){return this.#$}
method setCustomUserAgentOverride (line 1) | setCustomUserAgentOverride(e,t=null){this.#ae=e,this.#X=t,this.updateU...
method setCustomAcceptedEncodingsOverride (line 1) | setCustomAcceptedEncodingsOverride(e){this.#J=e,this.updateAcceptedEnc...
method clearCustomAcceptedEncodingsOverride (line 1) | clearCustomAcceptedEncodingsOverride(){this.#J=null,this.updateAccepte...
method isAcceptedEncodingOverrideSet (line 1) | isAcceptedEncodingOverrideSet(){return null!==this.#J}
method updateAcceptedEncodingsOverride (line 1) | updateAcceptedEncodingsOverride(){const e=this.#J;for(const t of this....
method blockedPatterns (line 1) | blockedPatterns(){return this.#re.get().slice()}
method blockingEnabled (line 1) | blockingEnabled(){return this.#ne.get()}
method isBlocking (line 1) | isBlocking(){return Boolean(this.#se.length)}
method setBlockedPatterns (line 1) | setBlockedPatterns(e){this.#re.set(e)}
method setBlockingEnabled (line 1) | setBlockingEnabled(e){this.#ne.get()!==e&&this.#ne.set(e)}
method updateBlockedPatterns (line 1) | updateBlockedPatterns(){const e=[];if(this.#ne.get())for(const t of th...
method isIntercepting (line 1) | isIntercepting(){return Boolean(this.#ie.size)}
method setInterceptionHandlerForPatterns (line 1) | setInterceptionHandlerForPatterns(e,t){this.#ie.deleteAll(t);for(const...
method updateInterceptionPatternsOnNextTick (line 1) | updateInterceptionPatternsOnNextTick(){return this.#te||(this.#te=Prom...
method updateInterceptionPatterns (line 1) | async updateInterceptionPatterns(){e.Settings.Settings.instance().modu...
method requestIntercepted (line 1) | async requestIntercepted(e){for(const t of this.#ie.keysArray())if(awa...
method clearBrowserCache (line 1) | clearBrowserCache(){for(const e of this.#Y)e.invoke_clearBrowserCache()}
method clearBrowserCookies (line 1) | clearBrowserCookies(){for(const e of this.#Y)e.invoke_clearBrowserCook...
method getCertificate (line 1) | async getCertificate(e){const t=W.instance().primaryPageTarget();if(!t...
method loadResource (line 1) | async loadResource(t){const n={},r=this.currentUserAgent();r&&(n["User...
class he (line 1) | class he{#q;#le;request;resourceType;responseStatusCode;responseHeaders;...
method constructor (line 1) | constructor(e,t,n,r,s,i,o){this.#q=e,this.#le=!1,this.request=t,this.r...
method hasResponded (line 1) | hasResponded(){return this.#le}
method mergeSetCookieHeaders (line 1) | static mergeSetCookieHeaders(e,t){const n=e=>{const t=new Map;for(cons...
method continueRequestWithContent (line 1) | async continueRequestWithContent(t,n,r,s){this.#le=!0;const i=n?await ...
method continueRequestWithoutChange (line 1) | continueRequestWithoutChange(){console.assert(!this.#le),this.#le=!0,t...
method continueRequestWithError (line 1) | continueRequestWithError(e){console.assert(!this.#le),this.#le=!0,this...
method responseBody (line 1) | async responseBody(){const e=await this.#q.invoke_getResponseBody({req...
method isRedirect (line 1) | isRedirect(){return void 0!==this.responseStatusCode&&this.responseSta...
method getMimeTypeAndCharset (line 1) | getMimeTypeAndCharset(){for(const e of this.responseHeaders??[])if("co...
class ue (line 1) | class ue{#de;#ce;#he;#ue;#ge;#pe;#me;constructor(){this.#de=[],this.#ce=...
method constructor (line 1) | constructor(){this.#de=[],this.#ce=[],this.#ue=[],this.#he=[],this.#ge...
method addRequest (line 1) | addRequest(e){this.#de.push(e),this.sync(this.#de.length-1)}
method addRequestExtraInfo (line 1) | addRequestExtraInfo(e){this.#ce.push(e),this.sync(this.#ce.length-1)}
method addResponseExtraInfo (line 1) | addResponseExtraInfo(e){this.#he.push(e),this.sync(this.#he.length-1)}
method setEarlyHintsHeaders (line 1) | setEarlyHintsHeaders(e){this.#ue=e,this.updateFinalRequest()}
method setWebBundleInfo (line 1) | setWebBundleInfo(e){this.#pe=e,this.updateFinalRequest()}
method setWebBundleInnerRequestInfo (line 1) | setWebBundleInnerRequestInfo(e){this.#me=e,this.updateFinalRequest()}
method finished (line 1) | finished(){this.#ge=!0,this.updateFinalRequest()}
method isFinished (line 1) | isFinished(){return this.#ge}
method sync (line 1) | sync(e){const t=this.#de[e];if(!t)return;const n=this.#ce[e];n&&(t.add...
method finalRequest (line 1) | finalRequest(){return this.#ge&&this.#de[this.#de.length-1]||null}
method updateFinalRequest (line 1) | updateFinalRequest(){if(!this.#ge)return;const e=this.finalRequest();e...
method stringify (line 1) | stringify(e){const t=e;return JSON.stringify({...t,title:"function"==typ...
method parse (line 1) | parse(e){const t=JSON.parse(e);return{...t,title:t.i18nTitleKey?X(t.i18n...
method Events (line 1) | get Events(){return ee}
class pe (line 1) | class pe{#fe;#be;#ye=new Map;#ve;#Ie;constructor(e){this.#fe=e.fontFamil...
method constructor (line 1) | constructor(e){this.#fe=e.fontFamily,this.#be=e.fontVariationAxes||[],...
method getFontFamily (line 1) | getFontFamily(){return this.#fe}
method getSrc (line 1) | getSrc(){return this.#ve}
method getFontDisplay (line 1) | getFontDisplay(){return this.#Ie}
method getVariationAxisByTag (line 1) | getVariationAxisByTag(e){return this.#ye.get(e)}
class fe (line 1) | class fe{text;node;name;fallback;matching;computedTextCallback;construct...
method constructor (line 1) | constructor(e,t,n,r,s,i){this.text=e,this.node=t,this.name=n,this.fall...
method computedText (line 1) | computedText(){return this.computedTextCallback(this,this.matching)}
class be (line 1) | class be extends(kt(fe)){#we;constructor(e){super(),this.#we=e}matches(e...
method constructor (line 1) | constructor(e){super(),this.#we=e}
method matches (line 1) | matches(e,t){const n=e.getChild("Callee"),r=e.getChild("ArgList");if("...
class ye (line 1) | class ye extends fe{matchedStyles;style;constructor(e,t,n,r,s,i,o){super...
method constructor (line 1) | constructor(e,t,n,r,s,i,o){super(e,t,n,r,s,(()=>this.resolveVariable()...
method resolveVariable (line 1) | resolveVariable(){return this.matchedStyles.computeCSSVariable(this.st...
method fallbackValue (line 1) | fallbackValue(){return 0===this.fallback.length||this.matching.hasUnre...
class ve (line 1) | class ve extends(kt(ye)){matchedStyles;style;constructor(e,t){super(),th...
method constructor (line 1) | constructor(e,t){super(),this.matchedStyles=e,this.style=t}
method matches (line 1) | matches(e,t){const n=new be((()=>null)).matches(e,t);return n?new ye(n...
class Ie (line 1) | class Ie{text;node;constructor(e,t){this.text=e,this.node=t}}
method constructor (line 1) | constructor(e,t){this.text=e,this.node=t}
class we (line 1) | class we extends(kt(Ie)){accepts(){return!0}matches(e,t){return"BinaryEx...
method accepts (line 1) | accepts(){return!0}
method matches (line 1) | matches(e,t){return"BinaryExpression"===e.name?new Ie(t.ast.text(e),e)...
class Se (line 1) | class Se{text;node;computedText;constructor(e,t){this.text=e,this.node=t...
method constructor (line 1) | constructor(e,t){this.text=e,this.node=t,"Comment"===t.name&&(this.com...
method render (line 1) | render(){const e=document.createElement("span");return e.appendChild(d...
class ke (line 1) | class ke extends(kt(Se)){accepts(){return!0}matches(e,t){if(!e.firstChil...
method accepts (line 1) | accepts(){return!0}
method matches (line 1) | matches(e,t){if(!e.firstChild||"NumberLiteral"===e.name){const n=t.ast...
class Ce (line 1) | class Ce{text;node;constructor(e,t){this.text=e,this.node=t}computedText...
method constructor (line 1) | constructor(e,t){this.text=e,this.node=t}
method computedText (line 1) | computedText(){return this.text}
class xe (line 1) | class xe extends(kt(Ce)){accepts(e){return S().isAngleAwareProperty(e)}m...
method accepts (line 1) | accepts(e){return S().isAngleAwareProperty(e)}
method matches (line 1) | matches(e,t){if("NumberLiteral"!==e.name)return null;const n=e.getChil...
function Re (line 1) | function Re(e,t){if("NumberLiteral"!==e.type.name)return null;const n=t....
class Te (line 1) | class Te{text;node;space;color1;color2;constructor(e,t,n,r,s){this.text=...
method constructor (line 1) | constructor(e,t,n,r,s){this.text=e,this.node=t,this.space=n,this.color...
class Me (line 1) | class Me extends(kt(Te)){accepts(e){return S().isColorAwareProperty(e)}m...
method accepts (line 1) | accepts(e){return S().isColorAwareProperty(e)}
method matches (line 1) | matches(e,t){if("CallExpression"!==e.name||"color-mix"!==t.ast.text(e....
class Pe (line 1) | class Pe{url;text;node;constructor(e,t,n){this.url=e,this.text=t,this.no...
method constructor (line 1) | constructor(e,t,n){this.url=e,this.text=t,this.node=n}
class Ee (line 1) | class Ee extends(kt(Pe)){matches(e,t){if("CallLiteral"!==e.name)return n...
method matches (line 1) | matches(e,t){if("CallLiteral"!==e.name)return null;const n=e.getChild(...
class Le (line 1) | class Le{text;node;constructor(e,t){this.text=e,this.node=t}}
method constructor (line 1) | constructor(e,t){this.text=e,this.node=t}
class Ae (line 1) | class Ae extends(kt(Le)){matches(e,t){const n=t.ast.text(e);return"CallE...
method matches (line 1) | matches(e,t){const n=t.ast.text(e);return"CallExpression"===e.name&&"l...
method accepts (line 1) | accepts(e){return["background","background-image","-webkit-mask-image"...
class Oe (line 1) | class Oe{text;node;currentColorCallback;computedText;constructor(e,t,n){...
method constructor (line 1) | constructor(e,t,n){this.text=e,this.node=t,this.currentColorCallback=n...
class De (line 1) | class De extends(kt(Oe)){currentColorCallback;constructor(e){super(),thi...
method constructor (line 1) | constructor(e){super(),this.currentColorCallback=e}
method accepts (line 1) | accepts(e){return S().isColorAwareProperty(e)}
method matches (line 1) | matches(t,n){const r=n.ast.text(t);if("ColorLiteral"===t.name)return n...
class Ne (line 1) | class Ne{text;node;light;dark;style;constructor(e,t,n,r,s){this.text=e,t...
method constructor (line 1) | constructor(e,t,n,r,s){this.text=e,this.node=t,this.light=n,this.dark=...
class Fe (line 1) | class Fe extends(kt(Ne)){style;constructor(e){super(),this.style=e}accep...
method constructor (line 1) | constructor(e){super(),this.style=e}
method accepts (line 1) | accepts(e){return S().isColorAwareProperty(e)}
method matches (line 1) | matches(e,t){if("CallExpression"!==e.name||"light-dark"!==t.ast.text(e...
class Be (line 1) | class Be{text;node;auto;base;constructor(e,t,n,r){this.text=e,this.node=...
method constructor (line 1) | constructor(e,t,n,r){this.text=e,this.node=t,this.auto=n,this.base=r}
class _e (line 1) | class _e extends(kt(Be)){matches(e,t){if("CallExpression"!==e.name||"-in...
method matches (line 1) | matches(e,t){if("CallExpression"!==e.name||"-internal-auto-base"!==t.a...
class He (line 1) | class He{text;node;propertyName;constructor(e,t,n){this.text=e,this.node...
method constructor (line 1) | constructor(e,t,n){this.text=e,this.node=t,this.propertyName=n}
class Ue (line 1) | class Ue extends(kt(He)){static isLinkableNameProperty(e){return["animat...
method isLinkableNameProperty (line 1) | static isLinkableNameProperty(e){return["animation","animation-name","...
method matchAnimationNameInShorthand (line 1) | matchAnimationNameInShorthand(e,t){const n=t.ast.text(e);if(!Ue.identi...
method accepts (line 1) | accepts(e){return Ue.isLinkableNameProperty(e)}
method matches (line 1) | matches(e,t){const{propertyName:n}=t.ast,r=t.ast.text(e),s=e.parent;if...
class qe (line 1) | class qe{text;node;constructor(e,t){this.text=e,this.node=t}}
method constructor (line 1) | constructor(e,t){this.text=e,this.node=t}
class ze (line 1) | class ze extends(kt(qe)){accepts(e){return S().isBezierAwareProperty(e)}...
method accepts (line 1) | accepts(e){return S().isBezierAwareProperty(e)}
method matches (line 1) | matches(e,t){const n=t.ast.text(e),r="ValueName"===e.name&&b.has(n),s=...
class je (line 1) | class je{text;node;constructor(e,t){this.text=e,this.node=t}}
method constructor (line 1) | constructor(e,t){this.text=e,this.node=t}
class Ve (line 1) | class Ve extends(kt(je)){matches(e,t){return"StringLiteral"===e.name?new...
method matches (line 1) | matches(e,t){return"StringLiteral"===e.name?new je(t.ast.text(e),e):null}
class We (line 1) | class We{text;node;shadowType;constructor(e,t,n){this.text=e,this.node=t...
method constructor (line 1) | constructor(e,t,n){this.text=e,this.node=t,this.shadowType=n}
class Ge (line 1) | class Ge extends(kt(We)){accepts(e){return S().isShadowProperty(e)}match...
method accepts (line 1) | accepts(e){return S().isShadowProperty(e)}
method matches (line 1) | matches(e,t){if("Declaration"!==e.name)return null;const n=Pt.siblings...
class Ke (line 1) | class Ke{text;node;constructor(e,t){this.text=e,this.node=t}}
method constructor (line 1) | constructor(e,t){this.text=e,this.node=t}
class Qe (line 1) | class Qe extends(kt(Ke)){accepts(e){return S().isFontAwareProperty(e)}ma...
method accepts (line 1) | accepts(e){return S().isFontAwareProperty(e)}
method matches (line 1) | matches(e,t){if("Declaration"!==e.name)return null;const n=Pt.siblings...
class $e (line 1) | class $e{text;node;unit;constructor(e,t,n){this.text=e,this.node=t,this....
method constructor (line 1) | constructor(e,t,n){this.text=e,this.node=t,this.unit=n}
class Xe (line 1) | class Xe extends(kt($e)){static LENGTH_UNITS=new Set(["em","ex","ch","ca...
method matches (line 1) | matches(e,t){if("NumberLiteral"!==e.name)return null;const n=t.ast.tex...
class Je (line 1) | class Je{text;node;func;args;constructor(e,t,n,r){this.text=e,this.node=...
method constructor (line 1) | constructor(e,t,n,r){this.text=e,this.node=t,this.func=n,this.args=r}
class Ye (line 1) | class Ye extends(kt(Je)){matches(e,t){if("CallExpression"!==e.name)retur...
method matches (line 1) | matches(e,t){if("CallExpression"!==e.name)return null;const n=t.ast.te...
class Ze (line 1) | class Ze{text;node;isFlex;constructor(e,t,n){this.text=e,this.node=t,thi...
method constructor (line 1) | constructor(e,t,n){this.text=e,this.node=t,this.isFlex=n}
class et (line 1) | class et extends(kt(Ze)){static FLEX=["flex","inline-flex","block flex",...
method accepts (line 1) | accepts(e){return"display"===e}
method matches (line 1) | matches(e,t){if("Declaration"!==e.name)return null;const n=Pt.siblings...
class tt (line 1) | class tt{text;node;lines;constructor(e,t,n){this.text=e,this.node=t,this...
method constructor (line 1) | constructor(e,t,n){this.text=e,this.node=t,this.lines=n}
class nt (line 1) | class nt extends(kt(tt)){accepts(e){return S().isGridAreaDefiningPropert...
method accepts (line 1) | accepts(e){return S().isGridAreaDefiningProperty(e)}
method matches (line 1) | matches(e,t){if("Declaration"!==e.name||t.hasUnresolvedVars(e))return ...
class rt (line 1) | class rt{text;node;functionName;constructor(e,t,n){this.text=e,this.node...
method constructor (line 1) | constructor(e,t,n){this.text=e,this.node=t,this.functionName=n}
class st (line 1) | class st extends(kt(rt)){anchorFunction(e,t){if("CallExpression"!==e.nam...
method anchorFunction (line 1) | anchorFunction(e,t){if("CallExpression"!==e.name)return null;const n=t...
method matches (line 1) | matches(e,t){if("VariableName"===e.name){let n=e.parent;return n&&"Arg...
class it (line 1) | class it{text;matching;node;constructor(e,t,n){this.text=e,this.matching...
method constructor (line 1) | constructor(e,t,n){this.text=e,this.matching=t,this.node=n}
class ot (line 1) | class ot extends(kt(it)){accepts(e){return"position-anchor"===e}matches(...
method accepts (line 1) | accepts(e){return"position-anchor"===e}
method matches (line 1) | matches(e,t){if("VariableName"!==e.name)return null;const n=t.ast.text...
class at (line 1) | class at{text;node;property;matchedStyles;constructor(e,t,n,r){this.text...
method constructor (line 1) | constructor(e,t,n,r){this.text=e,this.node=t,this.property=n,this.matc...
method resolveProperty (line 1) | resolveProperty(){return this.matchedStyles.resolveGlobalKeyword(this....
method computedText (line 1) | computedText(){return this.resolveProperty()?.value??null}
class lt (line 1) | class lt extends(kt(at)){property;matchedStyles;constructor(e,t){super()...
method constructor (line 1) | constructor(e,t){super(),this.property=e,this.matchedStyles=t}
method matches (line 1) | matches(e,t){const n=e.parent;if("ValueName"!==e.name||"Declaration"!=...
class dt (line 1) | class dt{text;node;preamble;fallbacks;constructor(e,t,n,r){this.text=e,t...
method constructor (line 1) | constructor(e,t,n,r){this.text=e,this.node=t,this.preamble=n,this.fall...
class ct (line 1) | class ct extends(kt(dt)){accepts(e){return"position-try"===e||"position-...
method accepts (line 1) | accepts(e){return"position-try"===e||"position-try-fallbacks"===e}
method matches (line 1) | matches(e,t){if("Declaration"!==e.name)return null;let n=[];const r=Pt...
function ft (line 1) | function ft(e){return e.split(",").map((e=>e.trim()))}
function bt (line 1) | function bt(e){return e.replaceAll(/(\/\*(?:.|\s)*?\*\/)/g,"")}
function vt (line 1) | function vt(e,t){return It(e,e,t)}
function It (line 1) | function It(e,t,n){return n.substring(e.from,t.to)}
class wt (line 1) | class wt{propertyValue;rule;tree;trailingNodes;propertyName;constructor(...
method constructor (line 1) | constructor(e,t,n,r,s=[]){this.propertyName=r,this.propertyValue=e,thi...
method text (line 1) | text(e){return null===e?"":vt(e??this.tree,this.rule)}
method textRange (line 1) | textRange(e,t){return It(e,t,this.rule)}
method subtree (line 1) | subtree(e){return new wt(this.propertyValue,this.rule,e)}
class St (line 1) | class St{ast;constructor(e){this.ast=e}static walkExcludingSuccessors(e,...
method constructor (line 1) | constructor(e){this.ast=e}
method walkExcludingSuccessors (line 1) | static walkExcludingSuccessors(e,...t){const n=new this(e,...t);return...
method walk (line 1) | static walk(e,...t){const n=new this(e,...t);return"Declaration"===e.t...
method iterateDeclaration (line 1) | iterateDeclaration(e){if("Declaration"===e.name){if(this.enter(e))for(...
method iterate (line 1) | iterate(e){for(const t of Pt.siblings(e))t.cursor().iterate(this.enter...
method iterateExcludingSuccessors (line 1) | iterateExcludingSuccessors(e){e.cursor().iterate(this.enter.bind(this)...
method enter (line 1) | enter(e){return!0}
method leave (line 1) | leave(e){}
function kt (line 1) | function kt(e){return class{matchType=e;accepts(e){return!0}matches(e,t)...
class Ct (line 1) | class Ct extends St{#Se=[];#ke=new Map;computedText;#Ce(e){return`${e.fr...
method #Ce (line 1) | #Ce(e){return`${e.from}:${e.to}`}
method constructor (line 1) | constructor(e,t){super(e),this.computedText=new Rt(e.rule.substring(e....
method leave (line 1) | leave({node:e}){for(const t of this.#Se){const n=t.matches(e,this);if(...
method matchText (line 1) | matchText(e){const t=this.#Se.splice(0);this.#Se.push(new ke),this.ite...
method hasMatches (line 1) | hasMatches(...e){return Boolean(this.#ke.values().find((t=>e.some((e=>...
method getMatch (line 1) | getMatch(e){return this.#ke.get(this.#Ce(e))}
method hasUnresolvedVars (line 1) | hasUnresolvedVars(e){return this.hasUnresolvedVarsRange(e,e)}
method hasUnresolvedVarsRange (line 1) | hasUnresolvedVarsRange(e,t){return this.computedText.hasUnresolvedVars...
method getComputedText (line 1) | getComputedText(e,t){return this.getComputedTextRange(e,e,t)}
method getComputedPropertyValueText (line 1) | getComputedPropertyValueText(){const[e,t]=Pt.range(Pt.siblings(Pt.decl...
method getComputedTextRange (line 1) | getComputedTextRange(e,t,n){return this.computedText.get(e.from-this.a...
class xt (line 1) | class xt{match;offset;#xe=null;constructor(e,t){this.match=e,this.offset...
method constructor (line 1) | constructor(e,t){this.match=e,this.offset=t}
method end (line 1) | get end(){return this.offset+this.length}
method length (line 1) | get length(){return this.match.text.length}
method computedText (line 1) | get computedText(){return null===this.#xe&&(this.#xe=this.match.comput...
class Rt (line 1) | class Rt{#Re=[];text;#Te=!0;constructor(e){this.text=e}clear(){this.#Re....
method constructor (line 1) | constructor(e){this.text=e}
method clear (line 1) | clear(){this.#Re.splice(0)}
method chunkCount (line 1) | get chunkCount(){return this.#Re.length}
method #Me (line 1) | #Me(){this.#Te||(this.#Re.sort(((e,t)=>e.offset<t.offset?-1:t.offset<e...
method push (line 1) | push(e,t){if(!function(e){return Boolean(e.computedText)}(e)||t<0||t>=...
method #Pe (line 1) | *#Pe(e,t){this.#Me();let n=this.#Re.findIndex((t=>t.offset>=e));for(;n...
method hasUnresolvedVars (line 1) | hasUnresolvedVars(e,t){for(const n of this.#Pe(e,t))if(null===n.comput...
method #Ee (line 1) | *#Ee(e,t){for(const n of this.#Pe(e,t)){const r=this.text.substring(e,...
method get (line 1) | get(e,t,n){const r=[],s=e=>{if("string"==typeof e)return e;const t=n?....
function Tt (line 1) | function Tt(e,t){const n=Array.isArray(e)?e.findLast((e=>e.textContent))...
function Et (line 1) | function Et(e){return yt.parse(e).topNode.getChild("RuleSet")?.getChild(...
function Lt (line 1) | function Lt(e,t){const n=At(e);if(!n)return null;const r=`*{${n}: ${t};}...
function At (line 1) | function At(e){const t=`*{${e}: inherit;}`,n=Et(t);if(!n||n.type.isError...
function Ot (line 1) | function Ot(e,t,n){const r=Lt(e,t),s=r&&Ct.walk(r,n);return r?.trailingN...
function t (line 1) | function t(e){const t=[];for(;e;)t.push(e),e=e.nextSibling;return t}
function n (line 1) | function n(e){return t(e?.firstChild??null)}
function r (line 1) | function r(e){const t=[];let n=[];for(const r of e)","===r.name?(t.push(...
class Dt (line 1) | class Dt extends St{#Le=null;#Ae;constructor(e,t){super(e),this.#Ae=t}en...
method constructor (line 1) | constructor(e,t){super(e),this.#Ae=t}
method enter (line 1) | enter({node:e}){return!this.#Le&&(!this.#Ae(e)||(this.#Le=this.#Le??e,...
method find (line 1) | static find(e,t){return Dt.walk(e,t).#Le}
method findAll (line 1) | static findAll(e,t){const n=[];return Dt.walk(e,(e=>(t(e)&&n.push(e),!...
method ASTUtils (line 1) | get ASTUtils(){return Pt}
class Ft (line 1) | class Ft extends e.ObjectWrapper.ObjectWrapper{ownerStyle;index;name;val...
method constructor (line 1) | constructor(e,n,r,s,i,o,a,l,d,c,h){if(super(),this.ownerStyle=e,this.i...
method parsePayload (line 1) | static parsePayload(e,t,n){return new Ft(e,t,n.name,n.value,n.importan...
method parseExpression (line 1) | parseExpression(e,t,n){return this.parsedOk?Ot(this.name,e,this.#Se(t,...
method parseValue (line 1) | parseValue(e,t){return this.parsedOk?Ot(this.name,this.value,this.#Se(...
method #Se (line 1) | #Se(e,t){const n=e.propertyMatchers(this.ownerStyle,t);return n.push(n...
method ensureRanges (line 1) | ensureRanges(){if(this.#De&&this.#Ne)return;const e=this.range,n=this....
method nameRange (line 1) | nameRange(){return this.ensureRanges(),this.#De}
method valueRange (line 1) | valueRange(){return this.ensureRanges(),this.#Ne}
method rebase (line 1) | rebase(e){this.ownerStyle.styleSheetId===e.styleSheetId&&this.range&&(...
method setActive (line 1) | setActive(e){this.#Oe=e}
method propertyText (line 1) | get propertyText(){return void 0!==this.text?this.text:""===this.name?...
method activeInStyle (line 1) | activeInStyle(){return this.#Oe}
method setText (line 1) | async setText(n,s,i){if(!this.ownerStyle)throw new Error("No ownerStyl...
method formatStyle (line 1) | static async formatStyle(e,n,r){const s=n.substring(r.length)+n;n&&(n=...
method detectIndentation (line 1) | detectIndentation(e){const n=e.split("\n");return n.length<2?"":t.Text...
method setValue (line 1) | setValue(e,t,n,r){const s=this.name+": "+e+(this.important?" !importan...
method setLocalValue (line 1) | setLocalValue(e){this.value=e,this.dispatchEventToListeners("localValu...
method setDisabled (line 1) | async setDisabled(e){if(!this.ownerStyle)return!1;if(e===this.disabled...
method setDisplayedStringForInvalidProperty (line 1) | setDisplayedStringForInvalidProperty(e){this.#Fe=e}
method getInvalidStringForInvalidProperty (line 1) | getInvalidStringForInvalidProperty(){return this.#Fe}
method getLonghandProperties (line 1) | getLonghandProperties(){return this.#Be}
class _t (line 1) | class _t{text="";range;styleSheetId;cssModel;constructor(e){this.cssMode...
method constructor (line 1) | constructor(e){this.cssModel=e}
method rebase (line 1) | rebase(e){this.styleSheetId===e.styleSheetId&&this.range&&(e.oldRange....
method equal (line 1) | equal(e){return!!(this.styleSheetId&&this.range&&e.range)&&(this.style...
method lineNumberInSource (line 1) | lineNumberInSource(){if(this.range)return this.header()?.lineNumberInS...
method columnNumberInSource (line 1) | columnNumberInSource(){if(this.range)return this.header()?.columnNumbe...
method header (line 1) | header(){return this.styleSheetId?this.cssModel.styleSheetHeaderForId(...
method rawLocation (line 1) | rawLocation(){const e=this.header();if(!e||void 0===this.lineNumberInS...
class Ut (line 1) | class Ut extends _t{name;physicalAxes;logicalAxes;queriesScrollState;sta...
method parseContainerQueriesPayload (line 1) | static parseContainerQueriesPayload(e,t){return t.map((t=>new Ut(e,t)))}
method constructor (line 1) | constructor(e,t){super(e),this.reinitialize(t)}
method reinitialize (line 1) | reinitialize(e){this.text=e.text,this.range=e.range?t.TextRange.TextRa...
method active (line 1) | active(){return!0}
method getContainerForNode (line 1) | async getContainerForNode(e){const t=await this.cssModel.domModel().ge...
class qt (line 1) | class qt{containerNode;constructor(e){this.containerNode=e}async getCont...
method constructor (line 1) | constructor(e){this.containerNode=e}
method getContainerSizeDetails (line 1) | async getContainerSizeDetails(){const e=await this.containerNode.domMo...
class Wt (line 1) | class Wt extends _t{static parseLayerPayload(e,t){return t.map((t=>new W...
method parseLayerPayload (line 1) | static parseLayerPayload(e,t){return t.map((t=>new Wt(e,t)))}
method constructor (line 1) | constructor(e,t){super(e),this.reinitialize(t)}
method reinitialize (line 1) | reinitialize(e){this.text=e.text,this.range=e.range?t.TextRange.TextRa...
method active (line 1) | active(){return!0}
class Kt (line 1) | class Kt{#_e;#He;constructor(e){this.#_e=e.active,this.#He=[];for(let t=...
method constructor (line 1) | constructor(e){this.#_e=e.active,this.#He=[];for(let t=0;t<e.expressio...
method parsePayload (line 1) | static parsePayload(e){return new Kt(e)}
method active (line 1) | active(){return this.#_e}
method expressions (line 1) | expressions(){return this.#He}
class Qt (line 1) | class Qt{#u;#Ue;#qe;#Ne;#ze;constructor(e){this.#u=e.value,this.#Ue=e.un...
method constructor (line 1) | constructor(e){this.#u=e.value,this.#Ue=e.unit,this.#qe=e.feature,this...
method parsePayload (line 1) | static parsePayload(e){return new Qt(e)}
method value (line 1) | value(){return this.#u}
method unit (line 1) | unit(){return this.#Ue}
method feature (line 1) | feature(){return this.#qe}
method valueRange (line 1) | valueRange(){return this.#Ne}
method computedLength (line 1) | computedLength(){return this.#ze}
class $t (line 1) | class $t extends _t{source;sourceURL;mediaList;static parseMediaArrayPay...
method parseMediaArrayPayload (line 1) | static parseMediaArrayPayload(e,t){return t.map((t=>new $t(e,t)))}
method constructor (line 1) | constructor(e,t){super(e),this.reinitialize(t)}
method reinitialize (line 1) | reinitialize(e){if(this.text=e.text,this.source=e.source,this.sourceUR...
method active (line 1) | active(){if(!this.mediaList)return!0;for(let e=0;e<this.mediaList.leng...
class Jt (line 1) | class Jt extends _t{static parseScopesPayload(e,t){return t.map((t=>new ...
method parseScopesPayload (line 1) | static parseScopesPayload(e,t){return t.map((t=>new Jt(e,t)))}
method constructor (line 1) | constructor(e,t){super(e),this.reinitialize(t)}
method reinitialize (line 1) | reinitialize(e){this.text=e.text,this.range=e.range?t.TextRange.TextRa...
method active (line 1) | active(){return!0}
class en (line 1) | class en{#je;parentRule;#Ve;styleSheetId;range;cssText;#We=new Map;#Ge=n...
method constructor (line 1) | constructor(e,t,n,r,s){this.#je=e,this.parentRule=t,this.#Xe(n),this.t...
method rebase (line 1) | rebase(e){if(this.styleSheetId===e.styleSheetId&&this.range)if(e.oldRa...
method animationName (line 1) | animationName(){return this.#$e}
method #Xe (line 1) | #Xe(e){this.styleSheetId=e.styleSheetId,this.range=e.range?t.TextRange...
method #Je (line 1) | #Je(){if(this.range)return;if(!this.#We.size)return;const e=new Set;fo...
method #Ze (line 1) | #Ze(){if(this.range)return this.#Ve.filter((function(e){return Boolean...
method leadingProperties (line 1) | leadingProperties(){return this.#Qe||(this.#Qe=this.#Ze()),this.#Qe}
method target (line 1) | target(){return this.#je.target()}
method cssModel (line 1) | cssModel(){return this.#je}
method #Ye (line 1) | #Ye(){const e=new Map,t=new Set;for(const n of this.#Ve){const r=S(),s...
method allProperties (line 1) | allProperties(){return this.#Ve}
method hasActiveProperty (line 1) | hasActiveProperty(e){return this.#Ke.has(e)}
method getPropertyValue (line 1) | getPropertyValue(e){const t=this.#Ke.get(e);return t?t.value:""}
method isPropertyImplicit (line 1) | isPropertyImplicit(e){const t=this.#Ke.get(e);return!!t&&t.implicit}
method propertyAt (line 1) | propertyAt(e){return e<this.allProperties().length?this.allProperties(...
method pastLastSourcePropertyIndex (line 1) | pastLastSourcePropertyIndex(){for(let e=this.allProperties().length-1;...
method #et (line 1) | #et(e){const t=this.propertyAt(e);if(t?.range)return t.range.collapseT...
method newBlankProperty (line 1) | newBlankProperty(e){e=void 0===e?this.pastLastSourcePropertyIndex():e;...
method setText (line 1) | setText(e,t){return this.range&&this.styleSheetId?this.#je.setStyleTex...
method insertPropertyAt (line 1) | insertPropertyAt(e,t,n,r){this.newBlankProperty(e).setText(t+": "+n+";...
method appendProperty (line 1) | appendProperty(e,t,n){this.insertPropertyAt(this.allProperties().lengt...
method Type (line 1) | get Type(){return Yt}
class nn (line 1) | class nn extends _t{static parseSupportsPayload(e,t){return t.map((t=>ne...
method parseSupportsPayload (line 1) | static parseSupportsPayload(e,t){return t.map((t=>new nn(e,t)))}
method constructor (line 1) | constructor(e,t){super(e),this.reinitialize(t)}
method reinitialize (line 1) | reinitialize(e){this.text=e.text,this.range=e.range?t.TextRange.TextRa...
method active (line 1) | active(){return this.#Oe}
class sn (line 1) | class sn{cssModelInternal;styleSheetId;sourceURL;origin;style;constructo...
method constructor (line 1) | constructor(e,t){if(this.cssModelInternal=e,this.styleSheetId=t.styleS...
method rebase (line 1) | rebase(e){this.styleSheetId===e.styleSheetId&&this.style.rebase(e)}
method resourceURL (line 1) | resourceURL(){if(!this.styleSheetId)return r.DevToolsPath.EmptyUrlStri...
method isUserAgent (line 1) | isUserAgent(){return"user-agent"===this.origin}
method isInjected (line 1) | isInjected(){return"injected"===this.origin}
method isViaInspector (line 1) | isViaInspector(){return"inspector"===this.origin}
method isRegular (line 1) | isRegular(){return"regular"===this.origin}
method isKeyframeRule (line 1) | isKeyframeRule(){return!1}
method cssModel (line 1) | cssModel(){return this.cssModelInternal}
method getStyleSheetHeader (line 1) | getStyleSheetHeader(e){const t=this.cssModelInternal.styleSheetHeaderF...
class on (line 1) | class on{text;range;specificity;constructor(e){this.text=e.text,e.range&...
method constructor (line 1) | constructor(e){this.text=e.text,e.range&&(this.range=t.TextRange.TextR...
method rebase (line 1) | rebase(e){this.range&&(this.range=this.range.rebaseAfterTextEdit(e.old...
class an (line 1) | class an extends sn{selectors;nestingSelectors;media;containerQueries;su...
method constructor (line 1) | constructor(e,t,n){super(e,{origin:t.origin,style:t.style,styleSheetId...
method createDummyRule (line 1) | static createDummyRule(e,n){const r={selectorList:{text:"",selectors:[...
method reinitializeSelectors (line 1) | reinitializeSelectors(e){this.selectors=[];for(let t=0;t<e.selectors.l...
method setSelectorText (line 1) | setSelectorText(e){const t=this.styleSheetId;if(!t)throw new Error("No...
method selectorText (line 1) | selectorText(){return this.selectors.map((e=>e.text)).join(", ")}
method selectorRange (line 1) | selectorRange(){if(0===this.selectors.length)return null;const e=this....
method lineNumberInSource (line 1) | lineNumberInSource(e){const t=this.selectors[e];if(!t?.range||!this.st...
method columnNumberInSource (line 1) | columnNumberInSource(e){const t=this.selectors[e];if(!t?.range||!this....
method rebase (line 1) | rebase(e){if(this.styleSheetId!==e.styleSheetId)return;const t=this.se...
class ln (line 1) | class ln extends sn{#tt;constructor(e,t){super(e,{origin:t.origin,style:...
method constructor (line 1) | constructor(e,t){super(e,{origin:t.origin,style:t.style,styleSheetId:t...
method propertyName (line 1) | propertyName(){return this.#tt}
method initialValue (line 1) | initialValue(){return this.style.hasActiveProperty("initial-value")?th...
method syntax (line 1) | syntax(){return this.style.getPropertyValue("syntax")}
method inherits (line 1) | inherits(){return"true"===this.style.getPropertyValue("inherits")}
method setPropertyName (line 1) | setPropertyName(e){const t=this.styleSheetId;if(!t)throw new Error("No...
class dn (line 1) | class dn extends sn{#nt;constructor(e,t){super(e,{origin:t.origin,style:...
method constructor (line 1) | constructor(e,t){super(e,{origin:t.origin,style:t.style,styleSheetId:t...
method name (line 1) | name(){return this.#nt}
class cn (line 1) | class cn{#$e;#rt;constructor(e,t){this.#$e=new on(t.animationName),this....
method constructor (line 1) | constructor(e,t){this.#$e=new on(t.animationName),this.#rt=t.keyframes...
method name (line 1) | name(){return this.#$e}
method keyframes (line 1) | keyframes(){return this.#rt}
class hn (line 1) | class hn extends sn{#st;constructor(e,t){super(e,{origin:t.origin,style:...
method constructor (line 1) | constructor(e,t){super(e,{origin:t.origin,style:t.style,styleSheetId:t...
method key (line 1) | key(){return this.#st}
method reinitializeKey (line 1) | reinitializeKey(e){this.#st=new on(e)}
method rebase (line 1) | rebase(e){this.styleSheetId===e.styleSheetId&&this.#st.range&&(e.oldRa...
method isKeyframeRule (line 1) | isKeyframeRule(){return!0}
method setKeyText (line 1) | setKeyText(e){const t=this.styleSheetId;if(!t)throw new Error("No rule...
class un (line 1) | class un extends sn{#tt;#Oe;constructor(e,t){super(e,{origin:t.origin,st...
method constructor (line 1) | constructor(e,t){super(e,{origin:t.origin,style:t.style,styleSheetId:t...
method name (line 1) | name(){return this.#tt}
method active (line 1) | active(){return this.#Oe}
class gn (line 1) | class gn extends sn{#tt;#it;#ot;constructor(e,t){super(e,{origin:t.origi...
method constructor (line 1) | constructor(e,t){super(e,{origin:t.origin,style:{cssProperties:[],shor...
method functionName (line 1) | functionName(){return this.#tt}
method parameters (line 1) | parameters(){return this.#it}
method children (line 1) | children(){return this.#ot}
method protocolNodesToNestedStyles (line 1) | protocolNodesToNestedStyles(e){const t=[];for(const n of e){const e=th...
method protocolNodeToNestedStyle (line 1) | protocolNodeToNestedStyle(e){if(e.style)return{style:new en(this.cssMo...
function mn (line 1) | function mn(e,t){if(!t.styleSheetId||!t.range)return!1;for(const n of e)...
function fn (line 1) | function fn(e){const t=e.allProperties();for(let e=0;e<t.length;++e){con...
function bn (line 1) | function bn(e){for(const t of e)s(t);const t=[];for(const s of e){const ...
function yn (line 1) | function yn(e){const t=new Map;for(let n=0;n<e.matchingSelectors.length;...
class vn (line 1) | class vn{#at;#lt;#dt;constructor(e,t){this.#lt=e,this.#at=t}propertyName...
method constructor (line 1) | constructor(e,t){this.#lt=e,this.#at=t}
method propertyName (line 1) | propertyName(){return this.#at instanceof ln?this.#at.propertyName().t...
method initialValue (line 1) | initialValue(){return this.#at instanceof ln?this.#at.initialValue():t...
method inherits (line 1) | inherits(){return this.#at instanceof ln?this.#at.inherits():this.#at....
method syntax (line 1) | syntax(){return this.#at instanceof ln?this.#at.syntax():`"${this.#at....
method parseValue (line 1) | parseValue(e,t){const n=this.initialValue();return n?Ot(this.propertyN...
method #ct (line 1) | #ct(){if(this.#at instanceof ln)return[];const{inherits:e,initialValue...
method style (line 1) | style(){return this.#dt||(this.#dt=this.#at instanceof ln?this.#at.sty...
class In (line 1) | class In{#je;#ht;#ut=new Map;#gt=new Map;#rt=[];#pt;#mt=new Map;#ft=new ...
method create (line 1) | static async create(e){const t=new In(e);return await t.init(e),t}
method constructor (line 1) | constructor({cssModel:e,node:t,animationsPayload:n,parentLayoutNodeId:...
method init (line 1) | async init({matchedPayload:e,inheritedPayload:t,inlinePayload:n,attrib...
method buildMainCascade (line 1) | async buildMainCascade(e,t,n,r,s,i,o){const a=[],l=[];function d(){if(...
method buildSplitCustomHighlightCascades (line 1) | buildSplitCustomHighlightCascades(e,t,n,r){const s=new Map;for(let r=e...
method buildPseudoCascades (line 1) | buildPseudoCascades(e,t){const n=new Map,r=new Map;if(!e)return[n,r];c...
method addMatchingSelectors (line 1) | addMatchingSelectors(e,t,n){for(const r of n){const n=t.selectors[r];n...
method node (line 1) | node(){return this.#ht}
method cssModel (line 1) | cssModel(){return this.#je}
method hasMatchingSelectors (line 1) | hasMatchingSelectors(e){return(0===e.selectors.length||this.getMatchin...
method getParentLayoutNodeId (line 1) | getParentLayoutNodeId(){return this.#vt}
method getMatchingSelectors (line 1) | getMatchingSelectors(e){const t=this.nodeForStyle(e.style);if(!t||"num...
method recomputeMatchingSelectors (line 1) | async recomputeMatchingSelectors(e){const t=this.nodeForStyle(e.style)...
method addNewRule (line 1) | addNewRule(e,t){return this.#ut.set(e.style,t),this.recomputeMatchingS...
method setSelectorMatches (line 1) | setSelectorMatches(e,t,n){if("number"!=typeof e.id)return;let r=this.#...
method nodeStyles (line 1) | nodeStyles(){return r.assertNotNullOrUndefined(this.#St),this.#St.styl...
method inheritedStyles (line 1) | inheritedStyles(){return this.#St?.styles().filter((e=>this.isInherite...
method animationStyles (line 1) | animationStyles(){return this.#St?.styles().filter((e=>!this.isInherit...
method transitionsStyle (line 1) | transitionsStyle(){return this.#St?.styles().find((e=>!this.isInherite...
method registeredProperties (line 1) | registeredProperties(){return this.#pt}
method getRegisteredProperty (line 1) | getRegisteredProperty(e){return this.#mt.get(e)}
method functionRules (line 1) | functionRules(){return this.#xt}
method fontPaletteValuesRule (line 1) | fontPaletteValuesRule(){return this.#Rt}
method keyframes (line 1) | keyframes(){return this.#rt}
method positionTryRules (line 1) | positionTryRules(){return this.#It}
method activePositionFallbackIndex (line 1) | activePositionFallbackIndex(){return this.#wt}
method pseudoStyles (line 1) | pseudoStyles(e){r.assertNotNullOrUndefined(this.#kt);const t=this.#kt....
method pseudoTypes (line 1) | pseudoTypes(){return r.assertNotNullOrUndefined(this.#kt),new Set(this...
method customHighlightPseudoStyles (line 1) | customHighlightPseudoStyles(e){r.assertNotNullOrUndefined(this.#Ct);co...
method customHighlightPseudoNames (line 1) | customHighlightPseudoNames(){return r.assertNotNullOrUndefined(this.#C...
method nodeForStyle (line 1) | nodeForStyle(e){return this.#ut.get(e)||this.#ft.get(e)||null}
method availableCSSVariables (line 1) | availableCSSVariables(e){const t=this.#yt.get(e);return t?t.findAvaila...
method computeCSSVariable (line 1) | computeCSSVariable(e,t){const n=this.#yt.get(e);return n?n.computeCSSV...
method resolveProperty (line 1) | resolveProperty(e,t){return this.#yt.get(t)?.resolveProperty(e,t)??null}
method resolveGlobalKeyword (line 1) | resolveGlobalKeyword(e,t){const n=this.#yt.get(e.ownerStyle)?.resolveG...
method isInherited (line 1) | isInherited(e){return this.#bt.has(e)}
method propertyState (line 1) | propertyState(e){const t=this.#yt.get(e.ownerStyle);return t?t.propert...
method resetActiveProperties (line 1) | resetActiveProperties(){r.assertNotNullOrUndefined(this.#St),r.assertN...
method propertyMatchers (line 1) | propertyMatchers(e,t){return[new ve(this,e),new De((()=>t?.get("color"...
class wn (line 1) | class wn{#Tt;styles;#Mt;#Pt;propertiesState=new Map;activeProperties=new...
method constructor (line 1) | constructor(e,t,n,r=!1){this.#Tt=e,this.styles=t,this.#Mt=n,this.#Pt=r}
method computeActiveProperties (line 1) | computeActiveProperties(){this.propertiesState.clear(),this.activeProp...
method updatePropertyState (line 1) | updatePropertyState(e,t){const n=this.activeProperties.get(t);!n?.impo...
function Sn (line 1) | function Sn(e){return"ownerStyle"in e}
class kn (line 1) | class kn{declaration;constructor(e){this.declaration=e}get value(){retur...
method constructor (line 1) | constructor(e){this.declaration=e}
method value (line 1) | get value(){return Sn(this.declaration)?this.declaration.value:this.de...
method style (line 1) | get style(){return Sn(this.declaration)?this.declaration.ownerStyle:th...
method name (line 1) | get name(){return Sn(this.declaration)?this.declaration.name:this.decl...
class Cn (line 1) | class Cn{nodeCascade;name;discoveryTime;rootDiscoveryTime;get isRootEntr...
method isRootEntry (line 1) | get isRootEntry(){return this.rootDiscoveryTime===this.discoveryTime}
method updateRoot (line 1) | updateRoot(e){this.rootDiscoveryTime=Math.min(this.rootDiscoveryTime,e...
method constructor (line 1) | constructor(e,t,n){this.nodeCascade=e,this.name=t,this.discoveryTime=n...
class xn (line 1) | class xn{#Et=0;#Lt=[];#At=new Map;get(e,t){return this.#At.get(e)?.get(t...
method get (line 1) | get(e,t){return this.#At.get(e)?.get(t)}
method add (line 1) | add(e,t){const n=this.get(e,t);if(n)return n;const r=new Cn(e,t,this.#...
method isInInProgressSCC (line 1) | isInInProgressSCC(e){return this.#Lt.includes(e)}
method finishSCC (line 1) | finishSCC(e){const t=this.#Lt.lastIndexOf(e);return console.assert(t>=...
class Tn (line 1) | class Tn{#Ot=new Map;#Dt=new Map;#Nt=new Map;#Ft=new Map;#Bt=!1;#_t;#pt;...
method constructor (line 1) | constructor(e,t){this.#_t=e,this.#pt=t;for(const t of e)for(const e of...
method findAvailableCSSVariables (line 1) | findAvailableCSSVariables(e){const t=this.#Ft.get(e);if(!t)return[];th...
method #Ht (line 1) | #Ht(e,t){const n=this.#Ft.get(e.ownerStyle);if(!n)return null;for(cons...
method resolveProperty (line 1) | resolveProperty(e,t){const n=this.#Ft.get(t);if(!n)return null;for(con...
method #qt (line 1) | #qt(e){const t=this.#Ft.get(e.ownerStyle);if(!t)return null;for(const ...
method #Ut (line 1) | #Ut(e){return S().isPropertyInherited(e.name)&&(this.#zt(e.name)?.inhe...
method #zt (line 1) | #zt(e){const t=this.#pt.find((t=>t.propertyName()===e));return t||null}
method resolveGlobalKeyword (line 1) | resolveGlobalKeyword(e,t){const n=t=>t.ownerStyle.parentRule instanceo...
method computeCSSVariable (line 1) | computeCSSVariable(e,t){const n=this.#Ft.get(e);return n?(this.ensureI...
method innerComputeCSSVariable (line 1) | innerComputeCSSVariable(e,t,n=new xn){const r=this.#Dt.get(e),s=this.#...
method styles (line 1) | styles(){return Array.from(this.#Ft.keys())}
method propertyState (line 1) | propertyState(e){return this.ensureInitialized(),this.#Ot.get(e)||null}
method reset (line 1) | reset(){this.#Bt=!1,this.#Ot.clear(),this.#Dt.clear(),this.#Nt.clear()}
method ensureInitialized (line 1) | ensureInitialized(){if(this.#Bt)return;this.#Bt=!0;const e=new Map;for...
class An (line 1) | class An{#je;id;frameId;sourceURL;hasSourceURL;origin;title;disabled;isI...
method constructor (line 1) | constructor(e,t){this.#je=e,this.id=t.styleSheetId,this.frameId=t.fram...
method originalContentProvider (line 1) | originalContentProvider(){if(!this.#jt){const e=async()=>{const e=awai...
method setSourceMapURL (line 1) | setSourceMapURL(e){this.sourceMapURL=e}
method cssModel (line 1) | cssModel(){return this.#je}
method isAnonymousInlineStyleSheet (line 1) | isAnonymousInlineStyleSheet(){return!this.resourceURL()&&!this.#je.sou...
method isConstructedByNew (line 1) | isConstructedByNew(){return this.isConstructed&&0===this.sourceURL.len...
method resourceURL (line 1) | resourceURL(){return this.isViaInspector()?this.viaInspectorResourceUR...
method getFrameURLPath (line 1) | getFrameURLPath(){const t=this.#je.target().model(ii);if(console.asser...
method viaInspectorResourceURL (line 1) | viaInspectorResourceURL(){return`inspector:///inspector-stylesheet#${t...
method lineNumberInSource (line 1) | lineNumberInSource(e){return this.startLine+e}
method columnNumberInSource (line 1) | columnNumberInSource(e,t){return(e?0:this.startColumn)+t}
method containsLocation (line 1) | containsLocation(e,t){const n=e===this.startLine&&t>=this.startColumn|...
method contentURL (line 1) | contentURL(){return this.resourceURL()}
method contentType (line 1) | contentType(){return e.ResourceType.resourceTypes.Stylesheet}
method requestContent (line 1) | requestContent(){return this.requestContentData().then(t.ContentData.C...
method requestContentData (line 1) | async requestContentData(){const e=await this.#je.getStyleSheetText(th...
method searchInContent (line 1) | async searchInContent(e,n,r){const s=await this.requestContentData();r...
method isViaInspector (line 1) | isViaInspector(){return"inspector"===this.origin}
method createPageResourceLoadInitiator (line 1) | createPageResourceLoadInitiator(){return{target:this.#je.target(),fram...
class Nn (line 1) | class Nn extends e.ObjectWrapper.ObjectWrapper{#Vt=new WeakMap;#Wt=new M...
method constructor (line 1) | constructor(){super(),W.instance().observeModels(ii,this)}
method instance (line 1) | static instance({forceNew:e}={forceNew:!1}){return Dn&&!e||(Dn=new Nn)...
method removeInstance (line 1) | static removeInstance(){Dn=null}
method modelAdded (line 1) | modelAdded(e){const t=e.addEventListener(ri.FrameAdded,this.frameAdded...
method modelRemoved (line 1) | modelRemoved(t){const n=this.#Vt.get(t);n&&e.EventTarget.removeEventLi...
method frameAdded (line 1) | frameAdded(e){const t=e.data,n=this.#Wt.get(t.id);if(n)t.setCreationSt...
method frameDetached (line 1) | frameDetached(e){const{frame:t,isSwap:n}=e.data;if(this.decreaseOrRemo...
method frameNavigated (line 1) | frameNavigated(e){const t=e.data;this.dispatchEventToListeners("FrameN...
method resourceAdded (line 1) | resourceAdded(e){this.dispatchEventToListeners("ResourceAdded",{resour...
method decreaseOrRemoveFrame (line 1) | decreaseOrRemoveFrame(e){const t=this.#Wt.get(e);t&&(1===t.count?(this...
method resetOutermostFrame (line 1) | resetOutermostFrame(){const e=this.getAllFrames().filter((e=>e.isOuter...
method getFrame (line 1) | getFrame(e){const t=this.#Wt.get(e);return t?t.frame:null}
method getAllFrames (line 1) | getAllFrames(){return Array.from(this.#Wt.values(),(e=>e.frame))}
method getOutermostFrame (line 1) | getOutermostFrame(){return this.#Kt}
method getOrWaitForFrame (line 1) | async getOrWaitForFrame(e,t){const n=this.getFrame(e);return!n||t&&t==...
method resolveAwaitedFrame (line 1) | resolveAwaitedFrame(e){const t=this.#$t.get(e.id);if(!t)return;const n...
class Bn (line 1) | class Bn{static fromLocalObject(e){return new zn(e)}static type(e){if(nu...
method fromLocalObject (line 1) | static fromLocalObject(e){return new zn(e)}
method type (line 1) | static type(e){if(null===e)return"null";const t=typeof e;return"object...
method isNullOrUndefined (line 1) | static isNullOrUndefined(e){if(void 0===e)return!0;switch(e.type){case...
method arrayNameFromDescription (line 1) | static arrayNameFromDescription(e){return e.replace(Gn,"").replace(Kn,...
method arrayLength (line 1) | static arrayLength(e){if("array"!==e.subtype&&"typedarray"!==e.subtype...
method arrayBufferByteLength (line 1) | static arrayBufferByteLength(e){if("arraybuffer"!==e.subtype)return 0;...
method unserializableDescription (line 1) | static unserializableDescription(e){if("number"==typeof e){const t=Str...
method toCallArgument (line 1) | static toCallArgument(e){const t=typeof e;if("undefined"===t)return{};...
method loadFromObjectPerProto (line 1) | static async loadFromObjectPerProto(e,t,n=!1){const r=await Promise.al...
method customPreview (line 1) | customPreview(){return null}
method unserializableValue (line 1) | unserializableValue(){throw new Error("Not implemented")}
method preview (line 1) | get preview(){}
method className (line 1) | get className(){return null}
method callFunction (line 1) | callFunction(e,t){throw new Error("Not implemented")}
method callFunctionJSON (line 1) | callFunctionJSON(e,t){throw new Error("Not implemented")}
method arrayBufferByteLength (line 1) | arrayBufferByteLength(){throw new Error("Not implemented")}
method deleteProperty (line 1) | deleteProperty(e){throw new Error("Not implemented")}
method setPropertyValue (line 1) | setPropertyValue(e,t){throw new Error("Not implemented")}
method release (line 1) | release(){}
method debuggerModel (line 1) | debuggerModel(){throw new Error("DebuggerModel-less object")}
method runtimeModel (line 1) | runtimeModel(){throw new Error("RuntimeModel-less object")}
method isNode (line 1) | isNode(){return!1}
method isLinearMemoryInspectable (line 1) | isLinearMemoryInspectable(){return!1}
class _n (line 1) | class _n extends Bn{runtimeModelInternal;#Xt;#g;#Jt;#Yt;#Zt;hasChildrenI...
method constructor (line 1) | constructor(e,t,n,r,s,i,o,a,l,d){super(),this.runtimeModelInternal=e,t...
method customPreview (line 1) | customPreview(){return this.#nn}
method objectId (line 1) | get objectId(){return this.#Yt}
method type (line 1) | get type(){return this.#g}
method subtype (line 1) | get subtype(){return this.#Jt}
method value (line 1) | get value(){return this.#u}
method unserializableValue (line 1) | unserializableValue(){return this.#tn}
method description (line 1) | get description(){return this.#Zt}
method description (line 1) | set description(e){this.#Zt=e}
method hasChildren (line 1) | get hasChildren(){return this.hasChildrenInternal}
method preview (line 1) | get preview(){return this.#en}
method className (line 1) | get className(){return this.#rn}
method getOwnProperties (line 1) | getOwnProperties(e,t=!1){return this.doGetProperties(!0,!1,t,e)}
method getAllProperties (line 1) | getAllProperties(e,t,n=!1){return this.doGetProperties(!1,e,n,t)}
method createRemoteObject (line 1) | async createRemoteObject(e){return this.runtimeModelInternal.createRem...
method doGetProperties (line 1) | async doGetProperties(e,t,n,r){if(!this.#Yt)return{properties:null,int...
method setPropertyValue (line 1) | async setPropertyValue(e,t){if(!this.#Yt)return"Can’t set a property o...
method doSetObjectPropertyValue (line 1) | async doSetObjectPropertyValue(e,t){const n=[t,Bn.toCallArgument(e)],r...
method deleteProperty (line 1) | async deleteProperty(e){if(!this.#Yt)return"Can’t delete a property of...
method callFunction (line 1) | async callFunction(e,t){const n=await this.#Xt.invoke_callFunctionOn({...
method callFunctionJSON (line 1) | async callFunctionJSON(e,t){const n=await this.#Xt.invoke_callFunction...
method release (line 1) | release(){this.#Yt&&this.#Xt.invoke_releaseObject({objectId:this.#Yt})}
method arrayLength (line 1) | arrayLength(){return Bn.arrayLength(this)}
method arrayBufferByteLength (line 1) | arrayBufferByteLength(){return Bn.arrayBufferByteLength(this)}
method debuggerModel (line 1) | debuggerModel(){return this.runtimeModelInternal.debuggerModel()}
method runtimeModel (line 1) | runtimeModel(){return this.runtimeModelInternal}
method isNode (line 1) | isNode(){return Boolean(this.#Yt)&&"object"===this.type&&"node"===this...
method isLinearMemoryInspectable (line 1) | isLinearMemoryInspectable(){return"object"===this.type&&void 0!==this....
class Hn (line 1) | class Hn extends _n{#sn;#in;constructor(e,t,n,r,s,i,o,a,l){super(e,t,r,s...
method constructor (line 1) | constructor(e,t,n,r,s,i,o,a,l){super(e,t,r,s,i,o,a,l),this.#sn=n,this....
method doGetProperties (line 1) | async doGetProperties(e,t,n){if(t)return{properties:[],internalPropert...
method doSetObjectPropertyValue (line 1) | async doSetObjectPropertyValue(e,t){const n=t.value,r=await this.debug...
class Un (line 1) | class Un{number;callFrameId;constructor(e,t){this.number=e,this.callFram...
method constructor (line 1) | constructor(e,t){this.number=e,this.callFrameId=t}
class qn (line 1) | class qn{name;value;enumerable;writable;isOwn;wasThrown;symbol;synthetic...
method constructor (line 1) | constructor(e,t,n,r,s,i,o,a,l,d){this.name=e,this.value=null!==t?t:voi...
method setSyntheticValue (line 1) | async setSyntheticValue(e){if(!this.syntheticSetter)return!1;const t=a...
method isAccessorProperty (line 1) | isAccessorProperty(){return Boolean(this.getter||this.setter)}
method match (line 1) | match({includeNullOrUndefinedValues:e,regex:t}){return!(null!==t&&!t.t...
method cloneWithNewName (line 1) | cloneWithNewName(e){const t=new qn(e,this.value??null,this.enumerable,...
class zn (line 1) | class zn extends Bn{valueInternal;#on;#an;constructor(e){super(),this.va...
method constructor (line 1) | constructor(e){super(),this.valueInternal=e}
method objectId (line 1) | get objectId(){}
method value (line 1) | get value(){return this.valueInternal}
method unserializableValue (line 1) | unserializableValue(){return Bn.unserializableDescription(this.valueIn...
method description (line 1) | get description(){if(this.#on)return this.#on;if("object"===this.type)...
method formatValue (line 1) | formatValue(e){if(!e)return"undefined";const t=e.description||"";retur...
method concatenate (line 1) | concatenate(e,t,n){let r=e;const s=this.children();for(let e=0;e<s.len...
method type (line 1) | get type(){return typeof this.valueInternal}
method subtype (line 1) | get subtype(){return null===this.valueInternal?"null":Array.isArray(th...
method hasChildren (line 1) | get hasChildren(){return"object"==typeof this.valueInternal&&null!==th...
method getOwnProperties (line 1) | async getOwnProperties(e,t=!1){let n=this.children();return t&&(n=n.fi...
method getAllProperties (line 1) | async getAllProperties(e,t,n=!1){return e?{properties:[],internalPrope...
method children (line 1) | children(){return this.hasChildren?(this.#an||(this.#an=Object.entries...
method arrayLength (line 1) | arrayLength(){return Array.isArray(this.valueInternal)?this.valueInter...
method callFunction (line 1) | async callFunction(e,t){const n=this.valueInternal,r=t?t.map((e=>e.val...
method callFunctionJSON (line 1) | async callFunctionJSON(e,t){const n=this.valueInternal,r=t?t.map((e=>e...
class jn (line 1) | class jn{#ln;constructor(e){this.#ln=e}static objectAsArray(e){if(!e||"o...
method constructor (line 1) | constructor(e){this.#ln=e}
method objectAsArray (line 1) | static objectAsArray(e){if(!e||"object"!==e.type||"array"!==e.subtype&...
method createFromRemoteObjects (line 1) | static async createFromRemoteObjects(e){if(!e.length)throw new Error("...
method at (line 1) | async at(e){if(e<0||e>this.#ln.arrayLength())throw new Error("Out of r...
method length (line 1) | length(){return this.#ln.arrayLength()}
method map (line 1) | map(e){const t=[];for(let n=0;n<this.length();++n)t.push(this.at(n).th...
method object (line 1) | object(){return this.#ln}
class Vn (line 1) | class Vn{#dn;constructor(e){this.#dn=e}static objectAsFunction(e){if("fu...
method constructor (line 1) | constructor(e){this.#dn=e}
method objectAsFunction (line 1) | static objectAsFunction(e){if("function"!==e.type)throw new Error("Obj...
method targetFunction (line 1) | async targetFunction(){const e=await this.#dn.getOwnProperties(!1),t=e...
method targetFunctionDetails (line 1) | async targetFunctionDetails(){const e=await this.targetFunction(),t=aw...
class Wn (line 1) | class Wn{#dn;#cn;#hn;constructor(e){this.#dn=e}static objectAsError(e){i...
method constructor (line 1) | constructor(e){this.#dn=e}
method objectAsError (line 1) | static objectAsError(e){if("error"!==e.subtype)throw new Error(`Object...
method errorStack (line 1) | get errorStack(){return this.#dn.description??""}
method exceptionDetails (line 1) | exceptionDetails(){return this.#cn||(this.#cn=this.#un()),thi
Copy disabled (too large)
Download .json
Condensed preview — 7392 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (62,494K chars).
[
{
"path": ".babelrc",
"chars": 139,
"preview": "{\n \"presets\": [\n \"module:@react-native/babel-preset\"\n ],\n \"plugins\": [\n \"babel-plugin-transform-f"
},
{
"path": ".bundle/config",
"chars": 59,
"preview": "BUNDLE_PATH: \"vendor/bundle\"\nBUNDLE_FORCE_RUBY_PLATFORM: 1\n"
},
{
"path": ".clang-format",
"chars": 2655,
"preview": "---\nAccessModifierOffset: -1\nAlignAfterOpenBracket: AlwaysBreak\nAlignConsecutiveAssignments: false\nAlignConsecutiveDecla"
},
{
"path": ".editorconfig",
"chars": 236,
"preview": "# EditorConfig is awesome: https://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Unix-style newlines wit"
},
{
"path": ".eslintignore",
"chars": 569,
"preview": "**/main.js\n**/staticBundle.js\ndocs/generatedComponentApiDocs.js\npackages/react-native/flow/\npackages/react-native/sdks/\n"
},
{
"path": ".eslintrc.js",
"chars": 4380,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".flowconfig",
"chars": 2321,
"preview": "[ignore]\n; Ignore build cache folder\n<PROJECT_ROOT>/packages/react-native/sdks/.*\n\n; Ignore fb_internal modules\n<PROJECT"
},
{
"path": ".gitattributes",
"chars": 39,
"preview": "*.js.flow linguist-language=JavaScript\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 5238,
"preview": "name: 🐛 React Native - Bug Report\ndescription: Report a reproducible bug or regression in React Native.\nlabels: [\"Needs:"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 1725,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: ⬆️ Upgrade - Build Regression\n url: https://github.com/react"
},
{
"path": ".github/ISSUE_TEMPLATE/debugger_bug_report.yml",
"chars": 3052,
"preview": "name: 🔍 Debugger - Bug Report\ndescription: Report a bug with React Native DevTools and the New Debugger\nlabels: [\"Needs:"
},
{
"path": ".github/ISSUE_TEMPLATE/new_architecture_bug_report.yml",
"chars": 5543,
"preview": "name: 💫 New Architecture - Bug Report\ndescription: Report a reproducible bug or a build issue when using the New Archite"
},
{
"path": ".github/ISSUE_TEMPLATE.md",
"chars": 180,
"preview": "✋ To keep the backlog clean and actionable, issues will be\n🚫 closed if they do not follow one of the issue templates:\n👉 "
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 868,
"preview": "<!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please provide "
},
{
"path": ".github/RELEASE_TEMPLATE.md",
"chars": 727,
"preview": "<!-- Template for pre-release GitHub release -->\n\n<!-- TODO Post about this release to https://github.com/reactwg/react-"
},
{
"path": ".github/SUPPORT.md",
"chars": 2395,
"preview": "Thanks for using React Native! If you need help with your React Native app, the right place to go depends on the type of"
},
{
"path": ".github/actions/build-android/action.yml",
"chars": 5496,
"preview": "name: build-android\ndescription: This action builds android\ninputs:\n release-type:\n required: true\n description: "
},
{
"path": ".github/actions/build-fantom-runner/action.yml",
"chars": 3397,
"preview": "name: Build Fantom Runner\ninputs:\n release-type:\n required: true\n description: The type of release we are buildin"
},
{
"path": ".github/actions/build-npm-package/action.yml",
"chars": 3207,
"preview": "name: build-npm-package\ndescription: This action builds the NPM package and uploads it to Maven\ninputs:\n release-type:\n"
},
{
"path": ".github/actions/create-release/action.yml",
"chars": 1543,
"preview": "name: create_release\ndescription: Creates a new React Native release\ninputs:\n version:\n description: \"The version of"
},
{
"path": ".github/actions/diff-js-api-changes/action.yml",
"chars": 2735,
"preview": "name: diff-js-api-changes\ndescription: Check for breaking changes in the public React Native JS API\noutputs:\n message:\n"
},
{
"path": ".github/actions/maestro-android/action.yml",
"chars": 3334,
"preview": "name: Maestro E2E Android\ndescription: Runs E2E Tests on Android using Maestro\ninputs:\n app-path:\n required: true\n "
},
{
"path": ".github/actions/maestro-ios/action.yml",
"chars": 2584,
"preview": "name: Maestro E2E iOS\ndescription: Runs E2E Tests on iOS using Maestro\ninputs:\n app-path:\n required: true\n descri"
},
{
"path": ".github/actions/post-pr-comment/action.yml",
"chars": 1858,
"preview": "name: post-pr-comment\ndescription: Post or update a PR comment, or delete if no sections\ninputs:\n sections:\n descrip"
},
{
"path": ".github/actions/prepare-hermes-v1-app/action.yml",
"chars": 1270,
"preview": "name: prepare-hermes-v1-app\ndescription: Prepares a React Native app with Hermes V1 enabled\ninputs:\n retry-count:\n d"
},
{
"path": ".github/actions/prepare-ios-tests/action.yml",
"chars": 630,
"preview": "name: prepare-ios-tests\ndescription: Prepare iOS Tests\nruns:\n using: composite\n steps:\n - name: Run Ruby Tests\n "
},
{
"path": ".github/actions/run-fantom-tests/action.yml",
"chars": 1486,
"preview": "name: Run Fantom Tests\nruns:\n using: composite\n steps:\n - name: Install runtime dependencies\n shell: bash\n "
},
{
"path": ".github/actions/setup-gradle/action.yml",
"chars": 1415,
"preview": "name: Setup gradle\ndescription: \"Set up your GitHub Actions workflow with a specific version of gradle\"\ninputs:\n cache-"
},
{
"path": ".github/actions/setup-node/action.yml",
"chars": 396,
"preview": "name: Setup node.js\ndescription: 'Set up your GitHub Actions workflow with a specific version of node.js'\ninputs:\n node"
},
{
"path": ".github/actions/setup-xcode/action.yml",
"chars": 415,
"preview": "name: Setup xcode\ndescription: 'Set up your GitHub Actions workflow with a specific version of xcode'\ninputs:\n xcode-ve"
},
{
"path": ".github/actions/test-ios-helloworld/action.yml",
"chars": 2562,
"preview": "name: test-ios-helloworld\ndescription: Test iOS Hello World\ninputs:\n use-frameworks:\n description: The dependency bu"
},
{
"path": ".github/actions/test-ios-rntester/action.yml",
"chars": 4711,
"preview": "name: test-ios-rntester\ndescription: Test iOS RNTester\ninputs:\n ruby-version:\n description: The version of ruby that"
},
{
"path": ".github/actions/test-js/action.yml",
"chars": 728,
"preview": "name: test-js\ndescription: Runs all the JS tests in the codebase\ninputs:\n node-version:\n description: \"The node.js v"
},
{
"path": ".github/actions/yarn-install/action.yml",
"chars": 615,
"preview": "name: yarn-install\nruns:\n using: composite\n steps:\n - name: Install dependencies\n shell: bash\n run: |\n "
},
{
"path": ".github/workflow-scripts/__tests__/createDraftRelease-test.js",
"chars": 13203,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/__tests__/extractIssueOncalls-test.js",
"chars": 2448,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/__tests__/generateChangelog-test.js",
"chars": 7006,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/__tests__/publishTemplate-test.js",
"chars": 3278,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/__tests__/verifyArtifactsAreOnMaven-test.js",
"chars": 2932,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/__tests__/verifyPublishedPackage-test.js",
"chars": 4384,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/__tests__/verifyReleaseOnNpm-test.js",
"chars": 2661,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/actOnLabel.js",
"chars": 7310,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/addDescriptiveLabels.js",
"chars": 3257,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/analyze_scripts.sh",
"chars": 679,
"preview": "#!/bin/bash\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license "
},
{
"path": ".github/workflow-scripts/checkBranchTarget.js",
"chars": 1053,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/checkForReproducer.js",
"chars": 2972,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/createDraftRelease.js",
"chars": 5432,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/exec_swallow_error.sh",
"chars": 383,
"preview": "#!/bin/bash\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license "
},
{
"path": ".github/workflow-scripts/extractIssueOncalls.js",
"chars": 2544,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/generateChangelog.js",
"chars": 3377,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/hermes-v1.patch",
"chars": 1129,
"preview": "diff --git a/android/settings.gradle b/android/settings.gradle\nindex 63b5d4e..6359ec3 100644\n--- a/android/settings.grad"
},
{
"path": ".github/workflow-scripts/lint_files.sh",
"chars": 351,
"preview": "#!/bin/bash\n# Copyright (c) Meta Platforms, Inc. and affiliates.\n#\n# This source code is licensed under the MIT license "
},
{
"path": ".github/workflow-scripts/maestro-android.js",
"chars": 4238,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/maestro-ios.js",
"chars": 4974,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/publishTemplate.js",
"chars": 2207,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/selectLatestHermesV1Version.js",
"chars": 1144,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/utils.js",
"chars": 704,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/validatePRBody.js",
"chars": 2776,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/verifyArtifactsAreOnMaven.js",
"chars": 1356,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/verifyPublishedPackage.js",
"chars": 1574,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/verifyReleaseOnNpm.js",
"chars": 997,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflow-scripts/verifyVersion.js",
"chars": 3664,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".github/workflows/analyze-pr.yml",
"chars": 2111,
"preview": "name: Analyze Pull Request\n\non:\n pull_request_target:\n types: [opened, edited, reopened, synchronize]\n\npermissions:\n"
},
{
"path": ".github/workflows/api-changes.yml",
"chars": 808,
"preview": "name: Analyze API Changes\n\non:\n pull_request_target:\n types: [opened, edited, reopened, synchronize]\n\npermissions:\n "
},
{
"path": ".github/workflows/autorebase.yml",
"chars": 988,
"preview": "name: Automatic Rebase\n# This workflow is used to automatically rebase a PR when a comment is made\n# containing the text"
},
{
"path": ".github/workflows/bump-podfile-lock.yml",
"chars": 1473,
"preview": "name: Bump Podfile.lock\n\non:\n workflow_call: # this directive allow us to call this workflow from other workflows\n\njobs"
},
{
"path": ".github/workflows/cache-reaper.yml",
"chars": 489,
"preview": "name: Keep Github Actions Cache < 10GB\n\non:\n workflow_dispatch:\n schedule:\n # Run every 2hrs during weekdays\n - "
},
{
"path": ".github/workflows/check-for-reproducer.yml",
"chars": 746,
"preview": "name: Check for reproducer\n# This workflow is triggered when issue is created or edited.\non:\n issues:\n types: [opene"
},
{
"path": ".github/workflows/close-pr.yml",
"chars": 2772,
"preview": "name: Label closed PR as merged and leave a comment\non:\n push\n\npermissions:\n contents: read\n pull-requests: write\n\njo"
},
{
"path": ".github/workflows/create-draft-release.yml",
"chars": 2196,
"preview": "name: Create Draft Release\n\non:\n workflow_call:\n inputs:\n hermesVersion:\n required: false\n type: "
},
{
"path": ".github/workflows/create-release.yml",
"chars": 1957,
"preview": "name: Create release\n\non:\n workflow_dispatch:\n inputs:\n version:\n description: \"The version of React Nat"
},
{
"path": ".github/workflows/generate-changelog.yml",
"chars": 922,
"preview": "name: Generate Changelog\n\non:\n workflow_call:\n\njobs:\n generate-changelog:\n runs-on: ubuntu-latest\n steps:\n "
},
{
"path": ".github/workflows/monitor-new-issues.yml",
"chars": 1526,
"preview": "name: Monitor React Native New Issues\n\non:\n schedule:\n - cron: \"0 0,6,12,18 * * *\"\n workflow_dispatch:\n\n# Reminder "
},
{
"path": ".github/workflows/needs-attention.yml",
"chars": 894,
"preview": "name: Issue Needs Attention\n# This workflow is triggered on issue comments.\non:\n issue_comment:\n types: [created]\n\np"
},
{
"path": ".github/workflows/nightly.yml",
"chars": 3834,
"preview": "name: Nightly\n\non:\n workflow_dispatch:\n # nightly build @ 2:15 AM UTC\n schedule:\n - cron: \"15 2 * * *\"\n\njobs:\n se"
},
{
"path": ".github/workflows/on-issue-labeled.yml",
"chars": 2238,
"preview": "name: On Issue Labeled\n# This workflow is triggered when a label is added to an issue.\non:\n issues:\n types: [labeled"
},
{
"path": ".github/workflows/prebuild-ios-core.yml",
"chars": 10393,
"preview": "name: Prebuild iOS Core\n\non:\n workflow_call: # this directive allow us to call this workflow from other workflows\n i"
},
{
"path": ".github/workflows/prebuild-ios-dependencies.yml",
"chars": 8854,
"preview": "name: Prebuild iOS Dependencies\n\non:\n workflow_call: # this directive allow us to call this workflow from other workflo"
},
{
"path": ".github/workflows/publish-bumped-packages.yml",
"chars": 835,
"preview": "name: Publish Bumped Packages\n\non:\n push:\n branches:\n - \"main\"\n - \"*-stable\"\n\njobs:\n publish_bumped_packa"
},
{
"path": ".github/workflows/publish-release.yml",
"chars": 6585,
"preview": "name: Publish Release\non:\n push:\n tags:\n - \"v0.*.*\" # This should match v0.X.Y\n - \"v0.*.*-rc.*\" # This sho"
},
{
"path": ".github/workflows/retry-workflow.yml",
"chars": 609,
"preview": "name: Retry workflow\n# Based on https://stackoverflow.com/a/78314483\n\non:\n workflow_dispatch:\n inputs:\n "
},
{
"path": ".github/workflows/stale-bot.yml",
"chars": 4553,
"preview": "name: Stale bot\non:\n schedule:\n - cron: \"*/10 5 * * *\"\njobs:\n stale:\n runs-on: ubuntu-latest\n if: github.repo"
},
{
"path": ".github/workflows/test-all.yml",
"chars": 25621,
"preview": "name: Test All\n\non:\n workflow_dispatch:\n pull_request:\n push:\n branches:\n - main\n - \"*-stable\"\n\njobs:\n "
},
{
"path": ".github/workflows/validate-cxx-api-snapshots.yml",
"chars": 2780,
"preview": "name: Validate C++ API Snapshots\n\non:\n workflow_dispatch:\n pull_request:\n paths:\n - \"packages/react-native/Rea"
},
{
"path": ".github/workflows/validate-dotslash-artifacts.yml",
"chars": 1402,
"preview": "name: Validate DotSlash Artifacts\n\non:\n workflow_dispatch:\n release:\n types: [published]\n push:\n branches:\n "
},
{
"path": ".gitignore",
"chars": 4526,
"preview": "# Xcode\n!**/*.xcodeproj\n!**/*.pbxproj\n!**/*.xcworkspacedata\n!**/*.xcsettings\n!**/*.xcscheme\n*.pbxuser\n!default.pbxuser\n*"
},
{
"path": ".markdownlint-cli2.mjs",
"chars": 1096,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": ".prettierignore",
"chars": 258,
"preview": "# Ignore Pods\n**/Pods\n\n# Ignore hermes as it is downloaded from the react_native_pods\n**/sdks/hermes\n**/sdks/downloads\n\n"
},
{
"path": ".prettierrc.js",
"chars": 897,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "CHANGELOG-0.5x.md",
"chars": 276295,
"preview": "# Changelog (pre 0.60)\n\nThis file contains all changelogs for releases in the pre-0.60 range. Please check out the other"
},
{
"path": "CHANGELOG-0.6x.md",
"chars": 317064,
"preview": "# Changelog (pre 0.70)\n\nThis file contains all changelogs for releases in the 0.60-0.69 range. Please check out the othe"
},
{
"path": "CHANGELOG-0.7x.md",
"chars": 720092,
"preview": "# Changelog (pre 0.80)\n\n## v0.79.7\n\n### Fixed\n\n#### Android specific\n\n- **Layout:** Make missing parent view state in up"
},
{
"path": "CHANGELOG.md",
"chars": 254292,
"preview": "# Changelog\n\n## v0.85.0-rc.7\n\n### Fixed\n\n#### iOS specific\n\n- **Hermes**: Fix Hermes crash when async void TurboModule m"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3352,
"preview": "# Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and"
},
{
"path": "CONTRIBUTING.md",
"chars": 525,
"preview": "# Contributing to React Native\n\nThank you for your interest in contributing to React Native! From commenting on and tria"
},
{
"path": "ECOSYSTEM.md",
"chars": 10445,
"preview": "# The React Native Ecosystem\n\nWe aim to build a vibrant and inclusive ecosystem of partners, core contributors, and comm"
},
{
"path": "Gemfile",
"chars": 420,
"preview": "source 'https://rubygems.org'\n\n# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version\nruby \""
},
{
"path": "LICENSE",
"chars": 1088,
"preview": "MIT License\n\nCopyright (c) Meta Platforms, Inc. and affiliates.\n\nPermission is hereby granted, free of charge, to any pe"
},
{
"path": "README.md",
"chars": 6657,
"preview": "<h1 align=\"center\">\n <a href=\"https://reactnative.dev/\">\n React Native\n </a>\n</h1>\n\n<p align=\"center\">\n <strong>Le"
},
{
"path": "__docs__/GUIDELINES.md",
"chars": 3854,
"preview": "# React Native Technical Documentation Guidelines\n\n_This is a document about documentation (hence the file name)._\n\n## M"
},
{
"path": "__docs__/README-template.md",
"chars": 959,
"preview": "# _Subsystem name_\n\n[🏠 Home](path/to/main/__docs__/README.md)\n\n_Description of the subsystem with the necessary context."
},
{
"path": "__docs__/README.md",
"chars": 3866,
"preview": "# React Native Technical Documentation\n\nThe React Native technical documentation describes how React Native works\nintern"
},
{
"path": "build.gradle.kts",
"chars": 7951,
"preview": "/*\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found "
},
{
"path": "flow-typed/environment/node.js",
"chars": 170096,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/@expo/spawn-async_v1.x.x.js",
"chars": 1044,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/@isaacs/ttlcache_1.x.x.js",
"chars": 6590,
"preview": "/**\n * @flow strict-local\n * @format\n */\n\ndeclare module '@isaacs/ttlcache' {\n declare export default class TTLCache<K,"
},
{
"path": "flow-typed/npm/@octokit/rest_v22.x.x.js",
"chars": 1339,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/@react-native-community/cli-server-api_v19.x.x.js",
"chars": 1068,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/@react-native-community/cli-types_v19.x.x.js",
"chars": 1306,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/@tsconfig/node22_v22.x.x.js",
"chars": 298,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/actual-request-url_v1.x.x.js",
"chars": 927,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/ansi-regex_v5.x.x.js",
"chars": 262,
"preview": "/**\n * @flow strict\n * @format\n */\n\ndeclare module 'ansi-regex' {\n declare export type Options = {\n /**\n * Match"
},
{
"path": "flow-typed/npm/babel-traverse_v7.x.x.js",
"chars": 76182,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/babel-types_v7.x.x.js",
"chars": 234452,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/babel_v7.x.x.js",
"chars": 45237,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/base64-js_v1.x.x.js",
"chars": 232,
"preview": "/**\n * @flow strict\n * @format\n */\n\ndeclare module 'base64-js' {\n declare module.exports: {\n byteLength: string => n"
},
{
"path": "flow-typed/npm/chrome-launcher_v0.15.x.js",
"chars": 1270,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/chromium-edge-launcher_v0.2.x.js",
"chars": 1260,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/commander_v12.x.x.js",
"chars": 30352,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/connect_v3.x.x.js",
"chars": 1388,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/cross-spawn_v7.x.x.js",
"chars": 451,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/debug_v4.4.x.js",
"chars": 1667,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/deep-equal_v1.x.x.js",
"chars": 368,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/electron-packager_v18.x.x.js",
"chars": 4087,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/electron_v36.x.x.js",
"chars": 347,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/execa_v5.x.x.js",
"chars": 2703,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/fb-dotslash_v0.x.x.js",
"chars": 295,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/ini_v5.x.x.js",
"chars": 725,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow strict\n * @format\n */\n\n// Buil"
},
{
"path": "flow-typed/npm/jest-diff_v29.x.x.js",
"chars": 1044,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow strict\n * @format\n */\n\ndeclare"
},
{
"path": "flow-typed/npm/jest-snapshot_v29.x.x.js",
"chars": 2032,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/jest.js",
"chars": 38073,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/jsonc-parser_v2.2.x.js",
"chars": 13784,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/listr2_v8.x.x.js",
"chars": 1582,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow\n * @format\n */\n\ndeclare module"
},
{
"path": "flow-typed/npm/listr_v14.x.x.js",
"chars": 1589,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow\n * @format\n */\n\ndeclare module"
},
{
"path": "flow-typed/npm/node-fetch_v2.x.x.js",
"chars": 4387,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/open_v7.x.x.js",
"chars": 597,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/pretty-format_v29.x.x.js",
"chars": 1904,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow strict\n * @format\n */\ndeclare "
},
{
"path": "flow-typed/npm/promise_v8.x.x.js",
"chars": 664,
"preview": "/**\n * @flow strict\n * @format\n */\n\ndeclare module 'promise/setimmediate/es6-extensions' {\n declare module.exports: typ"
},
{
"path": "flow-typed/npm/react-dom_v17.x.x.js",
"chars": 3713,
"preview": "declare module 'react-dom' {\n import type {Component} from 'react';\n\n declare var version: string;\n\n declare function"
},
{
"path": "flow-typed/npm/react-test-renderer_v16.x.x.js",
"chars": 2643,
"preview": "// Type definitions for react-test-renderer 16.x.x\n// Ported from: https://github.com/DefinitelyTyped/DefinitelyTyped/bl"
},
{
"path": "flow-typed/npm/rxjs_v6.x.x.js",
"chars": 108585,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow strict\n * @format\n */\n\n/** OPE"
},
{
"path": "flow-typed/npm/selfsigned_v2.x.x.js",
"chars": 2394,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/semver_v7.x.x.js",
"chars": 5934,
"preview": "declare module 'semver' {\n declare type Release =\n | \"major\"\n | \"premajor\"\n | \"minor\"\n | \"preminor\"\n | \""
},
{
"path": "flow-typed/npm/serve-static_v1.x.x.js",
"chars": 3813,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/shelljs_v0.x.x.js",
"chars": 10405,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow\n * @format\n */\n\n'use strict';\n"
},
{
"path": "flow-typed/npm/signedsource_v1.x.x.js",
"chars": 432,
"preview": "/**\n * (c) Meta Platforms, Inc. and affiliates. Confidential and proprietary.\n *\n * @flow strict\n * @format\n */\n\ndeclare"
},
{
"path": "flow-typed/npm/stacktrace-parser_v0.1.x.js",
"chars": 251,
"preview": "/**\n * @flow strict\n * @format\n */\n\ntype StackFrame = {\n file: string,\n methodName: string,\n lineNumber: number,\n co"
},
{
"path": "flow-typed/npm/tinybench_v4.1.x.js",
"chars": 3241,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/tinyglobby_v0.2.x.js",
"chars": 1091,
"preview": "declare module 'tinyglobby' {\n import typeof FSModule from 'fs';\n\n declare type FileSystemAdapter = Partial<FSModule>;"
},
{
"path": "flow-typed/npm/typescript_v5.x.x.js",
"chars": 1412,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/undici_v6.x.x.js",
"chars": 947,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/wait-for-expect_v3.x.x.js",
"chars": 484,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/ws_v7.x.x.js",
"chars": 9065,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "flow-typed/npm/yargs_v17.x.x.js",
"chars": 9901,
"preview": "// flow-typed version: f7c859e705/yargs_v17.x.x/flow_>=v0.104.x\n\ndeclare module 'yargs' {\n declare type Argv = {\n [k"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 252,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributi"
},
{
"path": "gradle.properties",
"chars": 1247,
"preview": "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8\norg.gradle.parallel=true\norg.gradle.caching=true"
},
{
"path": "gradlew",
"chars": 8595,
"preview": "#!/bin/sh\n\n#\n# Copyright © 2015 the original authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\")"
},
{
"path": "gradlew.bat",
"chars": 2896,
"preview": "@rem\r\n@rem Copyright 2015 the original author or authors.\r\n@rem\r\n@rem Licensed under the Apache License, Version 2.0 (th"
},
{
"path": "jest/preprocessor.js",
"chars": 4359,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "jest.config.js",
"chars": 2194,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "package.json",
"chars": 5008,
"preview": "{\n \"name\": \"@react-native/monorepo\",\n \"private\": true,\n \"version\": \"1000.0.0\",\n \"license\": \"MIT\",\n \"packageManager\""
},
{
"path": "packages/assets/README.md",
"chars": 631,
"preview": "# @react-native/assets-registry\n\n[![Version][version-badge]][package]\n\n## Installation\n\n```\nyarn add --dev @react-native"
},
{
"path": "packages/assets/__tests__/path-support-test.js",
"chars": 2413,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/assets/package.json",
"chars": 781,
"preview": "{\n \"name\": \"@react-native/assets-registry\",\n \"version\": \"0.86.0-main\",\n \"description\": \"Asset support code for React "
},
{
"path": "packages/assets/path-support.js",
"chars": 2541,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/assets/registry.js",
"chars": 1066,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/babel-plugin-codegen/README.md",
"chars": 677,
"preview": "# @react-native/babel-plugin-codegen\n\n[![Version][version-badge]][package]\n\n## Installation\n\n```\nyarn add --dev @babel/c"
},
{
"path": "packages/babel-plugin-codegen/__test_fixtures__/failures.js",
"chars": 6147,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/babel-plugin-codegen/__test_fixtures__/fixtures.js",
"chars": 5617,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/babel-plugin-codegen/__tests__/__snapshots__/index-test.js.snap",
"chars": 11765,
"preview": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Babel plugin inline view configs can inline config for CommandsWith"
},
{
"path": "packages/babel-plugin-codegen/__tests__/index-test.js",
"chars": 1503,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/babel-plugin-codegen/index.js",
"chars": 8190,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/babel-plugin-codegen/package.json",
"chars": 913,
"preview": "{\n \"name\": \"@react-native/babel-plugin-codegen\",\n \"version\": \"0.86.0-main\",\n \"description\": \"Babel plugin to generate"
},
{
"path": "packages/community-cli-plugin/.gitignore",
"chars": 51,
"preview": "# Dependencies\n/node_modules\n\n# Build output\n/dist\n"
},
{
"path": "packages/community-cli-plugin/README.md",
"chars": 3844,
"preview": "# @react-native/community-cli-plugin\n\n> This is an internal dependency of React Native. **Please don't depend on it dire"
},
{
"path": "packages/community-cli-plugin/package.json",
"chars": 1489,
"preview": "{\n \"name\": \"@react-native/community-cli-plugin\",\n \"version\": \"0.86.0-main\",\n \"description\": \"Core CLI commands for Re"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/__mocks__/sign.js",
"chars": 311,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/__tests__/filterPlatformAssetScales-test.js",
"chars": 1173,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/__tests__/getAssetDestPathAndroid-test.js",
"chars": 2387,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/__tests__/getAssetDestPathIOS-test.js",
"chars": 1329,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/assetCatalogIOS.js",
"chars": 1931,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/assetPathUtils.js",
"chars": 2177,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/buildBundle.js",
"chars": 4502,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/createKeepFileAsync.js",
"chars": 1120,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/filterPlatformAssetScales.js",
"chars": 1238,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/getAssetDestPathAndroid.js",
"chars": 702,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/getAssetDestPathIOS.js",
"chars": 812,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/index.js",
"chars": 3935,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/bundle/saveAssets.js",
"chars": 3889,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/start/OpenDebuggerKeyboardHandler.js",
"chars": 4843,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/start/attachKeyHandlers.js",
"chars": 3286,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/start/index.js",
"chars": 3090,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/start/middleware.js",
"chars": 3079,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/commands/start/runServer.js",
"chars": 5751,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/index.flow.js",
"chars": 425,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/index.js",
"chars": 427,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/utils/createDevMiddlewareLogger.js",
"chars": 966,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/utils/errors.js",
"chars": 1246,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/utils/isDevServerRunning.js",
"chars": 1872,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
},
{
"path": "packages/community-cli-plugin/src/utils/loadMetroConfig.js",
"chars": 4375,
"preview": "/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found"
}
]
// ... and 7192 more files (download for full content)
About this extraction
This page contains the full source code of the facebook/react-native GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 7392 files (56.9 MB), approximately 15.4M tokens, and a symbol index with 46668 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.