diff --git a/.eslintignore b/.eslintignore index e16e0140326a..a288117cf8ee 100644 --- a/.eslintignore +++ b/.eslintignore @@ -13,6 +13,7 @@ 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 diff --git a/.flowconfig b/.flowconfig index 1f355bf24104..860ce22b1ff0 100644 --- a/.flowconfig +++ b/.flowconfig @@ -74,7 +74,7 @@ module.name_mapper='^@react-native/fantom$' -> '/private/react-nat module.name_mapper='^@react-native/fantom/\(.*\)$' -> '/private/react-native-fantom/\1' module.name_mapper='^@react-native/core-cli-utils$' -> '/packages/core-cli-utils/src/index.flow.js' ; macOS] -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\)$' -> '/packages/react-native/Libraries/Image/RelativeImageStub' +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\)$' -> '/packages/react-native/Libraries/Image/RelativeImageStub' module.system.haste.module_ref_prefix=m# @@ -103,4 +103,4 @@ untyped-import untyped-type-import [version] -^0.289.0 +^0.295.0 diff --git a/.github/actions/build-android/action.yml b/.github/actions/build-android/action.yml index fe6753af80ee..0aba8b032dfd 100644 --- a/.github/actions/build-android/action.yml +++ b/.github/actions/build-android/action.yml @@ -28,7 +28,7 @@ runs: cache-read-only: "false" cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }} - name: Restore Android ccache - uses: actions/cache/restore@v4 + 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') }} @@ -45,19 +45,22 @@ runs: 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 - ./gradlew $TASKS -PenableWarningsAsErrors=true + 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@v4 + 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') }} @@ -65,13 +68,13 @@ runs: shell: bash run: ccache -s -v - name: Upload Maven Artifacts - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: maven-local path: /tmp/maven-local - name: Upload test results if: ${{ always() }} - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: build-android-results compression-level: 1 @@ -81,14 +84,14 @@ runs: packages/react-native/ReactAndroid/build/reports - name: Upload RNTester APK - hermes-debug if: ${{ always() }} - uses: actions/upload-artifact@v4.3.4 + 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@v4.3.4 + uses: actions/upload-artifact@v6 with: name: rntester-release path: packages/rn-tester/android/app/build/outputs/apk/release/ diff --git a/.github/actions/build-npm-package/action.yml b/.github/actions/build-npm-package/action.yml index 808916f8b29c..6bacb3d29dde 100644 --- a/.github/actions/build-npm-package/action.yml +++ b/.github/actions/build-npm-package/action.yml @@ -18,13 +18,13 @@ runs: shell: bash run: git config --global --add safe.directory '*' - name: Download ReactNativeDependencies - uses: actions/download-artifact@v4 + 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@v4 + uses: actions/download-artifact@v7 with: pattern: ReactCore* path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts @@ -65,7 +65,7 @@ runs: fi node ./scripts/releases-ci/publish-npm.js -t ${{ inputs.release-type }} - name: Upload npm logs - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: npm-logs path: ~/.npm/_logs @@ -80,7 +80,7 @@ runs: echo "$FILENAME" > build/react-native-package-version - name: Upload release package - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 if: ${{ inputs.release-type == 'dry-run' }} with: name: react-native-package diff --git a/.github/actions/diff-js-api-breaking-changes/action.yml b/.github/actions/diff-js-api-breaking-changes/action.yml deleted file mode 100644 index bc45b1b207aa..000000000000 --- a/.github/actions/diff-js-api-breaking-changes/action.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: diff-js-api-breaking-changes -description: Check for breaking changes in the public React Native JS API -runs: - using: composite - steps: - - name: Fetch snapshot from PR head - shell: bash - env: - SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-breaking-changes - run: | - mkdir $SCRATCH_DIR - git fetch --depth=1 origin ${{ github.event.pull_request.head.sha }} - git show ${{ github.event.pull_request.head.sha }}:packages/react-native/ReactNativeApi.d.ts > $SCRATCH_DIR/ReactNativeApi-after.d.ts \ - || echo "" > $SCRATCH_DIR/ReactNativeApi.d.ts - - name: Run breaking change detection - shell: bash - env: - SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-breaking-changes - run: | - node ./scripts/js-api/diff-api-snapshot \ - ${{ github.workspace }}/packages/react-native/ReactNativeApi.d.ts \ - $SCRATCH_DIR/ReactNativeApi-after.d.ts \ - > $SCRATCH_DIR/output.json diff --git a/.github/actions/diff-js-api-changes/action.yml b/.github/actions/diff-js-api-changes/action.yml new file mode 100644 index 000000000000..9e186d27cc01 --- /dev/null +++ b/.github/actions/diff-js-api-changes/action.yml @@ -0,0 +1,31 @@ +name: diff-js-api-changes +description: Check for breaking changes in the public React Native JS API +runs: + using: composite + steps: + - name: Compute merge base with main + id: merge_base + shell: bash + run: | + git fetch origin main + git fetch --deepen=500 + echo "merge_base=$(git merge-base HEAD origin/main)" >> $GITHUB_OUTPUT + + - name: Output snapshot before state for comparison + shell: bash + env: + SCRATCH_DIR: ${{ runner.temp }}/diff-js-api-changes + run: | + mkdir -p $SCRATCH_DIR + git show ${{ steps.merge_base.outputs.merge_base }}:packages/react-native/ReactNativeApi.d.ts > $SCRATCH_DIR/ReactNativeApi-before.d.ts \ + || echo "" > $SCRATCH_DIR/ReactNativeApi-before.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 \ + ./packages/react-native/ReactNativeApi.d.ts \ + > $SCRATCH_DIR/output.json diff --git a/.github/actions/maestro-android/action.yml b/.github/actions/maestro-android/action.yml index 4a24e2c0231e..4aa15709070e 100644 --- a/.github/actions/maestro-android/action.yml +++ b/.github/actions/maestro-android/action.yml @@ -22,6 +22,10 @@ inputs: 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 @@ -31,7 +35,7 @@ runs: 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@v4 + uses: actions/setup-java@v5 with: java-version: '17' distribution: 'zulu' @@ -53,7 +57,7 @@ runs: uses: reactivecircus/android-emulator-runner@v2 with: api-level: 24 - arch: x86 + arch: ${{ inputs.emulator-arch }} ram-size: '8192M' heap-size: '4096M' disk-size: '10G' @@ -69,16 +73,16 @@ runs: NORM_APP_ID=$(echo "${{ inputs.app-id }}" | tr '.' '-') echo "app-id=$NORM_APP_ID" >> $GITHUB_OUTPUT - name: Store tests result - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 if: always() with: - name: e2e_android_${{ steps.normalize-app-id.outputs.app-id }}_report_${{ inputs.flavor }}_NewArch + 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@v4.3.4 + uses: actions/upload-artifact@v6 with: - name: maestro-logs-android-${{ steps.normalize-app-id.outputs.app-id }}-${{ inputs.flavor }}-NewArch + name: maestro-logs-android-${{ steps.normalize-app-id.outputs.app-id }}-${{ inputs.flavor }}-${{ inputs.emulator-arch }}-NewArch path: /tmp/MaestroLogs diff --git a/.github/actions/maestro-ios/action.yml b/.github/actions/maestro-ios/action.yml index 50b21597c9ed..ffd2f639b2f8 100644 --- a/.github/actions/maestro-ios/action.yml +++ b/.github/actions/maestro-ios/action.yml @@ -31,7 +31,7 @@ runs: brew tap facebook/fb brew install facebook/fb/idb-companion - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/setup-java@v5 with: java-version: '17' distribution: 'zulu' @@ -66,7 +66,7 @@ runs: "${{ inputs.working-directory }}" - name: Store video record if: always() - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: e2e_ios_${{ inputs.app-id }}_report_${{ inputs.flavor }}_NewArch path: | @@ -78,7 +78,7 @@ runs: report.xml - name: Store Logs if: failure() && steps.run-tests.outcome == 'failure' - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: maestro-logs-${{ inputs.app-id }}-${{ inputs.flavor }}-NewArch path: /tmp/MaestroLogs diff --git a/.github/actions/prepare-hermes-v1-app/action.yml b/.github/actions/prepare-hermes-v1-app/action.yml new file mode 100644 index 000000000000..24f40d0fbacd --- /dev/null +++ b/.github/actions/prepare-hermes-v1-app/action.yml @@ -0,0 +1,41 @@ +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 diff --git a/.github/actions/run-fantom-tests/action.yml b/.github/actions/run-fantom-tests/action.yml index 1f143f2367bd..83fdd3a03d3f 100644 --- a/.github/actions/run-fantom-tests/action.yml +++ b/.github/actions/run-fantom-tests/action.yml @@ -27,7 +27,7 @@ runs: cache-read-only: "false" cache-encryption-key: ${{ inputs.gradle-cache-encryption-key }} - name: Restore Fantom ccache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: /github/home/.cache/ccache key: v2-ccache-fantom-${{ github.job }}-${{ github.ref }}-${{ hashFiles( @@ -56,7 +56,7 @@ runs: CXX: clang++ - name: Save Fantom ccache if: ${{ github.ref == 'refs/heads/main' || contains(github.ref, '-stable') }} - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 with: path: /github/home/.cache/ccache key: v2-ccache-fantom-${{ github.job }}-${{ github.ref }}-${{ hashFiles( @@ -75,7 +75,7 @@ runs: run: ccache -s -v - name: Upload test results if: ${{ always() }} - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: run-fantom-tests-results compression-level: 1 diff --git a/.github/actions/setup-node/action.yml b/.github/actions/setup-node/action.yml index d076bf4acb8b..abb7e3f740c9 100644 --- a/.github/actions/setup-node/action.yml +++ b/.github/actions/setup-node/action.yml @@ -4,12 +4,12 @@ inputs: node-version: description: 'The node.js version to use' required: false - default: '22.14.0' + default: '22.11.0' runs: using: "composite" steps: - name: Setup node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ inputs.node-version }} cache: yarn diff --git a/.github/actions/test-ios-helloworld/action.yml b/.github/actions/test-ios-helloworld/action.yml index 98bcc860f278..a3cc49ff93dd 100644 --- a/.github/actions/test-ios-helloworld/action.yml +++ b/.github/actions/test-ios-helloworld/action.yml @@ -32,7 +32,7 @@ runs: - name: Run yarn install again, with the correct hermes version uses: ./.github/actions/yarn-install - name: Download ReactNativeDependencies - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: ReactNativeDependencies${{ inputs.flavor }}.xcframework.tar.gz path: /tmp/third-party @@ -40,7 +40,7 @@ runs: shell: bash run: ls -lR /tmp/third-party - name: Download React Native Prebuilds - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: ReactCore${{ inputs.flavor }}.xcframework.tar.gz path: /tmp/ReactCore diff --git a/.github/actions/test-ios-rntester/action.yml b/.github/actions/test-ios-rntester/action.yml index d014e428699d..ae665e477116 100644 --- a/.github/actions/test-ios-rntester/action.yml +++ b/.github/actions/test-ios-rntester/action.yml @@ -1,15 +1,12 @@ name: test-ios-rntester description: Test iOS RNTester 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 run-unit-tests: description: whether unit tests should run or not. - default: "false" + default: "true" flavor: description: The flavor of the build. Must be one of "Debug", "Release". default: Debug @@ -17,6 +14,10 @@ inputs: 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 @@ -43,29 +44,34 @@ runs: if: ${{ inputs.run-unit-tests == 'true' }} uses: ./.github/actions/prepare-ios-tests - name: Download ReactNativeDependencies - uses: actions/download-artifact@v4 + 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 - uses: actions/download-artifact@v4 + 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: | - 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" - - if [[ ${{ inputs.use-frameworks }} == "DynamicFrameworks" ]]; then + 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 @@ -98,24 +104,23 @@ runs: shell: bash run: | echo "zipping tests results" - cd /Users/distiller/Library/Developer/Xcode - XCRESULT_PATH=$(find . -name '*.xcresult') - tar -zcvf xcresults.tar.gz $XCRESULT_PATH + cd /Users/runner/Library/Developer/Xcode + tar -zcvf xcresults.tar.gz "/tmp/RNTesterTestResults" - name: Upload artifact - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 if: ${{ inputs.run-unit-tests == 'true' }} with: - name: xcresults - path: /Users/distiller/Library/Developer/Xcode/xcresults.tar.gz + 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 == 'StaticLibraries' && inputs.ruby-version == '2.6.10' }} # This is needed to avoid conflicts with the artifacts - uses: actions/upload-artifact@v4.3.4 + 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@v4.3.4 + uses: actions/upload-artifact@v6 with: - name: test-results + name: test-results-${{ inputs.flavor }}-${{ inputs.use-frameworks == 'true' && 'dynamic-frameworks' || 'static-libraries' }}-Ruby${{ inputs.ruby-version }} path: ./reports/junit diff --git a/.github/actions/test-js/action.yml b/.github/actions/test-js/action.yml index 2528973d6e4a..2b5c97a009a0 100644 --- a/.github/actions/test-js/action.yml +++ b/.github/actions/test-js/action.yml @@ -19,7 +19,7 @@ runs: run: node ./scripts/run-ci-javascript-tests.js --maxWorkers 2 - name: Upload test results if: ${{ always() }} - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: test-js-results compression-level: 1 diff --git a/.github/workflow-scripts/analyze_scripts.sh b/.github/workflow-scripts/analyze_scripts.sh index 5f9bcfadee49..cdf280636b2b 100755 --- a/.github/workflow-scripts/analyze_scripts.sh +++ b/.github/workflow-scripts/analyze_scripts.sh @@ -16,6 +16,7 @@ if [ -x "$(command -v shellcheck)" ]; then -type f \ -not -path "*node_modules*" \ -not -path "*third-party*" \ + -not -path "*vendor*" \ -name '*.sh' \ -exec sh -c 'shellcheck "$1"' -- {} \; diff --git a/.github/workflow-scripts/checkForReproducer.js b/.github/workflow-scripts/checkForReproducer.js index 75d7ab7bf807..b8b09223f747 100644 --- a/.github/workflow-scripts/checkForReproducer.js +++ b/.github/workflow-scripts/checkForReproducer.js @@ -41,19 +41,23 @@ module.exports = async (github, context) => { // Look for Snack or a GH repo associated with the user that added an issue or comment const hasValidReproducer = entities.some(entity => { + const escapedLogin = escapeRegExp(entity.user.login); const hasPullRequestRepoLink = containsPattern( entity.body, - `https?:\/\/github\.com\/facebook\/react-native\/pull\/\d+\/?`, + /https?:\/\/github\.com\/facebook\/react-native\/pull\/\d+\/?/gm, ); const hasExpoSnackLink = containsPattern( entity.body, - `https?:\\/\\/snack\\.expo\\.dev\\/[^\\s)\\]]+`, + /https?:\/\/snack\.expo\.dev\/[^\s)\]]+/gm, ); const hasGithubRepoLink = containsPattern( entity.body, - `https?:\\/\\/github\\.com\\/(${entity.user.login})\\/[^/]+\\/?\\s?`, + new RegExp( + `https?:\\/\\/github\\.com\\/(${escapedLogin})\\/[^/]+\\/?\\s?`, + 'gm', + ), ); return hasPullRequestRepoLink || hasExpoSnackLink || hasGithubRepoLink; }); @@ -78,8 +82,11 @@ module.exports = async (github, context) => { }; function containsPattern(body, pattern) { - const regexp = new RegExp(pattern, 'gm'); - return body.search(regexp) !== -1; + return pattern.test(body); +} + +function escapeRegExp(value) { + return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); } // Prevents the bot from responding when maintainer has changed the 'Needs: Repro' label diff --git a/.github/workflow-scripts/hermes-v1.patch b/.github/workflow-scripts/hermes-v1.patch new file mode 100644 index 000000000000..213020381fc4 --- /dev/null +++ b/.github/workflow-scripts/hermes-v1.patch @@ -0,0 +1,30 @@ +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" + } diff --git a/.github/workflow-scripts/selectLatestHermesV1Version.js b/.github/workflow-scripts/selectLatestHermesV1Version.js new file mode 100644 index 000000000000..db11b9278c1b --- /dev/null +++ b/.github/workflow-scripts/selectLatestHermesV1Version.js @@ -0,0 +1,38 @@ +/** + * 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()); diff --git a/.github/workflows/autorebase.yml b/.github/workflows/autorebase.yml index 1a3af07c31a0..dff8633b481d 100644 --- a/.github/workflows/autorebase.yml +++ b/.github/workflows/autorebase.yml @@ -17,7 +17,7 @@ jobs: if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') steps: - name: Checkout the latest code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: token: ${{ secrets.GITHUB_TOKEN }} fetch-depth: 0 # otherwise, you will fail to push refs to dest repo diff --git a/.github/workflows/bump-podfile-lock.yml b/.github/workflows/bump-podfile-lock.yml index 8bd70421f273..bdf3edbbfe7b 100644 --- a/.github/workflows/bump-podfile-lock.yml +++ b/.github/workflows/bump-podfile-lock.yml @@ -8,8 +8,9 @@ jobs: runs-on: macos-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: + token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} fetch-depth: 0 fetch-tags: true - name: Install dependencies diff --git a/.github/workflows/cache-reaper.yml b/.github/workflows/cache-reaper.yml index 91ebb083e024..59feda574c19 100644 --- a/.github/workflows/cache-reaper.yml +++ b/.github/workflows/cache-reaper.yml @@ -13,7 +13,7 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Setup Node.js uses: ./.github/actions/setup-node - name: Trim the cache diff --git a/.github/workflows/check-for-reproducer.yml b/.github/workflows/check-for-reproducer.yml index 5d124c32787a..e986259a3a23 100644 --- a/.github/workflows/check-for-reproducer.yml +++ b/.github/workflows/check-for-reproducer.yml @@ -10,8 +10,8 @@ jobs: 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@v4 - - uses: actions/github-script@v6 + - uses: actions/checkout@v6 + - uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | diff --git a/.github/workflows/close-pr.yml b/.github/workflows/close-pr.yml index 2b3d773fa993..5d0489f170b7 100644 --- a/.github/workflows/close-pr.yml +++ b/.github/workflows/close-pr.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'facebook/react-native' steps: - - uses: actions/github-script@v6 + - uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 9ddb724b8935..ca947dc267c1 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -17,8 +17,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: + token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} fetch-depth: 0 fetch-tags: true - name: Install dependencies @@ -29,17 +30,17 @@ jobs: git config --local user.email "bot@reactnative.dev" git config --local user.name "React Native Bot" - name: Create draft release - uses: actions/github-script@v6 + 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; + 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@v6 + uses: actions/github-script@v8 env: RELEASE_ID: ${{ steps.create-draft-release.outputs.result }} with: diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 19608358a5e1..464e9eb3f86c 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} fetch-depth: 0 diff --git a/.github/workflows/danger-pr.yml b/.github/workflows/danger-pr.yml index cf28b788105a..ce41f6f602cd 100644 --- a/.github/workflows/danger-pr.yml +++ b/.github/workflows/danger-pr.yml @@ -17,13 +17,14 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'facebook/react-native' steps: - - uses: actions/checkout@v4 + - name: Check out PR 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-breaking-changes - uses: ./.github/actions/diff-js-api-breaking-changes + - name: Run diff-js-api-changes + uses: ./.github/actions/diff-js-api-changes - name: Danger run: yarn danger ci --use-github-checks --failOnErrors working-directory: private/react-native-bots diff --git a/.github/workflows/generate-changelog.yml b/.github/workflows/generate-changelog.yml index 9734ebd64173..ff8ee8d76def 100644 --- a/.github/workflows/generate-changelog.yml +++ b/.github/workflows/generate-changelog.yml @@ -8,8 +8,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: + token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} fetch-depth: 0 fetch-tags: true - name: Install dependencies @@ -20,7 +21,7 @@ jobs: git config --local user.email "bot@reactnative.dev" git config --local user.name "React Native Bot" - name: Generate Changelog - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: script: | const {generateChangelog} = require('./.github/workflow-scripts/generateChangelog'); diff --git a/.github/workflows/monitor-new-issues.yml b/.github/workflows/monitor-new-issues.yml index 4c751b097965..36abe0bb4cfa 100644 --- a/.github/workflows/monitor-new-issues.yml +++ b/.github/workflows/monitor-new-issues.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'facebook/react-native' steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up Node.js uses: ./.github/actions/setup-node - name: Install dependencies diff --git a/.github/workflows/needs-attention.yml b/.github/workflows/needs-attention.yml index b273b483aa54..0da88efd6d24 100644 --- a/.github/workflows/needs-attention.yml +++ b/.github/workflows/needs-attention.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'facebook/react-native' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Apply Needs Attention Label uses: react-native-community/needs-attention@v2.0.0 with: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e9ce8cc2d913..420439705e14 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -49,7 +49,7 @@ jobs: ORG_GRADLE_PROJECT_SONATYPE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build Android uses: ./.github/actions/build-android with: @@ -80,7 +80,7 @@ jobs: ORG_GRADLE_PROJECT_SONATYPE_PASSWORD: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPE_PASSWORD }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build and Publish NPM Package uses: ./.github/actions/build-npm-package with: diff --git a/.github/workflows/on-issue-labeled.yml b/.github/workflows/on-issue-labeled.yml index a58009873312..7500d9ce3d3b 100644 --- a/.github/workflows/on-issue-labeled.yml +++ b/.github/workflows/on-issue-labeled.yml @@ -16,10 +16,10 @@ jobs: if: "${{ github.repository == 'facebook/react-native' && contains(github.event.label.name, 'Needs: Triage :mag:') }}" steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Verify RN version - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | @@ -39,7 +39,7 @@ jobs: } - name: Add descriptive label - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | @@ -51,8 +51,8 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'facebook/react-native' steps: - - uses: actions/checkout@v4 - - uses: actions/github-script@v6 + - uses: actions/checkout@v6 + - uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | diff --git a/.github/workflows/prebuild-ios-core.yml b/.github/workflows/prebuild-ios-core.yml index 5e234961fc53..aff263a75bdc 100644 --- a/.github/workflows/prebuild-ios-core.yml +++ b/.github/workflows/prebuild-ios-core.yml @@ -28,10 +28,10 @@ jobs: ] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Restore cache if present id: restore-ios-slice - uses: actions/cache/restore@v4 + 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/ @@ -63,7 +63,7 @@ jobs: node ./scripts/releases/set-rn-artifacts-version.js --build-type "${{ inputs.version-type }}" fi - name: Download ReactNativeDependencies - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: ReactNativeDependencies${{ matrix.flavor }}.xcframework.tar.gz path: /tmp/third-party/ @@ -99,19 +99,19 @@ jobs: cd packages/react-native node scripts/ios-prebuild -b -f "${{ matrix.flavor }}" -p "${{ matrix.slice }}" - name: Upload headers - uses: actions/upload-artifact@v4 + 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@v4.3.4 + 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@v4 + 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/**/*') }} @@ -131,10 +131,10 @@ jobs: REACT_ORG_CODE_SIGNING_P12_CERT_PWD: ${{ secrets.REACT_ORG_CODE_SIGNING_P12_CERT_PWD }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Restore cache if present id: restore-ios-xcframework - uses: actions/cache/restore@v4 + 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/**/*') }} @@ -151,14 +151,14 @@ jobs: uses: ./.github/actions/yarn-install - name: Download slice artifacts if: steps.restore-ios-xcframework.outputs.cache-hit != 'true' - uses: actions/download-artifact@v4 + 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@v4 + uses: actions/download-artifact@v7 with: pattern: prebuild-ios-core-headers-${{ matrix.flavor }}-* path: packages/react-native/.build/headers @@ -190,18 +190,18 @@ jobs: 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@v4 + uses: actions/upload-artifact@v6 with: name: ReactCore${{ matrix.flavor }}.xcframework.tar.gz path: packages/react-native/.build/output/xcframeworks/ReactCore${{matrix.flavor}}.xcframework.tar.gz - name: Upload dSYM Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ReactCore${{ matrix.flavor }}.framework.dSYM.tar.gz path: packages/react-native/.build/output/xcframeworks/ReactCore${{matrix.flavor}}.framework.dSYM.tar.gz - name: Save cache if present if: ${{ github.ref == 'refs/heads/main' }} # To avoid that the cache explode - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 with: path: | packages/react-native/.build/output/xcframeworks/ReactCore${{matrix.flavor}}.xcframework.tar.gz diff --git a/.github/workflows/prebuild-ios-dependencies.yml b/.github/workflows/prebuild-ios-dependencies.yml index 212c2a522df9..275b3b8bec53 100644 --- a/.github/workflows/prebuild-ios-dependencies.yml +++ b/.github/workflows/prebuild-ios-dependencies.yml @@ -10,12 +10,12 @@ jobs: runs-on: macos-15 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup node.js uses: ./.github/actions/setup-node - name: Restore cache if present id: restore-ios-prebuilds - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: packages/react-native/third-party/ key: v3-ios-dependencies-${{ hashfiles('scripts/releases/ios-prebuild/configuration.js') }} @@ -32,12 +32,12 @@ jobs: run: | node scripts/releases/prepare-ios-prebuilds.js -w - name: Upload Artifacts - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: ios-prebuilds-workspace path: packages/react-native/third-party/ - name: Save Cache - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 if: ${{ github.ref == 'refs/heads/main' }} # To avoid that the cache explode with: key: v3-ios-dependencies-${{ hashfiles('scripts/releases/ios-prebuild/configuration.js') }} @@ -62,12 +62,12 @@ jobs: 'xros-simulator'] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup node.js uses: ./.github/actions/setup-node - name: Restore slice folder id: restore-slice-folder - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: packages/react-native/third-party/.build/Build/Products key: v3-ios-dependencies-slice-folder-${{ matrix.slice }}-${{ matrix.flavor }}-${{ hashfiles('scripts/releases/ios-prebuild/configuration.js') }} @@ -81,7 +81,7 @@ jobs: uses: ./.github/actions/yarn-install - name: Restore workspace if: steps.restore-slice-folder.outputs.cache-hit != 'true' - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: ios-prebuilds-workspace path: packages/react-native/third-party/ @@ -92,13 +92,13 @@ jobs: if: steps.restore-slice-folder.outputs.cache-hit != 'true' run: node scripts/releases/prepare-ios-prebuilds.js -b -p ${{ matrix.slice }} -r ${{ matrix.flavor }} - name: Upload Artifacts - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: prebuild-slice-${{ matrix.flavor }}-${{ matrix.slice }} path: | packages/react-native/third-party/.build/Build/Products - name: Save Cache - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 if: ${{ github.ref == 'refs/heads/main' }} # To avoid that the cache explode with: key: v3-ios-dependencies-slice-folder-${{ matrix.slice }}-${{ matrix.flavor }}-${{ hashfiles('scripts/releases/ios-prebuild/configuration.js') }} @@ -119,7 +119,7 @@ jobs: REACT_ORG_CODE_SIGNING_P12_CERT_PWD: ${{ secrets.REACT_ORG_CODE_SIGNING_P12_CERT_PWD }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup node.js uses: ./.github/actions/setup-node - name: Setup xcode @@ -128,7 +128,7 @@ jobs: xcode-version: '16.1' - name: Restore XCFramework id: restore-xcframework - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: | packages/react-native/third-party/ @@ -139,13 +139,13 @@ jobs: uses: ./.github/actions/yarn-install - name: Restore workspace if: steps.restore-xcframework.outputs.cache-hit != 'true' - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: ios-prebuilds-workspace path: packages/react-native/third-party/ - name: Download slices if: steps.restore-xcframework.outputs.cache-hit != 'true' - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: pattern: prebuild-slice-${{ matrix.flavor }}-* path: packages/react-native/third-party/.build/Build/Products @@ -177,19 +177,19 @@ jobs: tar -cz -f ../ReactNativeDependencies${{ matrix.flavor }}.framework.dSYM.tar.gz . mv ../ReactNativeDependencies${{ matrix.flavor }}.framework.dSYM.tar.gz ./ReactNativeDependencies${{ matrix.flavor }}.framework.dSYM.tar.gz - name: Upload XCFramework Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ReactNativeDependencies${{ matrix.flavor }}.xcframework.tar.gz path: packages/react-native/third-party/ReactNativeDependencies${{ matrix.flavor }}.xcframework.tar.gz - name: Upload dSYM Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ReactNativeDependencies${{ matrix.flavor }}.framework.dSYM.tar.gz path: | packages/react-native/third-party/Symbols/ReactNativeDependencies${{ matrix.flavor }}.framework.dSYM.tar.gz - name: Save XCFramework in Cache if: ${{ github.ref == 'refs/heads/main' }} # To avoid that the cache explode - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 with: path: | packages/react-native/third-party/ReactNativeDependencies${{ matrix.flavor }}.xcframework.tar.gz diff --git a/.github/workflows/publish-bumped-packages.yml b/.github/workflows/publish-bumped-packages.yml index ea8bc40a122e..cf0b69b8c354 100644 --- a/.github/workflows/publish-bumped-packages.yml +++ b/.github/workflows/publish-bumped-packages.yml @@ -14,7 +14,7 @@ jobs: GHA_NPM_TOKEN: ${{ secrets.GHA_NPM_TOKEN }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup node.js uses: ./.github/actions/setup-node - name: Run Yarn Install diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 19a511452179..99e3b94fc9b4 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -27,7 +27,7 @@ jobs: HERMES_V1_VERSION: ${{ steps.set_hermes_versions.outputs.HERMES_V1_VERSION }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - id: set_hermes_versions run: | echo "Setting hermes versions to latest" @@ -75,7 +75,7 @@ jobs: REACT_NATIVE_BOT_GITHUB_TOKEN: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true @@ -87,7 +87,7 @@ jobs: gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }} - name: Publish @react-native-community/template id: publish-template-to-npm - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | @@ -97,7 +97,7 @@ jobs: await publishTemplate(github, version, isDryRun); - name: Wait for template to be published timeout-minutes: 3 - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | @@ -112,7 +112,7 @@ jobs: -d "{\"event_type\": \"publish\", \"client_payload\": { \"version\": \"${{ github.ref_name }}\" }}" - name: Verify Release is on NPM timeout-minutes: 3 - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: github-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} script: | @@ -121,7 +121,7 @@ jobs: const version = "${{ github.ref_name }}"; await verifyReleaseOnNpm(version, isLatest()); - name: Verify that artifacts are on Maven - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: script: | const {verifyArtifactsAreOnMaven} = require('./.github/workflow-scripts/verifyArtifactsAreOnMaven.js'); diff --git a/.github/workflows/stale-bot.yml b/.github/workflows/stale-bot.yml index 585ea9a9e743..f4c2fa8d353f 100644 --- a/.github/workflows/stale-bot.yml +++ b/.github/workflows/stale-bot.yml @@ -10,7 +10,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: repo-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} days-before-stale: 180 @@ -27,7 +27,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: ascending: true repo-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} @@ -45,7 +45,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: repo-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} any-of-labels: 'Needs: Author Feedback' @@ -63,7 +63,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: ascending: true repo-token: ${{ secrets.REACT_NATIVE_BOT_GITHUB_TOKEN }} diff --git a/.github/workflows/test-all.yml b/.github/workflows/test-all.yml index 7114dbef8298..2e237ce6526d 100644 --- a/.github/workflows/test-all.yml +++ b/.github/workflows/test-all.yml @@ -51,13 +51,29 @@ jobs: [prebuild_apple_dependencies, prebuild_react_native_core] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Run it uses: ./.github/actions/test-ios-rntester with: ruby-version: "3.2.0" flavor: Debug + test_ios_rntester_dynamic_frameworks: + runs-on: macos-15-large + strategy: + fail-fast: false + matrix: + flavor: [Debug, Release] + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Run it + uses: ./.github/actions/test-ios-rntester + with: + flavor: ${{ matrix.flavor }} + use-frameworks: true + run-unit-tests: false # tests for dynamic frameworks are already run in the test_ios_rntester job; this is to just a test build from source (no prebuilds) + test_ios_rntester: runs-on: macos-15-large needs: @@ -67,10 +83,10 @@ jobs: fail-fast: false matrix: flavor: [Debug, Release] - frameworks: [StaticLibraries, DynamicFrameworks] + frameworks: [false, true] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Run it uses: ./.github/actions/test-ios-rntester with: @@ -87,11 +103,11 @@ jobs: flavor: [Debug, Release] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup Node.js uses: ./.github/actions/setup-node - name: Download App - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: RNTesterApp-NewArch-${{ matrix.flavor }} path: /tmp/RNTesterBuild/RNTester.app @@ -118,7 +134,7 @@ jobs: flavor: [Debug, Release] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup xcode uses: ./.github/actions/setup-xcode with: @@ -132,14 +148,14 @@ jobs: with: ruby-version: 2.6.10 - name: Download React Native Package - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: react-native-package path: /tmp/react-native-tmp - name: Print /tmp folder run: ls -lR /tmp/react-native-tmp - name: Download ReactNativeDependencies - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: ReactNativeDependencies${{ matrix.flavor }}.xcframework.tar.gz path: /tmp/third-party @@ -147,7 +163,7 @@ jobs: shell: bash run: ls -lR /tmp/third-party - name: Download React Native Prebuilds - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: ReactCore${{ matrix.flavor }}.xcframework.tar.gz path: /tmp/ReactCore @@ -207,23 +223,23 @@ jobs: flavor: [debug, release] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup node.js uses: ./.github/actions/setup-node - name: Run yarn uses: ./.github/actions/yarn-install - name: Set up JDK 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v5 with: java-version: '17' distribution: 'zulu' - name: Download Maven Local - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: maven-local path: /tmp/react-native-tmp/maven-local - name: Download React Native Package - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: react-native-package path: /tmp/react-native-tmp @@ -278,7 +294,7 @@ jobs: ORG_GRADLE_PROJECT_SIGNING_KEY: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_KEY }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build and Test Fantom uses: ./.github/actions/run-fantom-tests with: @@ -297,7 +313,7 @@ jobs: ORG_GRADLE_PROJECT_SIGNING_KEY: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_KEY }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build Android uses: ./.github/actions/build-android with: @@ -313,13 +329,13 @@ jobs: flavor: [debug, release] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup node.js uses: ./.github/actions/setup-node - name: Install node dependencies uses: ./.github/actions/yarn-install - name: Download APK - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: rntester-${{ matrix.flavor }} path: ./packages/rn-tester/android/app/build/outputs/apk/${{ matrix.flavor }}/ @@ -350,7 +366,7 @@ jobs: GRADLE_OPTS: "-Dorg.gradle.daemon=false" steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build NPM Package uses: ./.github/actions/build-npm-package with: @@ -377,16 +393,16 @@ jobs: flavor: [Debug, Release] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Setup git safe folders run: git config --global --add safe.directory '*' - name: Download npm package artifact - uses: actions/download-artifact@v4.1.3 + uses: actions/download-artifact@v7 with: name: react-native-package path: build - name: Download maven-local artifact - uses: actions/download-artifact@v4.1.3 + uses: actions/download-artifact@v7 with: name: maven-local path: /tmp/maven-local @@ -415,7 +431,7 @@ jobs: fi yarn build android "${args[@]}" -P reactNativeArchitectures="$TARGET_ARCHITECTURE" -P react.internal.mavenLocalRepo="/tmp/maven-local" - name: Upload artifact - uses: actions/upload-artifact@v4.3.4 + uses: actions/upload-artifact@v6 with: name: helloworld-apk-${{ matrix.flavor }}-NewArch-hermes path: ./private/helloworld/android/app/build/outputs/apk/ @@ -429,7 +445,7 @@ jobs: YARN_ENABLE_IMMUTABLE_INSTALLS: false steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - uses: ./.github/actions/test-ios-helloworld with: ruby-version: 3.2.0 @@ -441,7 +457,7 @@ jobs: strategy: matrix: flavor: [Debug, Release] - use_frameworks: [StaticLibraries, DynamicFrameworks] + use_frameworks: [false, true] exclude: # This config is tested with Ruby 3.2.0. Let's not double test it. - flavor: Debug @@ -451,7 +467,7 @@ jobs: YARN_ENABLE_IMMUTABLE_INSTALLS: false steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - uses: ./.github/actions/test-ios-helloworld with: flavor: ${{ matrix.flavor }} @@ -463,10 +479,10 @@ jobs: strategy: fail-fast: false matrix: - node-version: ["24.4.1", "22", "20.19.4"] + node-version: ["24", "22.11.0"] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Test JS uses: ./.github/actions/test-js with: @@ -479,7 +495,7 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Run all the linters uses: ./.github/actions/lint with: @@ -500,7 +516,7 @@ jobs: if: ${{ github.ref == 'refs/heads/main' && always() }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Rerun failed jobs in the current workflow env: GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/test-hermes-v1-android.yml b/.github/workflows/test-hermes-v1-android.yml new file mode 100644 index 000000000000..1c7b7eedf12b --- /dev/null +++ b/.github/workflows/test-hermes-v1-android.yml @@ -0,0 +1,70 @@ +name: Test Hermes V1 with nightly on Android + +on: + workflow_call: + inputs: + retry-count: + description: 'Number of times to retry the build on failure' + required: false + type: number + default: 3 + +jobs: + test-hermes-v1-android: + name: Test Hermes V1 on Android + runs-on: 4-core-ubuntu + strategy: + matrix: + flavor: [debug, release] + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Setup node.js + uses: actions/setup-node@v6 + with: + node-version: '22.14.0' + cache: yarn + + - name: Set up JDK 17 + uses: actions/setup-java@v5 + with: + java-version: '17' + distribution: 'zulu' + + - name: Prepare the app with Hermes V1 + uses: ./.github/actions/prepare-hermes-v1-app + with: + retry-count: ${{ inputs.retry-count }} + + - name: Build Android with retry + uses: nick-fields/retry@v3 + env: + CMAKE_VERSION: 3.31.5 + ORG_GRADLE_PROJECT_reactNativeArchitectures: x86_64 + with: + timeout_minutes: 45 + max_attempts: ${{ inputs.retry-count }} + retry_wait_seconds: 30 + shell: bash + command: | + cd /tmp/RNApp/android + CAPITALIZED_FLAVOR=$(echo "${{ matrix.flavor }}" | awk '{print toupper(substr($0, 1, 1)) substr($0, 2)}') + ./gradlew assemble${CAPITALIZED_FLAVOR} -PhermesV1Enabled=true + on_retry_command: | + echo "Cleaning up for Android retry..." + cd /tmp/RNApp/android + ./gradlew clean || true + rm -rf build app/build .gradle || true + + - name: Run E2E Tests + uses: ./.github/actions/maestro-android + timeout-minutes: 60 + with: + app-path: /tmp/RNApp/android/app/build/outputs/apk/${{ matrix.flavor }}/app-${{ matrix.flavor }}.apk + app-id: com.rnapp + maestro-flow: ./scripts/e2e/.maestro/ + install-java: 'false' + flavor: ${{ matrix.flavor }} + working-directory: /tmp/RNApp + emulator-arch: x86_64 diff --git a/.github/workflows/test-hermes-v1-ios.yml b/.github/workflows/test-hermes-v1-ios.yml new file mode 100644 index 000000000000..44437ebb36a2 --- /dev/null +++ b/.github/workflows/test-hermes-v1-ios.yml @@ -0,0 +1,78 @@ +name: Test Hermes V1 with nightly on iOS + +on: + workflow_call: + inputs: + retry-count: + description: 'Number of times to retry the build on failure' + required: false + type: number + default: 3 + +jobs: + test-hermes-v1-ios: + name: Test Hermes V1 on iOS + runs-on: macos-15-large + strategy: + matrix: + flavor: [debug, release] + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Setup node.js + uses: actions/setup-node@v6 + with: + node-version: '22.14.0' + cache: yarn + + - name: Prepare capitalized flavor + id: prepare-flavor + shell: bash + run: | + CAPITALIZED_FLAVOR=$(echo "${{ matrix.flavor }}" | awk '{print toupper(substr($0, 1, 1)) substr($0, 2)}') + echo "capitalized_flavor=$CAPITALIZED_FLAVOR" >> $GITHUB_OUTPUT + + - name: Prepare the app with Hermes V1 + uses: ./.github/actions/prepare-hermes-v1-app + with: + retry-count: ${{ inputs.retry-count }} + + - name: Setup xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: 16.4.0 + + - name: Build iOS with retry + uses: nick-fields/retry@v3 + with: + timeout_minutes: 45 + max_attempts: ${{ inputs.retry-count }} + retry_wait_seconds: 30 + shell: bash + command: | + cd /tmp/RNApp/ios + bundle install + RCT_HERMES_V1_ENABLED=1 bundle exec pod install + xcodebuild build \ + -workspace "RNApp.xcworkspace" \ + -scheme "RNApp" \ + -configuration "${{ steps.prepare-flavor.outputs.capitalized_flavor }}" \ + -sdk "iphonesimulator" \ + -destination "generic/platform=iOS Simulator" \ + -derivedDataPath "/tmp/RNApp" \ + -quiet + on_retry_command: | + echo "Cleaning up for iOS retry..." + cd /tmp/RNApp/ios + rm -rf Pods Podfile.lock build + rm -rf ~/Library/Developer/Xcode/DerivedData/* || true + + - name: Run E2E Tests + uses: ./.github/actions/maestro-ios + with: + app-path: "/tmp/RNApp/Build/Products/${{ steps.prepare-flavor.outputs.capitalized_flavor }}-iphonesimulator/RNApp.app" + app-id: org.reactjs.native.example.RNApp + maestro-flow: ./scripts/e2e/.maestro/ + flavor: ${{ steps.prepare-flavor.outputs.capitalized_flavor }} + working-directory: /tmp/RNApp diff --git a/.github/workflows/test-hermes-v1.yml b/.github/workflows/test-hermes-v1.yml new file mode 100644 index 000000000000..d11e444e5ff6 --- /dev/null +++ b/.github/workflows/test-hermes-v1.yml @@ -0,0 +1,39 @@ +# This jobs runs every day 2 hours after the nightly job for React Native so we can verify how the nightly is behaving. +name: Check Hermes V1 with the nightly build + +on: + workflow_dispatch: + # nightly build @ 4:15 AM UTC + schedule: + - cron: '15 4 * * *' + +concurrency: + group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + check-nightly: + runs-on: ubuntu-latest + if: github.repository == 'facebook/react-native' + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: Check nightly + run: | + TODAY=$(date "+%Y%m%d") + echo "Checking nightly for $TODAY" + NIGHTLY="$(npm view react-native | grep $TODAY)" + if [[ -z $NIGHTLY ]]; then + echo 'Nightly job failed.' + exit 1 + else + echo 'Nightly Worked, All Good!' + fi + + test-hermes-v1-ios: + uses: ./.github/workflows/test-hermes-v1-ios.yml + needs: check-nightly + + test-hermes-v1-android: + uses: ./.github/workflows/test-hermes-v1-android.yml + needs: check-nightly diff --git a/.github/workflows/validate-dotslash-artifacts.yml b/.github/workflows/validate-dotslash-artifacts.yml index 9463dacde97e..1526ee0e9cfd 100644 --- a/.github/workflows/validate-dotslash-artifacts.yml +++ b/.github/workflows/validate-dotslash-artifacts.yml @@ -30,7 +30,7 @@ jobs: if: github.repository == 'facebook/react-native' steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true @@ -42,7 +42,7 @@ jobs: git config --local user.email "bot@reactnative.dev" git config --local user.name "React Native Bot" - name: Validate DotSlash artifacts - uses: actions/github-script@v6 + uses: actions/github-script@v8 with: script: | const {validateDotSlashArtifacts} = require('./scripts/releases/validate-dotslash-artifacts.js'); diff --git a/.gitignore b/.gitignore index a26c5cf1272c..7f5c186ede98 100644 --- a/.gitignore +++ b/.gitignore @@ -180,10 +180,6 @@ fix_*.patch # [Experimental] Generated TS type definitions /packages/**/types_generated/ - -/packages/debugger-shell/build/ -/packages/*/dist/ - #[macOS # Yarn .yarn/* diff --git a/.yarnrc.yml b/.yarnrc.yml index 2fb7124f02d3..c0907696c693 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -21,16 +21,16 @@ packageExtensions: "@babel/plugin-syntax-flow": "^7.25.0" "@react-native/core-cli-utils@*": dependencies: - "metro": "^0.82.5" + "metro": "^0.83.3" "@react-native/metro-babel-transformer@*": dependencies: - "metro-babel-transformer": "^0.82.5" + "metro-babel-transformer": "^0.83.3" "@react-native/compatibility-check@*": dependencies: "invariant": "^2.2.4" "@react-native/tester@*": dependencies: - "metro-config": "^0.82.5" + "metro-config": "^0.83.3" "@react-native/eslint-plugin-monorepo@*": dependencies: "hermes-estree": "0.29.1" @@ -38,7 +38,7 @@ packageExtensions: dependencies: "jest-docblock": "^29.7.0" "jest-message-util": "^29.7.0" - "metro": "^0.82.5" - "metro-config": "^0.82.5" + "metro": "^0.83.3" + "metro-config": "^0.83.3" "source-map": "^0.6.1" # macOS] diff --git a/CHANGELOG.md b/CHANGELOG.md index fd0109a8ce91..98ac233680b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,149 @@ # Changelog +## v0.83.1 + +### Fixed + +#### Android specific + +- **Networking**: Fix Network error that could occur for `FormData` uploads with binary data ([471ef7212e](https://github.com/facebook/react-native/commit/471ef7212e8f7778bb7692a372a58c6fba9d081d) by [@huntie](https://github.com/huntie)) + +## v0.83.0 + +### Breaking + +None + +### Deprecated + +#### Android specific + +- **Animated**: Mark `startOperationBatch` and `finishOperationBatch` as deprecated, replace with no-op ([c9dcd64ed5](https://github.com/facebook/react-native/commit/c9dcd64ed557d477828549e54afa71a12e5294ec) by [@zeyap](https://github.com/zeyap)) +- **Networking**: Mark `NetworkingModule.sendRequestInternal` as deprecated ([30999b868c](https://github.com/facebook/react-native/commit/30999b868cf1655b6799edfa65dba2cc9fa8161a) by [@motiz88](https://github.com/motiz88)) + +### Added + +- **Accessibility**: Add meaningful error reporting when `AccessibilityInfo`'s methods are not available ([9cadfe6607](https://github.com/facebook/react-native/commit/9cadfe6607159f78bdd45929e0eb9b3292240cb9) by [@vzaidman](https://github.com/vzaidman)) +- **Animated**: `AnimationBackend` initialisation and style updates ([e091759947](https://github.com/facebook/react-native/commit/e09175994759a8868148b4a5d31768e18057d5a4) by [@bartlomiejbloniarz](https://github.com/bartlomiejbloniarz)) +- **Animated**: Make `AnimatedNodesManager` use the backend behind the flag ([325c681cb1](https://github.com/facebook/react-native/commit/325c681cb17996c15b246ad0012cbde3d4631f08) by Bartlomiej Bloniarz) +- **Animated**: Add `unstable_setAnimationBackend`, `unstable_getAnimationBackend` in UIManager ([7ec470d49a](https://github.com/facebook/react-native/commit/7ec470d49abded215fef260d577b8424207f7fb9) by Bartlomiej Bloniarz) +- **Dev Server**: Dev server banners can now be closed on tap. On iOS, don't close them after 15s anymore ([6936bd9f6b](https://github.com/facebook/react-native/commit/6936bd9f6bcb4fce5af33442e72992e7aa3767d6) by [@vzaidman](https://github.com/vzaidman)) +- **Fast Refresh**: New banner Add to indicate that Fast Refresh has lost connection, and that the app needs to be restarted to reconnect ([4148746941](https://github.com/facebook/react-native/commit/4148746941f957031dd65fe94481bb3ea6367a47) by [@vzaidman](https://github.com/vzaidman)) +- **IntersectionObserver**: Gate `IntersectionObserver` in the Canary release level ([5119db44ce](https://github.com/facebook/react-native/commit/5119db44ce5b600edc79dd9fe752d6e0a53375f4) by [@lunaleaps](https://github.com/lunaleaps)) +- **JavaScript API**: `ListViewToken` is now exposed when using `"react-native-strict-api"` ([0a0b48b5ff](https://github.com/facebook/react-native/commit/0a0b48b5fff508a1976604bedc931a1b5110a4f2) by [@huntie](https://github.com/huntie)) +- **JavaScript API**: `unstable_NativeText` and `unstable_NativeView` are now exported from the `react-native` package ([90ac3ac7bd](https://github.com/facebook/react-native/commit/90ac3ac7bd2c7f8761d02e503224828f8af97fec) by [@huntie](https://github.com/huntie)) +- **JavaScript API**: Expose `NativeComponentRegistry` API to index.d.ts ([3f7f9d8fb8](https://github.com/facebook/react-native/commit/3f7f9d8fb8beb41408d092870a7c7cac58029a4d) by [@gabrieldonadel](https://github.com/gabrieldonadel)) +- **Performance**: Enable Web Performance APIs ([beccee2164](https://github.com/facebook/react-native/commit/beccee21649eb0353e2828c65f0045053f04c6db) by [@rubennorte](https://github.com/rubennorte)) +- **React Native DevTools**: Enable Network inspection features [66469b58d8](https://github.com/facebook/react-native/commit/66469b58d85e820e401b82028b3fda57c53f08c1) by [@cipolleschi](https://github.com/cipolleschi) +- **React Native DevTools**: Enable standalone app shell by default (https://github.com/facebook/react-native/commit/3341bb57b188d0e20ac6e9ebb1e8b1fbb6b26514 by [@huntie](https://github.com/huntie)) +- **StyleSheet**: Background image native parser ([a9780f9102](https://github.com/facebook/react-native/commit/a9780f9102800a53e381271bcf27542eaea4a46e) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) +- **StyleSheet**: Merge the [iOS](https://github.com/facebook/react-native/pull/52283) and [android](https://github.com/facebook/react-native/pull/52282) PR into this, this PR includes `BackgroundImageExample`. I have also Add testcases for parsing syntax in JS ([3d08683d0f](https://github.com/facebook/react-native/commit/3d08683d0fcb66cd657e3f72388a53605c7c3974) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) +- **TypeScript**: Add `@react-native/typescript-config/strict` export enabling the `react-native-strict-api` custom condition ([0198c92c71](https://github.com/facebook/react-native/commit/0198c92c714cdfe48bb8d84771e5ef25c17fb47f) by [@kraenhansen](https://github.com/kraenhansen)) + +#### Android specific + +- **Dev Menu**: Add new configuration for `RCTDevMenu` ([4ddf2ce64f](https://github.com/facebook/react-native/commit/4ddf2ce64f8c6886a575c69872273005fd4d90cd) by [@coado](https://github.com/coado)) +- **ReactHost**: Add new `setBundleSource` method to `ReactHost` for changing bundle URL at runtime ([005d705aff](https://github.com/facebook/react-native/commit/005d705aff70e560ac937740798b69582a5b6954) by [@coado](https://github.com/coado)) +- **StyleSheet**: Background size, position and repeat styles ([e859293674](https://github.com/facebook/react-native/commit/e859293674243d94895f710d1cb197e9e6f2e9e8) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) + +#### iOS specific + +- **Build options**: Add way to set the `RCT_REMOVE_LEGACY_ARCH` flag from Cocoapods to compile ou the legacy arch ([5abda9c7da](https://github.com/facebook/react-native/commit/5abda9c7dacc5533fac35675c09100c7120dd634) by [@cipolleschi](https://github.com/cipolleschi)) +- **Build options**: Add support for symbolication of precompiled `React.xcframework` ([07f40ec6b4](https://github.com/facebook/react-native/commit/07f40ec6b48bf4b6507bda5819b873f3a7334dea) by [@chrfalch](https://github.com/chrfalch)) +- **Codegen**: Update Codegen to generate `Package.swift` file for Codegen targets ([a7cd3cc08f](https://github.com/facebook/react-native/commit/a7cd3cc08fd2679bb00666162d91ee2fb7107d06) by [@cipolleschi](https://github.com/cipolleschi)) +- **Dev Menu**: Add new configuration for `RCTDevMenu` ([29d5aa582f](https://github.com/facebook/react-native/commit/29d5aa582ffd6c395e34a1d03d2fdd742df647af) by [@coado](https://github.com/coado)) +- **Font**: Add support for condensed system font when using the New Architecture ([07da2ff3e1](https://github.com/facebook/react-native/commit/07da2ff3e18bbb71f428985f185d5f971843ec26) by [@ismarbesic](https://github.com/ismarbesic)) +- **StyleSheet**: Add contrast and hue-rotate CSS filters ([20ba98e00d](https://github.com/facebook/react-native/commit/20ba98e00da84b629cf2c1b11fa24c28c7046093) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) +- **StyleSheet**: Add grayscale, drop-shadow and saturate CSS filters ([1198a55d50](https://github.com/facebook/react-native/commit/1198a55d50809b9086771fa0b40415dd487afe0f) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) +- **StyleSheet**: Background size, position and repeat styles ([d8c2f1c883](https://github.com/facebook/react-native/commit/d8c2f1c883180828ce2784c4b30565e2bec194cf) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) +- **StyleSheet**: Filter blur ([b365e26593](https://github.com/facebook/react-native/commit/b365e26593112fee8824c53a2787679a29cbe9ab) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) + +### Changed + +- **Animated**: Initialize the backend in `NativeAnimatedNodesManagerProvider` ([3f396616d2](https://github.com/facebook/react-native/commit/3f396616d20beaebeb1fa7ab35deebc195bbcd2b) by Bartlomiej Bloniarz) +- **Animated**: Move using declarations into `AnimationBackend` class ([9e98c72ad3](https://github.com/facebook/react-native/commit/9e98c72ad34e0124df4ae846381fbc862d87206c) by [@zeyap](https://github.com/zeyap)) +- **Codegen**: Improve Codegen error when iOS native project not found ([bc3503452f](https://github.com/facebook/react-native/commit/bc3503452f70e1f6917070f3a1b00d75bcd46b3f) by [@vonovak](https://github.com/vonovak)) +- **ESLint**: Bump `eslint-plugin-react-hooks` to 7.0.1 ([28101284a9](https://github.com/facebook/react-native/commit/28101284a92ac0c93f646636423e6edf5e830006) by [@cipolleschi](https://github.com/cipolleschi)) +- **Hermes**: Use Hermes artifacts published independently from React Native ([27bb34c006](https://github.com/facebook/react-native/commit/27bb34c006bb5daaac639d065aaa4c963528814e) by [@j-piasecki](https://github.com/j-piasecki)) +- **Metro**: Metro bump to ^0.83.3 ([89f0a37800](https://github.com/facebook/react-native/commit/89f0a3780066e1d74b0cf45ff65a79534638f157) by [@robhogan](https://github.com/robhogan)) +- **React**: Bump React version to 19.2 ([6f482708b5](https://github.com/facebook/react-native/commit/6f482708b5abd31ec12c18afc874420f06eb22e3) by [@cipolleschi](https://github.com/cipolleschi)) +- **React Native DevTools**: Remove network experiment and experimental icon, Add conditional disabling of features incompatible with multiple hosts ([19359ed095](https://github.com/facebook/react-native/commit/19359ed095059c5d6befcc7e2ff3472447680add) by [@huntie](https://github.com/huntie)) +- **Yoga**: Update copyright header in Yoga CMake file from Facebook to Meta ([118a6621f5](https://github.com/facebook/react-native/commit/118a6621f5c4b15d89505b4dc12f05870c042194) by [@aialok](https://github.com/aialok)) + +#### Android specific + +- **Animated**: [c++ animated] Course correct props at `SurfaceMountingManager.updateProps()` ([dae2f606c7](https://github.com/facebook/react-native/commit/dae2f606c76905de74e76db7b0a20052a5caea46) by [@zeyap](https://github.com/zeyap)) +- **Fast Refresh**: Hot reload banner is now displayed in blue background like on iOS ([4d45e5987c](https://github.com/facebook/react-native/commit/4d45e5987c1d85e5f56ae9501ba74eed48939307) by [@vzaidman](https://github.com/vzaidman)) +- **Font**: Request layout on configuration change only when the font scale has changed ([e02e7b1a29](https://github.com/facebook/react-native/commit/e02e7b1a2943b3ec6e1eb15723c86a8255b100a6) by [@j-piasecki](https://github.com/j-piasecki)) +- **Hermes**: Changed value of `HERMESVM_HEAP_HV_MODE` to `HEAP_HV_PREFER32` for Hermes V1 ([fcb51b1392](https://github.com/facebook/react-native/commit/fcb51b13921dea7ed7d478d6944b52df470e2bef) by [@j-piasecki](https://github.com/j-piasecki)) +- **Kotlin**: Migrated `ReactRoot` to Kotlin ([0b14a19ea6](https://github.com/facebook/react-native/commit/0b14a19ea6f0bfd97fc8d3e3663615feab875d66) by [@sbuggay](https://github.com/sbuggay)) +- **New Architecture**: Runtime check that `NewArchitecture` is enabled in `DefaultNewArchitectureEntryPoint` ([d0d08e4554](https://github.com/facebook/react-native/commit/d0d08e4554c2b3a7676793fe2a43cedcf54b523f) by [@cortinico](https://github.com/cortinico)) +- **React Native DevTools**: Add Log error to discourage usages of `getJSModule(RCTEventEmitter)` API ([aab0d3397c](https://github.com/facebook/react-native/commit/aab0d3397c67bb3e27c3607ff2ed240859b5b039) by [@mdvacca](https://github.com/mdvacca)) +- **Touch Handling**: Defer to responder system to terminate on scroll ([1e1af623b1](https://github.com/facebook/react-native/commit/1e1af623b14f7952c2f39a601098533f899bb464) by [@zeyap](https://github.com/zeyap)) +- **UI**: Split `VirtualViewContainerState` into classic, experimental versions [Android] ([793f99d949](https://github.com/facebook/react-native/commit/793f99d949049c7ab9a7991af0a19010d5444b9f) by [@CalixTang](https://github.com/CalixTang)) + +#### iOS specific + +- **Image**: Use `CGImageSourceCreateImageAtIndex` instead of `CGImageSourceCreateThumbnailAtIndex` to decode full-sized images ([be4fcdafb1](https://github.com/facebook/react-native/commit/be4fcdafb13c2cee702bb120b0feb9b5966ca50e) by [@tsapeta](https://github.com/tsapeta)) +- **Prebuild**: Update logging functions for prebuilds ([f0f8b95719](https://github.com/facebook/react-native/commit/f0f8b957190f2f9bf162528210c41f1437346af9) by [@chrfalch](https://github.com/chrfalch)) + +### Fixed + +- **Animated**: Fix array type parsing in `DynamicEventPayload::extractValue` ([cf5040b4f8](https://github.com/facebook/react-native/commit/cf5040b4f82934c075a72b35d5f2d1d0dfa7aac1) by [@zeyap](https://github.com/zeyap)) +- **Babel**: Invalidate transform cache when `react-native/babel-preset` is Update ([2d2011c7ae](https://github.com/facebook/react-native/commit/2d2011c7ae0145369ad226417e9ecc3bf6df7890) by [@robhogan](https://github.com/robhogan)) +- **Build**: Fixed `hermes-compiler` not being resolved correctly when your repo is set up as a monorepo using pnpm (https://github.com/facebook/react-native/commit/45281ba48fc17508539c0b881327ef8b4bf8e530 by [@tido64](https://github.com/tido64)) +- **Codegen**: Fixed an `ENOENT` exception when a dependency does not export `package.json`, and your repo is set up as a monorepo using pnpm (https://github.com/facebook/react-native/commit/ad5e2680c8e491d89d7544ffb2fff45190cd5ef6 by [@tido64](https://github.com/tido64)) +- **Codegen**: Ensure codegen CLI supports unspecified `--outputPath` argument and respects `codegenConfig.outputDir` configurations (https://github.com/facebook/react-native/commit/f8207d6c757552ddac472aa278d7dd56ad04fb7e by [@kitten](https://github.com/kitten)) +- **Events**: Allow `EventEmitter`s to be optional (for push safety) ([4308185b64](https://github.com/facebook/react-native/commit/4308185b64145f315132865cc69f219bc3299eb3) by Tom Scallon) +- **Fast Refresh**: Only remove the Fast Refresh "Refreshing..." toast when all bundles being loaded finished loading ([92cae27cb2](https://github.com/facebook/react-native/commit/92cae27cb24590e96b01a1dc9547687bafea877b) by [@vzaidman](https://github.com/vzaidman)) +- **FlatList**: The `ItemSeparatorComponent` prop on list components now accepts a React element as well as a component function ([35f6ed1146](https://github.com/facebook/react-native/commit/35f6ed1146fae2c36113f5705230188790a0d70c) by [@huntie](https://github.com/huntie)) +- **Image**: `ResizeMethod` was not propagated correctly on Android with Props 2.0 ([7c543db181](https://github.com/facebook/react-native/commit/7c543db181a0c2dfce46cb26428e7bbc0341945c) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **LogBox**: Fixing an issue with the error LogBox formatting on windows causing text to wrap ([e2b62bc435](https://github.com/facebook/react-native/commit/e2b62bc43549545dfb29e7efad7aaf115cadc1f2) by Gianni Moschini) +- **Renderer**: Avoid data loss during CSS property conversion ([c629019080](https://github.com/facebook/react-native/commit/c62901908088b9c03baffb8903e9b19ba1bc919d) by [@vineethkuttan](https://github.com/vineethkuttan)) +- **Renderer**: Use `size_t` instead of `int` for vector iteration in `cloneMultipleRecursive` ([f9754d3459](https://github.com/facebook/react-native/commit/f9754d34590fe4d988065a92de5d512883de3b33) by Harini Malothu) +- **Renderer**: Fix 9-element (2D) transform matrix conversions ([ce243df972](https://github.com/facebook/react-native/commit/ce243df9725baff265fcd275b420ee78971e75cb) by [@cortinico](https://github.com/cortinico)) +- **Runtime**: [ReactCxxPlatform] Don't crash on reload ([5d65794ee4](https://github.com/facebook/react-native/commit/5d65794ee4fadc135d1c47ccd3bcce36e594ab8d) by [@christophpurrer](https://github.com/christophpurrer)) +- **TypeScript**: Fixed missing type definitions for new DOM APIs in legacy TypeScript types ([05ec7e0ad1](https://github.com/facebook/react-native/commit/05ec7e0ad13cce59e7e3161aa1005392584d6c59) by [@rubennorte](https://github.com/rubennorte)) +- **TypeScript**: Fixed Types in Refresh control ([ed24a4d05b](https://github.com/facebook/react-native/commit/ed24a4d05bb2e1e4a7e32a955777e59e827ebce5) by [@riteshshukla04](https://github.com/riteshshukla04)) +- **TypeScript**: TypeScript types of `positions` in `GradientValue` ([f7ea40bc28](https://github.com/facebook/react-native/commit/f7ea40bc28605fb712910e20d150af0bb9942611) by [@SimpleCreations](https://github.com/SimpleCreations)) +- **Yoga**: Update copyright headers ([0b68dcfac8](https://github.com/facebook/react-native/commit/0b68dcfac80e37423c886cc481a616506351bd81) by [@willspag](https://github.com/willspag)) + +#### Android specific + +- **API**: Correct deprecation message for `ReactContextBaseJavaModule#getCurrentActivity()` ([81bbbe3c45](https://github.com/facebook/react-native/commit/81bbbe3c458628187c078fe2c0ef2b5d13867fe5) by [@vladd-g](https://github.com/vladd-g)) +- **Build**: Fix build failures with `RNGP` due to `AGP` 9.0.0-alpha05 ([69dc655005](https://github.com/facebook/react-native/commit/69dc655005bc20feb119ddeca7f663d2d64a6275) by [@cortinico](https://github.com/cortinico)) +- **Dev Menu**: Fix displaying dev menu items in light mode ([269b0bd877](https://github.com/facebook/react-native/commit/269b0bd877b018e9d54e7b08ab9b4d265daaaef3) by [@coado](https://github.com/coado)) +- **React Native DevTools**: Fix `SoLoader` race condition in `InspectorNetworkRequestListener` ([6c874f25e2](https://github.com/facebook/react-native/commit/6c874f25e20499f6f5a2ccac38b157018e3ccb33) by [@vzaidman](https://github.com/vzaidman)) +- **Hermes**: Read the Hermes V1 opt-in flag from the apps properties when building from source ([813b9441ca](https://github.com/facebook/react-native/commit/813b9441cad3c5bd45ef25f438217281e66dcf65) by [@j-piasecki](https://github.com/j-piasecki)) +- **Permissions**: Fix request permission not always resolving in Android 16 ([39ede95921](https://github.com/facebook/react-native/commit/39ede959211e10032f147d2b0b7af783cba049c8) by [@lukmccall](https://github.com/lukmccall)) +- **Fabric**: Do not crash inside `getEncodedScreenSizeWithoutVerticalInsets` if `SurfaceMountingManager` is null ([f59a6f9508](https://github.com/facebook/react-native/commit/f59a6f9508f92391b26d44854f3da238ccbc5e62) by [@cortinico](https://github.com/cortinico)) +- **Runtime**: Request layout on attached surfaces when font scale changes ([417e068220](https://github.com/facebook/react-native/commit/417e0682203d70bd5ca510f7999a7f6c6990566f) by [@j-piasecki](https://github.com/j-piasecki)) +- **ScrollView**: Controller-driven scroll events now honor paging/snap alignment ([ed75963c0d](https://github.com/facebook/react-native/commit/ed75963c0d14ba0b7c85b0aaed8fe635d60d1b99) by [@Abbondanzo](https://github.com/Abbondanzo)) +- **ScrollView**: Focused scroll into view behaviors for nested vertical scroll views ([26502c6319](https://github.com/facebook/react-native/commit/26502c63193c3f4814af82ca6f8ff4c45abbb76b) by [@rozele](https://github.com/rozele)) +- **ScrollView**: Issue with restarting scroll in `maintainVisibleContentPosition` ([a034841fd6](https://github.com/facebook/react-native/commit/a034841fd68a93778d4999f8bc540cf6a5fef8d4) by [@rozele](https://github.com/rozele)) +- **Text**: Fix text not scaling down when system `fontScale` < 1.0 ([642f086b8c](https://github.com/facebook/react-native/commit/642f086b8ce4088d7f0b3c6453e2bb8c5f75e41b) by [@kdwkr](https://github.com/kdwkr)) +- **View**: Defers focus until View is attached ([9d498f676d](https://github.com/facebook/react-native/commit/9d498f676d96b1c8d3d6c58dc188ea51e88e3474) by [@rozele](https://github.com/rozele)) +- **View**: Resolves an int overflow in `findNextFocusableElement` ([363d297260](https://github.com/facebook/react-native/commit/363d2972608e90abb423f9e0592270978a73fb9f) by [@rozele](https://github.com/rozele)) + +#### iOS specific + +- **ActionSheet**: Apply tint color to Actions sheets buttons ([535efc1403](https://github.com/facebook/react-native/commit/535efc1403e53bde190ce5ddb7ecf97918c5e5fd) by [@cipolleschi](https://github.com/cipolleschi)) +- **ActionSheet**: Revert action sheet behavior not to break apps on iOS 26 ([82d2352b19](https://github.com/facebook/react-native/commit/82d2352b19b5255c74d17efea467bdad2ba93f29) by [@cipolleschi](https://github.com/cipolleschi)) +- **Build**: Fix loading bundle using `debug_http_host` preferences (https://github.com/facebook/react-native/commit/2ac54881f3967346faafa4e5a6bc3b9a68c29e46 by [@coado](https://github.com/coado)) +- **Build**: Fixed copying symbol bundles into correct slice folder (https://github.com/facebook/react-native/commit/2bc6b0083237839b224d5427407d33cab3e2de6b by [@chrfalch](https://github.com/chrfalch)) +- **Codegen**: Fix autolinking-generated `react-native-config` output not being used in `ReactCodegen` script phase due to temp output directory ([c0290329cd](https://github.com/facebook/react-native/commit/c0290329cdb1771ec087c8552049a287c67259c6) by [@kitten](https://github.com/kitten)) +- **DeviceInfo**: Fix `RCTDeviceInfo` crash when `application.delegate.window` is nil in modern iOS app architectures ([968909488a](https://github.com/facebook/react-native/commit/968909488a844c695a92ce000497840e577190dd) by [@25harsh](https://github.com/25harsh)) +- **Events**: Add missing `break;` to `-[RCTViewManager pointerEvents]` ([916e53f845](https://github.com/facebook/react-native/commit/916e53f845cdb438c1bb38590d7743f113eed8f7) by [@NSProgrammer](https://github.com/NSProgrammer)) +- **Events**: Raised the maximum number of pointers tracked at the same time to 17 ([58bd51e7e2](https://github.com/facebook/react-native/commit/58bd51e7e23cbd1f5f0f360587610c9fc70c0d76) by [@j-piasecki](https://github.com/j-piasecki)) +- **Fabric**: Address unexpected warning about "Unbalanced calls start/end for tag 20/19" ([796d182d89](https://github.com/facebook/react-native/commit/796d182d8989ff826eaa3a57458bdfc79750f820) by [@lokshunhung](https://github.com/lokshunhung)) +- **Font**: Make `RCTSetDefaultFontHandler` compatible with the new arch, and add a more powerful version as `RCTSetDefaultFontResolver` ([64b30a9376](https://github.com/facebook/react-native/commit/64b30a937607e436b7979e245c456e7ca45bfd11) by [@javache](https://github.com/javache)) +- **Image**: Images are removed from memory more aggressively to prevent OOMs ([3895831c2b](https://github.com/facebook/react-native/commit/3895831c2bc83faf68223bb2a491e796d2799b24) by [@sammy-SC](https://github.com/sammy-SC)) +- **Image**: Update the `source`property to avoid multiple downloads ([0a71b43fbc](https://github.com/facebook/react-native/commit/0a71b43fbc9d759bb8effd0197031a955687d07a) by [@chrfalch](https://github.com/chrfalch)) +- **Modal**: Modal swipe dismissal works only for the first time ([3a0c402d26](https://github.com/facebook/react-native/commit/3a0c402d26c366126fe7b36b2d504be4f658d68d) by [@okwasniewski](https://github.com/okwasniewski)) +- **Prebuild**: Fix iOS version mismatch when using nightly prebuilds ([790860782e](https://github.com/facebook/react-native/commit/790860782e07c02b3d89742006d9e73fea62bcfc) by [@gabrieldonadel](https://github.com/gabrieldonadel)) +- **Prebuild**: Fix using iOS nightly prebuilds in release mode ([19d87c874e](https://github.com/facebook/react-native/commit/19d87c874edb534d3acf5cb6576c6335983b661e) by [@gabrieldonadel](https://github.com/gabrieldonadel)) +- **StyleSheet**: `BoxShadow` + overflow hidden combination interfering with pointerEvents and transform scale ([c8e5f9766b](https://github.com/facebook/react-native/commit/c8e5f9766b8caaf66aa61ef48eeab740a10a725a) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway)) + ## v0.82.1 ### Fixed @@ -210,6 +354,20 @@ - **Network:** Fixed vulnerability on undici and on-headers ([dd00c9055a](https://github.com/facebook/react-native/commit/dd00c9055a8f0c9ceac1716385a8a9874f7a4c2e) by [@cipolleschi](https://github.com/cipolleschi)) +## v0.81.5 + +### Fixed + +- Fixed switch ([4106d54a6d](https://github.com/facebook/react-native/commit/4106d54a6ddacbb784fc8335e9a82054f51a2d02) by [@cipolleschi](https://github.com/cipolleschi)) + +#### Android specific + +- Fix request permission not always resolving in Android 16 ([39ede95921](https://github.com/facebook/react-native/commit/39ede959211e10032f147d2b0b7af783cba049c8) by [@lukmccall](https://github.com/lukmccall)) + +#### iOS specific + +- Fix RCTDeviceInfo crash when application.delegate.window is nil in modern iOS app architectures ([968909488a](https://github.com/facebook/react-native/commit/968909488a844c695a92ce000497840e577190dd) by [@25harsh](https://github.com/25harsh)) + ## v0.81.4 ### Fixed diff --git a/README.md b/README.md index 221390c90c4d..570758781a38 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ PRs are welcome! + + Follow @reactnative.dev on Bluesky +

> See the official [React Native website](https://reactnative.dev/) for an introduction to React Native. diff --git a/build.gradle.kts b/build.gradle.kts index 40846ef4e82d..657f109c454c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -109,16 +109,43 @@ tasks.register("publishAllToMavenTempLocal") { tasks.register("publishAndroidToSonatype") { description = "Publish the Android artifacts to Sonatype (Maven Central or Snapshot repository)" dependsOn(":packages:react-native:ReactAndroid:publishToSonatype") - dependsOn(":packages:react-native:ReactAndroid:hermes-engine:publishToSonatype") } -if (project.findProperty("react.internal.useHermesNightly")?.toString()?.toBoolean() == true) { +var hermesSubstitution: Pair? = null + +if (project.findProperty("react.internal.useHermesStable")?.toString()?.toBoolean() == true) { + val hermesVersions = java.util.Properties() + val hermesVersionPropertiesFile = + File("./packages/react-native/sdks/hermes-engine/version.properties") + hermesVersionPropertiesFile.inputStream().use { hermesVersions.load(it) } + val selectedHermesVersion = hermesVersions["HERMES_VERSION_NAME"] as String + + hermesSubstitution = selectedHermesVersion to "Users opted to use stable hermes release" +} else if ( + project.findProperty("react.internal.useHermesNightly")?.toString()?.toBoolean() == true +) { + val reactNativePackageJson = File("./packages/react-native/package.json") + val reactNativePackageJsonContent = reactNativePackageJson.readText() + val packageJson = groovy.json.JsonSlurper().parseText(reactNativePackageJsonContent) as Map<*, *> + + val hermesCompilerVersion = + (packageJson["dependencies"] as Map<*, *>)["hermes-compiler"] as String + + if (hermesCompilerVersion == "0.0.0") { + throw RuntimeException( + "Trying to use Hermes Nightly but hermes-compiler version is not specified" + ) + } + + hermesSubstitution = "$hermesCompilerVersion-SNAPSHOT" to "Users opted to use hermes nightly" +} else { logger.warn( """ ******************************************************************************** - INFO: You're using Hermes from nightly as you set + INFO: You're building Hermes from source as you set - react.internal.useHermesNightly=true + react.internal.useHermesStable=false + react.internal.useHermesNightly=false in the ./gradle.properties file. @@ -127,12 +154,20 @@ if (project.findProperty("react.internal.useHermesNightly")?.toString()?.toBoole """ .trimIndent() ) +} + +if (hermesSubstitution != null) { + val (hermesVersion, reason) = hermesSubstitution!! + project(":packages:react-native:ReactAndroid:hermes-engine") { + tasks.configureEach { enabled = false } + } + allprojects { configurations.all { resolutionStrategy.dependencySubstitution { substitute(project(":packages:react-native:ReactAndroid:hermes-engine")) - .using(module("com.facebook.hermes:hermes-android:0.+")) - .because("Users opted to use hermes from nightly") + .using(module("com.facebook.hermes:hermes-android:$hermesVersion")) + .because(reason) } } } diff --git a/flow-typed/environment/node.js b/flow-typed/environment/node.js index eecaceb1f405..40987554080c 100644 --- a/flow-typed/environment/node.js +++ b/flow-typed/environment/node.js @@ -21,6 +21,12 @@ interface ErrnoError extends Error { syscall?: string; } +type Node$Conditional = T extends true + ? IfTrue + : T extends false + ? IfFalse + : IfTrue | IfFalse; + type buffer$NonBufferEncoding = | 'hex' | 'HEX' @@ -192,12 +198,27 @@ declare type Node$Buffer = typeof Buffer; declare module 'buffer' { declare var kMaxLength: number; declare var INSPECT_MAX_BYTES: number; + + declare var constants: $ReadOnly<{ + MAX_LENGTH: number, + MAX_STRING_LENGTH: number, + }>; + declare function transcode( source: Node$Buffer, fromEnc: buffer$Encoding, toEnc: buffer$Encoding, ): Node$Buffer; + + declare function isUtf8(input: Buffer | ArrayBuffer | $TypedArray): boolean; + + declare function isAscii(input: Buffer | ArrayBuffer | $TypedArray): boolean; + + declare function resolveObjectURL(id: string): Blob | void; + declare var Buffer: Node$Buffer; + declare var Blob: typeof globalThis.Blob; + declare var File: typeof globalThis.File; } type child_process$execOpts = { @@ -597,6 +618,7 @@ declare class crypto$Hash extends stream$Duplex { data: string | Buffer, input_encoding?: 'utf8' | 'ascii' | 'latin1' | 'binary', ): crypto$Hash; + copy(options?: mixed): crypto$Hash; } declare class crypto$Hmac extends stream$Duplex { @@ -655,6 +677,83 @@ type crypto$key = ... }; +declare class crypto$KeyObject { + +asymmetricKeyType?: + | 'rsa' + | 'rsa-pss' + | 'dsa' + | 'ec' + | 'ed25519' + | 'ed448' + | 'x25519' + | 'x448'; + +asymmetricKeySize?: number; + +symmetricKeySize?: number; + +type: 'secret' | 'public' | 'private'; + + export( + options: Readonly<{ + type: 'pkcs1' | 'spki' | 'pkcs8' | 'sec1', + format: 'pem', + }>, + ): string; + export( + options: Readonly<{ + type: 'pkcs1' | 'spki' | 'pkcs8' | 'sec1', + format: 'der', + }>, + ): Buffer; + export(options: Readonly<{format: 'jwk'}>): mixed; + equals(otherKeyObject: crypto$KeyObject): boolean; +} + +declare class crypto$X509Certificate { + constructor(buffer: string | Buffer | $TypedArray | DataView): void; + + +ca: boolean; + +fingerprint: string; + +fingerprint256: string; + +fingerprint512: string; + +issuer: string; + +issuerCertificate?: crypto$X509Certificate; + +keyUsage: Array; + +publicKey: crypto$KeyObject; + +raw: Buffer; + +serialNumber: string; + +subject: string; + +subjectAltName: string; + +validFrom: string; + +validTo: string; + +validFromDate: Date; + +validToDate: Date; + + checkEmail( + email: string, + options?: Readonly<{subject?: 'always' | 'default' | 'never'}>, + ): string | void; + checkHost( + name: string, + options?: Readonly<{subject?: 'always' | 'default' | 'never'}>, + ): string | void; + checkIP(ip: string): string | void; + checkIssued(otherCert: crypto$X509Certificate): boolean; + checkPrivateKey(privateKey: crypto$KeyObject): boolean; + toJSON(): string; + toLegacyObject(): mixed; + toString(): string; + verify(publicKey: crypto$KeyObject): boolean; +} + +declare class crypto$Certificate { + static exportChallenge( + spkac: string | Buffer | $TypedArray | DataView, + ): Buffer; + static exportPublicKey( + spkac: string | Buffer | $TypedArray | DataView, + ): Buffer; + static verifySpkac(spkac: Buffer | $TypedArray | DataView): boolean; +} + declare module 'crypto' { declare var DEFAULT_ENCODING: string; @@ -808,12 +907,85 @@ declare module 'crypto' { callback: (err: ?Error, buffer: Buffer) => void, ): void; declare function randomUUID( - options?: $ReadOnly<{|disableEntropyCache?: boolean|}>, + options?: Readonly<{disableEntropyCache?: boolean}>, ): string; declare function timingSafeEqual( a: Buffer | $TypedArray | DataView, b: Buffer | $TypedArray | DataView, ): boolean; + declare function hash( + algorithm: string, + data: string | Buffer | $TypedArray | DataView, + ): Buffer; + declare function hash( + algorithm: string, + data: string | Buffer | $TypedArray | DataView, + outputEncoding: buffer$Encoding, + ): string; + declare function createSecretKey( + key: Buffer | $TypedArray | DataView, + ): crypto$KeyObject; + declare function createSecretKey( + key: string, + encoding: buffer$Encoding, + ): crypto$KeyObject; + declare function createPublicKey( + key: string | Buffer | crypto$KeyObject | mixed, + ): crypto$KeyObject; + declare function createPrivateKey( + key: string | Buffer | mixed, + ): crypto$KeyObject; + declare function generateKeyPair( + type: + | 'rsa' + | 'rsa-pss' + | 'dsa' + | 'ec' + | 'ed25519' + | 'ed448' + | 'x25519' + | 'x448', + options: mixed, + callback: ( + err: ?Error, + publicKey: crypto$KeyObject, + privateKey: crypto$KeyObject, + ) => void, + ): void; + declare function generateKeyPairSync( + type: + | 'rsa' + | 'rsa-pss' + | 'dsa' + | 'ec' + | 'ed25519' + | 'ed448' + | 'x25519' + | 'x448', + options: mixed, + ): {publicKey: crypto$KeyObject, privateKey: crypto$KeyObject, ...}; + declare function generateKey( + type: 'hmac' | 'aes', + options: Readonly<{length: number}>, + callback: (err: ?Error, key: crypto$KeyObject) => void, + ): void; + declare function generateKeySync( + type: 'hmac' | 'aes', + options: Readonly<{length: number}>, + ): crypto$KeyObject; + declare function checkPrime( + candidate: Buffer | $TypedArray | DataView | bigint, + options?: Readonly<{checks?: number}>, + callback: (err: ?Error, result: boolean) => void, + ): void; + declare function checkPrimeSync( + candidate: Buffer | $TypedArray | DataView | bigint, + options?: Readonly<{checks?: number}>, + ): boolean; + declare class Certificate extends crypto$Certificate {} + declare class X509Certificate extends crypto$X509Certificate {} + declare class KeyObject extends crypto$KeyObject {} + declare var webcrypto: unknown; } type net$Socket$address = { @@ -841,7 +1013,7 @@ declare class dgram$Socket extends events$EventEmitter { msg: Buffer, port: number, address: string, - callback?: (err: ?Error, bytes: any) => mixed, + callback?: (err: ?Error, bytes: any) => unknown, ): void; send( msg: Buffer, @@ -849,7 +1021,7 @@ declare class dgram$Socket extends events$EventEmitter { length: number, port: number, address: string, - callback?: (err: ?Error, bytes: any) => mixed, + callback?: (err: ?Error, bytes: any) => unknown, ): void; setBroadcast(flag: boolean): void; setMulticastLoopback(flag: boolean): void; @@ -1044,6 +1216,8 @@ declare module 'fs' { declare class FSWatcher extends events$EventEmitter { close(): void; + ref(): this; + unref(): this; } declare class ReadStream extends stream$Readable { @@ -1057,6 +1231,7 @@ declare module 'fs' { declare class Dirent { name: string | Buffer; + parentPath: string; isBlockDevice(): boolean; isCharacterDevice(): boolean; @@ -1290,12 +1465,24 @@ declare module 'fs' { declare function mkdtempSync(prefix: string): string; declare function readdir( path: string, - options: string | {encoding?: string, withFileTypes?: false, ...}, + options: + | string + | $ReadOnly<{ + encoding?: string, + recursive?: boolean, + withFileTypes?: false, + ... + }>, callback: (err: ?ErrnoError, files: Array) => void, ): void; declare function readdir( path: string, - options: {encoding?: string, withFileTypes: true, ...}, + options: $ReadOnly<{ + encoding?: string, + recursive?: boolean, + withFileTypes: true, + ... + }>, callback: (err: ?ErrnoError, files: Array) => void, ): void; declare function readdir( @@ -1304,11 +1491,23 @@ declare module 'fs' { ): void; declare function readdirSync( path: string, - options?: string | {encoding?: string, withFileTypes?: false, ...}, + options?: + | string + | $ReadOnly<{ + encoding?: string, + recursive?: boolean, + withFileTypes?: false, + }>, ): Array; declare function readdirSync( path: string, - options?: string | {encoding?: string, withFileTypes: true, ...}, + options?: + | string + | $ReadOnly<{ + encoding?: string, + recursive?: boolean, + withFileTypes: true, + }>, ): Array; declare function close( fd: number, @@ -1326,6 +1525,29 @@ declare module 'fs' { flags: string | number, callback: (err: ?ErrnoError, fd: number) => void, ): void; + declare function openAsBlob( + path: string | Buffer | URL, + options?: $ReadOnly<{ + type?: string, // Optional MIME type hint + }>, + ): Promise; + declare function opendir( + path: string, + options?: $ReadOnly<{ + encoding?: string, + bufferSize?: number, + recursive?: boolean, + }>, + callback: (err: ?ErrnoError, dir: Dir) => void, + ): void; + declare function opendirSync( + path: string, + options?: $ReadOnly<{ + encoding?: string, + bufferSize?: number, + recursive?: boolean, + }>, + ): Dir; declare function openSync( path: string | Buffer, flags: string | number, @@ -1544,7 +1766,15 @@ declare module 'fs' { ): void; declare function watchFile( filename: string, - options?: Object, + listener?: (curr: Stats, prev: Stats) => void, + ): void; + declare function watchFile( + filename: string, + options?: $ReadOnly<{ + bigint?: boolean, + persistent?: boolean, + interval?: number, + }>, listener?: (curr: Stats, prev: Stats) => void, ): void; declare function unwatchFile( @@ -1553,7 +1783,16 @@ declare module 'fs' { ): void; declare function watch( filename: string, - options?: Object, + listener?: (event: string, filename: string) => void, + ): FSWatcher; + declare function watch( + filename: string, + options?: $ReadOnly<{ + persistent?: boolean, + recursive?: boolean, + encoding?: string, + signal?: AbortSignal, + }>, listener?: (event: string, filename: string) => void, ): FSWatcher; declare function exists( @@ -1593,6 +1832,105 @@ declare module 'fs' { dest: string, flags?: number, ): void; + declare function cp( + src: string | URL, + dest: string | URL, + options: $ReadOnly<{ + dereference?: boolean, + errorOnExist?: boolean, + filter?: (src: string, dest: string) => boolean | Promise, + force?: boolean, + mode?: number, + preserveTimestamps?: boolean, + recursive?: boolean, + verbatimSymlinks?: boolean, + }>, + callback: (err: ?Error) => void, + ): void; + declare function cp( + src: string | URL, + dest: string | URL, + callback: (err: ?Error) => void, + ): void; + declare function cpSync( + src: string | URL, + dest: string | URL, + options?: $ReadOnly<{ + dereference?: boolean, + errorOnExist?: boolean, + filter?: (src: string, dest: string) => boolean, + force?: boolean, + mode?: number, + preserveTimestamps?: boolean, + recursive?: boolean, + verbatimSymlinks?: boolean, + }>, + ): void; + + declare type GlobOptions = Readonly<{ + /** + * Current working directory. + * @default process.cwd() + */ + cwd?: string | void, + /** + * `true` if the glob should return paths as `Dirent`s, `false` otherwise. + * @default false + * @since v22.2.0 + */ + withFileTypes?: WithFileTypes, + /** + * Function to filter out files/directories or a + * list of glob patterns to be excluded. If a function is provided, return + * `true` to exclude the item, `false` to include it. + * @default undefined + */ + exclude?: + | ((fileName: Node$Conditional) => boolean) + | $ReadOnlyArray, + ... + }>; + + /** + * Retrieves the files matching the specified pattern. + * + * ```js + * import { glob } from 'node:fs'; + * + * glob('*.js', (err, matches) => { + * if (err) throw err; + * console.log(matches); + * }); + * ``` + * @since v22.0.0 + */ + declare function glob( + pattern: string | $ReadOnlyArray, + callback: (err: ?ErrnoError, matches: Array) => void, + ): void; + + declare function glob( + pattern: string | $ReadOnlyArray, + options: GlobOptions, + callback: ( + err: ?ErrnoError, + matches: Node$Conditional, Array>, + ) => void, + ): void; + + /** + * ```js + * import { globSync } from 'node:fs'; + * + * console.log(globSync('*.js')); + * ``` + * @since v22.0.0 + * @returns paths of files that match the pattern. + */ + declare function globSync( + pattern: string | $ReadOnlyArray, + options?: GlobOptions, + ): Node$Conditional, Array>; declare var F_OK: number; declare var R_OK: number; @@ -1658,14 +1996,52 @@ declare module 'fs' { retryDelay?: number, ... }; + declare class Dir { + +path: string; + close(): Promise; + closeSync(): void; + read(): Promise; + read(cb: (err?: Error, dirent: ?Dirent) => void): void; + readSync(): ?Dirent; + @@asyncIterator(): AsyncIterator; + } + type AppendOrWriteToFileHandle = ( + data: + | string + | Buffer + | Uint8Array + | DataView + | AsyncIterable + | Iterable + | stream$Readable, + options: WriteOptions | string, + ) => Promise; declare class FileHandle { - appendFile( - data: string | Buffer, - options: WriteOptions | string, - ): Promise; + appendFile: AppendOrWriteToFileHandle; chmod(mode: number): Promise; chown(uid: number, guid: number): Promise; close(): Promise; + createReadStream( + options?: $ReadOnly<{ + encoding?: string, + autoClose?: boolean, + emitClose?: boolean, + start?: number, + end?: number, + highWaterMark?: number, + signal?: AbortSignal, + }>, + ): ReadStream; + createWriteStream( + options?: $ReadOnly<{ + encoding?: string, + autoClose?: boolean, + emitClose?: boolean, + start?: number, + highWaterMark?: number, + flush?: boolean, + }>, + ): WriteStream; datasync(): Promise; fd: number; read( @@ -1678,8 +2054,25 @@ declare module 'fs' { buffer: T, ... }>; + readableWebStream( + options?: $ReadOnly<{autoClose?: boolean}>, + ): ReadableStream; readFile(options: EncodingFlag): Promise; readFile(options: string): Promise; + readLines( + options?: $ReadOnly<{ + encoding?: string, + autoClose?: boolean, + emitClose?: boolean, + start?: number, + end?: number, + highWaterMark?: number, + }>, + ): readline$Interface; + readv | Array | Array>( + buffers: T, + position?: number | null, + ): Promise<{buffers: T, bytesRead: number}>; stat(): Promise; sync(): Promise; truncate(len?: number): Promise; @@ -1688,15 +2081,24 @@ declare module 'fs' { mtime: number | string | Date, ): Promise; write( - buffer: Buffer | Uint8Array, + buffer: Buffer | Uint8Array | DataView, offset: number, length: number, position: number, ): Promise; - writeFile( - data: string | Buffer | Uint8Array, - options: WriteOptions | string, + write( + buffer: Buffer | Uint8Array | DataView, + options?: $ReadOnly<{ + offset?: number, + length?: number, + position?: number, + }>, ): Promise; + writeFile: AppendOrWriteToFileHandle; + writev | Array | Array>( + buffers: T, + position?: number | null, + ): Promise<{buffers: T, bytesWritten: number}>; } declare type FSPromisePath = string | Buffer | URL; @@ -1714,6 +2116,20 @@ declare module 'fs' { dest: FSPromisePath, flags?: number, ): Promise, + cp( + src: string | URL, + dest: string | URL, + options?: $ReadOnly<{ + dereference?: boolean, + errorOnExist?: boolean, + filter?: (src: string, dest: string) => boolean | Promise, + force?: boolean, + mode?: number, + preserveTimestamps?: boolean, + recursive?: boolean, + verbatimSymlinks?: boolean, + }>, + ): Promise, fchmod(filehandle: FileHandle, mode: number): Promise, fchown(filehandle: FileHandle, uid: number, guid: number): Promise, fdatasync(filehandle: FileHandle): Promise, @@ -1725,6 +2141,14 @@ declare module 'fs' { atime: number | string | Date, mtime: number | string | Date, ): Promise, + glob( + pattern: string | $ReadOnlyArray, + options?: GlobOptions, + ): Node$Conditional< + WithFileTypes, + AsyncIterator, + AsyncIterator, + >, lchmod(path: FSPromisePath, mode: number): Promise, lchown(path: FSPromisePath, uid: number, guid: number): Promise, link(existingPath: FSPromisePath, newPath: FSPromisePath): Promise, @@ -1745,6 +2169,14 @@ declare module 'fs' { flags?: string | number, mode?: number, ): Promise, + opendir( + path: string, + options?: $ReadOnly<{ + encoding?: string, + bufferSize?: number, + recursive?: boolean, + }>, + ): Promise, read( filehandle: FileHandle, buffer: T, @@ -1758,11 +2190,21 @@ declare module 'fs' { }>, readdir: (( path: FSPromisePath, - options: string | {encoding?: string, withFileTypes?: false, ...}, + options: + | string + | $ReadOnly<{ + encoding?: string, + recursive?: boolean, + withFileTypes?: false, + }>, ) => Promise>) & (( path: FSPromisePath, - options: {encoding?: string, withFileTypes: true, ...}, + options: $ReadOnly<{ + encoding?: string, + recursive?: boolean, + withFileTypes: true, + }>, ) => Promise>) & ((path: FSPromisePath) => Promise>), readFile: (( @@ -1805,6 +2247,17 @@ declare module 'fs' { atime: number | string | Date, mtime: number | string | Date, ): Promise, + watch( + filename: FSPromisePath, + options?: $ReadOnly<{ + persistent?: boolean, + recursive?: boolean, + encoding?: string, + signal?: AbortSignal, + maxQueue?: number, + overflow?: 'ignore' | 'throw', + }>, + ): AsyncIterator<{eventType: string, filename: ?string}>, write( filehandle: FileHandle, buffer: T, @@ -1838,6 +2291,7 @@ type http$agentOptions = { declare class http$Agent<+SocketT = net$Socket> { constructor(options: http$agentOptions): void; destroy(): void; + // $FlowFixMe[incompatible-variance] freeSockets: {[name: string]: $ReadOnlyArray, ...}; getName(options: { host: string, @@ -1847,7 +2301,9 @@ declare class http$Agent<+SocketT = net$Socket> { }): string; maxFreeSockets: number; maxSockets: number; + // $FlowFixMe[incompatible-variance] requests: {[name: string]: $ReadOnlyArray>, ...}; + // $FlowFixMe[incompatible-variance] sockets: {[name: string]: $ReadOnlyArray, ...}; } @@ -1939,7 +2395,7 @@ declare class http$Server extends net$Server { callback?: Function, ): this; listening: boolean; - close(callback?: (error: ?Error) => mixed): this; + close(callback?: (error: ?Error) => unknown): this; closeAllConnections(): void; closeIdleConnections(): void; maxHeadersCount: number; @@ -1975,7 +2431,7 @@ declare class https$Server extends tls$Server { }, callback?: Function, ): this; - close(callback?: (error: ?Error) => mixed): this; + close(callback?: (error: ?Error) => unknown): this; closeAllConnections(): void; closeIdleConnections(): void; keepAliveTimeout: number; @@ -1988,7 +2444,7 @@ type requestOptions = {| auth?: string, defaultPort?: number, family?: number, - headers?: {[key: string]: mixed, ...}, + headers?: {[key: string]: unknown, ...}, host?: string, hostname?: string, localAddress?: string, @@ -2126,14 +2582,14 @@ declare class net$Socket extends stream$Duplex { bufferSize: number; bytesRead: number; bytesWritten: number; - connect(path: string, connectListener?: () => mixed): net$Socket; + connect(path: string, connectListener?: () => unknown): net$Socket; connect( port: number, host?: string, - connectListener?: () => mixed, + connectListener?: () => unknown, ): net$Socket; - connect(port: number, connectListener?: () => mixed): net$Socket; - connect(options: Object, connectListener?: () => mixed): net$Socket; + connect(port: number, connectListener?: () => unknown): net$Socket; + connect(options: Object, connectListener?: () => unknown): net$Socket; destroyed: boolean; end( chunkOrEncodingOrCallback?: @@ -2193,7 +2649,7 @@ type net$connectOptions = { domain: string, options?: ?number | ?Object, callback?: (err: ?Error, address: string, family: number) => void, - ) => mixed, + ) => unknown, path?: string, ... }; @@ -2241,9 +2697,7 @@ type os$CPU = { nice: number, sys: number, user: number, - ... }, - ... }; type os$NetIFAddr = { @@ -2252,7 +2706,8 @@ type os$NetIFAddr = { internal: boolean, mac: string, netmask: string, - ... + scopeid?: number, + cidr: ?string, }; type os$UserInfo$buffer = { @@ -2261,7 +2716,6 @@ type os$UserInfo$buffer = { username: Buffer, homedir: Buffer, shell: ?Buffer, - ... }; type os$UserInfo$string = { @@ -2270,43 +2724,117 @@ type os$UserInfo$string = { username: string, homedir: string, shell: ?string, - ... }; declare module 'os' { - declare function arch(): 'x64' | 'arm' | 'ia32'; + declare function arch(): + | 'arm' + | 'arm64' + | 'ia32' + | 'loong64' + | 'mips' + | 'mipsel' + | 'ppc64' + | 'riscv64' + | 's390x' + | 'x64'; declare function availableParallelism(): number; declare function cpus(): Array; declare function endianness(): 'BE' | 'LE'; declare function freemem(): number; + declare function getPriority(pid?: number): number; declare function homedir(): string; declare function hostname(): string; declare function loadavg(): [number, number, number]; + declare function machine(): string; declare function networkInterfaces(): { [ifName: string]: Array, - ... }; - declare function platform(): string; + declare function platform(): + | 'aix' + | 'android' + | 'darwin' + | 'freebsd' + | 'haiku' + | 'linux' + | 'openbsd' + | 'sunos' + | 'win32' + | 'cygwin'; declare function release(): string; + declare function setPriority(priority: number): void; + declare function setPriority(pid: number, priority: number): void; declare function tmpdir(): string; declare function totalmem(): number; declare function type(): string; declare function uptime(): number; - declare function userInfo(options: { - encoding: 'buffer', - ... - }): os$UserInfo$buffer; - declare function userInfo(options?: { - encoding: 'utf8', - ... - }): os$UserInfo$string; + declare function userInfo( + options: Readonly<{ + encoding: 'buffer', + }>, + ): os$UserInfo$buffer; + declare function userInfo( + options?: Readonly<{ + encoding: 'utf8', + }>, + ): os$UserInfo$string; + declare function version(): string; declare var EOL: string; + declare var devNull: string; + declare var constants: Readonly<{ + signals: {[key: string]: number, ...}, + errno: {[key: string]: number, ...}, + priority: Readonly<{ + PRIORITY_LOW: number, + PRIORITY_BELOW_NORMAL: number, + PRIORITY_NORMAL: number, + PRIORITY_ABOVE_NORMAL: number, + PRIORITY_HIGH: number, + PRIORITY_HIGHEST: number, + }>, + dlopen: {[key: string]: number, ...}, + }>; } +type path$PlatformPath = { + normalize(path: string): string, + join(...parts: Array): string, + resolve(...parts: Array): string, + matchesGlob(path: string, pattern: string): boolean, + isAbsolute(path: string): boolean, + relative(from: string, to: string): string, + dirname(path: string): string, + basename(path: string, ext?: string): string, + extname(path: string): string, + sep: string, + delimiter: string, + parse(pathString: string): Readonly<{ + root: string, + dir: string, + base: string, + ext: string, + name: string, + }>, + format( + pathObject: Readonly<{ + root?: string, + dir?: string, + base?: string, + ext?: string, + name?: string, + }>, + ): string, + toNamespacedPath(path: string): string, + posix: path$PlatformPath, + win32: path$PlatformPath, + ... +}; + declare module 'path' { declare function normalize(path: string): string; declare function join(...parts: Array): string; declare function resolve(...parts: Array): string; + declare function matchesGlob(path: string, pattern: string): boolean; declare function isAbsolute(path: string): boolean; declare function relative(from: string, to: string): string; declare function dirname(path: string): string; @@ -2320,18 +2848,19 @@ declare module 'path' { base: string, ext: string, name: string, - ... }; - declare function format(pathObject: { - root?: string, - dir?: string, - base?: string, - ext?: string, - name?: string, - ... - }): string; - declare var posix: any; - declare var win32: any; + declare function format( + pathObject: Readonly<{ + root?: string, + dir?: string, + base?: string, + ext?: string, + name?: string, + }>, + ): string; + declare function toNamespacedPath(path: string): string; + declare var posix: path$PlatformPath; + declare var win32: path$PlatformPath; } declare module 'punycode' { @@ -2457,7 +2986,14 @@ declare class stream$Readable extends stream$Stream { static from( iterable: Iterable | AsyncIterable, options?: readableStreamOptions, - ): stream$Readable; + ): this; + + static fromWeb( + readableStream: ReadableStream, + options?: readableStreamOptions, + ): this; + + static toWeb(streamReadable: stream$Readable): ReadableStream; constructor(options?: readableStreamOptions): void; destroy(error?: Error): this; @@ -2504,6 +3040,13 @@ type writableStreamOptions = { ... }; declare class stream$Writable extends stream$Stream { + static fromWeb( + writableStream: WritableStream, + options?: writableStreamOptions, + ): this; + + static toWeb(streamWritable: stream$Writable): WritableStream; + constructor(options?: writableStreamOptions): void; cork(): void; destroy(error?: Error): this; @@ -2545,10 +3088,6 @@ declare class stream$Writable extends stream$Stream { _final(callback: (error?: Error) => void): void; } -//According to the NodeJS docs: -//"Since JavaScript doesn't have multiple prototypal inheritance, this class -//prototypally inherits from Readable, and then parasitically from Writable." -//Source: , + options?: duplexStreamOptions, + ): this; + + // $FlowFixMe[incompatible-type] See above + static toWeb(streamDuplex: stream$Duplex): { + readable: ReadableStream, + writable: WritableStream, + ... + }; + constructor(options?: duplexStreamOptions): void; } type transformStreamOptions = duplexStreamOptions & { @@ -2811,7 +3372,7 @@ type tls$connectOptions = { domain: string, options?: ?number | ?Object, callback?: (err: ?Error, address: string, family: number) => void, - ) => mixed, + ) => unknown, requestOCSP?: boolean, ... }; @@ -2990,8 +3551,16 @@ declare module 'url' { declare function resolve(from: string, to: string): string; declare function domainToASCII(domain: string): string; declare function domainToUnicode(domain: string): string; - declare function pathToFileURL(path: string): url$urlObject; - declare function fileURLToPath(path: url$urlObject | string): string; + + declare function pathToFileURL( + path: string, + options?: Readonly<{windows?: boolean}>, + ): url$urlObject; + + declare function fileURLToPath( + path: url$urlObject | string, + options?: Readonly<{windows?: boolean}>, + ): string; declare class URLSearchParams { @@iterator(): Iterator<[string, string]>; @@ -3013,7 +3582,7 @@ declare module 'url' { value: string, name: string, searchParams: URLSearchParams, - ) => mixed, + ) => unknown, thisArg?: This, ): void; get(name: string): string | null; @@ -3027,6 +3596,7 @@ declare module 'url' { } declare class URL { static canParse(url: string, base?: string): boolean; + static parse(input: string, base?: string): URL | null; static createObjectURL(blob: Blob): string; static createObjectURL(mediaSource: MediaSource): string; static revokeObjectURL(url: string): void; @@ -3046,6 +3616,63 @@ declare module 'url' { toString(): string; toJSON(): string; } + + declare type url$URLPatternInit = { + protocol?: string, + username?: string, + password?: string, + hostname?: string, + port?: string, + pathname?: string, + search?: string, + hash?: string, + baseURL?: string, + }; + + declare type url$URLPatternComponentResult = { + input: string, + groups: {[key: string]: string | void}, + }; + + declare type url$URLPatternResult = { + inputs: $ReadOnlyArray, + protocol: url$URLPatternComponentResult, + username: url$URLPatternComponentResult, + password: url$URLPatternComponentResult, + hostname: url$URLPatternComponentResult, + port: url$URLPatternComponentResult, + pathname: url$URLPatternComponentResult, + search: url$URLPatternComponentResult, + hash: url$URLPatternComponentResult, + }; + + declare class URLPattern { + constructor( + input?: string | url$URLPatternInit, + options?: Readonly<{ignoreCase?: boolean}>, + ): void; + constructor( + input: string | url$URLPatternInit, + baseURL: string, + options?: Readonly<{ignoreCase?: boolean}>, + ): void; + + +hasRegExpGroups: boolean; + +hash: string; + +hostname: string; + +password: string; + +pathname: string; + +port: string; + +protocol: string; + +search: string; + +username: string; + + exec( + input?: string | url$URLPatternInit, + baseURL?: string, + ): url$URLPatternResult | null; + test(input?: string | url$URLPatternInit, baseURL?: string): boolean; + } } type util$InspectOptions = { @@ -3057,30 +3684,30 @@ type util$InspectOptions = { }; declare type util$ParseArgsOption = - | $ReadOnly<{| + | Readonly<{ type: 'boolean', multiple?: false, short?: string, default?: boolean, - |}> - | $ReadOnly<{| + }> + | Readonly<{ type: 'boolean', multiple: true, short?: string, default?: Array, - |}> - | $ReadOnly<{| + }> + | Readonly<{ type: 'string', multiple?: false, short?: string, default?: string, - |}> - | $ReadOnly<{| + }> + | Readonly<{ type: 'string', multiple: true, short?: string, default?: Array, - |}>; + }>; type util$ParseArgsOptionToValue = TOption['type'] extends 'boolean' ? TOption['multiple'] extends true @@ -3137,31 +3764,33 @@ declare module 'util' { declare function stripVTControlCharacters(str: string): string; declare function parseArgs< - TOptions: {+[string]: util$ParseArgsOption} = {||}, - >(config: {| + TOptions: {+[string]: util$ParseArgsOption} = {}, + >(config: { args?: Array, options?: TOptions, strict?: boolean, allowPositionals?: boolean, + allowNegative?: boolean, tokens?: false, - |}): {| + }): { values: util$ParseArgsOptionsToValues, positionals: Array, - |}; + }; declare function parseArgs< - TOptions: {[string]: util$ParseArgsOption} = {||}, - >(config: {| + TOptions: {[string]: util$ParseArgsOption} = {}, + >(config: { args?: Array, options?: TOptions, strict?: boolean, allowPositionals?: boolean, + allowNegative?: boolean, tokens: true, - |}): {| + }): { values: util$ParseArgsOptionsToValues, positionals: Array, tokens: Array, - |}; + }; declare class TextDecoder { constructor( @@ -3187,46 +3816,87 @@ declare module 'util' { encoding: string; } + declare class MIMEType { + constructor(input: string): void; + type: string; + subtype: string; + +essence: string; + +params: MIMEParams; + toString(): string; + } + + declare class MIMEParams { + delete(name: string): void; + get(name: string): ?string; + has(name: string): boolean; + set(name: string, value: string): void; + entries(): Iterator<[string, string]>; + keys(): Iterator; + values(): Iterator; + } + + declare function parseEnv(content: string): {[key: string]: string, ...}; + + declare type util$DiffEntry = [operation: -1 | 0 | 1, value: string]; + declare function diff( + actual: string | $ReadOnlyArray, + expected: string | $ReadOnlyArray, + ): Array; + + declare function getSystemErrorMessage(err: number): string; + + declare type util$CallSiteObject = { + functionName: string, + scriptName: string, + scriptId: string, + lineNumber: number, + columnNumber: number, + }; + declare function getCallSites( + frameCountOrOptions?: number | Readonly<{frameCount?: number}>, + ): Array; + declare var types: { - isAnyArrayBuffer: (value: mixed) => boolean, - isArgumentsObject: (value: mixed) => boolean, - isArrayBuffer: (value: mixed) => boolean, - isAsyncFunction: (value: mixed) => boolean, - isBigInt64Array: (value: mixed) => boolean, - isBigUint64Array: (value: mixed) => boolean, - isBooleanObject: (value: mixed) => boolean, - isBoxedPrimitive: (value: mixed) => boolean, - isDataView: (value: mixed) => boolean, - isDate: (value: mixed) => boolean, - isExternal: (value: mixed) => boolean, - isFloat32Array: (value: mixed) => boolean, - isFloat64Array: (value: mixed) => boolean, - isGeneratorFunction: (value: mixed) => boolean, - isGeneratorObject: (value: mixed) => boolean, - isInt8Array: (value: mixed) => boolean, - isInt16Array: (value: mixed) => boolean, - isInt32Array: (value: mixed) => boolean, - isMap: (value: mixed) => boolean, - isMapIterator: (value: mixed) => boolean, - isModuleNamespaceObject: (value: mixed) => boolean, - isNativeError: (value: mixed) => boolean, - isNumberObject: (value: mixed) => boolean, - isPromise: (value: mixed) => boolean, - isProxy: (value: mixed) => boolean, - isRegExp: (value: mixed) => boolean, - isSet: (value: mixed) => boolean, - isSetIterator: (value: mixed) => boolean, - isSharedArrayBuffer: (value: mixed) => boolean, - isStringObject: (value: mixed) => boolean, - isSymbolObject: (value: mixed) => boolean, - isTypedArray: (value: mixed) => boolean, - isUint8Array: (value: mixed) => boolean, - isUint8ClampedArray: (value: mixed) => boolean, - isUint16Array: (value: mixed) => boolean, - isUint32Array: (value: mixed) => boolean, - isWeakMap: (value: mixed) => boolean, - isWeakSet: (value: mixed) => boolean, - isWebAssemblyCompiledModule: (value: mixed) => boolean, + isAnyArrayBuffer: (value: unknown) => boolean, + isArgumentsObject: (value: unknown) => boolean, + isArrayBuffer: (value: unknown) => boolean, + isAsyncFunction: (value: unknown) => boolean, + isBigInt64Array: (value: unknown) => boolean, + isBigUint64Array: (value: unknown) => boolean, + isBooleanObject: (value: unknown) => boolean, + isBoxedPrimitive: (value: unknown) => boolean, + isDataView: (value: unknown) => boolean, + isDate: (value: unknown) => boolean, + isExternal: (value: unknown) => boolean, + isFloat16Array: (value: unknown) => boolean, + isFloat32Array: (value: unknown) => boolean, + isFloat64Array: (value: unknown) => boolean, + isGeneratorFunction: (value: unknown) => boolean, + isGeneratorObject: (value: unknown) => boolean, + isInt8Array: (value: unknown) => boolean, + isInt16Array: (value: unknown) => boolean, + isInt32Array: (value: unknown) => boolean, + isMap: (value: unknown) => boolean, + isMapIterator: (value: unknown) => boolean, + isModuleNamespaceObject: (value: unknown) => boolean, + isNativeError: (value: unknown) => boolean, + isNumberObject: (value: unknown) => boolean, + isPromise: (value: unknown) => boolean, + isProxy: (value: unknown) => boolean, + isRegExp: (value: unknown) => boolean, + isSet: (value: unknown) => boolean, + isSetIterator: (value: unknown) => boolean, + isSharedArrayBuffer: (value: unknown) => boolean, + isStringObject: (value: unknown) => boolean, + isSymbolObject: (value: unknown) => boolean, + isTypedArray: (value: unknown) => boolean, + isUint8Array: (value: unknown) => boolean, + isUint8ClampedArray: (value: unknown) => boolean, + isUint16Array: (value: unknown) => boolean, + isUint32Array: (value: unknown) => boolean, + isWeakMap: (value: unknown) => boolean, + isWeakSet: (value: unknown) => boolean, + isWebAssemblyCompiledModule: (value: unknown) => boolean, ... }; @@ -3291,9 +3961,9 @@ declare module 'util' { | Modifiers | $ReadOnlyArray, text: string, - options?: $ReadOnly<{ + options?: Readonly<{ stream?: ?stream$Stream, - validStream?: ?boolean, + validateStream?: ?boolean, }>, ): string; } @@ -3402,6 +4072,20 @@ type zlib$brotliOptions = { ... }; +type zlib$zstdOptions = { + flush?: number, + finishFlush?: number, + chunkSize?: number, + params?: { + [number]: boolean | number, + ... + }, + maxOutputLength?: number, + info?: boolean, + dictionary?: Buffer, + ... +}; + type zlib$syncFn = ( buffer: Buffer | $TypedArray | DataView | ArrayBuffer | string, options?: zlib$options, @@ -3579,6 +4263,79 @@ declare module 'zlib' { BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: number, BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: number, BROTLI_DECODER_ERROR_UNREACHABL: number, + + ZSTD_COMPRESS: number, + ZSTD_DECOMPRESS: number, + + // Default compression level for zstd streams + ZSTD_CLEVEL_DEFAULT: number, + + // Keys for zlib$zstdOptions['params'] + ZSTD_c_compressionLevel: number, + ZSTD_c_windowLog: number, + ZSTD_c_hashLog: number, + ZSTD_c_chainLog: number, + ZSTD_c_searchLog: number, + ZSTD_c_minMatch: number, + ZSTD_c_targetLength: number, + ZSTD_c_strategy: number, + ZSTD_c_enableLongDistanceMatching: number, + ZSTD_c_ldmHashLog: number, + ZSTD_c_ldmMinMatch: number, + ZSTD_c_ldmBucketSizeLog: number, + ZSTD_c_ldmHashRateLog: number, + ZSTD_c_contentSizeFlag: number, + ZSTD_c_checksumFlag: number, + ZSTD_c_dictIDFlag: number, + ZSTD_c_nbWorkers: number, + ZSTD_c_jobSize: number, + ZSTD_c_overlapLog: number, + + // Flush operations + ZSTD_e_continue: number, + ZSTD_e_flush: number, + ZSTD_e_end: number, + + // Values for the ZSTD_c_strategy parameter + ZSTD_fast: number, + ZSTD_dfast: number, + ZSTD_greedy: number, + ZSTD_lazy: number, + ZSTD_lazy2: number, + ZSTD_btlazy2: number, + ZSTD_btopt: number, + ZSTD_btultra: number, + ZSTD_btultra2: number, + + // Error codes + ZSTD_error_no_error: number, + ZSTD_error_GENERIC: number, + ZSTD_error_prefix_unknown: number, + ZSTD_error_version_unsupported: number, + ZSTD_error_frameParameter_unsupported: number, + ZSTD_error_frameParameter_windowTooLarge: number, + ZSTD_error_corruption_detected: number, + ZSTD_error_checksum_wrong: number, + ZSTD_error_literals_headerWrong: number, + ZSTD_error_dictionary_corrupted: number, + ZSTD_error_dictionary_wrong: number, + ZSTD_error_dictionaryCreation_failed: number, + ZSTD_error_parameter_unsupported: number, + ZSTD_error_parameter_combination_unsupported: number, + ZSTD_error_parameter_outOfBound: number, + ZSTD_error_tableLog_tooLarge: number, + ZSTD_error_maxSymbolValue_tooLarge: number, + ZSTD_error_maxSymbolValue_tooSmall: number, + ZSTD_error_stabilityCondition_notRespected: number, + ZSTD_error_stage_wrong: number, + ZSTD_error_init_missing: number, + ZSTD_error_memory_allocation: number, + ZSTD_error_workSpace_tooSmall: number, + ZSTD_error_dstSize_tooSmall: number, + ZSTD_error_srcSize_wrong: number, + ZSTD_error_dstBuffer_null: number, + ZSTD_error_noForwardProgress_destFull: number, + ZSTD_error_noForwardProgress_inputEmpty: number, ... }; declare var codes: { @@ -3598,6 +4355,8 @@ declare module 'zlib' { } declare class BrotliCompress extends Zlib {} declare class BrotliDecompress extends Zlib {} + declare class ZstdCompress extends Zlib {} + declare class ZstdDecompress extends Zlib {} declare class Deflate extends Zlib {} declare class Inflate extends Zlib {} declare class Gzip extends Zlib {} @@ -3618,6 +4377,10 @@ declare module 'zlib' { declare function createGzip(options?: zlib$options): Gzip; declare function createGunzip(options?: zlib$options): Gunzip; declare function createUnzip(options?: zlib$options): Unzip; + declare function createZstdCompress(options?: zlib$zstdOptions): ZstdCompress; + declare function createZstdDecompress( + options?: zlib$zstdOptions, + ): ZstdDecompress; declare var brotliCompress: zlib$brotliAsyncFn; declare var brotliCompressSync: zlib$brotliSyncFn; declare var brotliDeompress: zlib$brotliAsyncFn; @@ -3965,18 +4728,18 @@ declare class Process extends events$EventEmitter { emitWarning(warning: string | Error): void; emitWarning( warning: string, - typeOrCtor: string | ((...empty) => mixed), + typeOrCtor: string | ((...empty) => unknown), ): void; emitWarning( warning: string, type: string, - codeOrCtor: string | ((...empty) => mixed), + codeOrCtor: string | ((...empty) => unknown), ): void; emitWarning( warning: string, type: string, code: string, - ctor?: (...empty) => mixed, + ctor?: (...empty) => unknown, ): void; execArgv: Array; execPath: string; @@ -4006,7 +4769,7 @@ declare class Process extends events$EventEmitter { }, rss: () => number, }; - nextTick: (cb: (...T) => mixed, ...T) => void; + nextTick: (cb: (...T) => unknown, ...T) => void; pid: number; platform: string; release: { @@ -4047,7 +4810,7 @@ declare var __filename: string; declare var __dirname: string; declare function setImmediate( - callback: (...args: Array) => mixed, + callback: (...args: Array) => unknown, ...args: Array ): Object; declare function clearImmediate(immediateObject: any): Object; diff --git a/flow-typed/npm/@octokit/rest_v22.x.x.js b/flow-typed/npm/@octokit/rest_v22.x.x.js index 9c193173e2cb..fafa59f524c5 100644 --- a/flow-typed/npm/@octokit/rest_v22.x.x.js +++ b/flow-typed/npm/@octokit/rest_v22.x.x.js @@ -53,7 +53,7 @@ declare module '@octokit/rest' { repo: string, asset_id: string, ... - }) => Promise, + }) => Promise, }>; } diff --git a/flow-typed/npm/@react-native-community/cli-server-api_v19.x.x.js b/flow-typed/npm/@react-native-community/cli-server-api_v19.x.x.js index b8bcc3c40931..c6307e1b13cd 100644 --- a/flow-typed/npm/@react-native-community/cli-server-api_v19.x.x.js +++ b/flow-typed/npm/@react-native-community/cli-server-api_v19.x.x.js @@ -32,7 +32,7 @@ declare module '@react-native-community/cli-server-api' { server: ws$WebSocketServer, broadcast: ( method: string, - params?: Record | null, + params?: Record | null, ) => void, }, eventsSocketEndpoint: { diff --git a/flow-typed/npm/babel-traverse_v7.x.x.js b/flow-typed/npm/babel-traverse_v7.x.x.js index 1cd8df07b182..1caf444f5298 100644 --- a/flow-typed/npm/babel-traverse_v7.x.x.js +++ b/flow-typed/npm/babel-traverse_v7.x.x.js @@ -53,7 +53,7 @@ declare module '@babel/traverse' { constructor( scope: Scope, - opts: TraverseOptions, + opts: TraverseOptions, state: any, parentPath: NodePath<>, ): TraversalContext; @@ -298,12 +298,12 @@ declare module '@babel/traverse' { parent: BabelNode; hub: HubInterface; contexts: Array; - data: {[key: string]: mixed} | null; + data: {[key: string]: unknown} | null; shouldSkip: boolean; shouldStop: boolean; removed: boolean; - state: mixed; - +opts: $ReadOnly> | null; + state: unknown; + +opts: $ReadOnly> | null; skipKeys: null | {[key: string]: boolean}; parentPath: ?NodePath<>; context: TraversalContext; @@ -338,7 +338,7 @@ declare module '@babel/traverse' { getScope(scope: Scope): Scope; setData(key: string, val: TVal): TVal; - getData(key: string, def?: TVal): TVal; + getData(key: string, def?: TVal): TVal; buildCodeFrameError( msg: string, @@ -1881,8 +1881,8 @@ declare module '@babel/traverse' { declare export var visitors: Visitors; declare export type Cache = { - path: $ReadOnlyWeakMap, - scope: $ReadOnlyWeakMap, + path: $ReadOnlyWeakMap, + scope: $ReadOnlyWeakMap, clear(): void, clearPath(): void, clearScope(): void, diff --git a/flow-typed/npm/babel_v7.x.x.js b/flow-typed/npm/babel_v7.x.x.js index 53953323b240..3e574ffb4736 100644 --- a/flow-typed/npm/babel_v7.x.x.js +++ b/flow-typed/npm/babel_v7.x.x.js @@ -304,9 +304,9 @@ declare module '@babel/core' { declare class Store { constructor(): Store; - setDynamic(key: string, fn: () => mixed): void; - set(key: string, val: mixed): void; - get(key: string): mixed; + setDynamic(key: string, fn: () => unknown): void; + set(key: string, val: unknown): void; + get(key: string): unknown; } declare export class File extends Store { @@ -367,7 +367,7 @@ declare module '@babel/core' { transform(): TransformResult<>; - wrap(code: string, callback: () => mixed): TransformResult<>; + wrap(code: string, callback: () => unknown): TransformResult<>; addCode(code: string): void; @@ -394,7 +394,7 @@ declare module '@babel/core' { declare export type PluginObj = { name?: string, - inherits?: mixed, + inherits?: unknown, maniuplateOptions?: ( opts: BabelCoreOptions, parserOpts: ParserOptions, @@ -411,7 +411,7 @@ declare module '@babel/core' { // but have not yet been executed to call functions with options. declare export type UnloadedDescriptor = { name: string | void, - value: PluginObj | (() => PluginObj), + value: PluginObj | (() => PluginObj), options: EntryOptions, dirname: string, alias: string, @@ -423,7 +423,7 @@ declare module '@babel/core' { }; declare export class ConfigItem { - +value: PluginObj | (() => PluginObj); + +value: PluginObj | (() => PluginObj); +options: EntryOptions; +dirname: string; +name: string | void; @@ -924,8 +924,8 @@ declare module '@babel/core' { |}; declare type TransformCallback = - | ((Error, null) => mixed) - | ((null, TransformResult | null) => mixed); + | ((Error, null) => unknown) + | ((null, TransformResult | null) => unknown); /** * Transforms the passed in code. Calling a callback with an object with the generated code, source map, and AST. @@ -1059,20 +1059,20 @@ declare module '@babel/core' { declare export type ResolvedConfig = { options: BabelCoreOptions, - passes: Array | (() => PluginObj)>>, + passes: Array | (() => PluginObj)>>, }; declare export function loadOptions( - options?: mixed, + options?: unknown, callback: - | ((error: Error, null) => mixed) - | ((null, config: ResolvedConfig | null) => mixed), + | ((error: Error, null) => unknown) + | ((null, config: ResolvedConfig | null) => unknown), ): void; declare export function loadOptionsSync( - options?: mixed, + options?: unknown, ): ResolvedConfig | null; declare export function loadOptionsAsync( - options?: mixed, + options?: unknown, ): Promise; // For now @@ -1090,16 +1090,16 @@ declare module '@babel/core' { } declare export function loadPartialConfig( - options?: mixed, + options?: unknown, callback: - | ((error: Error, null) => mixed) - | ((null, config: PartialConfig | null) => mixed), + | ((error: Error, null) => unknown) + | ((null, config: PartialConfig | null) => unknown), ): void; declare export function loadPartialConfigSync( - options?: mixed, + options?: unknown, ): PartialConfig | null; declare export function loadPartialConfigAsync( - options?: mixed, + options?: unknown, ): Promise; } @@ -1189,7 +1189,7 @@ declare module '@babel/generator' { jsecsOption?: {...}, decoratorsBeforeExport?: boolean, - recordAndTupleSyntaxType?: mixed, + recordAndTupleSyntaxType?: unknown, /** * Enable generating source maps @@ -1283,13 +1283,13 @@ declare module '@babel/template' { (tpl: string, opts: ?PublicOpts): (?PublicReplacements) => T, // Building from a template literal produces an AST builder function by default. - (tpl: Array, ...args: Array): (?PublicReplacements) => T, + (tpl: Array, ...args: Array): (?PublicReplacements) => T, // Allow users to explicitly create templates that produce ASTs, skipping // the need for an intermediate function. ast: { (tpl: string, opts: ?PublicOpts): T, - (tpl: Array, ...args: Array): T, + (tpl: Array, ...args: Array): T, }, }; @@ -1321,14 +1321,17 @@ declare module '@babel/template' { // Building from a template literal produces an AST builder function by default. ( tpl: Array, - ...args: Array + ...args: Array ): (?PublicReplacements) => Statement | Array, // Allow users to explicitly create templates that produce ASTs, skipping // the need for an intermediate function. ast: { (tpl: string, opts: ?PublicOpts): Statement | Array, - (tpl: Array, ...args: Array): Statement | Array, + ( + tpl: Array, + ...args: Array + ): Statement | Array, }, }; diff --git a/flow-typed/npm/chrome-launcher_v0.15.x.js b/flow-typed/npm/chrome-launcher_v0.15.x.js index b72a756ab929..4f7a3fef11a2 100644 --- a/flow-typed/npm/chrome-launcher_v0.15.x.js +++ b/flow-typed/npm/chrome-launcher_v0.15.x.js @@ -16,7 +16,7 @@ declare module 'chrome-launcher' { declare export type Options = { startingUrl?: string, chromeFlags?: Array, - prefs?: mixed, + prefs?: unknown, port?: number, handleSIGINT?: boolean, chromePath?: string, diff --git a/flow-typed/npm/chromium-edge-launcher_v0.2.x.js b/flow-typed/npm/chromium-edge-launcher_v0.2.x.js index ab8d7e0313ba..0b74594465da 100644 --- a/flow-typed/npm/chromium-edge-launcher_v0.2.x.js +++ b/flow-typed/npm/chromium-edge-launcher_v0.2.x.js @@ -16,7 +16,7 @@ declare module 'chromium-edge-launcher' { declare export type Options = { startingUrl?: string, edgeFlags?: Array, - prefs?: mixed, + prefs?: unknown, port?: number, handleSIGINT?: boolean, edgePath?: string, diff --git a/flow-typed/npm/connect_v3.x.x.js b/flow-typed/npm/connect_v3.x.x.js index 0195559e06ff..b76ac5582952 100644 --- a/flow-typed/npm/connect_v3.x.x.js +++ b/flow-typed/npm/connect_v3.x.x.js @@ -13,7 +13,7 @@ declare module 'connect' { declare export type ServerHandle = HandleFunction | http.Server; - declare type NextFunction = (err?: mixed) => void; + declare type NextFunction = (err?: unknown) => void; declare export type NextHandleFunction = ( req: IncomingMessage, diff --git a/flow-typed/npm/debug_v4.4.x.js b/flow-typed/npm/debug_v4.4.x.js index fea4ad05c4d5..bc1ef24062b3 100644 --- a/flow-typed/npm/debug_v4.4.x.js +++ b/flow-typed/npm/debug_v4.4.x.js @@ -12,15 +12,15 @@ declare module 'debug' { declare interface Formatters { - [formatter: string]: (v: mixed) => string; + [formatter: string]: (v: unknown) => string; } declare type Debugger = {| - (format: mixed, ...args: Array): void, + (format: unknown, ...args: Array): void, color: string, diff: number, enabled: boolean, - log: (format: mixed, ...args: Array) => mixed, + log: (format: unknown, ...args: Array) => unknown, namespace: string, destroy: () => boolean, extend: (namespace: string, delimiter?: string) => Debugger, @@ -28,12 +28,12 @@ declare module 'debug' { declare type Debug = {| (namespace: string): Debugger, - coerce: (val: mixed) => mixed, + coerce: (val: unknown) => unknown, disable: () => string, enable: (namespaces: string) => void, enabled: (namespaces: string) => boolean, - formatArgs: (args: Array) => void, - log: (format: mixed, ...args: Array) => mixed, + formatArgs: (args: Array) => void, + log: (format: unknown, ...args: Array) => unknown, selectColor: (namespace: string) => string | number, // this should be of type require('ms') but it doesn't play nicely with eslint // unless we add ms to dependencies, which we don't want to do diff --git a/flow-typed/npm/deep-equal_v1.x.x.js b/flow-typed/npm/deep-equal_v1.x.x.js index 215eb356778f..bcb809abed34 100644 --- a/flow-typed/npm/deep-equal_v1.x.x.js +++ b/flow-typed/npm/deep-equal_v1.x.x.js @@ -10,8 +10,8 @@ declare module 'deep-equal' { declare module.exports: ( - actual: mixed, - expected: mixed, + actual: unknown, + expected: unknown, options?: {strict: boolean}, ) => boolean; } diff --git a/flow-typed/npm/glob_v7.x.x.js b/flow-typed/npm/glob_v7.x.x.js deleted file mode 100644 index 4bd3df6cb984..000000000000 --- a/flow-typed/npm/glob_v7.x.x.js +++ /dev/null @@ -1,79 +0,0 @@ -// flow-typed signature: d2a519d7d007e9ba3e5bf2ac3ff76eca -// flow-typed version: f243e51ed7/glob_v7.x.x/flow_>=v0.104.x - -declare module "glob" { - declare type MinimatchOptions = {| - debug?: boolean, - nobrace?: boolean, - noglobstar?: boolean, - dot?: boolean, - noext?: boolean, - nocase?: boolean, - nonull?: boolean, - matchBase?: boolean, - nocomment?: boolean, - nonegate?: boolean, - flipNegate?: boolean - |}; - - declare type Options = {| - ...MinimatchOptions, - cwd?: string, - root?: string, - nomount?: boolean, - mark?: boolean, - nosort?: boolean, - stat?: boolean, - silent?: boolean, - strict?: boolean, - cache?: { [path: string]: boolean | "DIR" | "FILE" | $ReadOnlyArray, ... }, - statCache?: { [path: string]: boolean | { isDirectory(): boolean, ... } | void, ... }, - symlinks?: { [path: string]: boolean | void, ... }, - realpathCache?: { [path: string]: string, ... }, - sync?: boolean, - nounique?: boolean, - nodir?: boolean, - ignore?: string | $ReadOnlyArray, - follow?: boolean, - realpath?: boolean, - absolute?: boolean - |}; - - /** - * Called when an error occurs, or matches are found - * err - * matches: filenames found matching the pattern - */ - declare type CallBack = (err: ?Error, matches: Array) => void; - - declare class Glob extends events$EventEmitter { - constructor(pattern: string): this; - constructor(pattern: string, callback: CallBack): this; - constructor(pattern: string, options: Options, callback: CallBack): this; - - minimatch: {...}; - options: Options; - aborted: boolean; - cache: { [path: string]: boolean | "DIR" | "FILE" | $ReadOnlyArray, ... }; - statCache: { [path: string]: boolean | { isDirectory(): boolean, ... } | void, ... }; - symlinks: { [path: string]: boolean | void, ... }; - realpathCache: { [path: string]: string, ... }; - found: Array; - - pause(): void; - resume(): void; - abort(): void; - } - - declare class GlobModule { - Glob: Class; - - (pattern: string, callback: CallBack): void; - (pattern: string, options: Options, callback: CallBack): void; - - hasMagic(pattern: string, options?: Options): boolean; - sync(pattern: string, options?: Options): Array; - } - - declare module.exports: GlobModule; -} diff --git a/flow-typed/npm/jest-diff_v29.x.x.js b/flow-typed/npm/jest-diff_v29.x.x.js index d1cdce568656..a3cc9d9130be 100644 --- a/flow-typed/npm/jest-diff_v29.x.x.js +++ b/flow-typed/npm/jest-diff_v29.x.x.js @@ -32,8 +32,8 @@ declare module 'jest-diff' { }; declare export function diff( - a: mixed, - b: mixed, + a: unknown, + b: unknown, options?: DiffOptions, ): string | null; } diff --git a/flow-typed/npm/jest-snapshot_v29.x.x.js b/flow-typed/npm/jest-snapshot_v29.x.x.js index fbae1235a572..58fa3fef7c8c 100644 --- a/flow-typed/npm/jest-snapshot_v29.x.x.js +++ b/flow-typed/npm/jest-snapshot_v29.x.x.js @@ -33,7 +33,7 @@ declare module 'jest-snapshot' { declare export function isSnapshotPath(path: string): boolean; - type LocalRequire = (module: string) => mixed; + type LocalRequire = (module: string) => unknown; declare export function buildSnapshotResolver( config: ProjectConfig, diff --git a/flow-typed/npm/jest.js b/flow-typed/npm/jest.js index 29974483804f..1bfe9618ce6c 100644 --- a/flow-typed/npm/jest.js +++ b/flow-typed/npm/jest.js @@ -13,7 +13,7 @@ // MODIFIED: Added ESLint suppression comment - no-unused-vars doesn't understand declaration files -type JestMockFn, TReturn> = { +type JestMockFn, TReturn> = { (...args: TArguments): TReturn, /** * An object for introspecting mock calls @@ -39,7 +39,7 @@ type JestMockFn, TReturn> = { /** * An array that contains the contexts for all calls of the mock function. */ - contexts: Array, + contexts: Array, /** * An array that contains all the object results that have been * returned by this mock function call @@ -129,17 +129,17 @@ type JestAsymmetricEqualityType = { /** * A custom Jasmine equality tester */ - asymmetricMatch(value: mixed): boolean, + asymmetricMatch(value: unknown): boolean, ... }; type JestCallsType = { - allArgs(): mixed, - all(): mixed, + allArgs(): unknown, + all(): unknown, any(): boolean, count(): number, - first(): mixed, - mostRecent(): mixed, + first(): unknown, + mostRecent(): unknown, reset(): void, ... }; @@ -881,7 +881,7 @@ type JestObjectType = { * implementation. */ // MODIFIED: Added defaults to type arguments. - fn = $ReadOnlyArray, TReturn = any>( + fn = $ReadOnlyArray, TReturn = any>( implementation?: (...args: TArguments) => TReturn, ): JestMockFn, /** @@ -1005,22 +1005,22 @@ type JestDoneFn = { /** Runs this function after every test inside this context */ declare function afterEach( - fn: (done: JestDoneFn) => ?Promise, + fn: (done: JestDoneFn) => ?Promise, timeout?: number, ): void; /** Runs this function before every test inside this context */ declare function beforeEach( - fn: (done: JestDoneFn) => ?Promise, + fn: (done: JestDoneFn) => ?Promise, timeout?: number, ): void; /** Runs this function after all tests have finished inside this context */ declare function afterAll( - fn: (done: JestDoneFn) => ?Promise, + fn: (done: JestDoneFn) => ?Promise, timeout?: number, ): void; /** Runs this function before any tests have started inside this context */ declare function beforeAll( - fn: (done: JestDoneFn) => ?Promise, + fn: (done: JestDoneFn) => ?Promise, timeout?: number, ): void; @@ -1045,11 +1045,11 @@ declare var describe: { */ each( ...table: - | $ReadOnlyArray<$ReadOnlyArray | mixed> + | $ReadOnlyArray<$ReadOnlyArray | unknown> | [$ReadOnlyArray, string] ): ( name: JestTestName, - fn?: (...args: $ReadOnlyArray) => ?Promise, + fn?: (...args: $ReadOnlyArray) => ?Promise, timeout?: number, ) => void, ... @@ -1066,7 +1066,7 @@ declare var it: { */ ( name: JestTestName, - fn?: (done: JestDoneFn) => ?Promise, + fn?: (done: JestDoneFn) => ?Promise, timeout?: number, ): void, /** @@ -1079,14 +1079,14 @@ declare var it: { only: { ( name: JestTestName, - fn?: (done: JestDoneFn) => ?Promise, + fn?: (done: JestDoneFn) => ?Promise, timeout?: number, ): void, each( - ...table: Array | mixed> | [Array, string] + ...table: Array | unknown> | [Array, string] ): ( name: JestTestName, - fn?: (...args: Array) => ?Promise, + fn?: (...args: Array) => ?Promise, timeout?: number, ) => void, }, @@ -1100,14 +1100,14 @@ declare var it: { skip: { ( name: JestTestName, - fn?: (done: JestDoneFn) => ?Promise, + fn?: (done: JestDoneFn) => ?Promise, timeout?: number, ): void, each( - ...table: Array | mixed> | [Array, string] + ...table: Array | unknown> | [Array, string] ): ( name: JestTestName, - fn?: (...args: Array) => ?Promise, + fn?: (...args: Array) => ?Promise, timeout?: number, ) => void, }, @@ -1126,7 +1126,7 @@ declare var it: { */ concurrent( name: JestTestName, - fn?: (done: JestDoneFn) => ?Promise, + fn?: (done: JestDoneFn) => ?Promise, timeout?: number, ): void, /** @@ -1136,11 +1136,11 @@ declare var it: { */ each( ...table: - | $ReadOnlyArray<$ReadOnlyArray | mixed> + | $ReadOnlyArray<$ReadOnlyArray | unknown> | [$ReadOnlyArray, string] ): ( name: JestTestName, - fn?: (...args: Array) => ?Promise, + fn?: (...args: Array) => ?Promise, timeout?: number, ) => void, ... @@ -1148,7 +1148,7 @@ declare var it: { declare function fit( name: JestTestName, - fn: (done: JestDoneFn) => ?Promise, + fn: (done: JestDoneFn) => ?Promise, timeout?: number, ): void; /** An individual test unit */ @@ -1249,16 +1249,16 @@ declare var expect: { addSnapshotSerializer(pluginModule: JestPrettyFormatPlugin): void, assertions(expectedAssertions: number): void, hasAssertions(): void, - any(value: mixed): JestAsymmetricEqualityType, + any(value: unknown): JestAsymmetricEqualityType, anything(): any, // MODIFIED: Array -> $ReadOnlyArray - arrayContaining(value: $ReadOnlyArray): Array, + arrayContaining(value: $ReadOnlyArray): Array, objectContaining(value: Object): Object, /** Matches any received string that contains the exact expected string. */ stringContaining(value: string): string, stringMatching(value: string | RegExp): string, not: { - arrayContaining: (value: $ReadOnlyArray) => Array, + arrayContaining: (value: $ReadOnlyArray) => Array, objectContaining: (value: {...}) => Object, stringContaining: (value: string) => string, stringMatching: (value: string | RegExp) => string, @@ -1269,7 +1269,7 @@ declare var expect: { // TODO handle return type // http://jasmine.github.io/2.4/introduction.html#section-Spies -declare function spyOn(value: mixed, method: string): Object; +declare function spyOn(value: unknown, method: string): Object; /** Holds all functions related to manipulating test runner */ declare var jest: JestObjectType; @@ -1280,9 +1280,9 @@ declare var jest: JestObjectType; */ declare var jasmine: { DEFAULT_TIMEOUT_INTERVAL: number, - any(value: mixed): JestAsymmetricEqualityType, + any(value: unknown): JestAsymmetricEqualityType, anything(): any, - arrayContaining(value: Array): Array, + arrayContaining(value: Array): Array, clock(): JestClockType, createSpy(name: string): JestSpyType, createSpyObj( diff --git a/flow-typed/npm/listr2_v8.x.x.js b/flow-typed/npm/listr2_v8.x.x.js index 02ec1761408f..6bee2c703ee0 100644 --- a/flow-typed/npm/listr2_v8.x.x.js +++ b/flow-typed/npm/listr2_v8.x.x.js @@ -8,7 +8,7 @@ declare module 'listr2' { declare export type TaskResult< ContextT = {__proto__: null}, - ReturnT = mixed, + ReturnT = unknown, > = | ReturnT | Promise @@ -35,7 +35,7 @@ declare module 'listr2' { declare export type TaskSpec< ContextT = {__proto__: null}, - ReturnT = mixed, + ReturnT = unknown, > = { title: string, task: TaskFn, diff --git a/flow-typed/npm/listr_v14.x.x.js b/flow-typed/npm/listr_v14.x.x.js index 2e8e52ac6d52..bc2a6bc7c19d 100644 --- a/flow-typed/npm/listr_v14.x.x.js +++ b/flow-typed/npm/listr_v14.x.x.js @@ -8,7 +8,7 @@ declare module 'listr' { declare export type TaskResult< ContextT = {__proto__: null}, - ReturnT = mixed, + ReturnT = unknown, > = | ReturnT | Promise @@ -35,7 +35,7 @@ declare module 'listr' { declare export type TaskSpec< ContextT = {__proto__: null}, - ReturnT = mixed, + ReturnT = unknown, > = { title: string, task: TaskFn, diff --git a/flow-typed/npm/node-fetch_v2.x.x.js b/flow-typed/npm/node-fetch_v2.x.x.js index 81441ccd0bc3..5b6b9cc51b46 100644 --- a/flow-typed/npm/node-fetch_v2.x.x.js +++ b/flow-typed/npm/node-fetch_v2.x.x.js @@ -20,8 +20,8 @@ declare module 'node-fetch' { +aborted: boolean, +onabort: (event?: {...}) => void, - +addEventListener: (name: string, cb: () => mixed) => void, - +removeEventListener: (name: string, cb: () => mixed) => void, + +addEventListener: (name: string, cb: () => unknown) => void, + +removeEventListener: (name: string, cb: () => unknown) => void, +dispatchEvent: (event: {...}) => void, ... }; diff --git a/flow-typed/npm/pretty-format_v29.x.x.js b/flow-typed/npm/pretty-format_v29.x.x.js index 1fd2dfe577f0..a13951717f0f 100644 --- a/flow-typed/npm/pretty-format_v29.x.x.js +++ b/flow-typed/npm/pretty-format_v29.x.x.js @@ -4,7 +4,7 @@ * @flow strict * @format */ -declare type Print = (value: mixed) => string; +declare type Print = (value: unknown) => string; declare type Indent = (value: string) => string; declare type PluginOptions = { edgeSpacing: string, @@ -22,17 +22,17 @@ declare type Colors = { declare type PrettyFormatPlugin = | { print: ( - value: mixed, + value: unknown, print?: ?Print, indent?: ?Indent, options?: ?PluginOptions, colors?: ?Colors, ) => string, - test: (value: mixed) => boolean, + test: (value: unknown) => boolean, } | { - serialize: (value: mixed) => string, - test: (value: mixed) => boolean, + serialize: (value: unknown) => string, + test: (value: unknown) => boolean, }; declare module 'pretty-format' { @@ -41,7 +41,7 @@ declare module 'pretty-format' { | null | void; declare export function format( - value: mixed, + value: unknown, options?: ?{ callToJSON?: ?boolean, compareKeys?: CompareKeys, diff --git a/flow-typed/npm/promise_v8.x.x.js b/flow-typed/npm/promise_v8.x.x.js index f7eb92e4d12d..7358622e3bea 100644 --- a/flow-typed/npm/promise_v8.x.x.js +++ b/flow-typed/npm/promise_v8.x.x.js @@ -19,10 +19,10 @@ declare module 'promise/setimmediate/rejection-tracking' { declare module.exports: { enable: ( options?: ?{ - whitelist?: ?Array, + whitelist?: ?Array, allRejections?: ?boolean, - onUnhandled?: ?(number, mixed) => void, - onHandled?: ?(number, mixed) => void, + onUnhandled?: ?(number, unknown) => void, + onHandled?: ?(number, unknown) => void, }, ) => void, disable: () => void, diff --git a/flow-typed/npm/rxjs_v6.x.x.js b/flow-typed/npm/rxjs_v6.x.x.js index 8963f46bf1fd..6bc8eb1d3f29 100644 --- a/flow-typed/npm/rxjs_v6.x.x.js +++ b/flow-typed/npm/rxjs_v6.x.x.js @@ -52,7 +52,7 @@ declare type rxjs$ObservableInput = | Iterable; declare type rxjs$InteropObservable = { - [string | mixed]: () => rxjs$Subscribable, + [string | unknown]: () => rxjs$Subscribable, ... }; /** OBSERVER INTERFACES */ @@ -371,7 +371,7 @@ declare module 'rxjs' { iif: typeof rxjs$iif, ConnectableObservable: typeof rxjs$ConnectableObservable, GroupedObservable: typeof rxjs$GroupedObservable, - observable: string | mixed, + observable: string | unknown, Subject: typeof rxjs$Subject, BehaviorSubject: typeof BehaviorSubject, ReplaySubject: typeof ReplaySubject, @@ -598,7 +598,7 @@ declare module 'rxjs' { UnsubscriptionError: UnsubscriptionError, TimeoutError: TimeoutError, fromEvent: ( - target: mixed, + target: unknown, eventName: string, options?: rxjs$EventListenerOptions | ((...args: any[]) => T), // @deprecated resultSelector no longer supported, pipe to map instead @@ -971,7 +971,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => () => rxjs$Observable) & + ) => () => rxjs$Observable) & (( callbackFunc: (callback: (res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: rxjs$SchedulerLike, @@ -1000,7 +1000,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => (arg1: A1) => rxjs$Observable) & + ) => (arg1: A1) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1033,7 +1033,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => (arg1: A1, arg2: A2) => rxjs$Observable) & + ) => (arg1: A1, arg2: A2) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1072,7 +1072,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => (arg1: A1, arg2: A2, arg3: A3) => rxjs$Observable) & + ) => (arg1: A1, arg2: A2, arg3: A3) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1129,7 +1129,7 @@ declare module 'rxjs' { arg2: A2, arg3: A3, arg4: A4, - ) => rxjs$Observable) & + ) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1202,7 +1202,7 @@ declare module 'rxjs' { arg3: A3, arg4: A4, arg5: A5, - ) => rxjs$Observable) & + ) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1301,7 +1301,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => (...args: any[]) => rxjs$Observable) & + ) => (...args: any[]) => rxjs$Observable) & (( callbackFunc: ( callback: (err: any, res1: R1, res2: R2, res3: R3) => any, @@ -1370,7 +1370,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => (...args: any[]) => rxjs$Observable) & + ) => (...args: any[]) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1467,7 +1467,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => (...args: any[]) => rxjs$Observable) & + ) => (...args: any[]) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1535,7 +1535,7 @@ declare module 'rxjs' { ) => any, ) => any, scheduler?: rxjs$SchedulerLike, - ) => (...args: any[]) => rxjs$Observable) & + ) => (...args: any[]) => rxjs$Observable) & (( callbackFunc: ( arg1: A1, @@ -1607,7 +1607,7 @@ declare module 'rxjs' { (( callbackFunc: Function, scheduler?: rxjs$SchedulerLike, - ) => (...args: any[]) => rxjs$Observable), + ) => (...args: any[]) => rxjs$Observable), // @deprecated resultSelector no longer supported, pipe to map instead combineLatest: (( v1: rxjs$ObservableInput, @@ -1833,12 +1833,12 @@ declare module 'rxjs' { } declare class AsapScheduler extends AsyncScheduler { - flush(action?: AsyncAction): void; + flush(action?: AsyncAction): void; } declare class AsyncScheduler extends Scheduler { static delegate: Scheduler; - actions: Array>; + actions: Array>; // @deprecated internal use only active: boolean; // @deprecated internal use only @@ -1849,26 +1849,30 @@ declare module 'rxjs' { delay?: number, state?: T, ): rxjs$Subscription; - flush(action: AsyncAction): void; + flush(action: AsyncAction): void; } declare class QueueScheduler extends AsyncScheduler {} declare class AnimationFrameScheduler extends AsyncScheduler { - flush(action?: AsyncAction): void; + flush(action?: AsyncAction): void; } declare class AsyncAction extends Action { scheduler: AsyncScheduler; work: (state?: T) => void; - id: mixed; + id: unknown; state: T; delay: number; pending: boolean; constructor(scheduler: AsyncScheduler, work: (state?: T) => void): void; schedule(state?: T, delay?: number): rxjs$Subscription; - requestAsyncId(scheduler: AsyncScheduler, id?: mixed, delay?: number): any; - recycleAsyncId(scheduler: AsyncScheduler, id: mixed, delay?: number): any; + requestAsyncId( + scheduler: AsyncScheduler, + id?: unknown, + delay?: number, + ): any; + recycleAsyncId(scheduler: AsyncScheduler, id: unknown, delay?: number): any; execute(state: T, delay: number): any; _execute(state: T, delay: number): any; // @deprecated This is an internal implementation detail, do not use. @@ -1883,7 +1887,7 @@ declare module 'rxjs' { declare module 'rxjs/operators' { declare export function audit( - durationSelector: (value: T) => rxjs$SubscribableOrPromise, + durationSelector: (value: T) => rxjs$SubscribableOrPromise, ): rxjs$MonoTypeOperatorFunction; declare export function auditTime( @@ -1920,11 +1924,11 @@ declare module 'rxjs/operators' { declare export function bufferToggle( openings: rxjs$SubscribableOrPromise, - closingSelector: (value: O) => rxjs$SubscribableOrPromise, + closingSelector: (value: O) => rxjs$SubscribableOrPromise, ): rxjs$OperatorFunction; declare export function bufferWhen( - closingSelector: () => rxjs$Observable, + closingSelector: () => rxjs$Observable, ): rxjs$OperatorFunction; // declare export function catchError(selector: (err: any, caught: rxjs$Observable) => empty): rxjs$MonoTypeOperatorFunction; @@ -1938,15 +1942,15 @@ declare module 'rxjs/operators' { T[], >; - declare export function combineAll(): rxjs$OperatorFunction; + declare export function combineAll(): rxjs$OperatorFunction; declare export function combineAll( project: (...values: T[]) => R, ): rxjs$OperatorFunction, R>; declare export function combineAll( - project: (...values: Array) => R, - ): rxjs$OperatorFunction; + project: (...values: Array) => R, + ): rxjs$OperatorFunction; // @deprecated Deprecated in favor of static combineLatest. declare export function combineLatest( @@ -2095,7 +2099,7 @@ declare module 'rxjs/operators' { ): rxjs$MonoTypeOperatorFunction; // @deprecated Deprecated in favor of static concat. declare export function concat( - ...observables: Array | rxjs$SchedulerLike> + ...observables: Array | rxjs$SchedulerLike> ): rxjs$OperatorFunction; declare export function concatAll(): rxjs$OperatorFunction< @@ -2103,7 +2107,7 @@ declare module 'rxjs/operators' { T, >; - declare export function concatAll(): rxjs$OperatorFunction; + declare export function concatAll(): rxjs$OperatorFunction; declare export function concatMap( project: (value: T, index: number) => rxjs$ObservableInput, @@ -2117,13 +2121,13 @@ declare module 'rxjs/operators' { declare export function concatMapTo( observable: rxjs$ObservableInput, - ): rxjs$OperatorFunction; + ): rxjs$OperatorFunction; // @deprecated declare export function concatMapTo( observable: rxjs$ObservableInput, resultSelector: void, - ): rxjs$OperatorFunction; + ): rxjs$OperatorFunction; // @deprecated declare export function concatMapTo( observable: rxjs$ObservableInput, @@ -2144,7 +2148,7 @@ declare module 'rxjs/operators' { ): rxjs$OperatorFunction; declare export function debounce( - durationSelector: (value: T) => rxjs$SubscribableOrPromise, + durationSelector: (value: T) => rxjs$SubscribableOrPromise, ): rxjs$MonoTypeOperatorFunction; declare export function debounceTime( @@ -2162,8 +2166,11 @@ declare module 'rxjs/operators' { ): rxjs$MonoTypeOperatorFunction; declare export function delayWhen( - delayDurationSelector: (value: T, index: number) => rxjs$Observable, - subscriptionDelay?: rxjs$Observable, + delayDurationSelector: ( + value: T, + index: number, + ) => rxjs$Observable, + subscriptionDelay?: rxjs$Observable, ): rxjs$MonoTypeOperatorFunction; declare export function dematerialize(): rxjs$OperatorFunction< @@ -2173,7 +2180,7 @@ declare module 'rxjs/operators' { declare export function distinct( keySelector?: (value: T) => K, - flushes?: rxjs$Observable, + flushes?: rxjs$Observable, ): rxjs$MonoTypeOperatorFunction; declare export function distinctUntilChanged( @@ -2191,7 +2198,7 @@ declare module 'rxjs/operators' { declare export function distinctUntilKeyChanged>( key: K, - compare: (x: mixed, y: mixed) => boolean, + compare: (x: unknown, y: unknown) => boolean, ): rxjs$MonoTypeOperatorFunction; declare export function elementAt( @@ -2259,7 +2266,7 @@ declare module 'rxjs/operators' { T, >; - declare export function exhaust(): rxjs$OperatorFunction; + declare export function exhaust(): rxjs$OperatorFunction; declare export function exhaustMap( project: (value: T, index: number) => rxjs$ObservableInput, @@ -2334,7 +2341,7 @@ declare module 'rxjs/operators' { elementSelector: void, durationSelector: ( grouped: rxjs$GroupedObservable, - ) => rxjs$Observable, + ) => rxjs$Observable, ): rxjs$OperatorFunction>; declare export function groupBy( @@ -2342,7 +2349,7 @@ declare module 'rxjs/operators' { elementSelector?: (value: T) => R, durationSelector?: ( grouped: rxjs$GroupedObservable, - ) => rxjs$Observable, + ) => rxjs$Observable, subjectSelector?: () => rxjs$Subject, ): rxjs$OperatorFunction>; @@ -2487,7 +2494,7 @@ declare module 'rxjs/operators' { // @deprecated Deprecated in favor of static merge. declare export function merge( ...observables: Array< - rxjs$ObservableInput | rxjs$SchedulerLike | number, + rxjs$ObservableInput | rxjs$SchedulerLike | number, > ): rxjs$OperatorFunction; @@ -2517,7 +2524,7 @@ declare module 'rxjs/operators' { declare export function mergeMapTo( innerObservable: rxjs$ObservableInput, concurrent?: number, - ): rxjs$OperatorFunction; + ): rxjs$OperatorFunction; // @deprecated declare export function mergeMapTo( @@ -2600,12 +2607,12 @@ declare module 'rxjs/operators' { declare export function onErrorResumeNext( ...observables: Array< - rxjs$ObservableInput | ((...values: Array) => R), + rxjs$ObservableInput | ((...values: Array) => R), > ): rxjs$OperatorFunction; declare export function onErrorResumeNext( - array: rxjs$ObservableInput[], + array: rxjs$ObservableInput[], ): rxjs$OperatorFunction; declare export function onErrorResumeNextStatic( @@ -2640,12 +2647,12 @@ declare module 'rxjs/operators' { declare export function onErrorResumeNextStatic( ...observables: Array< - rxjs$ObservableInput | ((...values: Array) => R), + rxjs$ObservableInput | ((...values: Array) => R), > ): rxjs$Observable; declare export function onErrorResumeNextStatic( - array: rxjs$ObservableInput[], + array: rxjs$ObservableInput[], ): rxjs$Observable; declare export function pairwise(): rxjs$OperatorFunction; @@ -2722,7 +2729,7 @@ declare module 'rxjs/operators' { // @deprecated Deprecated in favor of static race. declare export function race( ...observables: Array< - rxjs$Observable | Array>, + rxjs$Observable | Array>, > ): rxjs$OperatorFunction; @@ -2745,7 +2752,7 @@ declare module 'rxjs/operators' { ): rxjs$MonoTypeOperatorFunction; declare export function repeatWhen( - notifier: (notifications: rxjs$Observable) => rxjs$Observable, + notifier: (notifications: rxjs$Observable) => rxjs$Observable, ): rxjs$MonoTypeOperatorFunction; declare export function retry( @@ -2753,7 +2760,7 @@ declare module 'rxjs/operators' { ): rxjs$MonoTypeOperatorFunction; declare export function retryWhen( - notifier: (errors: rxjs$Observable) => rxjs$Observable, + notifier: (errors: rxjs$Observable) => rxjs$Observable, ): rxjs$MonoTypeOperatorFunction; // @todo - find out why this used to return: (rxjs$Observable) => rxjs$Observable @@ -2900,7 +2907,7 @@ declare module 'rxjs/operators' { declare export function switchMapTo( observable: rxjs$ObservableInput, - ): rxjs$OperatorFunction; + ): rxjs$OperatorFunction; // @deprecated resultSelector is no longer supported. Switch to using switchMap with an inner map declare export function switchMapTo( @@ -2942,9 +2949,9 @@ declare module 'rxjs/operators' { ): rxjs$MonoTypeOperatorFunction; declare export function tap( - next?: (x: T) => mixed, - error?: (e: any) => mixed, - complete?: () => mixed, + next?: (x: T) => unknown, + error?: (e: any) => unknown, + complete?: () => unknown, ): rxjs$MonoTypeOperatorFunction; declare export function tap( @@ -2957,7 +2964,7 @@ declare module 'rxjs/operators' { } declare export function throttle( - durationSelector: (value: T) => rxjs$SubscribableOrPromise, + durationSelector: (value: T) => rxjs$SubscribableOrPromise, config?: ThrottleConfig, ): rxjs$MonoTypeOperatorFunction; @@ -2993,7 +3000,7 @@ declare module 'rxjs/operators' { declare export function toArray(): rxjs$OperatorFunction; declare export function window( - windowBoundaries: rxjs$Observable, + windowBoundaries: rxjs$Observable, ): rxjs$OperatorFunction>; declare export function windowCount( @@ -3021,11 +3028,11 @@ declare module 'rxjs/operators' { declare export function windowToggle( openings: rxjs$Observable, - closingSelector: (openValue: O) => rxjs$Observable, + closingSelector: (openValue: O) => rxjs$Observable, ): rxjs$OperatorFunction>; declare export function windowWhen( - closingSelector: () => rxjs$Observable, + closingSelector: () => rxjs$Observable, ): rxjs$OperatorFunction>; declare export function withLatestFrom( @@ -3099,16 +3106,16 @@ declare module 'rxjs/operators' { declare export function withLatestFrom( ...observables: Array< - rxjs$ObservableInput | ((...values: Array) => R), + rxjs$ObservableInput | ((...values: Array) => R), > ): rxjs$OperatorFunction; declare export function withLatestFrom( - array: rxjs$ObservableInput[], + array: rxjs$ObservableInput[], ): rxjs$OperatorFunction; declare export function withLatestFrom( - array: rxjs$ObservableInput[], + array: rxjs$ObservableInput[], project: (...values: Array) => R, ): rxjs$OperatorFunction; @@ -3215,7 +3222,7 @@ declare module 'rxjs/operators' { T[], >; - declare export function zipAll(): rxjs$OperatorFunction; + declare export function zipAll(): rxjs$OperatorFunction; declare export function zipAll( project: (...values: T[]) => R, @@ -3223,7 +3230,7 @@ declare module 'rxjs/operators' { declare export function zipAll( project: (...values: Array) => R, - ): rxjs$OperatorFunction; + ): rxjs$OperatorFunction; declare export function iif( condition: () => boolean, @@ -3234,7 +3241,7 @@ declare module 'rxjs/operators' { declare export function throwError( error: any, scheduler?: rxjs$SchedulerLike, - ): rxjs$Observable; + ): rxjs$Observable; } declare module 'rxjs/ajax' { @@ -3251,7 +3258,7 @@ declare module 'rxjs/ajax' { crossDomain?: boolean; withCredentials?: boolean; createXHR?: () => XMLHttpRequest; - progressSubscriber?: rxjs$Subscriber; + progressSubscriber?: rxjs$Subscriber; responseType?: string; } @@ -3352,7 +3359,7 @@ declare module 'rxjs/webSocket' { subMsg: () => any, unsubMsg: () => any, messageFilter: (value: T) => boolean, - ): rxjs$Observable; + ): rxjs$Observable; // @deprecated This is an internal implementation detail, do not use. _subscribe(subscriber: rxjs$Subscriber): rxjs$Subscription; unsubscribe(): void; diff --git a/flow-typed/npm/selfsigned_v2.x.x.js b/flow-typed/npm/selfsigned_v2.x.x.js index 4e41a70fe7c8..1bff6cb3e4a9 100644 --- a/flow-typed/npm/selfsigned_v2.x.x.js +++ b/flow-typed/npm/selfsigned_v2.x.x.js @@ -30,7 +30,7 @@ declare module 'selfsigned' { /** * additional extensions for the certificate */ - extensions?: mixed[]; + extensions?: unknown[]; /** * The signature algorithm sha256 or sha1 * @default "sha1" @@ -74,7 +74,7 @@ declare module 'selfsigned' { attrs?: pki$CertificateField[], opts?: SelfsignedOptions, /** Optional callback, if not provided the generation is synchronous */ - done?: (err: void | Error, result: GenerateResult) => mixed, + done?: (err: void | Error, result: GenerateResult) => unknown, ): void; // definitions from node-forge's `pki` and `asn1` namespaces @@ -94,7 +94,7 @@ declare module 'selfsigned' { declare interface pki$CertificateField extends pki$CertificateFieldOptions { valueConstructed?: boolean | void; valueTagClass?: asn1$Class | void; - value?: mixed[] | string | void; - extensions?: mixed[] | void; + value?: unknown[] | string | void; + extensions?: unknown[] | void; } } diff --git a/flow-typed/npm/signedsource_v1.x.x.js b/flow-typed/npm/signedsource_v1.x.x.js index d82725250c11..6adbdb25d0c5 100644 --- a/flow-typed/npm/signedsource_v1.x.x.js +++ b/flow-typed/npm/signedsource_v1.x.x.js @@ -12,7 +12,7 @@ declare module 'signedsource' { isSigned(data: string): boolean, signFile(data: string): string, verifySignature(data: string): boolean, - [key: string]: mixed, + [key: string]: unknown, }; declare module.exports: SignedSource; diff --git a/flow-typed/npm/tinyglobby_v0.2.x.js b/flow-typed/npm/tinyglobby_v0.2.x.js new file mode 100644 index 000000000000..6301f4bff5e5 --- /dev/null +++ b/flow-typed/npm/tinyglobby_v0.2.x.js @@ -0,0 +1,34 @@ +declare module 'tinyglobby' { + import typeof FSModule from 'fs'; + + declare type FileSystemAdapter = Partial; + + declare type GlobOptions = { + absolute?: boolean, + braceExpansion?: boolean, + caseSensitiveMatch?: boolean, + cwd?: string | URL, + debug?: boolean, + deep?: number, + dot?: boolean, + expandDirectories?: boolean, + extglob?: boolean, + followSymbolicLinks?: boolean, + fs?: FileSystemAdapter, + globstar?: boolean, + ignore?: string | $ReadOnlyArray, + onlyDirectories?: boolean, + onlyFiles?: boolean, + signal?: AbortSignal, + }; + + declare type GlobModule = { + convertPathToPattern(path: string): string; + escapePath(path: string): string; + isDynamicPattern(pattern: string, options?: { caseSensitiveMatch: boolean }): boolean; + glob(patterns: string | $ReadOnlyArray, options?: GlobOptions): Promise; + globSync(patterns: string | $ReadOnlyArray, options?: GlobOptions): string[]; + }; + + declare module.exports: GlobModule; +} diff --git a/flow-typed/npm/ws_v7.x.x.js b/flow-typed/npm/ws_v7.x.x.js index 151be0d2699e..184226373e00 100644 --- a/flow-typed/npm/ws_v7.x.x.js +++ b/flow-typed/npm/ws_v7.x.x.js @@ -31,7 +31,7 @@ declare class ws$WebSocketServer extends events$EventEmitter { options: { backlog?: number, clientTracking?: boolean, - handleProtocols?: () => mixed, + handleProtocols?: () => unknown, host?: string, maxPayload?: number, noServer?: boolean, @@ -39,28 +39,28 @@ declare class ws$WebSocketServer extends events$EventEmitter { perMessageDeflate?: boolean | ws$PerMessageDeflateOptions, port?: number, server?: http$Server | https$Server, - verifyClient?: () => mixed, + verifyClient?: () => unknown, }, - callback?: () => mixed, + callback?: () => unknown, ): this; /** * Emitted when the server closes. */ - on(event: 'close', () => mixed): this; + on(event: 'close', () => unknown): this; /** * Emitted when the handshake is complete. */ on( event: 'connection', - (socket: ws$WebSocket, request: http$IncomingMessage<>) => mixed, + (socket: ws$WebSocket, request: http$IncomingMessage<>) => unknown, ): this; /** * Emitted when an error occurs on the underlying server. */ - on(event: 'error', (error: Error) => mixed): this; + on(event: 'error', (error: Error) => unknown): this; /** * Emitted before the response headers are written to the socket as part of @@ -68,13 +68,13 @@ declare class ws$WebSocketServer extends events$EventEmitter { */ on( event: 'headers', - (headers: Array, request: http$IncomingMessage<>) => mixed, + (headers: Array, request: http$IncomingMessage<>) => unknown, ): this; /** * Emitted when the underlying server has been bound. */ - on(event: 'listening', () => mixed): this; + on(event: 'listening', () => unknown): this; /** * Returns the bound address, the address family name, and port of the server @@ -93,7 +93,7 @@ declare class ws$WebSocketServer extends events$EventEmitter { /** * Close the server. */ - close(callback?: () => mixed): void; + close(callback?: () => unknown): void; /** * Handle a HTTP Upgrade request. @@ -102,7 +102,7 @@ declare class ws$WebSocketServer extends events$EventEmitter { request: http$IncomingMessage<>, socket: net$Socket, head: Buffer, - callback: (?ws$WebSocket) => mixed, + callback: (?ws$WebSocket) => unknown, ): void; /** @@ -122,24 +122,27 @@ declare type ws$WebSocketOptions = { ...requestOptions, agent?: boolean | http$Agent<> | http$Agent, createConnection?: - | ((options: net$connectOptions, callback?: () => mixed) => net$Socket) - | ((options: tls$connectOptions, callback?: () => mixed) => tls$TLSSocket), + | ((options: net$connectOptions, callback?: () => unknown) => net$Socket) + | (( + options: tls$connectOptions, + callback?: () => unknown, + ) => tls$TLSSocket), rejectUnauthorized?: boolean, }; -declare type ws$CloseListener = (code: number, reason: string) => mixed; -declare type ws$ErrorListener = (error: Error) => mixed; +declare type ws$CloseListener = (code: number, reason: string) => unknown; +declare type ws$ErrorListener = (error: Error) => unknown; declare type ws$MessageListener = ( data: string | Buffer | ArrayBuffer | Array, -) => mixed; -declare type ws$OpenListener = () => mixed; -declare type ws$PingListener = (Buffer) => mixed; -declare type ws$PongListener = (Buffer) => mixed; +) => unknown; +declare type ws$OpenListener = () => unknown; +declare type ws$PingListener = (Buffer) => unknown; +declare type ws$PongListener = (Buffer) => unknown; declare type ws$UnexpectedResponseListener = ( request: http$ClientRequest<>, response: http$IncomingMessage<>, -) => mixed; -declare type ws$UpgradeListener = (response: http$IncomingMessage<>) => mixed; +) => unknown; +declare type ws$UpgradeListener = (response: http$IncomingMessage<>) => unknown; /* $FlowFixMe[incompatible-type] - Found with Flow v0.143.1 upgrade * "on" definition failing with string is incompatible with string literal */ @@ -277,16 +280,16 @@ declare class ws$WebSocket extends events$EventEmitter { /** * Send a ping. */ - ping(data?: any, mask?: boolean, callback?: () => mixed): void; - ping(data: any, callback: () => mixed): void; - ping(callback: () => mixed): void; + ping(data?: any, mask?: boolean, callback?: () => unknown): void; + ping(data: any, callback: () => unknown): void; + ping(callback: () => unknown): void; /** * Send a pong. */ - pong(data?: any, mask?: boolean, callback?: () => mixed): void; - pong(data: any, callback: () => mixed): void; - pong(callback: () => mixed): void; + pong(data?: any, mask?: boolean, callback?: () => unknown): void; + pong(data: any, callback: () => unknown): void; + pong(callback: () => unknown): void; /** * The subprotocol selected by the server. @@ -324,9 +327,9 @@ declare class ws$WebSocket extends events$EventEmitter { mask?: boolean, fin?: boolean, }, - callback?: () => mixed, + callback?: () => unknown, ): void; - send(data: any, callback: () => mixed): void; + send(data: any, callback: () => unknown): void; /** * Forcibly close the connection. diff --git a/gradle.properties b/gradle.properties index 0a91ef0f755c..f494dd4fe8c1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,9 +16,14 @@ android.newDsl=false # ./gradlew -PreactNativeArchitectures=x86_64 reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 +# Controls whether to use Hermes from stable builds. This will force hermes version +# set in the sdks/hermes-engine/version.properties file to be used. This has a higher +# priority than react.internal.useHermesNightly. +react.internal.useHermesStable=false + # Controls whether to use Hermes from nightly builds. This will speed up builds # but should NOT be turned on for CI or release builds. -react.internal.useHermesNightly=false +react.internal.useHermesNightly=true # Controls whether to use Hermes 1.0. Clean and rebuild when changing. hermesV1Enabled=false diff --git a/package.json b/package.json index 2ef63fa2eb98..4427634f0141 100644 --- a/package.json +++ b/package.json @@ -103,12 +103,12 @@ "eslint-plugin-jsx-a11y": "^6.6.0", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-native": "^4.0.0", + "eslint-plugin-react-native": "^5.0.0", "eslint-plugin-redundant-undefined": "^0.4.0", "eslint-plugin-relay": "^1.8.3", "fb-dotslash": "0.5.8", "flow-api-translator": "0.32.0", - "flow-bin": "^0.289.0", + "flow-bin": "^0.295.0", "glob": "^7.1.1", "hermes-eslint": "0.32.0", "hermes-estree": "0.32.0", @@ -137,14 +137,15 @@ "nx": "21.4.1", "prettier": "3.6.2", "prettier-plugin-hermes-parser": "0.32.0", - "react": "19.2.0", - "react-test-renderer": "19.2.0", + "react": "19.2.3", + "react-test-renderer": "19.2.3", "rimraf": "^3.0.2", "shelljs": "^0.8.5", "signedsource": "^2.0.0", "supports-color": "^7.1.0", "temp-dir": "^2.0.0", "tinybench": "^4.1.0", + "tinyglobby": "^0.2.15", "typescript": "5.8.3", "ws": "^7.5.10", "yargs": "^17.6.2", @@ -162,7 +163,7 @@ "minimatch@npm:9.0.3": "npm:9.0.9", "minimatch@npm:>=9.0.0 <10.0.0": "npm:9.0.9", "on-headers": "1.1.0", - "react-is": "19.2.0", + "react-is": "19.2.3", "readable-stream": "^4.0.0 <4.4.2", "shell-quote": "^1.7.3", "tough-cookie": "^4.1.3" diff --git a/packages/assets/package.json b/packages/assets/package.json index bf3e6ede79f7..0f2a3a200703 100644 --- a/packages/assets/package.json +++ b/packages/assets/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/assets-registry", - "version": "0.83.0-main", + "version": "0.84.0-main", "private": true, "description": "Asset support code for React Native.", "license": "MIT", @@ -18,7 +18,7 @@ ], "bugs": "https://github.com/facebook/react-native/issues", "engines": { - "node": ">= 20.19.4" + "node": ">= 22.11.0" }, "files": [ "path-support.js", diff --git a/packages/assets/path-support.js b/packages/assets/path-support.js index bdf2acc3491b..c73a2e2bbf2e 100644 --- a/packages/assets/path-support.js +++ b/packages/assets/path-support.js @@ -43,6 +43,8 @@ function getAndroidAssetSuffix(scale /*: number */) /*: string */ { // See https://developer.android.com/guide/topics/resources/drawable-resource.html const drawableFileTypes = new Set([ 'gif', + 'heic', + 'heif', 'jpeg', 'jpg', 'ktx', diff --git a/packages/babel-plugin-codegen/package.json b/packages/babel-plugin-codegen/package.json index dc78853f779a..65d670b61e13 100644 --- a/packages/babel-plugin-codegen/package.json +++ b/packages/babel-plugin-codegen/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/babel-plugin-codegen", - "version": "0.83.0-main", + "version": "0.84.0-main", "private": true, "description": "Babel plugin to generate native module and view manager code for React Native.", "license": "MIT", @@ -20,7 +20,7 @@ ], "bugs": "https://github.com/facebook/react-native/issues", "engines": { - "node": ">= 20.19.4" + "node": ">= 22.11.0" }, "files": [ "index.js" diff --git a/packages/community-cli-plugin/package.json b/packages/community-cli-plugin/package.json index 62cab8228282..bbe55a190fc8 100644 --- a/packages/community-cli-plugin/package.json +++ b/packages/community-cli-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/community-cli-plugin", - "version": "0.83.0-main", + "version": "0.84.0-main", "private": true, "description": "Core CLI commands for React Native", "keywords": [ @@ -24,6 +24,7 @@ ], "dependencies": { "@react-native/dev-middleware": "workspace:*", + "chalk": "^4.0.0", "debug": "^4.4.0", "invariant": "^2.2.4", "metro": "^0.83.3", @@ -47,6 +48,15 @@ } }, "engines": { - "node": ">= 20.19.4" + "node": ">= 22.11.0" + }, + "publishConfig": { + "exports": { + ".": "./dist/index.js", + "./package.json": "./package.json" + } + }, + "scripts": { + "prepack": "node ../../scripts/build/prepack.js" } } diff --git a/packages/community-cli-plugin/src/commands/bundle/assetPathUtils.js b/packages/community-cli-plugin/src/commands/bundle/assetPathUtils.js index 6f1aaf532d97..ced3d4b92a89 100644 --- a/packages/community-cli-plugin/src/commands/bundle/assetPathUtils.js +++ b/packages/community-cli-plugin/src/commands/bundle/assetPathUtils.js @@ -41,6 +41,8 @@ function getAndroidAssetSuffix(scale: number): string { // See https://developer.android.com/guide/topics/resources/drawable-resource.html const drawableFileTypes: Set = new Set([ 'gif', + 'heic', + 'heif', 'jpeg', 'jpg', 'png', diff --git a/packages/community-cli-plugin/src/commands/start/OpenDebuggerKeyboardHandler.js b/packages/community-cli-plugin/src/commands/start/OpenDebuggerKeyboardHandler.js index bee5295cf1b1..4baaaf942fe9 100644 --- a/packages/community-cli-plugin/src/commands/start/OpenDebuggerKeyboardHandler.js +++ b/packages/community-cli-plugin/src/commands/start/OpenDebuggerKeyboardHandler.js @@ -94,22 +94,26 @@ export default class OpenDebuggerKeyboardHandler { const target = targets[0]; void this.#tryOpenDebuggerForTarget(target); } else { - this.#targetsShownForSelection = targets; - if (targets.length > 9) { this.#log( 'warn', '10 or more debug targets available, showing the first 9.', ); } + const targetsShown = targets.slice(0, 9); + const hasDuplicateTitles = + new Set(targetsShown.map(target => target.title)).size < + targetsShown.length; + this.#targetsShownForSelection = targetsShown; this.#setTerminalMenu( - `Multiple debug targets available, please select:\n ${targets - .slice(0, 9) - .map( - ({title}, i) => - `${styleText(['white', 'inverse'], ` ${i + 1} `)} - "${title}"`, - ) + `Multiple debug targets available, please select:\n ${targetsShown + .map(({title, description}, i) => { + const descriptionSuffix = hasDuplicateTitles + ? ` (${description})` + : ''; + return `${styleText(['white', 'inverse'], ` ${i + 1} `)} - "${title}${descriptionSuffix}"`; + }) .join('\n ')}`, ); } @@ -149,7 +153,7 @@ export default class OpenDebuggerKeyboardHandler { this.#targetsShownForSelection = null; } - #log(level: 'info' | 'warn' | 'error', ...data: Array): void { + #log(level: 'info' | 'warn' | 'error', ...data: Array): void { this.#reporter.update({ type: 'unstable_server_log', level, diff --git a/packages/community-cli-plugin/src/commands/start/attachKeyHandlers.js b/packages/community-cli-plugin/src/commands/start/attachKeyHandlers.js index 76f83acf94ca..24cf6f9a56e2 100644 --- a/packages/community-cli-plugin/src/commands/start/attachKeyHandlers.js +++ b/packages/community-cli-plugin/src/commands/start/attachKeyHandlers.js @@ -46,7 +46,7 @@ export default function attachKeyHandlers({ }: { devServerUrl: string, messageSocket: $ReadOnly<{ - broadcast: (type: string, params?: Record | null) => void, + broadcast: (type: string, params?: Record | null) => void, ... }>, reporter: TerminalReporter, diff --git a/packages/community-cli-plugin/src/commands/start/middleware.js b/packages/community-cli-plugin/src/commands/start/middleware.js index 919cc834ecc6..81007f6ab412 100644 --- a/packages/community-cli-plugin/src/commands/start/middleware.js +++ b/packages/community-cli-plugin/src/commands/start/middleware.js @@ -22,7 +22,10 @@ type MiddlewareReturn = { }, messageSocketEndpoint: { server: ws$WebSocketServer, - broadcast: (method: string, params?: Record | null) => void, + broadcast: ( + method: string, + params?: Record | null, + ) => void, }, eventsSocketEndpoint: { server: ws$WebSocketServer, @@ -54,7 +57,7 @@ const communityMiddlewareFallback = { server: unusedStubWSServer, broadcast: ( method: string, - _params?: Record | null, + _params?: Record | null, ): void => {}, }, eventsSocketEndpoint: { diff --git a/packages/community-cli-plugin/src/utils/createDevMiddlewareLogger.js b/packages/community-cli-plugin/src/utils/createDevMiddlewareLogger.js index 006fed8187fc..6a8e5e222725 100644 --- a/packages/community-cli-plugin/src/utils/createDevMiddlewareLogger.js +++ b/packages/community-cli-plugin/src/utils/createDevMiddlewareLogger.js @@ -34,7 +34,7 @@ function makeLogger( reporter: TerminalReporter, level: 'info' | 'warn' | 'error', ): LoggerFn { - return (...data: Array) => + return (...data: Array) => reporter.update({ type: 'unstable_server_log', level, diff --git a/packages/core-cli-utils/package.json b/packages/core-cli-utils/package.json index 62cf76ea23b2..93636a615784 100644 --- a/packages/core-cli-utils/package.json +++ b/packages/core-cli-utils/package.json @@ -1,6 +1,6 @@ { "name": "@react-native/core-cli-utils", - "version": "0.83.0-main", + "version": "0.84.0-main", "private": true, "description": "React Native CLI library for Frameworks to build on", "license": "MIT", @@ -22,9 +22,20 @@ ], "bugs": "https://github.com/facebook/react-native/issues", "engines": { - "node": ">= 20.19.4" + "node": ">= 22.11.0" }, "files": [ "dist" - ] + ], + "publishConfig": { + "main": "./dist/index.js", + "exports": { + ".": "./dist/index.js", + "./package.json": "./package.json", + "./version.js": "./dist/public/version.js" + } + }, + "scripts": { + "prepack": "node ../../scripts/build/prepack.js" + } } diff --git a/packages/core-cli-utils/src/private/types.js b/packages/core-cli-utils/src/private/types.js index a7740c7ef149..2c2987e1d306 100644 --- a/packages/core-cli-utils/src/private/types.js +++ b/packages/core-cli-utils/src/private/types.js @@ -8,7 +8,7 @@ * @format */ -export type Task = { +export type Task = { order: number, label: string, action: () => R, diff --git a/packages/debugger-frontend/BUILD_INFO b/packages/debugger-frontend/BUILD_INFO index b846dec3d961..77ccb86aa35c 100644 --- a/packages/debugger-frontend/BUILD_INFO +++ b/packages/debugger-frontend/BUILD_INFO @@ -1,5 +1,5 @@ -@generated SignedSource<<4bb67766e15e25a481c4c38873260a7a>> -Git revision: 7aa57d13e50ce9d74a91c9315c9b0ded00fbc19f +@generated SignedSource<> +Git revision: 1f006e22bfad4d66df4786d6d775c15101c66e5d Built with --nohooks: false Is local checkout: false Remote URL: https://github.com/facebook/react-native-devtools-frontend diff --git a/packages/debugger-frontend/dist/third-party/front_end/Images/Images.js b/packages/debugger-frontend/dist/third-party/front_end/Images/Images.js index 604a36749f17..8163f3813b42 100644 --- a/packages/debugger-frontend/dist/third-party/front_end/Images/Images.js +++ b/packages/debugger-frontend/dist/third-party/front_end/Images/Images.js @@ -20,6 +20,7 @@ style.setProperty('--image-file-nodeIcon', 'url(\"' + new URL('./nodeIcon.avif', style.setProperty('--image-file-popoverArrows', 'url(\"' + new URL('./popoverArrows.png', import.meta.url).toString() + '\")'); style.setProperty('--image-file-react_native/learn-debugging-basics', 'url(\"' + new URL('./react_native/learn-debugging-basics.jpg', import.meta.url).toString() + '\")'); style.setProperty('--image-file-react_native/learn-native-debugging', 'url(\"' + new URL('./react_native/learn-native-debugging.jpg', import.meta.url).toString() + '\")'); +style.setProperty('--image-file-react_native/whats-new-083', 'url(\"' + new URL('./react_native/whats-new-083.jpg', import.meta.url).toString() + '\")'); style.setProperty('--image-file-react_native/learn-react-native-devtools', 'url(\"' + new URL('./react_native/learn-react-native-devtools.jpg', import.meta.url).toString() + '\")'); style.setProperty('--image-file-react_native/welcomeIcon', 'url(\"' + new URL('./react_native/welcomeIcon.png', import.meta.url).toString() + '\")'); style.setProperty('--image-file-toolbarResizerVertical', 'url(\"' + new URL('./toolbarResizerVertical.png', import.meta.url).toString() + '\")'); diff --git a/packages/debugger-frontend/dist/third-party/front_end/Images/react_native/whats-new-083.jpg b/packages/debugger-frontend/dist/third-party/front_end/Images/react_native/whats-new-083.jpg new file mode 100644 index 000000000000..969df54a3038 Binary files /dev/null and b/packages/debugger-frontend/dist/third-party/front_end/Images/react_native/whats-new-083.jpg differ diff --git a/packages/debugger-frontend/dist/third-party/front_end/core/host/host.js b/packages/debugger-frontend/dist/third-party/front_end/core/host/host.js index 2bd6d58f614e..98fae274f241 100644 --- a/packages/debugger-frontend/dist/third-party/front_end/core/host/host.js +++ b/packages/debugger-frontend/dist/third-party/front_end/core/host/host.js @@ -1 +1 @@ -import*as e from"../common/common.js";import*as r from"../root/root.js";import*as t from"../i18n/i18n.js";import*as n from"../platform/platform.js";var o;!function(e){e.AppendedToURL="appendedToURL",e.CanceledSaveURL="canceledSaveURL",e.ColorThemeChanged="colorThemeChanged",e.ContextMenuCleared="contextMenuCleared",e.ContextMenuItemSelected="contextMenuItemSelected",e.DeviceCountUpdated="deviceCountUpdated",e.DevicesDiscoveryConfigChanged="devicesDiscoveryConfigChanged",e.DevicesPortForwardingStatusChanged="devicesPortForwardingStatusChanged",e.DevicesUpdated="devicesUpdated",e.DispatchMessage="dispatchMessage",e.DispatchMessageChunk="dispatchMessageChunk",e.EnterInspectElementMode="enterInspectElementMode",e.EyeDropperPickedColor="eyeDropperPickedColor",e.FileSystemsLoaded="fileSystemsLoaded",e.FileSystemRemoved="fileSystemRemoved",e.FileSystemAdded="fileSystemAdded",e.FileSystemFilesChangedAddedRemoved="FileSystemFilesChangedAddedRemoved",e.IndexingTotalWorkCalculated="indexingTotalWorkCalculated",e.IndexingWorked="indexingWorked",e.IndexingDone="indexingDone",e.KeyEventUnhandled="keyEventUnhandled",e.ReloadInspectedPage="reloadInspectedPage",e.RevealSourceLine="revealSourceLine",e.SavedURL="savedURL",e.SearchCompleted="searchCompleted",e.SetInspectedTabId="setInspectedTabId",e.SetUseSoftMenu="setUseSoftMenu",e.ShowPanel="showPanel"}(o||(o={}));const s=[[o.AppendedToURL,"appendedToURL",["url"]],[o.CanceledSaveURL,"canceledSaveURL",["url"]],[o.ColorThemeChanged,"colorThemeChanged",[]],[o.ContextMenuCleared,"contextMenuCleared",[]],[o.ContextMenuItemSelected,"contextMenuItemSelected",["id"]],[o.DeviceCountUpdated,"deviceCountUpdated",["count"]],[o.DevicesDiscoveryConfigChanged,"devicesDiscoveryConfigChanged",["config"]],[o.DevicesPortForwardingStatusChanged,"devicesPortForwardingStatusChanged",["status"]],[o.DevicesUpdated,"devicesUpdated",["devices"]],[o.DispatchMessage,"dispatchMessage",["messageObject"]],[o.DispatchMessageChunk,"dispatchMessageChunk",["messageChunk","messageSize"]],[o.EnterInspectElementMode,"enterInspectElementMode",[]],[o.EyeDropperPickedColor,"eyeDropperPickedColor",["color"]],[o.FileSystemsLoaded,"fileSystemsLoaded",["fileSystems"]],[o.FileSystemRemoved,"fileSystemRemoved",["fileSystemPath"]],[o.FileSystemAdded,"fileSystemAdded",["errorMessage","fileSystem"]],[o.FileSystemFilesChangedAddedRemoved,"fileSystemFilesChangedAddedRemoved",["changed","added","removed"]],[o.IndexingTotalWorkCalculated,"indexingTotalWorkCalculated",["requestId","fileSystemPath","totalWork"]],[o.IndexingWorked,"indexingWorked",["requestId","fileSystemPath","worked"]],[o.IndexingDone,"indexingDone",["requestId","fileSystemPath"]],[o.KeyEventUnhandled,"keyEventUnhandled",["event"]],[o.ReloadInspectedPage,"reloadInspectedPage",["hard"]],[o.RevealSourceLine,"revealSourceLine",["url","lineNumber","columnNumber"]],[o.SavedURL,"savedURL",["url","fileSystemPath"]],[o.SearchCompleted,"searchCompleted",["requestId","fileSystemPath","files"]],[o.SetInspectedTabId,"setInspectedTabId",["tabId"]],[o.SetUseSoftMenu,"setUseSoftMenu",["useSoftMenu"]],[o.ShowPanel,"showPanel",["panelName"]]];var i=Object.freeze({__proto__:null,EventDescriptors:s,get Events(){return o}});const a={systemError:"System error",connectionError:"Connection error",certificateError:"Certificate error",httpError:"HTTP error",cacheError:"Cache error",signedExchangeError:"Signed Exchange error",ftpError:"FTP error",certificateManagerError:"Certificate manager error",dnsResolverError:"DNS resolver error",unknownError:"Unknown error",httpErrorStatusCodeSS:"HTTP error: status code {PH1}, {PH2}",invalidUrl:"Invalid URL",decodingDataUrlFailed:"Decoding Data URL failed"},d=t.i18n.registerUIStrings("core/host/ResourceLoader.ts",a),c=t.i18n.getLocalizedString.bind(void 0,d);let l=0;const u={},m=function(e){return u[++l]=e,l},g=function(e){u[e].close(),delete u[e]},p=function(e,r){u[e].write(r)};function h(e,r,t){if(void 0===e||void 0===t)return null;if(0!==e){if(function(e){return e<=-300&&e>-400}(e))return c(a.httpErrorStatusCodeSS,{PH1:String(r),PH2:t});const n=function(e){return c(e>-100?a.systemError:e>-200?a.connectionError:e>-300?a.certificateError:e>-400?a.httpError:e>-500?a.cacheError:e>-600?a.signedExchangeError:e>-700?a.ftpError:e>-800?a.certificateManagerError:e>-900?a.dnsResolverError:a.unknownError)}(e);return`${n}: ${t}`}return null}const S=function(r,t,n,o,s){const i=m(n);if(new e.ParsedURL.ParsedURL(r).isDataURL())return void(e=>new Promise(((r,t)=>{const n=new XMLHttpRequest;n.withCredentials=!1,n.open("GET",e,!0),n.onreadystatechange=function(){if(n.readyState===XMLHttpRequest.DONE){if(200!==n.status)return n.onreadystatechange=null,void t(new Error(String(n.status)));n.onreadystatechange=null,r(n.responseText)}},n.send(null)})))(r).then((function(e){p(i,e),l({statusCode:200})})).catch((function(e){l({statusCode:404,messageOverride:c(a.decodingDataUrlFailed)})}));if(!s&&function(e){try{const r=new URL(e);return"file:"===r.protocol&&""!==r.host}catch{return!1}}(r))return void(o&&o(!1,{},{statusCode:400,netError:-20,netErrorName:"net::BLOCKED_BY_CLIENT",message:"Loading from a remote file path is prohibited for security reasons."}));const d=[];if(t)for(const e in t)d.push(e+": "+t[e]);function l(e){if(o){const{success:r,description:t}=function(e){const{statusCode:r,netError:t,netErrorName:n,urlValid:o,messageOverride:s}=e;let i="";const d=r>=200&&r<300;if("string"==typeof s)i=s;else if(!d)if(void 0===t)i=c(!1===o?a.invalidUrl:a.unknownError);else{const e=h(t,r,n);e&&(i=e)}return console.assert(d===(0===i.length)),{success:d,description:{statusCode:r,netError:t,netErrorName:n,urlValid:o,message:i}}}(e);o(r,e.headers||{},t)}g(i)}f.loadNetworkResource(r,d.join("\r\n"),i,l)};var v=Object.freeze({__proto__:null,ResourceLoader:{},bindOutputStream:m,discardOutputStream:g,load:function(r,t,n,o){const s=new e.StringOutputStream.StringOutputStream;S(r,t,s,(function(e,r,t){n(e,r,s.data(),t)}),o)},loadAsStream:S,netErrorToMessage:h,streamWrite:p});const C={devtoolsS:"DevTools - {PH1}"},I=t.i18n.registerUIStrings("core/host/InspectorFrontendHost.ts",C),w=t.i18n.getLocalizedString.bind(void 0,I),k="/overrides";class E{#e=new Map;events;#r=null;recordedCountHistograms=[];recordedEnumeratedHistograms=[];recordedPerformanceHistograms=[];constructor(){function e(e){!("mac"===this.platform()?e.metaKey:e.ctrlKey)||"+"!==e.key&&"-"!==e.key||e.stopPropagation()}"undefined"!=typeof document&&document.addEventListener("keydown",(r=>{e.call(this,r)}),!0)}platform(){const e=navigator.userAgent;return e.includes("Windows NT")?"windows":e.includes("Mac OS X")?"mac":"linux"}loadCompleted(){}bringToFront(){}closeWindow(){}setIsDocked(e,r){window.setTimeout(r,0)}showSurvey(e,r){window.setTimeout((()=>r({surveyShown:!1})),0)}canShowSurvey(e,r){window.setTimeout((()=>r({canShowSurvey:!1})),0)}setInspectedPageBounds(e){}inspectElementCompleted(){}setInjectedScriptForOrigin(e,r){}inspectedURLChanged(e){document.title=w(C.devtoolsS,{PH1:e.replace(/^https?:\/\//,"")})}copyText(e){null!=e&&navigator.clipboard.writeText(e)}openInNewTab(r){e.ParsedURL.schemeIs(r,"javascript:")||window.open(r,"_blank")}openSearchResultsInNewTab(r){e.Console.Console.instance().error("Search is not enabled in hosted mode. Please inspect using chrome://inspect")}showItemInFolder(r){e.Console.Console.instance().error("Show item in folder is not enabled in hosted mode. Please inspect using chrome://inspect")}save(e,r,t,n){let s=this.#e.get(e);s||(s=[],this.#e.set(e,s)),s.push(r),this.events.dispatchEventToListeners(o.SavedURL,{url:e,fileSystemPath:e})}append(e,r){const t=this.#e.get(e);t&&(t.push(r),this.events.dispatchEventToListeners(o.AppendedToURL,e))}close(e){const r=this.#e.get(e)||[];this.#e.delete(e);let t="";if(e)try{const r=n.StringUtilities.trimURL(e);t=n.StringUtilities.removeURLFragment(r)}catch(r){t=e}const o=document.createElement("a");o.download=t;const s=new Blob([r.join("")],{type:"text/plain"}),i=URL.createObjectURL(s);o.href=i,o.click(),URL.revokeObjectURL(i)}sendMessageToBackend(e){}recordCountHistogram(e,r,t,n,o){this.recordedCountHistograms.length>=100&&this.recordedCountHistograms.shift(),this.recordedCountHistograms.push({histogramName:e,sample:r,min:t,exclusiveMax:n,bucketSize:o})}recordEnumeratedHistogram(e,r,t){this.recordedEnumeratedHistograms.length>=100&&this.recordedEnumeratedHistograms.shift(),this.recordedEnumeratedHistograms.push({actionName:e,actionCode:r})}recordPerformanceHistogram(e,r){this.recordedPerformanceHistograms.length>=100&&this.recordedPerformanceHistograms.shift(),this.recordedPerformanceHistograms.push({histogramName:e,duration:r})}recordUserMetricsAction(e){}connectAutomaticFileSystem(e,r,t,n){queueMicrotask((()=>n({success:!1})))}disconnectAutomaticFileSystem(e){}requestFileSystems(){this.events.dispatchEventToListeners(o.FileSystemsLoaded,[])}addFileSystem(e){window.webkitRequestFileSystem(window.TEMPORARY,1048576,(e=>{this.#r=e;const r={fileSystemName:"sandboxedRequestedFileSystem",fileSystemPath:k,rootURL:"filesystem:devtools://devtools/isolated/",type:"overrides"};this.events.dispatchEventToListeners(o.FileSystemAdded,{fileSystem:r})}))}removeFileSystem(e){const r=e=>{e.forEach((e=>{e.isDirectory?e.removeRecursively((()=>{})):e.isFile&&e.remove((()=>{}))}))};this.#r&&this.#r.root.createReader().readEntries(r),this.#r=null,this.events.dispatchEventToListeners(o.FileSystemRemoved,k)}isolatedFileSystem(e,r){return this.#r}loadNetworkResource(e,r,t,n){fetch(e).then((async e=>{const r=await e.arrayBuffer();let t=r;if(function(e){const r=new Uint8Array(e);return!(!r||r.length<3)&&31===r[0]&&139===r[1]&&8===r[2]}(r)){const e=new DecompressionStream("gzip"),n=e.writable.getWriter();n.write(r),n.close(),t=e.readable}return await new Response(t).text()})).then((function(e){p(t,e),n({statusCode:200,headers:void 0,messageOverride:void 0,netError:void 0,netErrorName:void 0,urlValid:void 0})})).catch((function(){n({statusCode:404,headers:void 0,messageOverride:void 0,netError:void 0,netErrorName:void 0,urlValid:void 0})}))}registerPreference(e,r){}getPreferences(e){const r={};for(const e in window.localStorage)r[e]=window.localStorage[e];e(r)}getPreference(e,r){r(window.localStorage[e])}setPreference(e,r){window.localStorage[e]=r}removePreference(e){delete window.localStorage[e]}clearPreferences(){window.localStorage.clear()}getSyncInformation(e){if("getSyncInformationForTesting"in globalThis)return e(globalThis.getSyncInformationForTesting());e({isSyncActive:!1,arePreferencesSynced:!1})}getHostConfig(e){const r={devToolsVeLogging:{enabled:!0},thirdPartyCookieControls:{thirdPartyCookieMetadataEnabled:!0,thirdPartyCookieHeuristicsEnabled:!0,managedBlockThirdPartyCookies:"Unset"}};if("hostConfigForTesting"in globalThis){const{hostConfigForTesting:e}=globalThis;for(const t of Object.keys(e)){const n=t=>{"object"==typeof r[t]&&"object"==typeof e[t]?r[t]={...r[t],...e[t]}:r[t]=e[t]??r[t]};n(t)}}e(r)}upgradeDraggedFileSystemPermissions(e){}indexPath(e,r,t){}stopIndexing(e){}searchInPath(e,r,t){}zoomFactor(){return 1}zoomIn(){}zoomOut(){}resetZoom(){}setWhitelistedShortcuts(e){}setEyeDropperActive(e){}showCertificateViewer(e){}reattach(e){e()}readyForTest(){}connectionReady(){}setOpenNewWindowForPopups(e){}setDevicesDiscoveryConfig(e){}setDevicesUpdatesEnabled(e){}openRemotePage(e,r){}openNodeFrontend(){}showContextMenuAtPoint(e,r,t,n){throw new Error("Soft context menu should be used")}isHostedMode(){return!0}setAddExtensionCallback(e){}async initialTargetId(){return null}doAidaConversation(e,r,t){t({error:"Not implemented"})}registerAidaClientEvent(e,r){r({error:"Not implemented"})}recordImpression(e){}recordResize(e){}recordClick(e){}recordHover(e){}recordDrag(e){}recordChange(e){}recordKeyDown(e){}recordSettingAccess(e){}}let f=globalThis.InspectorFrontendHost;class y{constructor(){for(const e of s)this[e[1]]=this.dispatch.bind(this,e[0],e[2],e[3])}dispatch(e,r,t,...n){if(r.length<2){try{f.events.dispatchEventToListeners(e,n[0])}catch(e){console.error(e+" "+e.stack)}return}const o={};for(let e=0;e=0&&(o.options??={},o.options.temperature=i),s&&(o.options??={},o.options.model_id=s),o}static async checkAccessPreconditions(){if(!navigator.onLine)return"no-internet";const e=await new Promise((e=>f.getSyncInformation((r=>e(r)))));return e.accountEmail?e.isSyncPaused?"sync-is-paused":"available":"no-account-email"}async*fetch(e,r){if(!f.doAidaConversation)throw new Error("doAidaConversation is not available");const t=(()=>{let{promise:e,resolve:t,reject:n}=Promise.withResolvers();return r?.signal?.addEventListener("abort",(()=>{n(new O)}),{once:!0}),{write:async r=>{t(r),({promise:e,resolve:t,reject:n}=Promise.withResolvers())},close:async()=>{t(null)},read:()=>e,fail:e=>n(e)}})(),n=m(t);let o;f.doAidaConversation(JSON.stringify(e),n,(e=>{403===e.statusCode?t.fail(new Error("Server responded: permission denied")):e.error?t.fail(new Error(`Cannot send request: ${e.error} ${e.detail||""}`)):"net::ERR_TIMED_OUT"===e.netErrorName?t.fail(new Error("doAidaConversation timed out")):200!==e.statusCode?t.fail(new Error(`Request failed: ${JSON.stringify(e)}`)):t.close()}));const s=[];let i=!1;const a=[];let d={rpcGlobalId:0};for(;o=await t.read();){let e,r=!1;if(o.length){o.startsWith(",")&&(o=o.slice(1)),o.startsWith("[")||(o="["+o),o.endsWith("]")||(o+="]");try{e=JSON.parse(o)}catch(e){throw new Error("Cannot parse chunk: "+o,{cause:e})}for(const t of e){if("metadata"in t&&(d=t.metadata,d?.attributionMetadata?.attributionAction===T.BLOCK))throw new N;if("textChunk"in t)i&&(s.push(_),i=!1),s.push(t.textChunk.text),r=!0;else if("codeChunk"in t)i||(s.push(_),i=!0),s.push(t.codeChunk.code),r=!0;else{if(!("functionCallChunk"in t))throw"error"in t?new Error(`Server responded: ${JSON.stringify(t)}`):new Error("Unknown chunk result");a.push({name:t.functionCallChunk.functionCall.name,args:t.functionCallChunk.functionCall.args})}}r&&(yield{explanation:s.join("")+(i?_:""),metadata:d,completed:!1})}}yield{explanation:s.join("")+(i?_:""),metadata:d,functionCalls:a.length?a:void 0,completed:!0}}registerClientEvent(e){const{promise:r,resolve:t}=Promise.withResolvers();return f.registerAidaClientEvent(JSON.stringify({client:M,event_time:(new Date).toISOString(),...e}),t),r}}let D;class H extends e.ObjectWrapper.ObjectWrapper{#t;#n;constructor(){super()}static instance(){return D||(D=new H),D}addEventListener(e,r){const t=!this.hasEventListeners(e),n=super.addEventListener(e,r);return t&&(window.clearTimeout(this.#t),this.pollAidaAvailability()),n}removeEventListener(e,r){super.removeEventListener(e,r),this.hasEventListeners(e)||window.clearTimeout(this.#t)}async pollAidaAvailability(){this.#t=window.setTimeout((()=>this.pollAidaAvailability()),2e3);const e=await L.checkAccessPreconditions();if(e!==this.#n){this.#n=e;const t=await new Promise((e=>f.getHostConfig(e)));Object.assign(r.Runtime.hostConfig,t),this.dispatchEventToListeners("aidaAvailabilityChanged")}}}var U=Object.freeze({__proto__:null,AidaAbortError:O,AidaBlockError:N,AidaClient:L,CLIENT_NAME:M,get CitationSourceType(){return x},get ClientFeature(){return P},get FunctionalityType(){return A},HostConfigTracker:H,get RecitationAction(){return T},get Role(){return b},get UserTier(){return R},convertToUserTierEnum:function(e){if(e)switch(e){case"TESTERS":return R.TESTERS;case"BETA":return R.BETA;case"PUBLIC":return R.PUBLIC}return R.BETA}});let W,B,V,G,j;function q(){return W||(W=f.platform()),W}var X=Object.freeze({__proto__:null,fontFamily:function(){if(j)return j;switch(q()){case"linux":j="Roboto, Ubuntu, Arial, sans-serif";break;case"mac":j="'Lucida Grande', sans-serif";break;case"windows":j="'Segoe UI', Tahoma, sans-serif"}return j},isCustomDevtoolsFrontend:function(){return void 0===G&&(G=window.location.toString().startsWith("devtools://devtools/custom/")),G},isMac:function(){return void 0===B&&(B="mac"===q()),B},isWin:function(){return void 0===V&&(V="windows"===q()),V},platform:q,setPlatformForTests:function(e){W=e,B=void 0,V=void 0}});let z=null;function K(){return null===z&&(z=new $),z}class ${#o="error";#s=new Set;#i=null;#a=null;#d="rn_inspector";#c={};#l=new Map;isEnabled(){return!0===globalThis.enableReactNativePerfMetrics}addEventListener(e){this.#s.add(e);return()=>{this.#s.delete(e)}}removeAllEventListeners(){this.#s.clear()}sendEvent(e){if(!0!==globalThis.enableReactNativePerfMetrics)return;const r=this.#u(e),t=[];for(const e of this.#s)try{e(r)}catch(e){t.push(e)}if(t.length>0){const e=new AggregateError(t);console.error("Error occurred when calling event listeners",e)}}registerPerfMetricsGlobalPostMessageHandler(){!0===globalThis.enableReactNativePerfMetrics&&!0===globalThis.enableReactNativePerfMetricsGlobalPostMessage&&this.addEventListener((e=>{window.postMessage({event:e,tag:"react-native-chrome-devtools-perf-metrics"},window.location.origin)}))}registerGlobalErrorReporting(){window.addEventListener("error",(e=>{const[r,t]=Y(`[RNPerfMetrics] uncaught error: ${e.message}`,e.error);this.sendEvent({eventName:"Browser.Error",params:{type:"error",message:r,error:t}})}),{passive:!0}),window.addEventListener("unhandledrejection",(e=>{const[r,t]=Y("[RNPerfMetrics] unhandled promise rejection",e.reason);this.sendEvent({eventName:"Browser.Error",params:{type:"rejectedPromise",message:r,error:t}})}),{passive:!0});const e=globalThis.console,r=e[this.#o];e[this.#o]=(...t)=>{try{const e=t[0],[r,n]=Y("[RNPerfMetrics] console.error",e);this.sendEvent({eventName:"Browser.Error",params:{message:r,error:n,type:"consoleError"}})}catch(e){const[r,t]=Y("[RNPerfMetrics] Error handling console.error",e);this.sendEvent({eventName:"Browser.Error",params:{message:r,error:t,type:"consoleError"}})}finally{r.apply(e,t)}}}setLaunchId(e){this.#i=e}setAppId(e){this.#a=e}setTelemetryInfo(e){this.#c=e}entryPointLoadingStarted(e){this.#d=e,this.sendEvent({eventName:"Entrypoint.LoadingStarted",entryPoint:e})}entryPointLoadingFinished(e){this.sendEvent({eventName:"Entrypoint.LoadingFinished",entryPoint:e})}browserVisibilityChanged(e){this.sendEvent({eventName:"Browser.VisibilityChange",params:{visibilityState:e}})}remoteDebuggingTerminated(e={}){this.sendEvent({eventName:"Connection.DebuggingTerminated",params:e})}developerResourceLoadingStarted(e,r){const t=Q(e);this.sendEvent({eventName:"DeveloperResource.LoadingStarted",params:{url:t,loadingMethod:r}})}developerResourceLoadingFinished(e,r,t){const n=Q(e);this.sendEvent({eventName:"DeveloperResource.LoadingFinished",params:{url:n,loadingMethod:r,success:t.success,errorMessage:t.errorDescription?.message}})}developerResourcesStartupLoadingFinishedEvent(e,r){this.sendEvent({eventName:"DeveloperResources.StartupLoadingFinished",params:{numResources:e,timeSinceLaunch:r}})}fuseboxSetClientMetadataStarted(){this.sendEvent({eventName:"FuseboxSetClientMetadataStarted"})}fuseboxSetClientMetadataFinished(e,r){if(e)this.sendEvent({eventName:"FuseboxSetClientMetadataFinished",params:{success:!0}});else{const[e,t]=Y("[RNPerfMetrics] Fusebox setClientMetadata failed",r);this.sendEvent({eventName:"FuseboxSetClientMetadataFinished",params:{success:!1,error:t,errorMessage:e}})}}heapSnapshotStarted(){this.sendEvent({eventName:"MemoryPanelActionStarted",params:{action:"snapshot"}})}heapSnapshotFinished(e){this.sendEvent({eventName:"MemoryPanelActionFinished",params:{action:"snapshot",success:e}})}heapProfilingStarted(){this.sendEvent({eventName:"MemoryPanelActionStarted",params:{action:"profiling"}})}heapProfilingFinished(e){this.sendEvent({eventName:"MemoryPanelActionFinished",params:{action:"profiling",success:e}})}heapSamplingStarted(){this.sendEvent({eventName:"MemoryPanelActionStarted",params:{action:"sampling"}})}heapSamplingFinished(e){this.sendEvent({eventName:"MemoryPanelActionFinished",params:{action:"sampling",success:e}})}stackTraceSymbolicationSucceeded(e){this.sendEvent({eventName:"StackTraceSymbolicationSucceeded",params:{specialHermesFrameTypes:e}})}stackTraceSymbolicationFailed(e,r,t){this.sendEvent({eventName:"StackTraceSymbolicationFailed",params:{stackTrace:e,line:r,reason:t}})}stackTraceFrameUrlResolutionSucceeded(){this.sendEvent({eventName:"StackTraceFrameUrlResolutionSucceeded"})}stackTraceFrameUrlResolutionFailed(e){this.sendEvent({eventName:"StackTraceFrameUrlResolutionFailed",params:{uniqueUrls:e}})}manualBreakpointSetSucceeded(e){this.sendEvent({eventName:"ManualBreakpointSetSucceeded",params:{bpSettingDuration:e}})}stackTraceFrameClicked(e){this.sendEvent({eventName:"StackTraceFrameClicked",params:{isLinkified:e}})}panelShown(e,r){}panelShownInLocation(e,r){this.sendEvent({eventName:"PanelShown",params:{location:r,newPanelName:e}}),this.#l.set(r,e)}#u(e){return{...e,...{timestamp:performance.timeOrigin+performance.now(),launchId:this.#i,appId:this.#a,entryPoint:this.#d,telemetryInfo:this.#c,currentPanels:this.#l}}}}function Q(e){const{url:r}=e;return"http"===e.scheme||"https"===e.scheme?r:`${r.slice(0,100)} …(omitted ${r.length-100} characters)`}function Y(e,r){if(r instanceof Error){return[`${e}: ${r.message}`,r]}const t=`${e}: ${String(r)}`;return[t,new Error(t,{cause:r})]}var J,Z,ee,re,te,ne,oe,se,ie,ae,de,ce,le,ue=Object.freeze({__proto__:null,getInstance:K});class me{#m;#g;#p;constructor(){this.#m=!1,this.#g=!1,this.#p=""}panelShown(e,r){const t=Z[e]||0;f.recordEnumeratedHistogram("DevTools.PanelShown",t,Z.MAX_VALUE),f.recordUserMetricsAction("DevTools_PanelShown_"+e),r||(this.#m=!0),K().panelShown(e,r)}panelShownInLocation(e,r){const t=ee[`${e}-${r}`]||0;f.recordEnumeratedHistogram("DevTools.PanelShownInLocation",t,ee.MAX_VALUE),K().panelShownInLocation(e,r)}settingsPanelShown(e){this.panelShown("settings-"+e)}sourcesPanelFileDebugged(e){const r=e&&te[e]||te.Unknown;f.recordEnumeratedHistogram("DevTools.SourcesPanelFileDebugged",r,te.MAX_VALUE)}sourcesPanelFileOpened(e){const r=e&&te[e]||te.Unknown;f.recordEnumeratedHistogram("DevTools.SourcesPanelFileOpened",r,te.MAX_VALUE)}networkPanelResponsePreviewOpened(e){const r=e&&te[e]||te.Unknown;f.recordEnumeratedHistogram("DevTools.NetworkPanelResponsePreviewOpened",r,te.MAX_VALUE)}actionTaken(e){f.recordEnumeratedHistogram("DevTools.ActionTaken",e,J.MAX_VALUE)}panelLoaded(e,r){this.#g||e!==this.#p||(this.#g=!0,requestAnimationFrame((()=>{window.setTimeout((()=>{performance.mark(r),this.#m||f.recordPerformanceHistogram(r,performance.now())}),0)})))}setLaunchPanel(e){this.#p=e}performanceTraceLoad(e){f.recordPerformanceHistogram("DevTools.TraceLoad",e.duration)}keybindSetSettingChanged(e){const r=ne[e]||0;f.recordEnumeratedHistogram("DevTools.KeybindSetSettingChanged",r,ne.MAX_VALUE)}keyboardShortcutFired(e){const r=oe[e]||oe.OtherShortcut;f.recordEnumeratedHistogram("DevTools.KeyboardShortcutFired",r,oe.MAX_VALUE)}issuesPanelOpenedFrom(e){f.recordEnumeratedHistogram("DevTools.IssuesPanelOpenedFrom",e,6)}issuesPanelIssueExpanded(e){if(void 0===e)return;const r=ie[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.IssuesPanelIssueExpanded",r,ie.MAX_VALUE)}issuesPanelResourceOpened(e,r){const t=ae[e+r];void 0!==t&&f.recordEnumeratedHistogram("DevTools.IssuesPanelResourceOpened",t,ae.MAX_VALUE)}issueCreated(e){const r=de[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.IssueCreated",r,de.MAX_VALUE)}experimentEnabledAtLaunch(e){const r=se[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.ExperimentEnabledAtLaunch",r,se.MAX_VALUE)}navigationSettingAtFirstTimelineLoad(e){f.recordEnumeratedHistogram("DevTools.TimelineNavigationSettingState",e,4)}experimentDisabledAtLaunch(e){const r=se[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.ExperimentDisabledAtLaunch",r,se.MAX_VALUE)}experimentChanged(e,r){const t=se[e];if(void 0===t)return;const n=r?"DevTools.ExperimentEnabled":"DevTools.ExperimentDisabled";f.recordEnumeratedHistogram(n,t,se.MAX_VALUE)}developerResourceLoaded(e){e>=8||f.recordEnumeratedHistogram("DevTools.DeveloperResourceLoaded",e,8)}developerResourceScheme(e){e>=9||f.recordEnumeratedHistogram("DevTools.DeveloperResourceScheme",e,9)}language(e){const r=ce[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.Language",r,ce.MAX_VALUE)}syncSetting(e){f.getSyncInformation((r=>{let t=1;r.isSyncActive&&!r.arePreferencesSynced?t=2:r.isSyncActive&&r.arePreferencesSynced&&(t=e?4:3),f.recordEnumeratedHistogram("DevTools.SyncSetting",t,5)}))}recordingAssertion(e){f.recordEnumeratedHistogram("DevTools.RecordingAssertion",e,4)}recordingToggled(e){f.recordEnumeratedHistogram("DevTools.RecordingToggled",e,3)}recordingReplayFinished(e){f.recordEnumeratedHistogram("DevTools.RecordingReplayFinished",e,5)}recordingReplaySpeed(e){f.recordEnumeratedHistogram("DevTools.RecordingReplaySpeed",e,5)}recordingReplayStarted(e){f.recordEnumeratedHistogram("DevTools.RecordingReplayStarted",e,4)}recordingEdited(e){f.recordEnumeratedHistogram("DevTools.RecordingEdited",e,11)}recordingExported(e){f.recordEnumeratedHistogram("DevTools.RecordingExported",e,6)}recordingCodeToggled(e){f.recordEnumeratedHistogram("DevTools.RecordingCodeToggled",e,3)}recordingCopiedToClipboard(e){f.recordEnumeratedHistogram("DevTools.RecordingCopiedToClipboard",e,9)}cssHintShown(e){f.recordEnumeratedHistogram("DevTools.CSSHintShown",e,14)}lighthouseModeRun(e){f.recordEnumeratedHistogram("DevTools.LighthouseModeRun",e,4)}lighthouseCategoryUsed(e){f.recordEnumeratedHistogram("DevTools.LighthouseCategoryUsed",e,6)}swatchActivated(e){f.recordEnumeratedHistogram("DevTools.SwatchActivated",e,11)}animationPlaybackRateChanged(e){f.recordEnumeratedHistogram("DevTools.AnimationPlaybackRateChanged",e,4)}animationPointDragged(e){f.recordEnumeratedHistogram("DevTools.AnimationPointDragged",e,5)}workspacesPopulated(e){f.recordPerformanceHistogram("DevTools.Workspaces.PopulateWallClocktime",e)}visualLoggingProcessingDone(e){f.recordPerformanceHistogram("DevTools.VisualLogging.ProcessingTime",e)}freestylerQueryLength(e){f.recordCountHistogram("DevTools.Freestyler.QueryLength",e,0,1e5,100)}freestylerEvalResponseSize(e){f.recordCountHistogram("DevTools.Freestyler.EvalResponseSize",e,0,1e5,100)}}!function(e){e[e.WindowDocked=1]="WindowDocked",e[e.WindowUndocked=2]="WindowUndocked",e[e.ScriptsBreakpointSet=3]="ScriptsBreakpointSet",e[e.TimelineStarted=4]="TimelineStarted",e[e.ProfilesCPUProfileTaken=5]="ProfilesCPUProfileTaken",e[e.ProfilesHeapProfileTaken=6]="ProfilesHeapProfileTaken",e[e.ConsoleEvaluated=8]="ConsoleEvaluated",e[e.FileSavedInWorkspace=9]="FileSavedInWorkspace",e[e.DeviceModeEnabled=10]="DeviceModeEnabled",e[e.AnimationsPlaybackRateChanged=11]="AnimationsPlaybackRateChanged",e[e.RevisionApplied=12]="RevisionApplied",e[e.FileSystemDirectoryContentReceived=13]="FileSystemDirectoryContentReceived",e[e.StyleRuleEdited=14]="StyleRuleEdited",e[e.CommandEvaluatedInConsolePanel=15]="CommandEvaluatedInConsolePanel",e[e.DOMPropertiesExpanded=16]="DOMPropertiesExpanded",e[e.ResizedViewInResponsiveMode=17]="ResizedViewInResponsiveMode",e[e.TimelinePageReloadStarted=18]="TimelinePageReloadStarted",e[e.ConnectToNodeJSFromFrontend=19]="ConnectToNodeJSFromFrontend",e[e.ConnectToNodeJSDirectly=20]="ConnectToNodeJSDirectly",e[e.CpuThrottlingEnabled=21]="CpuThrottlingEnabled",e[e.CpuProfileNodeFocused=22]="CpuProfileNodeFocused",e[e.CpuProfileNodeExcluded=23]="CpuProfileNodeExcluded",e[e.SelectFileFromFilePicker=24]="SelectFileFromFilePicker",e[e.SelectCommandFromCommandMenu=25]="SelectCommandFromCommandMenu",e[e.ChangeInspectedNodeInElementsPanel=26]="ChangeInspectedNodeInElementsPanel",e[e.StyleRuleCopied=27]="StyleRuleCopied",e[e.CoverageStarted=28]="CoverageStarted",e[e.LighthouseStarted=29]="LighthouseStarted",e[e.LighthouseFinished=30]="LighthouseFinished",e[e.ShowedThirdPartyBadges=31]="ShowedThirdPartyBadges",e[e.LighthouseViewTrace=32]="LighthouseViewTrace",e[e.FilmStripStartedRecording=33]="FilmStripStartedRecording",e[e.CoverageReportFiltered=34]="CoverageReportFiltered",e[e.CoverageStartedPerBlock=35]="CoverageStartedPerBlock",e[e["SettingsOpenedFromGear-deprecated"]=36]="SettingsOpenedFromGear-deprecated",e[e["SettingsOpenedFromMenu-deprecated"]=37]="SettingsOpenedFromMenu-deprecated",e[e["SettingsOpenedFromCommandMenu-deprecated"]=38]="SettingsOpenedFromCommandMenu-deprecated",e[e.TabMovedToDrawer=39]="TabMovedToDrawer",e[e.TabMovedToMainPanel=40]="TabMovedToMainPanel",e[e.CaptureCssOverviewClicked=41]="CaptureCssOverviewClicked",e[e.VirtualAuthenticatorEnvironmentEnabled=42]="VirtualAuthenticatorEnvironmentEnabled",e[e.SourceOrderViewActivated=43]="SourceOrderViewActivated",e[e.UserShortcutAdded=44]="UserShortcutAdded",e[e.ShortcutRemoved=45]="ShortcutRemoved",e[e.ShortcutModified=46]="ShortcutModified",e[e.CustomPropertyLinkClicked=47]="CustomPropertyLinkClicked",e[e.CustomPropertyEdited=48]="CustomPropertyEdited",e[e.ServiceWorkerNetworkRequestClicked=49]="ServiceWorkerNetworkRequestClicked",e[e.ServiceWorkerNetworkRequestClosedQuickly=50]="ServiceWorkerNetworkRequestClosedQuickly",e[e.NetworkPanelServiceWorkerRespondWith=51]="NetworkPanelServiceWorkerRespondWith",e[e.NetworkPanelCopyValue=52]="NetworkPanelCopyValue",e[e.ConsoleSidebarOpened=53]="ConsoleSidebarOpened",e[e.PerfPanelTraceImported=54]="PerfPanelTraceImported",e[e.PerfPanelTraceExported=55]="PerfPanelTraceExported",e[e.StackFrameRestarted=56]="StackFrameRestarted",e[e.CaptureTestProtocolClicked=57]="CaptureTestProtocolClicked",e[e.BreakpointRemovedFromRemoveButton=58]="BreakpointRemovedFromRemoveButton",e[e.BreakpointGroupExpandedStateChanged=59]="BreakpointGroupExpandedStateChanged",e[e.HeaderOverrideFileCreated=60]="HeaderOverrideFileCreated",e[e.HeaderOverrideEnableEditingClicked=61]="HeaderOverrideEnableEditingClicked",e[e.HeaderOverrideHeaderAdded=62]="HeaderOverrideHeaderAdded",e[e.HeaderOverrideHeaderEdited=63]="HeaderOverrideHeaderEdited",e[e.HeaderOverrideHeaderRemoved=64]="HeaderOverrideHeaderRemoved",e[e.HeaderOverrideHeadersFileEdited=65]="HeaderOverrideHeadersFileEdited",e[e.PersistenceNetworkOverridesEnabled=66]="PersistenceNetworkOverridesEnabled",e[e.PersistenceNetworkOverridesDisabled=67]="PersistenceNetworkOverridesDisabled",e[e.BreakpointRemovedFromContextMenu=68]="BreakpointRemovedFromContextMenu",e[e.BreakpointsInFileRemovedFromRemoveButton=69]="BreakpointsInFileRemovedFromRemoveButton",e[e.BreakpointsInFileRemovedFromContextMenu=70]="BreakpointsInFileRemovedFromContextMenu",e[e.BreakpointsInFileCheckboxToggled=71]="BreakpointsInFileCheckboxToggled",e[e.BreakpointsInFileEnabledDisabledFromContextMenu=72]="BreakpointsInFileEnabledDisabledFromContextMenu",e[e.BreakpointConditionEditedFromSidebar=73]="BreakpointConditionEditedFromSidebar",e[e.WorkspaceTabAddFolder=74]="WorkspaceTabAddFolder",e[e.WorkspaceTabRemoveFolder=75]="WorkspaceTabRemoveFolder",e[e.OverrideTabAddFolder=76]="OverrideTabAddFolder",e[e.OverrideTabRemoveFolder=77]="OverrideTabRemoveFolder",e[e.WorkspaceSourceSelected=78]="WorkspaceSourceSelected",e[e.OverridesSourceSelected=79]="OverridesSourceSelected",e[e.StyleSheetInitiatorLinkClicked=80]="StyleSheetInitiatorLinkClicked",e[e.BreakpointRemovedFromGutterContextMenu=81]="BreakpointRemovedFromGutterContextMenu",e[e.BreakpointRemovedFromGutterToggle=82]="BreakpointRemovedFromGutterToggle",e[e.StylePropertyInsideKeyframeEdited=83]="StylePropertyInsideKeyframeEdited",e[e.OverrideContentFromSourcesContextMenu=84]="OverrideContentFromSourcesContextMenu",e[e.OverrideContentFromNetworkContextMenu=85]="OverrideContentFromNetworkContextMenu",e[e.OverrideScript=86]="OverrideScript",e[e.OverrideStyleSheet=87]="OverrideStyleSheet",e[e.OverrideDocument=88]="OverrideDocument",e[e.OverrideFetchXHR=89]="OverrideFetchXHR",e[e.OverrideImage=90]="OverrideImage",e[e.OverrideFont=91]="OverrideFont",e[e.OverrideContentContextMenuSetup=92]="OverrideContentContextMenuSetup",e[e.OverrideContentContextMenuAbandonSetup=93]="OverrideContentContextMenuAbandonSetup",e[e.OverrideContentContextMenuActivateDisabled=94]="OverrideContentContextMenuActivateDisabled",e[e.OverrideContentContextMenuOpenExistingFile=95]="OverrideContentContextMenuOpenExistingFile",e[e.OverrideContentContextMenuSaveNewFile=96]="OverrideContentContextMenuSaveNewFile",e[e.ShowAllOverridesFromSourcesContextMenu=97]="ShowAllOverridesFromSourcesContextMenu",e[e.ShowAllOverridesFromNetworkContextMenu=98]="ShowAllOverridesFromNetworkContextMenu",e[e.AnimationGroupsCleared=99]="AnimationGroupsCleared",e[e.AnimationsPaused=100]="AnimationsPaused",e[e.AnimationsResumed=101]="AnimationsResumed",e[e.AnimatedNodeDescriptionClicked=102]="AnimatedNodeDescriptionClicked",e[e.AnimationGroupScrubbed=103]="AnimationGroupScrubbed",e[e.AnimationGroupReplayed=104]="AnimationGroupReplayed",e[e.OverrideTabDeleteFolderContextMenu=105]="OverrideTabDeleteFolderContextMenu",e[e.WorkspaceDropFolder=107]="WorkspaceDropFolder",e[e.WorkspaceSelectFolder=108]="WorkspaceSelectFolder",e[e.OverrideContentContextMenuSourceMappedWarning=109]="OverrideContentContextMenuSourceMappedWarning",e[e.OverrideContentContextMenuRedirectToDeployed=110]="OverrideContentContextMenuRedirectToDeployed",e[e.NewStyleRuleAdded=111]="NewStyleRuleAdded",e[e.TraceExpanded=112]="TraceExpanded",e[e.InsightConsoleMessageShown=113]="InsightConsoleMessageShown",e[e.InsightRequestedViaContextMenu=114]="InsightRequestedViaContextMenu",e[e.InsightRequestedViaHoverButton=115]="InsightRequestedViaHoverButton",e[e.InsightRatedPositive=117]="InsightRatedPositive",e[e.InsightRatedNegative=118]="InsightRatedNegative",e[e.InsightClosed=119]="InsightClosed",e[e.InsightErrored=120]="InsightErrored",e[e.InsightHoverButtonShown=121]="InsightHoverButtonShown",e[e.SelfXssWarningConsoleMessageShown=122]="SelfXssWarningConsoleMessageShown",e[e.SelfXssWarningDialogShown=123]="SelfXssWarningDialogShown",e[e.SelfXssAllowPastingInConsole=124]="SelfXssAllowPastingInConsole",e[e.SelfXssAllowPastingInDialog=125]="SelfXssAllowPastingInDialog",e[e.ToggleEmulateFocusedPageFromStylesPaneOn=126]="ToggleEmulateFocusedPageFromStylesPaneOn",e[e.ToggleEmulateFocusedPageFromStylesPaneOff=127]="ToggleEmulateFocusedPageFromStylesPaneOff",e[e.ToggleEmulateFocusedPageFromRenderingTab=128]="ToggleEmulateFocusedPageFromRenderingTab",e[e.ToggleEmulateFocusedPageFromCommandMenu=129]="ToggleEmulateFocusedPageFromCommandMenu",e[e.InsightGenerated=130]="InsightGenerated",e[e.InsightErroredApi=131]="InsightErroredApi",e[e.InsightErroredMarkdown=132]="InsightErroredMarkdown",e[e.ToggleShowWebVitals=133]="ToggleShowWebVitals",e[e.InsightErroredPermissionDenied=134]="InsightErroredPermissionDenied",e[e.InsightErroredCannotSend=135]="InsightErroredCannotSend",e[e.InsightErroredRequestFailed=136]="InsightErroredRequestFailed",e[e.InsightErroredCannotParseChunk=137]="InsightErroredCannotParseChunk",e[e.InsightErroredUnknownChunk=138]="InsightErroredUnknownChunk",e[e.InsightErroredOther=139]="InsightErroredOther",e[e.AutofillReceived=140]="AutofillReceived",e[e.AutofillReceivedAndTabAutoOpened=141]="AutofillReceivedAndTabAutoOpened",e[e.AnimationGroupSelected=142]="AnimationGroupSelected",e[e.ScrollDrivenAnimationGroupSelected=143]="ScrollDrivenAnimationGroupSelected",e[e.ScrollDrivenAnimationGroupScrubbed=144]="ScrollDrivenAnimationGroupScrubbed",e[e.AiAssistanceOpenedFromElementsPanel=145]="AiAssistanceOpenedFromElementsPanel",e[e.AiAssistanceOpenedFromStylesTab=146]="AiAssistanceOpenedFromStylesTab",e[e.ConsoleFilterByContext=147]="ConsoleFilterByContext",e[e.ConsoleFilterBySource=148]="ConsoleFilterBySource",e[e.ConsoleFilterByUrl=149]="ConsoleFilterByUrl",e[e.InsightConsentReminderShown=150]="InsightConsentReminderShown",e[e.InsightConsentReminderCanceled=151]="InsightConsentReminderCanceled",e[e.InsightConsentReminderConfirmed=152]="InsightConsentReminderConfirmed",e[e.InsightsOnboardingShown=153]="InsightsOnboardingShown",e[e.InsightsOnboardingCanceledOnPage1=154]="InsightsOnboardingCanceledOnPage1",e[e.InsightsOnboardingCanceledOnPage2=155]="InsightsOnboardingCanceledOnPage2",e[e.InsightsOnboardingConfirmed=156]="InsightsOnboardingConfirmed",e[e.InsightsOnboardingNextPage=157]="InsightsOnboardingNextPage",e[e.InsightsOnboardingPrevPage=158]="InsightsOnboardingPrevPage",e[e.InsightsOnboardingFeatureDisabled=159]="InsightsOnboardingFeatureDisabled",e[e.InsightsOptInTeaserShown=160]="InsightsOptInTeaserShown",e[e.InsightsOptInTeaserSettingsLinkClicked=161]="InsightsOptInTeaserSettingsLinkClicked",e[e.InsightsOptInTeaserConfirmedInSettings=162]="InsightsOptInTeaserConfirmedInSettings",e[e.InsightsReminderTeaserShown=163]="InsightsReminderTeaserShown",e[e.InsightsReminderTeaserConfirmed=164]="InsightsReminderTeaserConfirmed",e[e.InsightsReminderTeaserCanceled=165]="InsightsReminderTeaserCanceled",e[e.InsightsReminderTeaserSettingsLinkClicked=166]="InsightsReminderTeaserSettingsLinkClicked",e[e.InsightsReminderTeaserAbortedInSettings=167]="InsightsReminderTeaserAbortedInSettings",e[e.GeneratingInsightWithoutDisclaimer=168]="GeneratingInsightWithoutDisclaimer",e[e.AiAssistanceOpenedFromElementsPanelFloatingButton=169]="AiAssistanceOpenedFromElementsPanelFloatingButton",e[e.AiAssistanceOpenedFromNetworkPanel=170]="AiAssistanceOpenedFromNetworkPanel",e[e.AiAssistanceOpenedFromSourcesPanel=171]="AiAssistanceOpenedFromSourcesPanel",e[e.AiAssistanceOpenedFromSourcesPanelFloatingButton=172]="AiAssistanceOpenedFromSourcesPanelFloatingButton",e[e.AiAssistanceOpenedFromPerformancePanel=173]="AiAssistanceOpenedFromPerformancePanel",e[e.AiAssistanceOpenedFromNetworkPanelFloatingButton=174]="AiAssistanceOpenedFromNetworkPanelFloatingButton",e[e.AiAssistancePanelOpened=175]="AiAssistancePanelOpened",e[e.AiAssistanceQuerySubmitted=176]="AiAssistanceQuerySubmitted",e[e.AiAssistanceAnswerReceived=177]="AiAssistanceAnswerReceived",e[e.AiAssistanceDynamicSuggestionClicked=178]="AiAssistanceDynamicSuggestionClicked",e[e.AiAssistanceSideEffectConfirmed=179]="AiAssistanceSideEffectConfirmed",e[e.AiAssistanceSideEffectRejected=180]="AiAssistanceSideEffectRejected",e[e.AiAssistanceError=181]="AiAssistanceError",e[e.AiAssistanceOpenedFromPerformanceInsight=182]="AiAssistanceOpenedFromPerformanceInsight",e[e.MAX_VALUE=183]="MAX_VALUE"}(J||(J={})),function(e){e[e.elements=1]="elements",e[e.resources=2]="resources",e[e.network=3]="network",e[e.sources=4]="sources",e[e.timeline=5]="timeline",e[e["heap-profiler"]=6]="heap-profiler",e[e.console=8]="console",e[e.layers=9]="layers",e[e["console-view"]=10]="console-view",e[e.animations=11]="animations",e[e["network.config"]=12]="network.config",e[e.rendering=13]="rendering",e[e.sensors=14]="sensors",e[e["sources.search"]=15]="sources.search",e[e.security=16]="security",e[e["js-profiler"]=17]="js-profiler",e[e.lighthouse=18]="lighthouse",e[e.coverage=19]="coverage",e[e["protocol-monitor"]=20]="protocol-monitor",e[e["remote-devices"]=21]="remote-devices",e[e["web-audio"]=22]="web-audio",e[e["changes.changes"]=23]="changes.changes",e[e["performance.monitor"]=24]="performance.monitor",e[e["release-note"]=25]="release-note",e[e["live-heap-profile"]=26]="live-heap-profile",e[e["sources.quick"]=27]="sources.quick",e[e["network.blocked-urls"]=28]="network.blocked-urls",e[e["settings-preferences"]=29]="settings-preferences",e[e["settings-workspace"]=30]="settings-workspace",e[e["settings-experiments"]=31]="settings-experiments",e[e["settings-blackbox"]=32]="settings-blackbox",e[e["settings-devices"]=33]="settings-devices",e[e["settings-throttling-conditions"]=34]="settings-throttling-conditions",e[e["settings-emulation-locations"]=35]="settings-emulation-locations",e[e["settings-shortcuts"]=36]="settings-shortcuts",e[e["issues-pane"]=37]="issues-pane",e[e["settings-keybinds"]=38]="settings-keybinds",e[e.cssoverview=39]="cssoverview",e[e["chrome-recorder"]=40]="chrome-recorder",e[e["trust-tokens"]=41]="trust-tokens",e[e["reporting-api"]=42]="reporting-api",e[e["interest-groups"]=43]="interest-groups",e[e["back-forward-cache"]=44]="back-forward-cache",e[e["service-worker-cache"]=45]="service-worker-cache",e[e["background-service-background-fetch"]=46]="background-service-background-fetch",e[e["background-service-background-sync"]=47]="background-service-background-sync",e[e["background-service-push-messaging"]=48]="background-service-push-messaging",e[e["background-service-notifications"]=49]="background-service-notifications",e[e["background-service-payment-handler"]=50]="background-service-payment-handler",e[e["background-service-periodic-background-sync"]=51]="background-service-periodic-background-sync",e[e["service-workers"]=52]="service-workers",e[e["app-manifest"]=53]="app-manifest",e[e.storage=54]="storage",e[e.cookies=55]="cookies",e[e["frame-details"]=56]="frame-details",e[e["frame-resource"]=57]="frame-resource",e[e["frame-window"]=58]="frame-window",e[e["frame-worker"]=59]="frame-worker",e[e["dom-storage"]=60]="dom-storage",e[e["indexed-db"]=61]="indexed-db",e[e["web-sql"]=62]="web-sql",e[e["performance-insights"]=63]="performance-insights",e[e.preloading=64]="preloading",e[e["bounce-tracking-mitigations"]=65]="bounce-tracking-mitigations",e[e["developer-resources"]=66]="developer-resources",e[e["autofill-view"]=67]="autofill-view",e[e.MAX_VALUE=68]="MAX_VALUE"}(Z||(Z={})),function(e){e[e["elements-main"]=1]="elements-main",e[e["elements-drawer"]=2]="elements-drawer",e[e["resources-main"]=3]="resources-main",e[e["resources-drawer"]=4]="resources-drawer",e[e["network-main"]=5]="network-main",e[e["network-drawer"]=6]="network-drawer",e[e["sources-main"]=7]="sources-main",e[e["sources-drawer"]=8]="sources-drawer",e[e["timeline-main"]=9]="timeline-main",e[e["timeline-drawer"]=10]="timeline-drawer",e[e["heap_profiler-main"]=11]="heap_profiler-main",e[e["heap_profiler-drawer"]=12]="heap_profiler-drawer",e[e["console-main"]=13]="console-main",e[e["console-drawer"]=14]="console-drawer",e[e["layers-main"]=15]="layers-main",e[e["layers-drawer"]=16]="layers-drawer",e[e["console-view-main"]=17]="console-view-main",e[e["console-view-drawer"]=18]="console-view-drawer",e[e["animations-main"]=19]="animations-main",e[e["animations-drawer"]=20]="animations-drawer",e[e["network.config-main"]=21]="network.config-main",e[e["network.config-drawer"]=22]="network.config-drawer",e[e["rendering-main"]=23]="rendering-main",e[e["rendering-drawer"]=24]="rendering-drawer",e[e["sensors-main"]=25]="sensors-main",e[e["sensors-drawer"]=26]="sensors-drawer",e[e["sources.search-main"]=27]="sources.search-main",e[e["sources.search-drawer"]=28]="sources.search-drawer",e[e["security-main"]=29]="security-main",e[e["security-drawer"]=30]="security-drawer",e[e["lighthouse-main"]=33]="lighthouse-main",e[e["lighthouse-drawer"]=34]="lighthouse-drawer",e[e["coverage-main"]=35]="coverage-main",e[e["coverage-drawer"]=36]="coverage-drawer",e[e["protocol-monitor-main"]=37]="protocol-monitor-main",e[e["protocol-monitor-drawer"]=38]="protocol-monitor-drawer",e[e["remote-devices-main"]=39]="remote-devices-main",e[e["remote-devices-drawer"]=40]="remote-devices-drawer",e[e["web-audio-main"]=41]="web-audio-main",e[e["web-audio-drawer"]=42]="web-audio-drawer",e[e["changes.changes-main"]=43]="changes.changes-main",e[e["changes.changes-drawer"]=44]="changes.changes-drawer",e[e["performance.monitor-main"]=45]="performance.monitor-main",e[e["performance.monitor-drawer"]=46]="performance.monitor-drawer",e[e["release-note-main"]=47]="release-note-main",e[e["release-note-drawer"]=48]="release-note-drawer",e[e["live_heap_profile-main"]=49]="live_heap_profile-main",e[e["live_heap_profile-drawer"]=50]="live_heap_profile-drawer",e[e["sources.quick-main"]=51]="sources.quick-main",e[e["sources.quick-drawer"]=52]="sources.quick-drawer",e[e["network.blocked-urls-main"]=53]="network.blocked-urls-main",e[e["network.blocked-urls-drawer"]=54]="network.blocked-urls-drawer",e[e["settings-preferences-main"]=55]="settings-preferences-main",e[e["settings-preferences-drawer"]=56]="settings-preferences-drawer",e[e["settings-workspace-main"]=57]="settings-workspace-main",e[e["settings-workspace-drawer"]=58]="settings-workspace-drawer",e[e["settings-experiments-main"]=59]="settings-experiments-main",e[e["settings-experiments-drawer"]=60]="settings-experiments-drawer",e[e["settings-blackbox-main"]=61]="settings-blackbox-main",e[e["settings-blackbox-drawer"]=62]="settings-blackbox-drawer",e[e["settings-devices-main"]=63]="settings-devices-main",e[e["settings-devices-drawer"]=64]="settings-devices-drawer",e[e["settings-throttling-conditions-main"]=65]="settings-throttling-conditions-main",e[e["settings-throttling-conditions-drawer"]=66]="settings-throttling-conditions-drawer",e[e["settings-emulation-locations-main"]=67]="settings-emulation-locations-main",e[e["settings-emulation-locations-drawer"]=68]="settings-emulation-locations-drawer",e[e["settings-shortcuts-main"]=69]="settings-shortcuts-main",e[e["settings-shortcuts-drawer"]=70]="settings-shortcuts-drawer",e[e["issues-pane-main"]=71]="issues-pane-main",e[e["issues-pane-drawer"]=72]="issues-pane-drawer",e[e["settings-keybinds-main"]=73]="settings-keybinds-main",e[e["settings-keybinds-drawer"]=74]="settings-keybinds-drawer",e[e["cssoverview-main"]=75]="cssoverview-main",e[e["cssoverview-drawer"]=76]="cssoverview-drawer",e[e["chrome_recorder-main"]=77]="chrome_recorder-main",e[e["chrome_recorder-drawer"]=78]="chrome_recorder-drawer",e[e["trust_tokens-main"]=79]="trust_tokens-main",e[e["trust_tokens-drawer"]=80]="trust_tokens-drawer",e[e["reporting_api-main"]=81]="reporting_api-main",e[e["reporting_api-drawer"]=82]="reporting_api-drawer",e[e["interest_groups-main"]=83]="interest_groups-main",e[e["interest_groups-drawer"]=84]="interest_groups-drawer",e[e["back_forward_cache-main"]=85]="back_forward_cache-main",e[e["back_forward_cache-drawer"]=86]="back_forward_cache-drawer",e[e["service_worker_cache-main"]=87]="service_worker_cache-main",e[e["service_worker_cache-drawer"]=88]="service_worker_cache-drawer",e[e["background_service_backgroundFetch-main"]=89]="background_service_backgroundFetch-main",e[e["background_service_backgroundFetch-drawer"]=90]="background_service_backgroundFetch-drawer",e[e["background_service_backgroundSync-main"]=91]="background_service_backgroundSync-main",e[e["background_service_backgroundSync-drawer"]=92]="background_service_backgroundSync-drawer",e[e["background_service_pushMessaging-main"]=93]="background_service_pushMessaging-main",e[e["background_service_pushMessaging-drawer"]=94]="background_service_pushMessaging-drawer",e[e["background_service_notifications-main"]=95]="background_service_notifications-main",e[e["background_service_notifications-drawer"]=96]="background_service_notifications-drawer",e[e["background_service_paymentHandler-main"]=97]="background_service_paymentHandler-main",e[e["background_service_paymentHandler-drawer"]=98]="background_service_paymentHandler-drawer",e[e["background_service_periodicBackgroundSync-main"]=99]="background_service_periodicBackgroundSync-main",e[e["background_service_periodicBackgroundSync-drawer"]=100]="background_service_periodicBackgroundSync-drawer",e[e["service_workers-main"]=101]="service_workers-main",e[e["service_workers-drawer"]=102]="service_workers-drawer",e[e["app_manifest-main"]=103]="app_manifest-main",e[e["app_manifest-drawer"]=104]="app_manifest-drawer",e[e["storage-main"]=105]="storage-main",e[e["storage-drawer"]=106]="storage-drawer",e[e["cookies-main"]=107]="cookies-main",e[e["cookies-drawer"]=108]="cookies-drawer",e[e["frame_details-main"]=109]="frame_details-main",e[e["frame_details-drawer"]=110]="frame_details-drawer",e[e["frame_resource-main"]=111]="frame_resource-main",e[e["frame_resource-drawer"]=112]="frame_resource-drawer",e[e["frame_window-main"]=113]="frame_window-main",e[e["frame_window-drawer"]=114]="frame_window-drawer",e[e["frame_worker-main"]=115]="frame_worker-main",e[e["frame_worker-drawer"]=116]="frame_worker-drawer",e[e["dom_storage-main"]=117]="dom_storage-main",e[e["dom_storage-drawer"]=118]="dom_storage-drawer",e[e["indexed_db-main"]=119]="indexed_db-main",e[e["indexed_db-drawer"]=120]="indexed_db-drawer",e[e["web_sql-main"]=121]="web_sql-main",e[e["web_sql-drawer"]=122]="web_sql-drawer",e[e["performance_insights-main"]=123]="performance_insights-main",e[e["performance_insights-drawer"]=124]="performance_insights-drawer",e[e["preloading-main"]=125]="preloading-main",e[e["preloading-drawer"]=126]="preloading-drawer",e[e["bounce_tracking_mitigations-main"]=127]="bounce_tracking_mitigations-main",e[e["bounce_tracking_mitigations-drawer"]=128]="bounce_tracking_mitigations-drawer",e[e["developer-resources-main"]=129]="developer-resources-main",e[e["developer-resources-drawer"]=130]="developer-resources-drawer",e[e["autofill-view-main"]=131]="autofill-view-main",e[e["autofill-view-drawer"]=132]="autofill-view-drawer",e[e.MAX_VALUE=133]="MAX_VALUE"}(ee||(ee={})),function(e){e[e.OtherSidebarPane=0]="OtherSidebarPane",e[e.styles=1]="styles",e[e.computed=2]="computed",e[e["elements.layout"]=3]="elements.layout",e[e["elements.event-listeners"]=4]="elements.event-listeners",e[e["elements.dom-breakpoints"]=5]="elements.dom-breakpoints",e[e["elements.dom-properties"]=6]="elements.dom-properties",e[e["accessibility.view"]=7]="accessibility.view",e[e.MAX_VALUE=8]="MAX_VALUE"}(re||(re={})),function(e){e[e.Unknown=0]="Unknown",e[e["text/css"]=2]="text/css",e[e["text/html"]=3]="text/html",e[e["application/xml"]=4]="application/xml",e[e["application/wasm"]=5]="application/wasm",e[e["application/manifest+json"]=6]="application/manifest+json",e[e["application/x-aspx"]=7]="application/x-aspx",e[e["application/jsp"]=8]="application/jsp",e[e["text/x-c++src"]=9]="text/x-c++src",e[e["text/x-coffeescript"]=10]="text/x-coffeescript",e[e["application/vnd.dart"]=11]="application/vnd.dart",e[e["text/typescript"]=12]="text/typescript",e[e["text/typescript-jsx"]=13]="text/typescript-jsx",e[e["application/json"]=14]="application/json",e[e["text/x-csharp"]=15]="text/x-csharp",e[e["text/x-java"]=16]="text/x-java",e[e["text/x-less"]=17]="text/x-less",e[e["application/x-httpd-php"]=18]="application/x-httpd-php",e[e["text/x-python"]=19]="text/x-python",e[e["text/x-sh"]=20]="text/x-sh",e[e["text/x-gss"]=21]="text/x-gss",e[e["text/x-sass"]=22]="text/x-sass",e[e["text/x-scss"]=23]="text/x-scss",e[e["text/markdown"]=24]="text/markdown",e[e["text/x-clojure"]=25]="text/x-clojure",e[e["text/jsx"]=26]="text/jsx",e[e["text/x-go"]=27]="text/x-go",e[e["text/x-kotlin"]=28]="text/x-kotlin",e[e["text/x-scala"]=29]="text/x-scala",e[e["text/x.svelte"]=30]="text/x.svelte",e[e["text/javascript+plain"]=31]="text/javascript+plain",e[e["text/javascript+minified"]=32]="text/javascript+minified",e[e["text/javascript+sourcemapped"]=33]="text/javascript+sourcemapped",e[e["text/x.angular"]=34]="text/x.angular",e[e["text/x.vue"]=35]="text/x.vue",e[e["text/javascript+snippet"]=36]="text/javascript+snippet",e[e["text/javascript+eval"]=37]="text/javascript+eval",e[e.MAX_VALUE=38]="MAX_VALUE"}(te||(te={})),function(e){e[e.devToolsDefault=0]="devToolsDefault",e[e.vsCode=1]="vsCode",e[e.MAX_VALUE=2]="MAX_VALUE"}(ne||(ne={})),function(e){e[e.OtherShortcut=0]="OtherShortcut",e[e["quick-open.show-command-menu"]=1]="quick-open.show-command-menu",e[e["console.clear"]=2]="console.clear",e[e["console.toggle"]=3]="console.toggle",e[e["debugger.step"]=4]="debugger.step",e[e["debugger.step-into"]=5]="debugger.step-into",e[e["debugger.step-out"]=6]="debugger.step-out",e[e["debugger.step-over"]=7]="debugger.step-over",e[e["debugger.toggle-breakpoint"]=8]="debugger.toggle-breakpoint",e[e["debugger.toggle-breakpoint-enabled"]=9]="debugger.toggle-breakpoint-enabled",e[e["debugger.toggle-pause"]=10]="debugger.toggle-pause",e[e["elements.edit-as-html"]=11]="elements.edit-as-html",e[e["elements.hide-element"]=12]="elements.hide-element",e[e["elements.redo"]=13]="elements.redo",e[e["elements.toggle-element-search"]=14]="elements.toggle-element-search",e[e["elements.undo"]=15]="elements.undo",e[e["main.search-in-panel.find"]=16]="main.search-in-panel.find",e[e["main.toggle-drawer"]=17]="main.toggle-drawer",e[e["network.hide-request-details"]=18]="network.hide-request-details",e[e["network.search"]=19]="network.search",e[e["network.toggle-recording"]=20]="network.toggle-recording",e[e["quick-open.show"]=21]="quick-open.show",e[e["settings.show"]=22]="settings.show",e[e["sources.search"]=23]="sources.search",e[e["background-service.toggle-recording"]=24]="background-service.toggle-recording",e[e["components.collect-garbage"]=25]="components.collect-garbage",e[e["console.clear.history"]=26]="console.clear.history",e[e["console.create-pin"]=27]="console.create-pin",e[e["coverage.start-with-reload"]=28]="coverage.start-with-reload",e[e["coverage.toggle-recording"]=29]="coverage.toggle-recording",e[e["debugger.breakpoint-input-window"]=30]="debugger.breakpoint-input-window",e[e["debugger.evaluate-selection"]=31]="debugger.evaluate-selection",e[e["debugger.next-call-frame"]=32]="debugger.next-call-frame",e[e["debugger.previous-call-frame"]=33]="debugger.previous-call-frame",e[e["debugger.run-snippet"]=34]="debugger.run-snippet",e[e["debugger.toggle-breakpoints-active"]=35]="debugger.toggle-breakpoints-active",e[e["elements.capture-area-screenshot"]=36]="elements.capture-area-screenshot",e[e["emulation.capture-full-height-screenshot"]=37]="emulation.capture-full-height-screenshot",e[e["emulation.capture-node-screenshot"]=38]="emulation.capture-node-screenshot",e[e["emulation.capture-screenshot"]=39]="emulation.capture-screenshot",e[e["emulation.show-sensors"]=40]="emulation.show-sensors",e[e["emulation.toggle-device-mode"]=41]="emulation.toggle-device-mode",e[e["help.release-notes"]=42]="help.release-notes",e[e["help.report-issue"]=43]="help.report-issue",e[e["input.start-replaying"]=44]="input.start-replaying",e[e["input.toggle-pause"]=45]="input.toggle-pause",e[e["input.toggle-recording"]=46]="input.toggle-recording",e[e["inspector-main.focus-debuggee"]=47]="inspector-main.focus-debuggee",e[e["inspector-main.hard-reload"]=48]="inspector-main.hard-reload",e[e["inspector-main.reload"]=49]="inspector-main.reload",e[e["live-heap-profile.start-with-reload"]=50]="live-heap-profile.start-with-reload",e[e["live-heap-profile.toggle-recording"]=51]="live-heap-profile.toggle-recording",e[e["main.debug-reload"]=52]="main.debug-reload",e[e["main.next-tab"]=53]="main.next-tab",e[e["main.previous-tab"]=54]="main.previous-tab",e[e["main.search-in-panel.cancel"]=55]="main.search-in-panel.cancel",e[e["main.search-in-panel.find-next"]=56]="main.search-in-panel.find-next",e[e["main.search-in-panel.find-previous"]=57]="main.search-in-panel.find-previous",e[e["main.toggle-dock"]=58]="main.toggle-dock",e[e["main.zoom-in"]=59]="main.zoom-in",e[e["main.zoom-out"]=60]="main.zoom-out",e[e["main.zoom-reset"]=61]="main.zoom-reset",e[e["network-conditions.network-low-end-mobile"]=62]="network-conditions.network-low-end-mobile",e[e["network-conditions.network-mid-tier-mobile"]=63]="network-conditions.network-mid-tier-mobile",e[e["network-conditions.network-offline"]=64]="network-conditions.network-offline",e[e["network-conditions.network-online"]=65]="network-conditions.network-online",e[e["profiler.heap-toggle-recording"]=66]="profiler.heap-toggle-recording",e[e["profiler.js-toggle-recording"]=67]="profiler.js-toggle-recording",e[e["resources.clear"]=68]="resources.clear",e[e["settings.documentation"]=69]="settings.documentation",e[e["settings.shortcuts"]=70]="settings.shortcuts",e[e["sources.add-folder-to-workspace"]=71]="sources.add-folder-to-workspace",e[e["sources.add-to-watch"]=72]="sources.add-to-watch",e[e["sources.close-all"]=73]="sources.close-all",e[e["sources.close-editor-tab"]=74]="sources.close-editor-tab",e[e["sources.create-snippet"]=75]="sources.create-snippet",e[e["sources.go-to-line"]=76]="sources.go-to-line",e[e["sources.go-to-member"]=77]="sources.go-to-member",e[e["sources.jump-to-next-location"]=78]="sources.jump-to-next-location",e[e["sources.jump-to-previous-location"]=79]="sources.jump-to-previous-location",e[e["sources.rename"]=80]="sources.rename",e[e["sources.save"]=81]="sources.save",e[e["sources.save-all"]=82]="sources.save-all",e[e["sources.switch-file"]=83]="sources.switch-file",e[e["timeline.jump-to-next-frame"]=84]="timeline.jump-to-next-frame",e[e["timeline.jump-to-previous-frame"]=85]="timeline.jump-to-previous-frame",e[e["timeline.load-from-file"]=86]="timeline.load-from-file",e[e["timeline.next-recording"]=87]="timeline.next-recording",e[e["timeline.previous-recording"]=88]="timeline.previous-recording",e[e["timeline.record-reload"]=89]="timeline.record-reload",e[e["timeline.save-to-file"]=90]="timeline.save-to-file",e[e["timeline.show-history"]=91]="timeline.show-history",e[e["timeline.toggle-recording"]=92]="timeline.toggle-recording",e[e["sources.increment-css"]=93]="sources.increment-css",e[e["sources.increment-css-by-ten"]=94]="sources.increment-css-by-ten",e[e["sources.decrement-css"]=95]="sources.decrement-css",e[e["sources.decrement-css-by-ten"]=96]="sources.decrement-css-by-ten",e[e["layers.reset-view"]=97]="layers.reset-view",e[e["layers.pan-mode"]=98]="layers.pan-mode",e[e["layers.rotate-mode"]=99]="layers.rotate-mode",e[e["layers.zoom-in"]=100]="layers.zoom-in",e[e["layers.zoom-out"]=101]="layers.zoom-out",e[e["layers.up"]=102]="layers.up",e[e["layers.down"]=103]="layers.down",e[e["layers.left"]=104]="layers.left",e[e["layers.right"]=105]="layers.right",e[e["help.report-translation-issue"]=106]="help.report-translation-issue",e[e["rendering.toggle-prefers-color-scheme"]=107]="rendering.toggle-prefers-color-scheme",e[e["chrome-recorder.start-recording"]=108]="chrome-recorder.start-recording",e[e["chrome-recorder.replay-recording"]=109]="chrome-recorder.replay-recording",e[e["chrome-recorder.toggle-code-view"]=110]="chrome-recorder.toggle-code-view",e[e["chrome-recorder.copy-recording-or-step"]=111]="chrome-recorder.copy-recording-or-step",e[e["changes.revert"]=112]="changes.revert",e[e["changes.copy"]=113]="changes.copy",e[e["elements.new-style-rule"]=114]="elements.new-style-rule",e[e["elements.refresh-event-listeners"]=115]="elements.refresh-event-listeners",e[e["coverage.clear"]=116]="coverage.clear",e[e["coverage.export"]=117]="coverage.export",e[e["timeline.dim-third-parties"]=118]="timeline.dim-third-parties",e[e.MAX_VALUE=119]="MAX_VALUE"}(oe||(oe={})),function(e){e[e["capture-node-creation-stacks"]=1]="capture-node-creation-stacks",e[e["live-heap-profile"]=11]="live-heap-profile",e[e["protocol-monitor"]=13]="protocol-monitor",e[e["sampling-heap-profiler-timeline"]=17]="sampling-heap-profiler-timeline",e[e["show-option-tp-expose-internals-in-heap-snapshot"]=18]="show-option-tp-expose-internals-in-heap-snapshot",e[e["timeline-invalidation-tracking"]=26]="timeline-invalidation-tracking",e[e["timeline-show-all-events"]=27]="timeline-show-all-events",e[e["timeline-v8-runtime-call-stats"]=28]="timeline-v8-runtime-call-stats",e[e.apca=39]="apca",e[e["font-editor"]=41]="font-editor",e[e["full-accessibility-tree"]=42]="full-accessibility-tree",e[e["contrast-issues"]=44]="contrast-issues",e[e["experimental-cookie-features"]=45]="experimental-cookie-features",e[e["instrumentation-breakpoints"]=61]="instrumentation-breakpoints",e[e["authored-deployed-grouping"]=63]="authored-deployed-grouping",e[e["just-my-code"]=65]="just-my-code",e[e["highlight-errors-elements-panel"]=73]="highlight-errors-elements-panel",e[e["use-source-map-scopes"]=76]="use-source-map-scopes",e[e["network-panel-filter-bar-redesign"]=79]="network-panel-filter-bar-redesign",e[e["timeline-show-postmessage-events"]=86]="timeline-show-postmessage-events",e[e["timeline-enhanced-traces"]=90]="timeline-enhanced-traces",e[e["timeline-compiled-sources"]=91]="timeline-compiled-sources",e[e["timeline-debug-mode"]=93]="timeline-debug-mode",e[e["timeline-experimental-insights"]=102]="timeline-experimental-insights",e[e["timeline-dim-unrelated-events"]=103]="timeline-dim-unrelated-events",e[e["timeline-alternative-navigation"]=104]="timeline-alternative-navigation",e[e.MAX_VALUE=106]="MAX_VALUE"}(se||(se={})),function(e){e[e.CrossOriginEmbedderPolicy=0]="CrossOriginEmbedderPolicy",e[e.MixedContent=1]="MixedContent",e[e.SameSiteCookie=2]="SameSiteCookie",e[e.HeavyAd=3]="HeavyAd",e[e.ContentSecurityPolicy=4]="ContentSecurityPolicy",e[e.Other=5]="Other",e[e.Generic=6]="Generic",e[e.ThirdPartyPhaseoutCookie=7]="ThirdPartyPhaseoutCookie",e[e.GenericCookie=8]="GenericCookie",e[e.MAX_VALUE=9]="MAX_VALUE"}(ie||(ie={})),function(e){e[e.CrossOriginEmbedderPolicyRequest=0]="CrossOriginEmbedderPolicyRequest",e[e.CrossOriginEmbedderPolicyElement=1]="CrossOriginEmbedderPolicyElement",e[e.MixedContentRequest=2]="MixedContentRequest",e[e.SameSiteCookieCookie=3]="SameSiteCookieCookie",e[e.SameSiteCookieRequest=4]="SameSiteCookieRequest",e[e.HeavyAdElement=5]="HeavyAdElement",e[e.ContentSecurityPolicyDirective=6]="ContentSecurityPolicyDirective",e[e.ContentSecurityPolicyElement=7]="ContentSecurityPolicyElement",e[e.MAX_VALUE=13]="MAX_VALUE"}(ae||(ae={})),function(e){e[e.MixedContentIssue=0]="MixedContentIssue",e[e["ContentSecurityPolicyIssue::kInlineViolation"]=1]="ContentSecurityPolicyIssue::kInlineViolation",e[e["ContentSecurityPolicyIssue::kEvalViolation"]=2]="ContentSecurityPolicyIssue::kEvalViolation",e[e["ContentSecurityPolicyIssue::kURLViolation"]=3]="ContentSecurityPolicyIssue::kURLViolation",e[e["ContentSecurityPolicyIssue::kTrustedTypesSinkViolation"]=4]="ContentSecurityPolicyIssue::kTrustedTypesSinkViolation",e[e["ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation"]=5]="ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation",e[e["HeavyAdIssue::NetworkTotalLimit"]=6]="HeavyAdIssue::NetworkTotalLimit",e[e["HeavyAdIssue::CpuTotalLimit"]=7]="HeavyAdIssue::CpuTotalLimit",e[e["HeavyAdIssue::CpuPeakLimit"]=8]="HeavyAdIssue::CpuPeakLimit",e[e["CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader"]=9]="CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader",e[e["CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage"]=10]="CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage",e[e["CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin"]=11]="CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin",e[e["CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep"]=12]="CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep",e[e["CrossOriginEmbedderPolicyIssue::CorpNotSameSite"]=13]="CrossOriginEmbedderPolicyIssue::CorpNotSameSite",e[e["CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie"]=14]="CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie",e[e["CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie"]=15]="CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie",e[e["CookieIssue::WarnSameSiteNoneInsecure::ReadCookie"]=16]="CookieIssue::WarnSameSiteNoneInsecure::ReadCookie",e[e["CookieIssue::WarnSameSiteNoneInsecure::SetCookie"]=17]="CookieIssue::WarnSameSiteNoneInsecure::SetCookie",e[e["CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure"]=18]="CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure",e[e["CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure"]=19]="CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure",e[e["CookieIssue::WarnCrossDowngrade::ReadCookie::Secure"]=20]="CookieIssue::WarnCrossDowngrade::ReadCookie::Secure",e[e["CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure"]=21]="CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure",e[e["CookieIssue::WarnCrossDowngrade::SetCookie::Secure"]=22]="CookieIssue::WarnCrossDowngrade::SetCookie::Secure",e[e["CookieIssue::WarnCrossDowngrade::SetCookie::Insecure"]=23]="CookieIssue::WarnCrossDowngrade::SetCookie::Insecure",e[e["CookieIssue::ExcludeNavigationContextDowngrade::Secure"]=24]="CookieIssue::ExcludeNavigationContextDowngrade::Secure",e[e["CookieIssue::ExcludeNavigationContextDowngrade::Insecure"]=25]="CookieIssue::ExcludeNavigationContextDowngrade::Insecure",e[e["CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure"]=26]="CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure",e[e["CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure"]=27]="CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure",e[e["CookieIssue::ExcludeContextDowngrade::SetCookie::Secure"]=28]="CookieIssue::ExcludeContextDowngrade::SetCookie::Secure",e[e["CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure"]=29]="CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure",e[e["CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie"]=30]="CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie",e[e["CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie"]=31]="CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie"]=32]="CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie"]=33]="CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie"]=34]="CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie"]=35]="CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie",e[e["SharedArrayBufferIssue::TransferIssue"]=36]="SharedArrayBufferIssue::TransferIssue",e[e["SharedArrayBufferIssue::CreationIssue"]=37]="SharedArrayBufferIssue::CreationIssue",e[e.LowTextContrastIssue=41]="LowTextContrastIssue",e[e["CorsIssue::InsecurePrivateNetwork"]=42]="CorsIssue::InsecurePrivateNetwork",e[e["CorsIssue::InvalidHeaders"]=44]="CorsIssue::InvalidHeaders",e[e["CorsIssue::WildcardOriginWithCredentials"]=45]="CorsIssue::WildcardOriginWithCredentials",e[e["CorsIssue::PreflightResponseInvalid"]=46]="CorsIssue::PreflightResponseInvalid",e[e["CorsIssue::OriginMismatch"]=47]="CorsIssue::OriginMismatch",e[e["CorsIssue::AllowCredentialsRequired"]=48]="CorsIssue::AllowCredentialsRequired",e[e["CorsIssue::MethodDisallowedByPreflightResponse"]=49]="CorsIssue::MethodDisallowedByPreflightResponse",e[e["CorsIssue::HeaderDisallowedByPreflightResponse"]=50]="CorsIssue::HeaderDisallowedByPreflightResponse",e[e["CorsIssue::RedirectContainsCredentials"]=51]="CorsIssue::RedirectContainsCredentials",e[e["CorsIssue::DisallowedByMode"]=52]="CorsIssue::DisallowedByMode",e[e["CorsIssue::CorsDisabledScheme"]=53]="CorsIssue::CorsDisabledScheme",e[e["CorsIssue::PreflightMissingAllowExternal"]=54]="CorsIssue::PreflightMissingAllowExternal",e[e["CorsIssue::PreflightInvalidAllowExternal"]=55]="CorsIssue::PreflightInvalidAllowExternal",e[e["CorsIssue::NoCorsRedirectModeNotFollow"]=57]="CorsIssue::NoCorsRedirectModeNotFollow",e[e["QuirksModeIssue::QuirksMode"]=58]="QuirksModeIssue::QuirksMode",e[e["QuirksModeIssue::LimitedQuirksMode"]=59]="QuirksModeIssue::LimitedQuirksMode",e[e.DeprecationIssue=60]="DeprecationIssue",e[e["ClientHintIssue::MetaTagAllowListInvalidOrigin"]=61]="ClientHintIssue::MetaTagAllowListInvalidOrigin",e[e["ClientHintIssue::MetaTagModifiedHTML"]=62]="ClientHintIssue::MetaTagModifiedHTML",e[e["CorsIssue::PreflightAllowPrivateNetworkError"]=63]="CorsIssue::PreflightAllowPrivateNetworkError",e[e["GenericIssue::CrossOriginPortalPostMessageError"]=64]="GenericIssue::CrossOriginPortalPostMessageError",e[e["GenericIssue::FormLabelForNameError"]=65]="GenericIssue::FormLabelForNameError",e[e["GenericIssue::FormDuplicateIdForInputError"]=66]="GenericIssue::FormDuplicateIdForInputError",e[e["GenericIssue::FormInputWithNoLabelError"]=67]="GenericIssue::FormInputWithNoLabelError",e[e["GenericIssue::FormAutocompleteAttributeEmptyError"]=68]="GenericIssue::FormAutocompleteAttributeEmptyError",e[e["GenericIssue::FormEmptyIdAndNameAttributesForInputError"]=69]="GenericIssue::FormEmptyIdAndNameAttributesForInputError",e[e["GenericIssue::FormAriaLabelledByToNonExistingId"]=70]="GenericIssue::FormAriaLabelledByToNonExistingId",e[e["GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError"]=71]="GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError",e[e["GenericIssue::FormLabelHasNeitherForNorNestedInput"]=72]="GenericIssue::FormLabelHasNeitherForNorNestedInput",e[e["GenericIssue::FormLabelForMatchesNonExistingIdError"]=73]="GenericIssue::FormLabelForMatchesNonExistingIdError",e[e["GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError"]=74]="GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError",e[e["GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError"]=75]="GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError",e[e["StylesheetLoadingIssue::LateImportRule"]=76]="StylesheetLoadingIssue::LateImportRule",e[e["StylesheetLoadingIssue::RequestFailed"]=77]="StylesheetLoadingIssue::RequestFailed",e[e["CorsIssue::PreflightMissingPrivateNetworkAccessId"]=78]="CorsIssue::PreflightMissingPrivateNetworkAccessId",e[e["CorsIssue::PreflightMissingPrivateNetworkAccessName"]=79]="CorsIssue::PreflightMissingPrivateNetworkAccessName",e[e["CorsIssue::PrivateNetworkAccessPermissionUnavailable"]=80]="CorsIssue::PrivateNetworkAccessPermissionUnavailable",e[e["CorsIssue::PrivateNetworkAccessPermissionDenied"]=81]="CorsIssue::PrivateNetworkAccessPermissionDenied",e[e["CookieIssue::WarnThirdPartyPhaseout::ReadCookie"]=82]="CookieIssue::WarnThirdPartyPhaseout::ReadCookie",e[e["CookieIssue::WarnThirdPartyPhaseout::SetCookie"]=83]="CookieIssue::WarnThirdPartyPhaseout::SetCookie",e[e["CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie"]=84]="CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie",e[e["CookieIssue::ExcludeThirdPartyPhaseout::SetCookie"]=85]="CookieIssue::ExcludeThirdPartyPhaseout::SetCookie",e[e["SelectElementAccessibilityIssue::DisallowedSelectChild"]=86]="SelectElementAccessibilityIssue::DisallowedSelectChild",e[e["SelectElementAccessibilityIssue::DisallowedOptGroupChild"]=87]="SelectElementAccessibilityIssue::DisallowedOptGroupChild",e[e["SelectElementAccessibilityIssue::NonPhrasingContentOptionChild"]=88]="SelectElementAccessibilityIssue::NonPhrasingContentOptionChild",e[e["SelectElementAccessibilityIssue::InteractiveContentOptionChild"]=89]="SelectElementAccessibilityIssue::InteractiveContentOptionChild",e[e["SelectElementAccessibilityIssue::InteractiveContentLegendChild"]=90]="SelectElementAccessibilityIssue::InteractiveContentLegendChild",e[e["SRIMessageSignatureIssue::MissingSignatureHeader"]=91]="SRIMessageSignatureIssue::MissingSignatureHeader",e[e["SRIMessageSignatureIssue::MissingSignatureInputHeader"]=92]="SRIMessageSignatureIssue::MissingSignatureInputHeader",e[e["SRIMessageSignatureIssue::InvalidSignatureHeader"]=93]="SRIMessageSignatureIssue::InvalidSignatureHeader",e[e["SRIMessageSignatureIssue::InvalidSignatureInputHeader"]=94]="SRIMessageSignatureIssue::InvalidSignatureInputHeader",e[e["SRIMessageSignatureIssue::SignatureHeaderValueIsNotByteSequence"]=95]="SRIMessageSignatureIssue::SignatureHeaderValueIsNotByteSequence",e[e["SRIMessageSignatureIssue::SignatureHeaderValueIsParameterized"]=96]="SRIMessageSignatureIssue::SignatureHeaderValueIsParameterized",e[e["SRIMessageSignatureIssue::SignatureHeaderValueIsIncorrectLength"]=97]="SRIMessageSignatureIssue::SignatureHeaderValueIsIncorrectLength",e[e["SRIMessageSignatureIssue::SignatureInputHeaderMissingLabel"]=98]="SRIMessageSignatureIssue::SignatureInputHeaderMissingLabel",e[e["SRIMessageSignatureIssue::SignatureInputHeaderValueNotInnerList"]=99]="SRIMessageSignatureIssue::SignatureInputHeaderValueNotInnerList",e[e["SRIMessageSignatureIssue::SignatureInputHeaderValueMissingComponents"]=100]="SRIMessageSignatureIssue::SignatureInputHeaderValueMissingComponents",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentType"]=101]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentType",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentName"]=102]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentName",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidHeaderComponentParameter"]=103]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidHeaderComponentParameter",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidDerivedComponentParameter"]=104]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidDerivedComponentParameter",e[e["SRIMessageSignatureIssue::SignatureInputHeaderKeyIdLength"]=105]="SRIMessageSignatureIssue::SignatureInputHeaderKeyIdLength",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidParameter"]=106]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidParameter",e[e["SRIMessageSignatureIssue::SignatureInputHeaderMissingRequiredParameters"]=107]="SRIMessageSignatureIssue::SignatureInputHeaderMissingRequiredParameters",e[e["SRIMessageSignatureIssue::ValidationFailedSignatureExpired"]=108]="SRIMessageSignatureIssue::ValidationFailedSignatureExpired",e[e["SRIMessageSignatureIssue::ValidationFailedInvalidLength"]=109]="SRIMessageSignatureIssue::ValidationFailedInvalidLength",e[e["SRIMessageSignatureIssue::ValidationFailedSignatureMismatch"]=110]="SRIMessageSignatureIssue::ValidationFailedSignatureMismatch",e[e["CorsIssue::LocalNetworkAccessPermissionDenied"]=111]="CorsIssue::LocalNetworkAccessPermissionDenied",e[e["SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch"]=112]="SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch",e[e.MAX_VALUE=113]="MAX_VALUE"}(de||(de={})),function(e){e[e.af=1]="af",e[e.am=2]="am",e[e.ar=3]="ar",e[e.as=4]="as",e[e.az=5]="az",e[e.be=6]="be",e[e.bg=7]="bg",e[e.bn=8]="bn",e[e.bs=9]="bs",e[e.ca=10]="ca",e[e.cs=11]="cs",e[e.cy=12]="cy",e[e.da=13]="da",e[e.de=14]="de",e[e.el=15]="el",e[e["en-GB"]=16]="en-GB",e[e["en-US"]=17]="en-US",e[e["es-419"]=18]="es-419",e[e.es=19]="es",e[e.et=20]="et",e[e.eu=21]="eu",e[e.fa=22]="fa",e[e.fi=23]="fi",e[e.fil=24]="fil",e[e["fr-CA"]=25]="fr-CA",e[e.fr=26]="fr",e[e.gl=27]="gl",e[e.gu=28]="gu",e[e.he=29]="he",e[e.hi=30]="hi",e[e.hr=31]="hr",e[e.hu=32]="hu",e[e.hy=33]="hy",e[e.id=34]="id",e[e.is=35]="is",e[e.it=36]="it",e[e.ja=37]="ja",e[e.ka=38]="ka",e[e.kk=39]="kk",e[e.km=40]="km",e[e.kn=41]="kn",e[e.ko=42]="ko",e[e.ky=43]="ky",e[e.lo=44]="lo",e[e.lt=45]="lt",e[e.lv=46]="lv",e[e.mk=47]="mk",e[e.ml=48]="ml",e[e.mn=49]="mn",e[e.mr=50]="mr",e[e.ms=51]="ms",e[e.my=52]="my",e[e.ne=53]="ne",e[e.nl=54]="nl",e[e.no=55]="no",e[e.or=56]="or",e[e.pa=57]="pa",e[e.pl=58]="pl",e[e["pt-PT"]=59]="pt-PT",e[e.pt=60]="pt",e[e.ro=61]="ro",e[e.ru=62]="ru",e[e.si=63]="si",e[e.sk=64]="sk",e[e.sl=65]="sl",e[e.sq=66]="sq",e[e["sr-Latn"]=67]="sr-Latn",e[e.sr=68]="sr",e[e.sv=69]="sv",e[e.sw=70]="sw",e[e.ta=71]="ta",e[e.te=72]="te",e[e.th=73]="th",e[e.tr=74]="tr",e[e.uk=75]="uk",e[e.ur=76]="ur",e[e.uz=77]="uz",e[e.vi=78]="vi",e[e.zh=79]="zh",e[e["zh-HK"]=80]="zh-HK",e[e["zh-TW"]=81]="zh-TW",e[e.zu=82]="zu",e[e.MAX_VALUE=83]="MAX_VALUE"}(ce||(ce={})),function(e){e[e.OtherSection=0]="OtherSection",e[e.Identity=1]="Identity",e[e.Presentation=2]="Presentation",e[e["Protocol Handlers"]=3]="Protocol Handlers",e[e.Icons=4]="Icons",e[e["Window Controls Overlay"]=5]="Window Controls Overlay",e[e.MAX_VALUE=6]="MAX_VALUE"}(le||(le={}));var ge=Object.freeze({__proto__:null,get Action(){return J},get DevtoolsExperiments(){return se},get ElementsSidebarTabCodes(){return re},get IssueCreated(){return de},get IssueExpanded(){return ie},get IssueResourceOpened(){return ae},get KeybindSetSettings(){return ne},get KeyboardShortcutAction(){return oe},get Language(){return ce},get ManifestSectionCodes(){return le},get MediaTypes(){return te},get PanelCodes(){return Z},get PanelWithLocation(){return ee},UserMetrics:me});const pe=new me,he=K();export{U as AidaClient,F as InspectorFrontendHost,i as InspectorFrontendHostAPI,X as Platform,ue as RNPerfMetrics,v as ResourceLoader,ge as UserMetrics,he as rnPerfMetrics,pe as userMetrics}; +import*as e from"../common/common.js";import*as r from"../root/root.js";import*as t from"../i18n/i18n.js";import*as n from"../platform/platform.js";var o;!function(e){e.AppendedToURL="appendedToURL",e.CanceledSaveURL="canceledSaveURL",e.ColorThemeChanged="colorThemeChanged",e.ContextMenuCleared="contextMenuCleared",e.ContextMenuItemSelected="contextMenuItemSelected",e.DeviceCountUpdated="deviceCountUpdated",e.DevicesDiscoveryConfigChanged="devicesDiscoveryConfigChanged",e.DevicesPortForwardingStatusChanged="devicesPortForwardingStatusChanged",e.DevicesUpdated="devicesUpdated",e.DispatchMessage="dispatchMessage",e.DispatchMessageChunk="dispatchMessageChunk",e.EnterInspectElementMode="enterInspectElementMode",e.EyeDropperPickedColor="eyeDropperPickedColor",e.FileSystemsLoaded="fileSystemsLoaded",e.FileSystemRemoved="fileSystemRemoved",e.FileSystemAdded="fileSystemAdded",e.FileSystemFilesChangedAddedRemoved="FileSystemFilesChangedAddedRemoved",e.IndexingTotalWorkCalculated="indexingTotalWorkCalculated",e.IndexingWorked="indexingWorked",e.IndexingDone="indexingDone",e.KeyEventUnhandled="keyEventUnhandled",e.ReloadInspectedPage="reloadInspectedPage",e.RevealSourceLine="revealSourceLine",e.SavedURL="savedURL",e.SearchCompleted="searchCompleted",e.SetInspectedTabId="setInspectedTabId",e.SetUseSoftMenu="setUseSoftMenu",e.ShowPanel="showPanel"}(o||(o={}));const s=[[o.AppendedToURL,"appendedToURL",["url"]],[o.CanceledSaveURL,"canceledSaveURL",["url"]],[o.ColorThemeChanged,"colorThemeChanged",[]],[o.ContextMenuCleared,"contextMenuCleared",[]],[o.ContextMenuItemSelected,"contextMenuItemSelected",["id"]],[o.DeviceCountUpdated,"deviceCountUpdated",["count"]],[o.DevicesDiscoveryConfigChanged,"devicesDiscoveryConfigChanged",["config"]],[o.DevicesPortForwardingStatusChanged,"devicesPortForwardingStatusChanged",["status"]],[o.DevicesUpdated,"devicesUpdated",["devices"]],[o.DispatchMessage,"dispatchMessage",["messageObject"]],[o.DispatchMessageChunk,"dispatchMessageChunk",["messageChunk","messageSize"]],[o.EnterInspectElementMode,"enterInspectElementMode",[]],[o.EyeDropperPickedColor,"eyeDropperPickedColor",["color"]],[o.FileSystemsLoaded,"fileSystemsLoaded",["fileSystems"]],[o.FileSystemRemoved,"fileSystemRemoved",["fileSystemPath"]],[o.FileSystemAdded,"fileSystemAdded",["errorMessage","fileSystem"]],[o.FileSystemFilesChangedAddedRemoved,"fileSystemFilesChangedAddedRemoved",["changed","added","removed"]],[o.IndexingTotalWorkCalculated,"indexingTotalWorkCalculated",["requestId","fileSystemPath","totalWork"]],[o.IndexingWorked,"indexingWorked",["requestId","fileSystemPath","worked"]],[o.IndexingDone,"indexingDone",["requestId","fileSystemPath"]],[o.KeyEventUnhandled,"keyEventUnhandled",["event"]],[o.ReloadInspectedPage,"reloadInspectedPage",["hard"]],[o.RevealSourceLine,"revealSourceLine",["url","lineNumber","columnNumber"]],[o.SavedURL,"savedURL",["url","fileSystemPath"]],[o.SearchCompleted,"searchCompleted",["requestId","fileSystemPath","files"]],[o.SetInspectedTabId,"setInspectedTabId",["tabId"]],[o.SetUseSoftMenu,"setUseSoftMenu",["useSoftMenu"]],[o.ShowPanel,"showPanel",["panelName"]]];var i=Object.freeze({__proto__:null,EventDescriptors:s,get Events(){return o}});const a={systemError:"System error",connectionError:"Connection error",certificateError:"Certificate error",httpError:"HTTP error",cacheError:"Cache error",signedExchangeError:"Signed Exchange error",ftpError:"FTP error",certificateManagerError:"Certificate manager error",dnsResolverError:"DNS resolver error",unknownError:"Unknown error",httpErrorStatusCodeSS:"HTTP error: status code {PH1}, {PH2}",invalidUrl:"Invalid URL",decodingDataUrlFailed:"Decoding Data URL failed"},d=t.i18n.registerUIStrings("core/host/ResourceLoader.ts",a),c=t.i18n.getLocalizedString.bind(void 0,d);let l=0;const u={},m=function(e){return u[++l]=e,l},g=function(e){u[e].close(),delete u[e]},p=function(e,r){u[e].write(r)};function h(e,r,t){if(void 0===e||void 0===t)return null;if(0!==e){if(function(e){return e<=-300&&e>-400}(e))return c(a.httpErrorStatusCodeSS,{PH1:String(r),PH2:t});const n=function(e){return c(e>-100?a.systemError:e>-200?a.connectionError:e>-300?a.certificateError:e>-400?a.httpError:e>-500?a.cacheError:e>-600?a.signedExchangeError:e>-700?a.ftpError:e>-800?a.certificateManagerError:e>-900?a.dnsResolverError:a.unknownError)}(e);return`${n}: ${t}`}return null}const S=function(r,t,n,o,s){const i=m(n);if(new e.ParsedURL.ParsedURL(r).isDataURL())return void(e=>new Promise(((r,t)=>{const n=new XMLHttpRequest;n.withCredentials=!1,n.open("GET",e,!0),n.onreadystatechange=function(){if(n.readyState===XMLHttpRequest.DONE){if(200!==n.status)return n.onreadystatechange=null,void t(new Error(String(n.status)));n.onreadystatechange=null,r(n.responseText)}},n.send(null)})))(r).then((function(e){p(i,e),l({statusCode:200})})).catch((function(e){l({statusCode:404,messageOverride:c(a.decodingDataUrlFailed)})}));if(!s&&function(e){try{const r=new URL(e);return"file:"===r.protocol&&""!==r.host}catch{return!1}}(r))return void(o&&o(!1,{},{statusCode:400,netError:-20,netErrorName:"net::BLOCKED_BY_CLIENT",message:"Loading from a remote file path is prohibited for security reasons."}));const d=[];if(t)for(const e in t)d.push(e+": "+t[e]);function l(e){if(o){const{success:r,description:t}=function(e){const{statusCode:r,netError:t,netErrorName:n,urlValid:o,messageOverride:s}=e;let i="";const d=r>=200&&r<300;if("string"==typeof s)i=s;else if(!d)if(void 0===t)i=c(!1===o?a.invalidUrl:a.unknownError);else{const e=h(t,r,n);e&&(i=e)}return console.assert(d===(0===i.length)),{success:d,description:{statusCode:r,netError:t,netErrorName:n,urlValid:o,message:i}}}(e);o(r,e.headers||{},t)}g(i)}f.loadNetworkResource(r,d.join("\r\n"),i,l)};var v=Object.freeze({__proto__:null,ResourceLoader:{},bindOutputStream:m,discardOutputStream:g,load:function(r,t,n,o){const s=new e.StringOutputStream.StringOutputStream;S(r,t,s,(function(e,r,t){n(e,r,s.data(),t)}),o)},loadAsStream:S,netErrorToMessage:h,streamWrite:p});const C={devtoolsS:"DevTools - {PH1}"},I=t.i18n.registerUIStrings("core/host/InspectorFrontendHost.ts",C),w=t.i18n.getLocalizedString.bind(void 0,I),k="/overrides";class E{#e=new Map;events;#r=null;recordedCountHistograms=[];recordedEnumeratedHistograms=[];recordedPerformanceHistograms=[];constructor(){function e(e){!("mac"===this.platform()?e.metaKey:e.ctrlKey)||"+"!==e.key&&"-"!==e.key||e.stopPropagation()}"undefined"!=typeof document&&document.addEventListener("keydown",(r=>{e.call(this,r)}),!0)}platform(){const e=navigator.userAgent;return e.includes("Windows NT")?"windows":e.includes("Mac OS X")?"mac":"linux"}loadCompleted(){}bringToFront(){}closeWindow(){}setIsDocked(e,r){window.setTimeout(r,0)}showSurvey(e,r){window.setTimeout((()=>r({surveyShown:!1})),0)}canShowSurvey(e,r){window.setTimeout((()=>r({canShowSurvey:!1})),0)}setInspectedPageBounds(e){}inspectElementCompleted(){}setInjectedScriptForOrigin(e,r){}inspectedURLChanged(e){document.title=w(C.devtoolsS,{PH1:e.replace(/^https?:\/\//,"")})}copyText(e){null!=e&&navigator.clipboard.writeText(e)}openInNewTab(r){e.ParsedURL.schemeIs(r,"javascript:")||window.open(r,"_blank")}openSearchResultsInNewTab(r){e.Console.Console.instance().error("Search is not enabled in hosted mode. Please inspect using chrome://inspect")}showItemInFolder(r){e.Console.Console.instance().error("Show item in folder is not enabled in hosted mode. Please inspect using chrome://inspect")}save(e,r,t,n){let s=this.#e.get(e);s||(s=[],this.#e.set(e,s)),s.push(r),this.events.dispatchEventToListeners(o.SavedURL,{url:e,fileSystemPath:e})}append(e,r){const t=this.#e.get(e);t&&(t.push(r),this.events.dispatchEventToListeners(o.AppendedToURL,e))}close(e){const r=this.#e.get(e)||[];this.#e.delete(e);let t="";if(e)try{const r=n.StringUtilities.trimURL(e);t=n.StringUtilities.removeURLFragment(r)}catch(r){t=e}const o=document.createElement("a");o.download=t;const s=new Blob([r.join("")],{type:"text/plain"}),i=URL.createObjectURL(s);o.href=i,o.click(),URL.revokeObjectURL(i)}sendMessageToBackend(e){}recordCountHistogram(e,r,t,n,o){this.recordedCountHistograms.length>=100&&this.recordedCountHistograms.shift(),this.recordedCountHistograms.push({histogramName:e,sample:r,min:t,exclusiveMax:n,bucketSize:o})}recordEnumeratedHistogram(e,r,t){this.recordedEnumeratedHistograms.length>=100&&this.recordedEnumeratedHistograms.shift(),this.recordedEnumeratedHistograms.push({actionName:e,actionCode:r})}recordPerformanceHistogram(e,r){this.recordedPerformanceHistograms.length>=100&&this.recordedPerformanceHistograms.shift(),this.recordedPerformanceHistograms.push({histogramName:e,duration:r})}recordUserMetricsAction(e){}connectAutomaticFileSystem(e,r,t,n){queueMicrotask((()=>n({success:!1})))}disconnectAutomaticFileSystem(e){}requestFileSystems(){this.events.dispatchEventToListeners(o.FileSystemsLoaded,[])}addFileSystem(e){window.webkitRequestFileSystem(window.TEMPORARY,1048576,(e=>{this.#r=e;const r={fileSystemName:"sandboxedRequestedFileSystem",fileSystemPath:k,rootURL:"filesystem:devtools://devtools/isolated/",type:"overrides"};this.events.dispatchEventToListeners(o.FileSystemAdded,{fileSystem:r})}))}removeFileSystem(e){const r=e=>{e.forEach((e=>{e.isDirectory?e.removeRecursively((()=>{})):e.isFile&&e.remove((()=>{}))}))};this.#r&&this.#r.root.createReader().readEntries(r),this.#r=null,this.events.dispatchEventToListeners(o.FileSystemRemoved,k)}isolatedFileSystem(e,r){return this.#r}loadNetworkResource(e,r,t,n){fetch(e).then((async e=>{const r=await e.arrayBuffer();let t=r;if(function(e){const r=new Uint8Array(e);return!(!r||r.length<3)&&31===r[0]&&139===r[1]&&8===r[2]}(r)){const e=new DecompressionStream("gzip"),n=e.writable.getWriter();n.write(r),n.close(),t=e.readable}return await new Response(t).text()})).then((function(e){p(t,e),n({statusCode:200,headers:void 0,messageOverride:void 0,netError:void 0,netErrorName:void 0,urlValid:void 0})})).catch((function(){n({statusCode:404,headers:void 0,messageOverride:void 0,netError:void 0,netErrorName:void 0,urlValid:void 0})}))}registerPreference(e,r){}getPreferences(e){const r={};for(const e in window.localStorage)r[e]=window.localStorage[e];e(r)}getPreference(e,r){r(window.localStorage[e])}setPreference(e,r){window.localStorage[e]=r}removePreference(e){delete window.localStorage[e]}clearPreferences(){window.localStorage.clear()}getSyncInformation(e){if("getSyncInformationForTesting"in globalThis)return e(globalThis.getSyncInformationForTesting());e({isSyncActive:!1,arePreferencesSynced:!1})}getHostConfig(e){const r={devToolsVeLogging:{enabled:!0},thirdPartyCookieControls:{thirdPartyCookieMetadataEnabled:!0,thirdPartyCookieHeuristicsEnabled:!0,managedBlockThirdPartyCookies:"Unset"}};if("hostConfigForTesting"in globalThis){const{hostConfigForTesting:e}=globalThis;for(const t of Object.keys(e)){const n=t=>{"object"==typeof r[t]&&"object"==typeof e[t]?r[t]={...r[t],...e[t]}:r[t]=e[t]??r[t]};n(t)}}e(r)}upgradeDraggedFileSystemPermissions(e){}indexPath(e,r,t){}stopIndexing(e){}searchInPath(e,r,t){}zoomFactor(){return 1}zoomIn(){}zoomOut(){}resetZoom(){}setWhitelistedShortcuts(e){}setEyeDropperActive(e){}showCertificateViewer(e){}reattach(e){e()}readyForTest(){}connectionReady(){}setOpenNewWindowForPopups(e){}setDevicesDiscoveryConfig(e){}setDevicesUpdatesEnabled(e){}openRemotePage(e,r){}openNodeFrontend(){}showContextMenuAtPoint(e,r,t,n){throw new Error("Soft context menu should be used")}isHostedMode(){return!0}setAddExtensionCallback(e){}async initialTargetId(){return null}doAidaConversation(e,r,t){t({error:"Not implemented"})}registerAidaClientEvent(e,r){r({error:"Not implemented"})}recordImpression(e){}recordResize(e){}recordClick(e){}recordHover(e){}recordDrag(e){}recordChange(e){}recordKeyDown(e){}recordSettingAccess(e){}}let f=globalThis.InspectorFrontendHost;class y{constructor(){for(const e of s)this[e[1]]=this.dispatch.bind(this,e[0],e[2],e[3])}dispatch(e,r,t,...n){if(r.length<2){try{f.events.dispatchEventToListeners(e,n[0])}catch(e){console.error(e+" "+e.stack)}return}const o={};for(let e=0;e=0&&(o.options??={},o.options.temperature=i),s&&(o.options??={},o.options.model_id=s),o}static async checkAccessPreconditions(){if(!navigator.onLine)return"no-internet";const e=await new Promise((e=>f.getSyncInformation((r=>e(r)))));return e.accountEmail?e.isSyncPaused?"sync-is-paused":"available":"no-account-email"}async*fetch(e,r){if(!f.doAidaConversation)throw new Error("doAidaConversation is not available");const t=(()=>{let{promise:e,resolve:t,reject:n}=Promise.withResolvers();return r?.signal?.addEventListener("abort",(()=>{n(new O)}),{once:!0}),{write:async r=>{t(r),({promise:e,resolve:t,reject:n}=Promise.withResolvers())},close:async()=>{t(null)},read:()=>e,fail:e=>n(e)}})(),n=m(t);let o;f.doAidaConversation(JSON.stringify(e),n,(e=>{403===e.statusCode?t.fail(new Error("Server responded: permission denied")):e.error?t.fail(new Error(`Cannot send request: ${e.error} ${e.detail||""}`)):"net::ERR_TIMED_OUT"===e.netErrorName?t.fail(new Error("doAidaConversation timed out")):200!==e.statusCode?t.fail(new Error(`Request failed: ${JSON.stringify(e)}`)):t.close()}));const s=[];let i=!1;const a=[];let d={rpcGlobalId:0};for(;o=await t.read();){let e,r=!1;if(o.length){o.startsWith(",")&&(o=o.slice(1)),o.startsWith("[")||(o="["+o),o.endsWith("]")||(o+="]");try{e=JSON.parse(o)}catch(e){throw new Error("Cannot parse chunk: "+o,{cause:e})}for(const t of e){if("metadata"in t&&(d=t.metadata,d?.attributionMetadata?.attributionAction===T.BLOCK))throw new N;if("textChunk"in t)i&&(s.push(_),i=!1),s.push(t.textChunk.text),r=!0;else if("codeChunk"in t)i||(s.push(_),i=!0),s.push(t.codeChunk.code),r=!0;else{if(!("functionCallChunk"in t))throw"error"in t?new Error(`Server responded: ${JSON.stringify(t)}`):new Error("Unknown chunk result");a.push({name:t.functionCallChunk.functionCall.name,args:t.functionCallChunk.functionCall.args})}}r&&(yield{explanation:s.join("")+(i?_:""),metadata:d,completed:!1})}}yield{explanation:s.join("")+(i?_:""),metadata:d,functionCalls:a.length?a:void 0,completed:!0}}registerClientEvent(e){const{promise:r,resolve:t}=Promise.withResolvers();return f.registerAidaClientEvent(JSON.stringify({client:M,event_time:(new Date).toISOString(),...e}),t),r}}let D;class H extends e.ObjectWrapper.ObjectWrapper{#t;#n;constructor(){super()}static instance(){return D||(D=new H),D}addEventListener(e,r){const t=!this.hasEventListeners(e),n=super.addEventListener(e,r);return t&&(window.clearTimeout(this.#t),this.pollAidaAvailability()),n}removeEventListener(e,r){super.removeEventListener(e,r),this.hasEventListeners(e)||window.clearTimeout(this.#t)}async pollAidaAvailability(){this.#t=window.setTimeout((()=>this.pollAidaAvailability()),2e3);const e=await L.checkAccessPreconditions();if(e!==this.#n){this.#n=e;const t=await new Promise((e=>f.getHostConfig(e)));Object.assign(r.Runtime.hostConfig,t),this.dispatchEventToListeners("aidaAvailabilityChanged")}}}var U=Object.freeze({__proto__:null,AidaAbortError:O,AidaBlockError:N,AidaClient:L,CLIENT_NAME:M,get CitationSourceType(){return x},get ClientFeature(){return P},get FunctionalityType(){return A},HostConfigTracker:H,get RecitationAction(){return T},get Role(){return b},get UserTier(){return R},convertToUserTierEnum:function(e){if(e)switch(e){case"TESTERS":return R.TESTERS;case"BETA":return R.BETA;case"PUBLIC":return R.PUBLIC}return R.BETA}});let W,B,V,G,j;function q(){return W||(W=f.platform()),W}var X=Object.freeze({__proto__:null,fontFamily:function(){if(j)return j;switch(q()){case"linux":j="Roboto, Ubuntu, Arial, sans-serif";break;case"mac":j="'Lucida Grande', sans-serif";break;case"windows":j="'Segoe UI', Tahoma, sans-serif"}return j},isCustomDevtoolsFrontend:function(){return void 0===G&&(G=window.location.toString().startsWith("devtools://devtools/custom/")),G},isMac:function(){return void 0===B&&(B="mac"===q()),B},isWin:function(){return void 0===V&&(V="windows"===q()),V},platform:q,setPlatformForTests:function(e){W=e,B=void 0,V=void 0}});let z=null;function K(){return null===z&&(z=new $),z}class ${#o="error";#s=new Set;#i=null;#a=null;#d="rn_inspector";#c={};#l=new Map;isEnabled(){return!0===globalThis.enableReactNativePerfMetrics}addEventListener(e){this.#s.add(e);return()=>{this.#s.delete(e)}}removeAllEventListeners(){this.#s.clear()}sendEvent(e){if(!0!==globalThis.enableReactNativePerfMetrics)return;const r=this.#u(e),t=[];for(const e of this.#s)try{e(r)}catch(e){t.push(e)}if(t.length>0){const e=new AggregateError(t);console.error("Error occurred when calling event listeners",e)}}registerPerfMetricsGlobalPostMessageHandler(){!0===globalThis.enableReactNativePerfMetrics&&!0===globalThis.enableReactNativePerfMetricsGlobalPostMessage&&this.addEventListener((e=>{window.postMessage({event:e,tag:"react-native-chrome-devtools-perf-metrics"},window.location.origin)}))}registerGlobalErrorReporting(){window.addEventListener("error",(e=>{const[r,t]=Y(`[RNPerfMetrics] uncaught error: ${e.message}`,e.error);this.sendEvent({eventName:"Browser.Error",params:{type:"error",message:r,error:t}})}),{passive:!0}),window.addEventListener("unhandledrejection",(e=>{const[r,t]=Y("[RNPerfMetrics] unhandled promise rejection",e.reason);this.sendEvent({eventName:"Browser.Error",params:{type:"rejectedPromise",message:r,error:t}})}),{passive:!0});const e=globalThis.console,r=e[this.#o];e[this.#o]=(...t)=>{try{const e=t[0],[r,n]=Y("[RNPerfMetrics] console.error",e);this.sendEvent({eventName:"Browser.Error",params:{message:r,error:n,type:"consoleError"}})}catch(e){const[r,t]=Y("[RNPerfMetrics] Error handling console.error",e);this.sendEvent({eventName:"Browser.Error",params:{message:r,error:t,type:"consoleError"}})}finally{r.apply(e,t)}}}setLaunchId(e){this.#i=e}setAppId(e){this.#a=e}setTelemetryInfo(e){this.#c=e}entryPointLoadingStarted(e){this.#d=e,this.sendEvent({eventName:"Entrypoint.LoadingStarted",entryPoint:e})}entryPointLoadingFinished(e){this.sendEvent({eventName:"Entrypoint.LoadingFinished",entryPoint:e})}browserVisibilityChanged(e){this.sendEvent({eventName:"Browser.VisibilityChange",params:{visibilityState:e}})}remoteDebuggingTerminated(e={}){this.sendEvent({eventName:"Connection.DebuggingTerminated",params:e})}developerResourceLoadingStarted(e,r){const t=Q(e);this.sendEvent({eventName:"DeveloperResource.LoadingStarted",params:{url:t,loadingMethod:r}})}developerResourceLoadingFinished(e,r,t){const n=Q(e);this.sendEvent({eventName:"DeveloperResource.LoadingFinished",params:{url:n,loadingMethod:r,success:t.success,errorMessage:t.errorDescription?.message}})}developerResourcesStartupLoadingFinishedEvent(e,r){this.sendEvent({eventName:"DeveloperResources.StartupLoadingFinished",params:{numResources:e,timeSinceLaunch:r}})}fuseboxSetClientMetadataStarted(){this.sendEvent({eventName:"FuseboxSetClientMetadataStarted"})}fuseboxSetClientMetadataFinished(e,r){if(e)this.sendEvent({eventName:"FuseboxSetClientMetadataFinished",params:{success:!0}});else{const[e,t]=Y("[RNPerfMetrics] Fusebox setClientMetadata failed",r);this.sendEvent({eventName:"FuseboxSetClientMetadataFinished",params:{success:!1,error:t,errorMessage:e}})}}traceRequested(){this.sendEvent({eventName:"Tracing.TraceRequested"})}heapSnapshotStarted(){this.sendEvent({eventName:"MemoryPanelActionStarted",params:{action:"snapshot"}})}heapSnapshotFinished(e){this.sendEvent({eventName:"MemoryPanelActionFinished",params:{action:"snapshot",success:e}})}heapProfilingStarted(){this.sendEvent({eventName:"MemoryPanelActionStarted",params:{action:"profiling"}})}heapProfilingFinished(e){this.sendEvent({eventName:"MemoryPanelActionFinished",params:{action:"profiling",success:e}})}heapSamplingStarted(){this.sendEvent({eventName:"MemoryPanelActionStarted",params:{action:"sampling"}})}heapSamplingFinished(e){this.sendEvent({eventName:"MemoryPanelActionFinished",params:{action:"sampling",success:e}})}stackTraceSymbolicationSucceeded(e){this.sendEvent({eventName:"StackTraceSymbolicationSucceeded",params:{specialHermesFrameTypes:e}})}stackTraceSymbolicationFailed(e,r,t){this.sendEvent({eventName:"StackTraceSymbolicationFailed",params:{stackTrace:e,line:r,reason:t}})}stackTraceFrameUrlResolutionSucceeded(){this.sendEvent({eventName:"StackTraceFrameUrlResolutionSucceeded"})}stackTraceFrameUrlResolutionFailed(e){this.sendEvent({eventName:"StackTraceFrameUrlResolutionFailed",params:{uniqueUrls:e}})}manualBreakpointSetSucceeded(e){this.sendEvent({eventName:"ManualBreakpointSetSucceeded",params:{bpSettingDuration:e}})}stackTraceFrameClicked(e){this.sendEvent({eventName:"StackTraceFrameClicked",params:{isLinkified:e}})}panelShown(e,r){}panelShownInLocation(e,r){this.sendEvent({eventName:"PanelShown",params:{location:r,newPanelName:e}}),this.#l.set(r,e)}#u(e){return{...e,...{timestamp:performance.timeOrigin+performance.now(),launchId:this.#i,appId:this.#a,entryPoint:this.#d,telemetryInfo:this.#c,currentPanels:this.#l}}}}function Q(e){const{url:r}=e;return"http"===e.scheme||"https"===e.scheme?r:`${r.slice(0,100)} …(omitted ${r.length-100} characters)`}function Y(e,r){if(r instanceof Error){return[`${e}: ${r.message}`,r]}const t=`${e}: ${String(r)}`;return[t,new Error(t,{cause:r})]}var J,Z,ee,re,te,ne,oe,se,ie,ae,de,ce,le,ue=Object.freeze({__proto__:null,getInstance:K});class me{#m;#g;#p;constructor(){this.#m=!1,this.#g=!1,this.#p=""}panelShown(e,r){const t=Z[e]||0;f.recordEnumeratedHistogram("DevTools.PanelShown",t,Z.MAX_VALUE),f.recordUserMetricsAction("DevTools_PanelShown_"+e),r||(this.#m=!0),K().panelShown(e,r)}panelShownInLocation(e,r){const t=ee[`${e}-${r}`]||0;f.recordEnumeratedHistogram("DevTools.PanelShownInLocation",t,ee.MAX_VALUE),K().panelShownInLocation(e,r)}settingsPanelShown(e){this.panelShown("settings-"+e)}sourcesPanelFileDebugged(e){const r=e&&te[e]||te.Unknown;f.recordEnumeratedHistogram("DevTools.SourcesPanelFileDebugged",r,te.MAX_VALUE)}sourcesPanelFileOpened(e){const r=e&&te[e]||te.Unknown;f.recordEnumeratedHistogram("DevTools.SourcesPanelFileOpened",r,te.MAX_VALUE)}networkPanelResponsePreviewOpened(e){const r=e&&te[e]||te.Unknown;f.recordEnumeratedHistogram("DevTools.NetworkPanelResponsePreviewOpened",r,te.MAX_VALUE)}actionTaken(e){f.recordEnumeratedHistogram("DevTools.ActionTaken",e,J.MAX_VALUE)}panelLoaded(e,r){this.#g||e!==this.#p||(this.#g=!0,requestAnimationFrame((()=>{window.setTimeout((()=>{performance.mark(r),this.#m||f.recordPerformanceHistogram(r,performance.now())}),0)})))}setLaunchPanel(e){this.#p=e}performanceTraceLoad(e){f.recordPerformanceHistogram("DevTools.TraceLoad",e.duration)}keybindSetSettingChanged(e){const r=ne[e]||0;f.recordEnumeratedHistogram("DevTools.KeybindSetSettingChanged",r,ne.MAX_VALUE)}keyboardShortcutFired(e){const r=oe[e]||oe.OtherShortcut;f.recordEnumeratedHistogram("DevTools.KeyboardShortcutFired",r,oe.MAX_VALUE)}issuesPanelOpenedFrom(e){f.recordEnumeratedHistogram("DevTools.IssuesPanelOpenedFrom",e,6)}issuesPanelIssueExpanded(e){if(void 0===e)return;const r=ie[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.IssuesPanelIssueExpanded",r,ie.MAX_VALUE)}issuesPanelResourceOpened(e,r){const t=ae[e+r];void 0!==t&&f.recordEnumeratedHistogram("DevTools.IssuesPanelResourceOpened",t,ae.MAX_VALUE)}issueCreated(e){const r=de[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.IssueCreated",r,de.MAX_VALUE)}experimentEnabledAtLaunch(e){const r=se[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.ExperimentEnabledAtLaunch",r,se.MAX_VALUE)}navigationSettingAtFirstTimelineLoad(e){f.recordEnumeratedHistogram("DevTools.TimelineNavigationSettingState",e,4)}experimentDisabledAtLaunch(e){const r=se[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.ExperimentDisabledAtLaunch",r,se.MAX_VALUE)}experimentChanged(e,r){const t=se[e];if(void 0===t)return;const n=r?"DevTools.ExperimentEnabled":"DevTools.ExperimentDisabled";f.recordEnumeratedHistogram(n,t,se.MAX_VALUE)}developerResourceLoaded(e){e>=8||f.recordEnumeratedHistogram("DevTools.DeveloperResourceLoaded",e,8)}developerResourceScheme(e){e>=9||f.recordEnumeratedHistogram("DevTools.DeveloperResourceScheme",e,9)}language(e){const r=ce[e];void 0!==r&&f.recordEnumeratedHistogram("DevTools.Language",r,ce.MAX_VALUE)}syncSetting(e){f.getSyncInformation((r=>{let t=1;r.isSyncActive&&!r.arePreferencesSynced?t=2:r.isSyncActive&&r.arePreferencesSynced&&(t=e?4:3),f.recordEnumeratedHistogram("DevTools.SyncSetting",t,5)}))}recordingAssertion(e){f.recordEnumeratedHistogram("DevTools.RecordingAssertion",e,4)}recordingToggled(e){f.recordEnumeratedHistogram("DevTools.RecordingToggled",e,3)}recordingReplayFinished(e){f.recordEnumeratedHistogram("DevTools.RecordingReplayFinished",e,5)}recordingReplaySpeed(e){f.recordEnumeratedHistogram("DevTools.RecordingReplaySpeed",e,5)}recordingReplayStarted(e){f.recordEnumeratedHistogram("DevTools.RecordingReplayStarted",e,4)}recordingEdited(e){f.recordEnumeratedHistogram("DevTools.RecordingEdited",e,11)}recordingExported(e){f.recordEnumeratedHistogram("DevTools.RecordingExported",e,6)}recordingCodeToggled(e){f.recordEnumeratedHistogram("DevTools.RecordingCodeToggled",e,3)}recordingCopiedToClipboard(e){f.recordEnumeratedHistogram("DevTools.RecordingCopiedToClipboard",e,9)}cssHintShown(e){f.recordEnumeratedHistogram("DevTools.CSSHintShown",e,14)}lighthouseModeRun(e){f.recordEnumeratedHistogram("DevTools.LighthouseModeRun",e,4)}lighthouseCategoryUsed(e){f.recordEnumeratedHistogram("DevTools.LighthouseCategoryUsed",e,6)}swatchActivated(e){f.recordEnumeratedHistogram("DevTools.SwatchActivated",e,11)}animationPlaybackRateChanged(e){f.recordEnumeratedHistogram("DevTools.AnimationPlaybackRateChanged",e,4)}animationPointDragged(e){f.recordEnumeratedHistogram("DevTools.AnimationPointDragged",e,5)}workspacesPopulated(e){f.recordPerformanceHistogram("DevTools.Workspaces.PopulateWallClocktime",e)}visualLoggingProcessingDone(e){f.recordPerformanceHistogram("DevTools.VisualLogging.ProcessingTime",e)}freestylerQueryLength(e){f.recordCountHistogram("DevTools.Freestyler.QueryLength",e,0,1e5,100)}freestylerEvalResponseSize(e){f.recordCountHistogram("DevTools.Freestyler.EvalResponseSize",e,0,1e5,100)}}!function(e){e[e.WindowDocked=1]="WindowDocked",e[e.WindowUndocked=2]="WindowUndocked",e[e.ScriptsBreakpointSet=3]="ScriptsBreakpointSet",e[e.TimelineStarted=4]="TimelineStarted",e[e.ProfilesCPUProfileTaken=5]="ProfilesCPUProfileTaken",e[e.ProfilesHeapProfileTaken=6]="ProfilesHeapProfileTaken",e[e.ConsoleEvaluated=8]="ConsoleEvaluated",e[e.FileSavedInWorkspace=9]="FileSavedInWorkspace",e[e.DeviceModeEnabled=10]="DeviceModeEnabled",e[e.AnimationsPlaybackRateChanged=11]="AnimationsPlaybackRateChanged",e[e.RevisionApplied=12]="RevisionApplied",e[e.FileSystemDirectoryContentReceived=13]="FileSystemDirectoryContentReceived",e[e.StyleRuleEdited=14]="StyleRuleEdited",e[e.CommandEvaluatedInConsolePanel=15]="CommandEvaluatedInConsolePanel",e[e.DOMPropertiesExpanded=16]="DOMPropertiesExpanded",e[e.ResizedViewInResponsiveMode=17]="ResizedViewInResponsiveMode",e[e.TimelinePageReloadStarted=18]="TimelinePageReloadStarted",e[e.ConnectToNodeJSFromFrontend=19]="ConnectToNodeJSFromFrontend",e[e.ConnectToNodeJSDirectly=20]="ConnectToNodeJSDirectly",e[e.CpuThrottlingEnabled=21]="CpuThrottlingEnabled",e[e.CpuProfileNodeFocused=22]="CpuProfileNodeFocused",e[e.CpuProfileNodeExcluded=23]="CpuProfileNodeExcluded",e[e.SelectFileFromFilePicker=24]="SelectFileFromFilePicker",e[e.SelectCommandFromCommandMenu=25]="SelectCommandFromCommandMenu",e[e.ChangeInspectedNodeInElementsPanel=26]="ChangeInspectedNodeInElementsPanel",e[e.StyleRuleCopied=27]="StyleRuleCopied",e[e.CoverageStarted=28]="CoverageStarted",e[e.LighthouseStarted=29]="LighthouseStarted",e[e.LighthouseFinished=30]="LighthouseFinished",e[e.ShowedThirdPartyBadges=31]="ShowedThirdPartyBadges",e[e.LighthouseViewTrace=32]="LighthouseViewTrace",e[e.FilmStripStartedRecording=33]="FilmStripStartedRecording",e[e.CoverageReportFiltered=34]="CoverageReportFiltered",e[e.CoverageStartedPerBlock=35]="CoverageStartedPerBlock",e[e["SettingsOpenedFromGear-deprecated"]=36]="SettingsOpenedFromGear-deprecated",e[e["SettingsOpenedFromMenu-deprecated"]=37]="SettingsOpenedFromMenu-deprecated",e[e["SettingsOpenedFromCommandMenu-deprecated"]=38]="SettingsOpenedFromCommandMenu-deprecated",e[e.TabMovedToDrawer=39]="TabMovedToDrawer",e[e.TabMovedToMainPanel=40]="TabMovedToMainPanel",e[e.CaptureCssOverviewClicked=41]="CaptureCssOverviewClicked",e[e.VirtualAuthenticatorEnvironmentEnabled=42]="VirtualAuthenticatorEnvironmentEnabled",e[e.SourceOrderViewActivated=43]="SourceOrderViewActivated",e[e.UserShortcutAdded=44]="UserShortcutAdded",e[e.ShortcutRemoved=45]="ShortcutRemoved",e[e.ShortcutModified=46]="ShortcutModified",e[e.CustomPropertyLinkClicked=47]="CustomPropertyLinkClicked",e[e.CustomPropertyEdited=48]="CustomPropertyEdited",e[e.ServiceWorkerNetworkRequestClicked=49]="ServiceWorkerNetworkRequestClicked",e[e.ServiceWorkerNetworkRequestClosedQuickly=50]="ServiceWorkerNetworkRequestClosedQuickly",e[e.NetworkPanelServiceWorkerRespondWith=51]="NetworkPanelServiceWorkerRespondWith",e[e.NetworkPanelCopyValue=52]="NetworkPanelCopyValue",e[e.ConsoleSidebarOpened=53]="ConsoleSidebarOpened",e[e.PerfPanelTraceImported=54]="PerfPanelTraceImported",e[e.PerfPanelTraceExported=55]="PerfPanelTraceExported",e[e.StackFrameRestarted=56]="StackFrameRestarted",e[e.CaptureTestProtocolClicked=57]="CaptureTestProtocolClicked",e[e.BreakpointRemovedFromRemoveButton=58]="BreakpointRemovedFromRemoveButton",e[e.BreakpointGroupExpandedStateChanged=59]="BreakpointGroupExpandedStateChanged",e[e.HeaderOverrideFileCreated=60]="HeaderOverrideFileCreated",e[e.HeaderOverrideEnableEditingClicked=61]="HeaderOverrideEnableEditingClicked",e[e.HeaderOverrideHeaderAdded=62]="HeaderOverrideHeaderAdded",e[e.HeaderOverrideHeaderEdited=63]="HeaderOverrideHeaderEdited",e[e.HeaderOverrideHeaderRemoved=64]="HeaderOverrideHeaderRemoved",e[e.HeaderOverrideHeadersFileEdited=65]="HeaderOverrideHeadersFileEdited",e[e.PersistenceNetworkOverridesEnabled=66]="PersistenceNetworkOverridesEnabled",e[e.PersistenceNetworkOverridesDisabled=67]="PersistenceNetworkOverridesDisabled",e[e.BreakpointRemovedFromContextMenu=68]="BreakpointRemovedFromContextMenu",e[e.BreakpointsInFileRemovedFromRemoveButton=69]="BreakpointsInFileRemovedFromRemoveButton",e[e.BreakpointsInFileRemovedFromContextMenu=70]="BreakpointsInFileRemovedFromContextMenu",e[e.BreakpointsInFileCheckboxToggled=71]="BreakpointsInFileCheckboxToggled",e[e.BreakpointsInFileEnabledDisabledFromContextMenu=72]="BreakpointsInFileEnabledDisabledFromContextMenu",e[e.BreakpointConditionEditedFromSidebar=73]="BreakpointConditionEditedFromSidebar",e[e.WorkspaceTabAddFolder=74]="WorkspaceTabAddFolder",e[e.WorkspaceTabRemoveFolder=75]="WorkspaceTabRemoveFolder",e[e.OverrideTabAddFolder=76]="OverrideTabAddFolder",e[e.OverrideTabRemoveFolder=77]="OverrideTabRemoveFolder",e[e.WorkspaceSourceSelected=78]="WorkspaceSourceSelected",e[e.OverridesSourceSelected=79]="OverridesSourceSelected",e[e.StyleSheetInitiatorLinkClicked=80]="StyleSheetInitiatorLinkClicked",e[e.BreakpointRemovedFromGutterContextMenu=81]="BreakpointRemovedFromGutterContextMenu",e[e.BreakpointRemovedFromGutterToggle=82]="BreakpointRemovedFromGutterToggle",e[e.StylePropertyInsideKeyframeEdited=83]="StylePropertyInsideKeyframeEdited",e[e.OverrideContentFromSourcesContextMenu=84]="OverrideContentFromSourcesContextMenu",e[e.OverrideContentFromNetworkContextMenu=85]="OverrideContentFromNetworkContextMenu",e[e.OverrideScript=86]="OverrideScript",e[e.OverrideStyleSheet=87]="OverrideStyleSheet",e[e.OverrideDocument=88]="OverrideDocument",e[e.OverrideFetchXHR=89]="OverrideFetchXHR",e[e.OverrideImage=90]="OverrideImage",e[e.OverrideFont=91]="OverrideFont",e[e.OverrideContentContextMenuSetup=92]="OverrideContentContextMenuSetup",e[e.OverrideContentContextMenuAbandonSetup=93]="OverrideContentContextMenuAbandonSetup",e[e.OverrideContentContextMenuActivateDisabled=94]="OverrideContentContextMenuActivateDisabled",e[e.OverrideContentContextMenuOpenExistingFile=95]="OverrideContentContextMenuOpenExistingFile",e[e.OverrideContentContextMenuSaveNewFile=96]="OverrideContentContextMenuSaveNewFile",e[e.ShowAllOverridesFromSourcesContextMenu=97]="ShowAllOverridesFromSourcesContextMenu",e[e.ShowAllOverridesFromNetworkContextMenu=98]="ShowAllOverridesFromNetworkContextMenu",e[e.AnimationGroupsCleared=99]="AnimationGroupsCleared",e[e.AnimationsPaused=100]="AnimationsPaused",e[e.AnimationsResumed=101]="AnimationsResumed",e[e.AnimatedNodeDescriptionClicked=102]="AnimatedNodeDescriptionClicked",e[e.AnimationGroupScrubbed=103]="AnimationGroupScrubbed",e[e.AnimationGroupReplayed=104]="AnimationGroupReplayed",e[e.OverrideTabDeleteFolderContextMenu=105]="OverrideTabDeleteFolderContextMenu",e[e.WorkspaceDropFolder=107]="WorkspaceDropFolder",e[e.WorkspaceSelectFolder=108]="WorkspaceSelectFolder",e[e.OverrideContentContextMenuSourceMappedWarning=109]="OverrideContentContextMenuSourceMappedWarning",e[e.OverrideContentContextMenuRedirectToDeployed=110]="OverrideContentContextMenuRedirectToDeployed",e[e.NewStyleRuleAdded=111]="NewStyleRuleAdded",e[e.TraceExpanded=112]="TraceExpanded",e[e.InsightConsoleMessageShown=113]="InsightConsoleMessageShown",e[e.InsightRequestedViaContextMenu=114]="InsightRequestedViaContextMenu",e[e.InsightRequestedViaHoverButton=115]="InsightRequestedViaHoverButton",e[e.InsightRatedPositive=117]="InsightRatedPositive",e[e.InsightRatedNegative=118]="InsightRatedNegative",e[e.InsightClosed=119]="InsightClosed",e[e.InsightErrored=120]="InsightErrored",e[e.InsightHoverButtonShown=121]="InsightHoverButtonShown",e[e.SelfXssWarningConsoleMessageShown=122]="SelfXssWarningConsoleMessageShown",e[e.SelfXssWarningDialogShown=123]="SelfXssWarningDialogShown",e[e.SelfXssAllowPastingInConsole=124]="SelfXssAllowPastingInConsole",e[e.SelfXssAllowPastingInDialog=125]="SelfXssAllowPastingInDialog",e[e.ToggleEmulateFocusedPageFromStylesPaneOn=126]="ToggleEmulateFocusedPageFromStylesPaneOn",e[e.ToggleEmulateFocusedPageFromStylesPaneOff=127]="ToggleEmulateFocusedPageFromStylesPaneOff",e[e.ToggleEmulateFocusedPageFromRenderingTab=128]="ToggleEmulateFocusedPageFromRenderingTab",e[e.ToggleEmulateFocusedPageFromCommandMenu=129]="ToggleEmulateFocusedPageFromCommandMenu",e[e.InsightGenerated=130]="InsightGenerated",e[e.InsightErroredApi=131]="InsightErroredApi",e[e.InsightErroredMarkdown=132]="InsightErroredMarkdown",e[e.ToggleShowWebVitals=133]="ToggleShowWebVitals",e[e.InsightErroredPermissionDenied=134]="InsightErroredPermissionDenied",e[e.InsightErroredCannotSend=135]="InsightErroredCannotSend",e[e.InsightErroredRequestFailed=136]="InsightErroredRequestFailed",e[e.InsightErroredCannotParseChunk=137]="InsightErroredCannotParseChunk",e[e.InsightErroredUnknownChunk=138]="InsightErroredUnknownChunk",e[e.InsightErroredOther=139]="InsightErroredOther",e[e.AutofillReceived=140]="AutofillReceived",e[e.AutofillReceivedAndTabAutoOpened=141]="AutofillReceivedAndTabAutoOpened",e[e.AnimationGroupSelected=142]="AnimationGroupSelected",e[e.ScrollDrivenAnimationGroupSelected=143]="ScrollDrivenAnimationGroupSelected",e[e.ScrollDrivenAnimationGroupScrubbed=144]="ScrollDrivenAnimationGroupScrubbed",e[e.AiAssistanceOpenedFromElementsPanel=145]="AiAssistanceOpenedFromElementsPanel",e[e.AiAssistanceOpenedFromStylesTab=146]="AiAssistanceOpenedFromStylesTab",e[e.ConsoleFilterByContext=147]="ConsoleFilterByContext",e[e.ConsoleFilterBySource=148]="ConsoleFilterBySource",e[e.ConsoleFilterByUrl=149]="ConsoleFilterByUrl",e[e.InsightConsentReminderShown=150]="InsightConsentReminderShown",e[e.InsightConsentReminderCanceled=151]="InsightConsentReminderCanceled",e[e.InsightConsentReminderConfirmed=152]="InsightConsentReminderConfirmed",e[e.InsightsOnboardingShown=153]="InsightsOnboardingShown",e[e.InsightsOnboardingCanceledOnPage1=154]="InsightsOnboardingCanceledOnPage1",e[e.InsightsOnboardingCanceledOnPage2=155]="InsightsOnboardingCanceledOnPage2",e[e.InsightsOnboardingConfirmed=156]="InsightsOnboardingConfirmed",e[e.InsightsOnboardingNextPage=157]="InsightsOnboardingNextPage",e[e.InsightsOnboardingPrevPage=158]="InsightsOnboardingPrevPage",e[e.InsightsOnboardingFeatureDisabled=159]="InsightsOnboardingFeatureDisabled",e[e.InsightsOptInTeaserShown=160]="InsightsOptInTeaserShown",e[e.InsightsOptInTeaserSettingsLinkClicked=161]="InsightsOptInTeaserSettingsLinkClicked",e[e.InsightsOptInTeaserConfirmedInSettings=162]="InsightsOptInTeaserConfirmedInSettings",e[e.InsightsReminderTeaserShown=163]="InsightsReminderTeaserShown",e[e.InsightsReminderTeaserConfirmed=164]="InsightsReminderTeaserConfirmed",e[e.InsightsReminderTeaserCanceled=165]="InsightsReminderTeaserCanceled",e[e.InsightsReminderTeaserSettingsLinkClicked=166]="InsightsReminderTeaserSettingsLinkClicked",e[e.InsightsReminderTeaserAbortedInSettings=167]="InsightsReminderTeaserAbortedInSettings",e[e.GeneratingInsightWithoutDisclaimer=168]="GeneratingInsightWithoutDisclaimer",e[e.AiAssistanceOpenedFromElementsPanelFloatingButton=169]="AiAssistanceOpenedFromElementsPanelFloatingButton",e[e.AiAssistanceOpenedFromNetworkPanel=170]="AiAssistanceOpenedFromNetworkPanel",e[e.AiAssistanceOpenedFromSourcesPanel=171]="AiAssistanceOpenedFromSourcesPanel",e[e.AiAssistanceOpenedFromSourcesPanelFloatingButton=172]="AiAssistanceOpenedFromSourcesPanelFloatingButton",e[e.AiAssistanceOpenedFromPerformancePanel=173]="AiAssistanceOpenedFromPerformancePanel",e[e.AiAssistanceOpenedFromNetworkPanelFloatingButton=174]="AiAssistanceOpenedFromNetworkPanelFloatingButton",e[e.AiAssistancePanelOpened=175]="AiAssistancePanelOpened",e[e.AiAssistanceQuerySubmitted=176]="AiAssistanceQuerySubmitted",e[e.AiAssistanceAnswerReceived=177]="AiAssistanceAnswerReceived",e[e.AiAssistanceDynamicSuggestionClicked=178]="AiAssistanceDynamicSuggestionClicked",e[e.AiAssistanceSideEffectConfirmed=179]="AiAssistanceSideEffectConfirmed",e[e.AiAssistanceSideEffectRejected=180]="AiAssistanceSideEffectRejected",e[e.AiAssistanceError=181]="AiAssistanceError",e[e.AiAssistanceOpenedFromPerformanceInsight=182]="AiAssistanceOpenedFromPerformanceInsight",e[e.MAX_VALUE=183]="MAX_VALUE"}(J||(J={})),function(e){e[e.elements=1]="elements",e[e.resources=2]="resources",e[e.network=3]="network",e[e.sources=4]="sources",e[e.timeline=5]="timeline",e[e["heap-profiler"]=6]="heap-profiler",e[e.console=8]="console",e[e.layers=9]="layers",e[e["console-view"]=10]="console-view",e[e.animations=11]="animations",e[e["network.config"]=12]="network.config",e[e.rendering=13]="rendering",e[e.sensors=14]="sensors",e[e["sources.search"]=15]="sources.search",e[e.security=16]="security",e[e["js-profiler"]=17]="js-profiler",e[e.lighthouse=18]="lighthouse",e[e.coverage=19]="coverage",e[e["protocol-monitor"]=20]="protocol-monitor",e[e["remote-devices"]=21]="remote-devices",e[e["web-audio"]=22]="web-audio",e[e["changes.changes"]=23]="changes.changes",e[e["performance.monitor"]=24]="performance.monitor",e[e["release-note"]=25]="release-note",e[e["live-heap-profile"]=26]="live-heap-profile",e[e["sources.quick"]=27]="sources.quick",e[e["network.blocked-urls"]=28]="network.blocked-urls",e[e["settings-preferences"]=29]="settings-preferences",e[e["settings-workspace"]=30]="settings-workspace",e[e["settings-experiments"]=31]="settings-experiments",e[e["settings-blackbox"]=32]="settings-blackbox",e[e["settings-devices"]=33]="settings-devices",e[e["settings-throttling-conditions"]=34]="settings-throttling-conditions",e[e["settings-emulation-locations"]=35]="settings-emulation-locations",e[e["settings-shortcuts"]=36]="settings-shortcuts",e[e["issues-pane"]=37]="issues-pane",e[e["settings-keybinds"]=38]="settings-keybinds",e[e.cssoverview=39]="cssoverview",e[e["chrome-recorder"]=40]="chrome-recorder",e[e["trust-tokens"]=41]="trust-tokens",e[e["reporting-api"]=42]="reporting-api",e[e["interest-groups"]=43]="interest-groups",e[e["back-forward-cache"]=44]="back-forward-cache",e[e["service-worker-cache"]=45]="service-worker-cache",e[e["background-service-background-fetch"]=46]="background-service-background-fetch",e[e["background-service-background-sync"]=47]="background-service-background-sync",e[e["background-service-push-messaging"]=48]="background-service-push-messaging",e[e["background-service-notifications"]=49]="background-service-notifications",e[e["background-service-payment-handler"]=50]="background-service-payment-handler",e[e["background-service-periodic-background-sync"]=51]="background-service-periodic-background-sync",e[e["service-workers"]=52]="service-workers",e[e["app-manifest"]=53]="app-manifest",e[e.storage=54]="storage",e[e.cookies=55]="cookies",e[e["frame-details"]=56]="frame-details",e[e["frame-resource"]=57]="frame-resource",e[e["frame-window"]=58]="frame-window",e[e["frame-worker"]=59]="frame-worker",e[e["dom-storage"]=60]="dom-storage",e[e["indexed-db"]=61]="indexed-db",e[e["web-sql"]=62]="web-sql",e[e["performance-insights"]=63]="performance-insights",e[e.preloading=64]="preloading",e[e["bounce-tracking-mitigations"]=65]="bounce-tracking-mitigations",e[e["developer-resources"]=66]="developer-resources",e[e["autofill-view"]=67]="autofill-view",e[e.MAX_VALUE=68]="MAX_VALUE"}(Z||(Z={})),function(e){e[e["elements-main"]=1]="elements-main",e[e["elements-drawer"]=2]="elements-drawer",e[e["resources-main"]=3]="resources-main",e[e["resources-drawer"]=4]="resources-drawer",e[e["network-main"]=5]="network-main",e[e["network-drawer"]=6]="network-drawer",e[e["sources-main"]=7]="sources-main",e[e["sources-drawer"]=8]="sources-drawer",e[e["timeline-main"]=9]="timeline-main",e[e["timeline-drawer"]=10]="timeline-drawer",e[e["heap_profiler-main"]=11]="heap_profiler-main",e[e["heap_profiler-drawer"]=12]="heap_profiler-drawer",e[e["console-main"]=13]="console-main",e[e["console-drawer"]=14]="console-drawer",e[e["layers-main"]=15]="layers-main",e[e["layers-drawer"]=16]="layers-drawer",e[e["console-view-main"]=17]="console-view-main",e[e["console-view-drawer"]=18]="console-view-drawer",e[e["animations-main"]=19]="animations-main",e[e["animations-drawer"]=20]="animations-drawer",e[e["network.config-main"]=21]="network.config-main",e[e["network.config-drawer"]=22]="network.config-drawer",e[e["rendering-main"]=23]="rendering-main",e[e["rendering-drawer"]=24]="rendering-drawer",e[e["sensors-main"]=25]="sensors-main",e[e["sensors-drawer"]=26]="sensors-drawer",e[e["sources.search-main"]=27]="sources.search-main",e[e["sources.search-drawer"]=28]="sources.search-drawer",e[e["security-main"]=29]="security-main",e[e["security-drawer"]=30]="security-drawer",e[e["lighthouse-main"]=33]="lighthouse-main",e[e["lighthouse-drawer"]=34]="lighthouse-drawer",e[e["coverage-main"]=35]="coverage-main",e[e["coverage-drawer"]=36]="coverage-drawer",e[e["protocol-monitor-main"]=37]="protocol-monitor-main",e[e["protocol-monitor-drawer"]=38]="protocol-monitor-drawer",e[e["remote-devices-main"]=39]="remote-devices-main",e[e["remote-devices-drawer"]=40]="remote-devices-drawer",e[e["web-audio-main"]=41]="web-audio-main",e[e["web-audio-drawer"]=42]="web-audio-drawer",e[e["changes.changes-main"]=43]="changes.changes-main",e[e["changes.changes-drawer"]=44]="changes.changes-drawer",e[e["performance.monitor-main"]=45]="performance.monitor-main",e[e["performance.monitor-drawer"]=46]="performance.monitor-drawer",e[e["release-note-main"]=47]="release-note-main",e[e["release-note-drawer"]=48]="release-note-drawer",e[e["live_heap_profile-main"]=49]="live_heap_profile-main",e[e["live_heap_profile-drawer"]=50]="live_heap_profile-drawer",e[e["sources.quick-main"]=51]="sources.quick-main",e[e["sources.quick-drawer"]=52]="sources.quick-drawer",e[e["network.blocked-urls-main"]=53]="network.blocked-urls-main",e[e["network.blocked-urls-drawer"]=54]="network.blocked-urls-drawer",e[e["settings-preferences-main"]=55]="settings-preferences-main",e[e["settings-preferences-drawer"]=56]="settings-preferences-drawer",e[e["settings-workspace-main"]=57]="settings-workspace-main",e[e["settings-workspace-drawer"]=58]="settings-workspace-drawer",e[e["settings-experiments-main"]=59]="settings-experiments-main",e[e["settings-experiments-drawer"]=60]="settings-experiments-drawer",e[e["settings-blackbox-main"]=61]="settings-blackbox-main",e[e["settings-blackbox-drawer"]=62]="settings-blackbox-drawer",e[e["settings-devices-main"]=63]="settings-devices-main",e[e["settings-devices-drawer"]=64]="settings-devices-drawer",e[e["settings-throttling-conditions-main"]=65]="settings-throttling-conditions-main",e[e["settings-throttling-conditions-drawer"]=66]="settings-throttling-conditions-drawer",e[e["settings-emulation-locations-main"]=67]="settings-emulation-locations-main",e[e["settings-emulation-locations-drawer"]=68]="settings-emulation-locations-drawer",e[e["settings-shortcuts-main"]=69]="settings-shortcuts-main",e[e["settings-shortcuts-drawer"]=70]="settings-shortcuts-drawer",e[e["issues-pane-main"]=71]="issues-pane-main",e[e["issues-pane-drawer"]=72]="issues-pane-drawer",e[e["settings-keybinds-main"]=73]="settings-keybinds-main",e[e["settings-keybinds-drawer"]=74]="settings-keybinds-drawer",e[e["cssoverview-main"]=75]="cssoverview-main",e[e["cssoverview-drawer"]=76]="cssoverview-drawer",e[e["chrome_recorder-main"]=77]="chrome_recorder-main",e[e["chrome_recorder-drawer"]=78]="chrome_recorder-drawer",e[e["trust_tokens-main"]=79]="trust_tokens-main",e[e["trust_tokens-drawer"]=80]="trust_tokens-drawer",e[e["reporting_api-main"]=81]="reporting_api-main",e[e["reporting_api-drawer"]=82]="reporting_api-drawer",e[e["interest_groups-main"]=83]="interest_groups-main",e[e["interest_groups-drawer"]=84]="interest_groups-drawer",e[e["back_forward_cache-main"]=85]="back_forward_cache-main",e[e["back_forward_cache-drawer"]=86]="back_forward_cache-drawer",e[e["service_worker_cache-main"]=87]="service_worker_cache-main",e[e["service_worker_cache-drawer"]=88]="service_worker_cache-drawer",e[e["background_service_backgroundFetch-main"]=89]="background_service_backgroundFetch-main",e[e["background_service_backgroundFetch-drawer"]=90]="background_service_backgroundFetch-drawer",e[e["background_service_backgroundSync-main"]=91]="background_service_backgroundSync-main",e[e["background_service_backgroundSync-drawer"]=92]="background_service_backgroundSync-drawer",e[e["background_service_pushMessaging-main"]=93]="background_service_pushMessaging-main",e[e["background_service_pushMessaging-drawer"]=94]="background_service_pushMessaging-drawer",e[e["background_service_notifications-main"]=95]="background_service_notifications-main",e[e["background_service_notifications-drawer"]=96]="background_service_notifications-drawer",e[e["background_service_paymentHandler-main"]=97]="background_service_paymentHandler-main",e[e["background_service_paymentHandler-drawer"]=98]="background_service_paymentHandler-drawer",e[e["background_service_periodicBackgroundSync-main"]=99]="background_service_periodicBackgroundSync-main",e[e["background_service_periodicBackgroundSync-drawer"]=100]="background_service_periodicBackgroundSync-drawer",e[e["service_workers-main"]=101]="service_workers-main",e[e["service_workers-drawer"]=102]="service_workers-drawer",e[e["app_manifest-main"]=103]="app_manifest-main",e[e["app_manifest-drawer"]=104]="app_manifest-drawer",e[e["storage-main"]=105]="storage-main",e[e["storage-drawer"]=106]="storage-drawer",e[e["cookies-main"]=107]="cookies-main",e[e["cookies-drawer"]=108]="cookies-drawer",e[e["frame_details-main"]=109]="frame_details-main",e[e["frame_details-drawer"]=110]="frame_details-drawer",e[e["frame_resource-main"]=111]="frame_resource-main",e[e["frame_resource-drawer"]=112]="frame_resource-drawer",e[e["frame_window-main"]=113]="frame_window-main",e[e["frame_window-drawer"]=114]="frame_window-drawer",e[e["frame_worker-main"]=115]="frame_worker-main",e[e["frame_worker-drawer"]=116]="frame_worker-drawer",e[e["dom_storage-main"]=117]="dom_storage-main",e[e["dom_storage-drawer"]=118]="dom_storage-drawer",e[e["indexed_db-main"]=119]="indexed_db-main",e[e["indexed_db-drawer"]=120]="indexed_db-drawer",e[e["web_sql-main"]=121]="web_sql-main",e[e["web_sql-drawer"]=122]="web_sql-drawer",e[e["performance_insights-main"]=123]="performance_insights-main",e[e["performance_insights-drawer"]=124]="performance_insights-drawer",e[e["preloading-main"]=125]="preloading-main",e[e["preloading-drawer"]=126]="preloading-drawer",e[e["bounce_tracking_mitigations-main"]=127]="bounce_tracking_mitigations-main",e[e["bounce_tracking_mitigations-drawer"]=128]="bounce_tracking_mitigations-drawer",e[e["developer-resources-main"]=129]="developer-resources-main",e[e["developer-resources-drawer"]=130]="developer-resources-drawer",e[e["autofill-view-main"]=131]="autofill-view-main",e[e["autofill-view-drawer"]=132]="autofill-view-drawer",e[e.MAX_VALUE=133]="MAX_VALUE"}(ee||(ee={})),function(e){e[e.OtherSidebarPane=0]="OtherSidebarPane",e[e.styles=1]="styles",e[e.computed=2]="computed",e[e["elements.layout"]=3]="elements.layout",e[e["elements.event-listeners"]=4]="elements.event-listeners",e[e["elements.dom-breakpoints"]=5]="elements.dom-breakpoints",e[e["elements.dom-properties"]=6]="elements.dom-properties",e[e["accessibility.view"]=7]="accessibility.view",e[e.MAX_VALUE=8]="MAX_VALUE"}(re||(re={})),function(e){e[e.Unknown=0]="Unknown",e[e["text/css"]=2]="text/css",e[e["text/html"]=3]="text/html",e[e["application/xml"]=4]="application/xml",e[e["application/wasm"]=5]="application/wasm",e[e["application/manifest+json"]=6]="application/manifest+json",e[e["application/x-aspx"]=7]="application/x-aspx",e[e["application/jsp"]=8]="application/jsp",e[e["text/x-c++src"]=9]="text/x-c++src",e[e["text/x-coffeescript"]=10]="text/x-coffeescript",e[e["application/vnd.dart"]=11]="application/vnd.dart",e[e["text/typescript"]=12]="text/typescript",e[e["text/typescript-jsx"]=13]="text/typescript-jsx",e[e["application/json"]=14]="application/json",e[e["text/x-csharp"]=15]="text/x-csharp",e[e["text/x-java"]=16]="text/x-java",e[e["text/x-less"]=17]="text/x-less",e[e["application/x-httpd-php"]=18]="application/x-httpd-php",e[e["text/x-python"]=19]="text/x-python",e[e["text/x-sh"]=20]="text/x-sh",e[e["text/x-gss"]=21]="text/x-gss",e[e["text/x-sass"]=22]="text/x-sass",e[e["text/x-scss"]=23]="text/x-scss",e[e["text/markdown"]=24]="text/markdown",e[e["text/x-clojure"]=25]="text/x-clojure",e[e["text/jsx"]=26]="text/jsx",e[e["text/x-go"]=27]="text/x-go",e[e["text/x-kotlin"]=28]="text/x-kotlin",e[e["text/x-scala"]=29]="text/x-scala",e[e["text/x.svelte"]=30]="text/x.svelte",e[e["text/javascript+plain"]=31]="text/javascript+plain",e[e["text/javascript+minified"]=32]="text/javascript+minified",e[e["text/javascript+sourcemapped"]=33]="text/javascript+sourcemapped",e[e["text/x.angular"]=34]="text/x.angular",e[e["text/x.vue"]=35]="text/x.vue",e[e["text/javascript+snippet"]=36]="text/javascript+snippet",e[e["text/javascript+eval"]=37]="text/javascript+eval",e[e.MAX_VALUE=38]="MAX_VALUE"}(te||(te={})),function(e){e[e.devToolsDefault=0]="devToolsDefault",e[e.vsCode=1]="vsCode",e[e.MAX_VALUE=2]="MAX_VALUE"}(ne||(ne={})),function(e){e[e.OtherShortcut=0]="OtherShortcut",e[e["quick-open.show-command-menu"]=1]="quick-open.show-command-menu",e[e["console.clear"]=2]="console.clear",e[e["console.toggle"]=3]="console.toggle",e[e["debugger.step"]=4]="debugger.step",e[e["debugger.step-into"]=5]="debugger.step-into",e[e["debugger.step-out"]=6]="debugger.step-out",e[e["debugger.step-over"]=7]="debugger.step-over",e[e["debugger.toggle-breakpoint"]=8]="debugger.toggle-breakpoint",e[e["debugger.toggle-breakpoint-enabled"]=9]="debugger.toggle-breakpoint-enabled",e[e["debugger.toggle-pause"]=10]="debugger.toggle-pause",e[e["elements.edit-as-html"]=11]="elements.edit-as-html",e[e["elements.hide-element"]=12]="elements.hide-element",e[e["elements.redo"]=13]="elements.redo",e[e["elements.toggle-element-search"]=14]="elements.toggle-element-search",e[e["elements.undo"]=15]="elements.undo",e[e["main.search-in-panel.find"]=16]="main.search-in-panel.find",e[e["main.toggle-drawer"]=17]="main.toggle-drawer",e[e["network.hide-request-details"]=18]="network.hide-request-details",e[e["network.search"]=19]="network.search",e[e["network.toggle-recording"]=20]="network.toggle-recording",e[e["quick-open.show"]=21]="quick-open.show",e[e["settings.show"]=22]="settings.show",e[e["sources.search"]=23]="sources.search",e[e["background-service.toggle-recording"]=24]="background-service.toggle-recording",e[e["components.collect-garbage"]=25]="components.collect-garbage",e[e["console.clear.history"]=26]="console.clear.history",e[e["console.create-pin"]=27]="console.create-pin",e[e["coverage.start-with-reload"]=28]="coverage.start-with-reload",e[e["coverage.toggle-recording"]=29]="coverage.toggle-recording",e[e["debugger.breakpoint-input-window"]=30]="debugger.breakpoint-input-window",e[e["debugger.evaluate-selection"]=31]="debugger.evaluate-selection",e[e["debugger.next-call-frame"]=32]="debugger.next-call-frame",e[e["debugger.previous-call-frame"]=33]="debugger.previous-call-frame",e[e["debugger.run-snippet"]=34]="debugger.run-snippet",e[e["debugger.toggle-breakpoints-active"]=35]="debugger.toggle-breakpoints-active",e[e["elements.capture-area-screenshot"]=36]="elements.capture-area-screenshot",e[e["emulation.capture-full-height-screenshot"]=37]="emulation.capture-full-height-screenshot",e[e["emulation.capture-node-screenshot"]=38]="emulation.capture-node-screenshot",e[e["emulation.capture-screenshot"]=39]="emulation.capture-screenshot",e[e["emulation.show-sensors"]=40]="emulation.show-sensors",e[e["emulation.toggle-device-mode"]=41]="emulation.toggle-device-mode",e[e["help.release-notes"]=42]="help.release-notes",e[e["help.report-issue"]=43]="help.report-issue",e[e["input.start-replaying"]=44]="input.start-replaying",e[e["input.toggle-pause"]=45]="input.toggle-pause",e[e["input.toggle-recording"]=46]="input.toggle-recording",e[e["inspector-main.focus-debuggee"]=47]="inspector-main.focus-debuggee",e[e["inspector-main.hard-reload"]=48]="inspector-main.hard-reload",e[e["inspector-main.reload"]=49]="inspector-main.reload",e[e["live-heap-profile.start-with-reload"]=50]="live-heap-profile.start-with-reload",e[e["live-heap-profile.toggle-recording"]=51]="live-heap-profile.toggle-recording",e[e["main.debug-reload"]=52]="main.debug-reload",e[e["main.next-tab"]=53]="main.next-tab",e[e["main.previous-tab"]=54]="main.previous-tab",e[e["main.search-in-panel.cancel"]=55]="main.search-in-panel.cancel",e[e["main.search-in-panel.find-next"]=56]="main.search-in-panel.find-next",e[e["main.search-in-panel.find-previous"]=57]="main.search-in-panel.find-previous",e[e["main.toggle-dock"]=58]="main.toggle-dock",e[e["main.zoom-in"]=59]="main.zoom-in",e[e["main.zoom-out"]=60]="main.zoom-out",e[e["main.zoom-reset"]=61]="main.zoom-reset",e[e["network-conditions.network-low-end-mobile"]=62]="network-conditions.network-low-end-mobile",e[e["network-conditions.network-mid-tier-mobile"]=63]="network-conditions.network-mid-tier-mobile",e[e["network-conditions.network-offline"]=64]="network-conditions.network-offline",e[e["network-conditions.network-online"]=65]="network-conditions.network-online",e[e["profiler.heap-toggle-recording"]=66]="profiler.heap-toggle-recording",e[e["profiler.js-toggle-recording"]=67]="profiler.js-toggle-recording",e[e["resources.clear"]=68]="resources.clear",e[e["settings.documentation"]=69]="settings.documentation",e[e["settings.shortcuts"]=70]="settings.shortcuts",e[e["sources.add-folder-to-workspace"]=71]="sources.add-folder-to-workspace",e[e["sources.add-to-watch"]=72]="sources.add-to-watch",e[e["sources.close-all"]=73]="sources.close-all",e[e["sources.close-editor-tab"]=74]="sources.close-editor-tab",e[e["sources.create-snippet"]=75]="sources.create-snippet",e[e["sources.go-to-line"]=76]="sources.go-to-line",e[e["sources.go-to-member"]=77]="sources.go-to-member",e[e["sources.jump-to-next-location"]=78]="sources.jump-to-next-location",e[e["sources.jump-to-previous-location"]=79]="sources.jump-to-previous-location",e[e["sources.rename"]=80]="sources.rename",e[e["sources.save"]=81]="sources.save",e[e["sources.save-all"]=82]="sources.save-all",e[e["sources.switch-file"]=83]="sources.switch-file",e[e["timeline.jump-to-next-frame"]=84]="timeline.jump-to-next-frame",e[e["timeline.jump-to-previous-frame"]=85]="timeline.jump-to-previous-frame",e[e["timeline.load-from-file"]=86]="timeline.load-from-file",e[e["timeline.next-recording"]=87]="timeline.next-recording",e[e["timeline.previous-recording"]=88]="timeline.previous-recording",e[e["timeline.record-reload"]=89]="timeline.record-reload",e[e["timeline.save-to-file"]=90]="timeline.save-to-file",e[e["timeline.show-history"]=91]="timeline.show-history",e[e["timeline.toggle-recording"]=92]="timeline.toggle-recording",e[e["sources.increment-css"]=93]="sources.increment-css",e[e["sources.increment-css-by-ten"]=94]="sources.increment-css-by-ten",e[e["sources.decrement-css"]=95]="sources.decrement-css",e[e["sources.decrement-css-by-ten"]=96]="sources.decrement-css-by-ten",e[e["layers.reset-view"]=97]="layers.reset-view",e[e["layers.pan-mode"]=98]="layers.pan-mode",e[e["layers.rotate-mode"]=99]="layers.rotate-mode",e[e["layers.zoom-in"]=100]="layers.zoom-in",e[e["layers.zoom-out"]=101]="layers.zoom-out",e[e["layers.up"]=102]="layers.up",e[e["layers.down"]=103]="layers.down",e[e["layers.left"]=104]="layers.left",e[e["layers.right"]=105]="layers.right",e[e["help.report-translation-issue"]=106]="help.report-translation-issue",e[e["rendering.toggle-prefers-color-scheme"]=107]="rendering.toggle-prefers-color-scheme",e[e["chrome-recorder.start-recording"]=108]="chrome-recorder.start-recording",e[e["chrome-recorder.replay-recording"]=109]="chrome-recorder.replay-recording",e[e["chrome-recorder.toggle-code-view"]=110]="chrome-recorder.toggle-code-view",e[e["chrome-recorder.copy-recording-or-step"]=111]="chrome-recorder.copy-recording-or-step",e[e["changes.revert"]=112]="changes.revert",e[e["changes.copy"]=113]="changes.copy",e[e["elements.new-style-rule"]=114]="elements.new-style-rule",e[e["elements.refresh-event-listeners"]=115]="elements.refresh-event-listeners",e[e["coverage.clear"]=116]="coverage.clear",e[e["coverage.export"]=117]="coverage.export",e[e["timeline.dim-third-parties"]=118]="timeline.dim-third-parties",e[e.MAX_VALUE=119]="MAX_VALUE"}(oe||(oe={})),function(e){e[e["capture-node-creation-stacks"]=1]="capture-node-creation-stacks",e[e["live-heap-profile"]=11]="live-heap-profile",e[e["protocol-monitor"]=13]="protocol-monitor",e[e["sampling-heap-profiler-timeline"]=17]="sampling-heap-profiler-timeline",e[e["show-option-tp-expose-internals-in-heap-snapshot"]=18]="show-option-tp-expose-internals-in-heap-snapshot",e[e["timeline-invalidation-tracking"]=26]="timeline-invalidation-tracking",e[e["timeline-show-all-events"]=27]="timeline-show-all-events",e[e["timeline-v8-runtime-call-stats"]=28]="timeline-v8-runtime-call-stats",e[e.apca=39]="apca",e[e["font-editor"]=41]="font-editor",e[e["full-accessibility-tree"]=42]="full-accessibility-tree",e[e["contrast-issues"]=44]="contrast-issues",e[e["experimental-cookie-features"]=45]="experimental-cookie-features",e[e["instrumentation-breakpoints"]=61]="instrumentation-breakpoints",e[e["authored-deployed-grouping"]=63]="authored-deployed-grouping",e[e["just-my-code"]=65]="just-my-code",e[e["highlight-errors-elements-panel"]=73]="highlight-errors-elements-panel",e[e["use-source-map-scopes"]=76]="use-source-map-scopes",e[e["network-panel-filter-bar-redesign"]=79]="network-panel-filter-bar-redesign",e[e["timeline-show-postmessage-events"]=86]="timeline-show-postmessage-events",e[e["timeline-enhanced-traces"]=90]="timeline-enhanced-traces",e[e["timeline-compiled-sources"]=91]="timeline-compiled-sources",e[e["timeline-debug-mode"]=93]="timeline-debug-mode",e[e["timeline-experimental-insights"]=102]="timeline-experimental-insights",e[e["timeline-dim-unrelated-events"]=103]="timeline-dim-unrelated-events",e[e["timeline-alternative-navigation"]=104]="timeline-alternative-navigation",e[e.MAX_VALUE=106]="MAX_VALUE"}(se||(se={})),function(e){e[e.CrossOriginEmbedderPolicy=0]="CrossOriginEmbedderPolicy",e[e.MixedContent=1]="MixedContent",e[e.SameSiteCookie=2]="SameSiteCookie",e[e.HeavyAd=3]="HeavyAd",e[e.ContentSecurityPolicy=4]="ContentSecurityPolicy",e[e.Other=5]="Other",e[e.Generic=6]="Generic",e[e.ThirdPartyPhaseoutCookie=7]="ThirdPartyPhaseoutCookie",e[e.GenericCookie=8]="GenericCookie",e[e.MAX_VALUE=9]="MAX_VALUE"}(ie||(ie={})),function(e){e[e.CrossOriginEmbedderPolicyRequest=0]="CrossOriginEmbedderPolicyRequest",e[e.CrossOriginEmbedderPolicyElement=1]="CrossOriginEmbedderPolicyElement",e[e.MixedContentRequest=2]="MixedContentRequest",e[e.SameSiteCookieCookie=3]="SameSiteCookieCookie",e[e.SameSiteCookieRequest=4]="SameSiteCookieRequest",e[e.HeavyAdElement=5]="HeavyAdElement",e[e.ContentSecurityPolicyDirective=6]="ContentSecurityPolicyDirective",e[e.ContentSecurityPolicyElement=7]="ContentSecurityPolicyElement",e[e.MAX_VALUE=13]="MAX_VALUE"}(ae||(ae={})),function(e){e[e.MixedContentIssue=0]="MixedContentIssue",e[e["ContentSecurityPolicyIssue::kInlineViolation"]=1]="ContentSecurityPolicyIssue::kInlineViolation",e[e["ContentSecurityPolicyIssue::kEvalViolation"]=2]="ContentSecurityPolicyIssue::kEvalViolation",e[e["ContentSecurityPolicyIssue::kURLViolation"]=3]="ContentSecurityPolicyIssue::kURLViolation",e[e["ContentSecurityPolicyIssue::kTrustedTypesSinkViolation"]=4]="ContentSecurityPolicyIssue::kTrustedTypesSinkViolation",e[e["ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation"]=5]="ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation",e[e["HeavyAdIssue::NetworkTotalLimit"]=6]="HeavyAdIssue::NetworkTotalLimit",e[e["HeavyAdIssue::CpuTotalLimit"]=7]="HeavyAdIssue::CpuTotalLimit",e[e["HeavyAdIssue::CpuPeakLimit"]=8]="HeavyAdIssue::CpuPeakLimit",e[e["CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader"]=9]="CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader",e[e["CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage"]=10]="CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage",e[e["CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin"]=11]="CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin",e[e["CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep"]=12]="CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep",e[e["CrossOriginEmbedderPolicyIssue::CorpNotSameSite"]=13]="CrossOriginEmbedderPolicyIssue::CorpNotSameSite",e[e["CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie"]=14]="CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie",e[e["CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie"]=15]="CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie",e[e["CookieIssue::WarnSameSiteNoneInsecure::ReadCookie"]=16]="CookieIssue::WarnSameSiteNoneInsecure::ReadCookie",e[e["CookieIssue::WarnSameSiteNoneInsecure::SetCookie"]=17]="CookieIssue::WarnSameSiteNoneInsecure::SetCookie",e[e["CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure"]=18]="CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure",e[e["CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure"]=19]="CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure",e[e["CookieIssue::WarnCrossDowngrade::ReadCookie::Secure"]=20]="CookieIssue::WarnCrossDowngrade::ReadCookie::Secure",e[e["CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure"]=21]="CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure",e[e["CookieIssue::WarnCrossDowngrade::SetCookie::Secure"]=22]="CookieIssue::WarnCrossDowngrade::SetCookie::Secure",e[e["CookieIssue::WarnCrossDowngrade::SetCookie::Insecure"]=23]="CookieIssue::WarnCrossDowngrade::SetCookie::Insecure",e[e["CookieIssue::ExcludeNavigationContextDowngrade::Secure"]=24]="CookieIssue::ExcludeNavigationContextDowngrade::Secure",e[e["CookieIssue::ExcludeNavigationContextDowngrade::Insecure"]=25]="CookieIssue::ExcludeNavigationContextDowngrade::Insecure",e[e["CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure"]=26]="CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure",e[e["CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure"]=27]="CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure",e[e["CookieIssue::ExcludeContextDowngrade::SetCookie::Secure"]=28]="CookieIssue::ExcludeContextDowngrade::SetCookie::Secure",e[e["CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure"]=29]="CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure",e[e["CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie"]=30]="CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie",e[e["CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie"]=31]="CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie"]=32]="CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie"]=33]="CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie"]=34]="CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie",e[e["CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie"]=35]="CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie",e[e["SharedArrayBufferIssue::TransferIssue"]=36]="SharedArrayBufferIssue::TransferIssue",e[e["SharedArrayBufferIssue::CreationIssue"]=37]="SharedArrayBufferIssue::CreationIssue",e[e.LowTextContrastIssue=41]="LowTextContrastIssue",e[e["CorsIssue::InsecurePrivateNetwork"]=42]="CorsIssue::InsecurePrivateNetwork",e[e["CorsIssue::InvalidHeaders"]=44]="CorsIssue::InvalidHeaders",e[e["CorsIssue::WildcardOriginWithCredentials"]=45]="CorsIssue::WildcardOriginWithCredentials",e[e["CorsIssue::PreflightResponseInvalid"]=46]="CorsIssue::PreflightResponseInvalid",e[e["CorsIssue::OriginMismatch"]=47]="CorsIssue::OriginMismatch",e[e["CorsIssue::AllowCredentialsRequired"]=48]="CorsIssue::AllowCredentialsRequired",e[e["CorsIssue::MethodDisallowedByPreflightResponse"]=49]="CorsIssue::MethodDisallowedByPreflightResponse",e[e["CorsIssue::HeaderDisallowedByPreflightResponse"]=50]="CorsIssue::HeaderDisallowedByPreflightResponse",e[e["CorsIssue::RedirectContainsCredentials"]=51]="CorsIssue::RedirectContainsCredentials",e[e["CorsIssue::DisallowedByMode"]=52]="CorsIssue::DisallowedByMode",e[e["CorsIssue::CorsDisabledScheme"]=53]="CorsIssue::CorsDisabledScheme",e[e["CorsIssue::PreflightMissingAllowExternal"]=54]="CorsIssue::PreflightMissingAllowExternal",e[e["CorsIssue::PreflightInvalidAllowExternal"]=55]="CorsIssue::PreflightInvalidAllowExternal",e[e["CorsIssue::NoCorsRedirectModeNotFollow"]=57]="CorsIssue::NoCorsRedirectModeNotFollow",e[e["QuirksModeIssue::QuirksMode"]=58]="QuirksModeIssue::QuirksMode",e[e["QuirksModeIssue::LimitedQuirksMode"]=59]="QuirksModeIssue::LimitedQuirksMode",e[e.DeprecationIssue=60]="DeprecationIssue",e[e["ClientHintIssue::MetaTagAllowListInvalidOrigin"]=61]="ClientHintIssue::MetaTagAllowListInvalidOrigin",e[e["ClientHintIssue::MetaTagModifiedHTML"]=62]="ClientHintIssue::MetaTagModifiedHTML",e[e["CorsIssue::PreflightAllowPrivateNetworkError"]=63]="CorsIssue::PreflightAllowPrivateNetworkError",e[e["GenericIssue::CrossOriginPortalPostMessageError"]=64]="GenericIssue::CrossOriginPortalPostMessageError",e[e["GenericIssue::FormLabelForNameError"]=65]="GenericIssue::FormLabelForNameError",e[e["GenericIssue::FormDuplicateIdForInputError"]=66]="GenericIssue::FormDuplicateIdForInputError",e[e["GenericIssue::FormInputWithNoLabelError"]=67]="GenericIssue::FormInputWithNoLabelError",e[e["GenericIssue::FormAutocompleteAttributeEmptyError"]=68]="GenericIssue::FormAutocompleteAttributeEmptyError",e[e["GenericIssue::FormEmptyIdAndNameAttributesForInputError"]=69]="GenericIssue::FormEmptyIdAndNameAttributesForInputError",e[e["GenericIssue::FormAriaLabelledByToNonExistingId"]=70]="GenericIssue::FormAriaLabelledByToNonExistingId",e[e["GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError"]=71]="GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError",e[e["GenericIssue::FormLabelHasNeitherForNorNestedInput"]=72]="GenericIssue::FormLabelHasNeitherForNorNestedInput",e[e["GenericIssue::FormLabelForMatchesNonExistingIdError"]=73]="GenericIssue::FormLabelForMatchesNonExistingIdError",e[e["GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError"]=74]="GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError",e[e["GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError"]=75]="GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError",e[e["StylesheetLoadingIssue::LateImportRule"]=76]="StylesheetLoadingIssue::LateImportRule",e[e["StylesheetLoadingIssue::RequestFailed"]=77]="StylesheetLoadingIssue::RequestFailed",e[e["CorsIssue::PreflightMissingPrivateNetworkAccessId"]=78]="CorsIssue::PreflightMissingPrivateNetworkAccessId",e[e["CorsIssue::PreflightMissingPrivateNetworkAccessName"]=79]="CorsIssue::PreflightMissingPrivateNetworkAccessName",e[e["CorsIssue::PrivateNetworkAccessPermissionUnavailable"]=80]="CorsIssue::PrivateNetworkAccessPermissionUnavailable",e[e["CorsIssue::PrivateNetworkAccessPermissionDenied"]=81]="CorsIssue::PrivateNetworkAccessPermissionDenied",e[e["CookieIssue::WarnThirdPartyPhaseout::ReadCookie"]=82]="CookieIssue::WarnThirdPartyPhaseout::ReadCookie",e[e["CookieIssue::WarnThirdPartyPhaseout::SetCookie"]=83]="CookieIssue::WarnThirdPartyPhaseout::SetCookie",e[e["CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie"]=84]="CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie",e[e["CookieIssue::ExcludeThirdPartyPhaseout::SetCookie"]=85]="CookieIssue::ExcludeThirdPartyPhaseout::SetCookie",e[e["SelectElementAccessibilityIssue::DisallowedSelectChild"]=86]="SelectElementAccessibilityIssue::DisallowedSelectChild",e[e["SelectElementAccessibilityIssue::DisallowedOptGroupChild"]=87]="SelectElementAccessibilityIssue::DisallowedOptGroupChild",e[e["SelectElementAccessibilityIssue::NonPhrasingContentOptionChild"]=88]="SelectElementAccessibilityIssue::NonPhrasingContentOptionChild",e[e["SelectElementAccessibilityIssue::InteractiveContentOptionChild"]=89]="SelectElementAccessibilityIssue::InteractiveContentOptionChild",e[e["SelectElementAccessibilityIssue::InteractiveContentLegendChild"]=90]="SelectElementAccessibilityIssue::InteractiveContentLegendChild",e[e["SRIMessageSignatureIssue::MissingSignatureHeader"]=91]="SRIMessageSignatureIssue::MissingSignatureHeader",e[e["SRIMessageSignatureIssue::MissingSignatureInputHeader"]=92]="SRIMessageSignatureIssue::MissingSignatureInputHeader",e[e["SRIMessageSignatureIssue::InvalidSignatureHeader"]=93]="SRIMessageSignatureIssue::InvalidSignatureHeader",e[e["SRIMessageSignatureIssue::InvalidSignatureInputHeader"]=94]="SRIMessageSignatureIssue::InvalidSignatureInputHeader",e[e["SRIMessageSignatureIssue::SignatureHeaderValueIsNotByteSequence"]=95]="SRIMessageSignatureIssue::SignatureHeaderValueIsNotByteSequence",e[e["SRIMessageSignatureIssue::SignatureHeaderValueIsParameterized"]=96]="SRIMessageSignatureIssue::SignatureHeaderValueIsParameterized",e[e["SRIMessageSignatureIssue::SignatureHeaderValueIsIncorrectLength"]=97]="SRIMessageSignatureIssue::SignatureHeaderValueIsIncorrectLength",e[e["SRIMessageSignatureIssue::SignatureInputHeaderMissingLabel"]=98]="SRIMessageSignatureIssue::SignatureInputHeaderMissingLabel",e[e["SRIMessageSignatureIssue::SignatureInputHeaderValueNotInnerList"]=99]="SRIMessageSignatureIssue::SignatureInputHeaderValueNotInnerList",e[e["SRIMessageSignatureIssue::SignatureInputHeaderValueMissingComponents"]=100]="SRIMessageSignatureIssue::SignatureInputHeaderValueMissingComponents",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentType"]=101]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentType",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentName"]=102]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentName",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidHeaderComponentParameter"]=103]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidHeaderComponentParameter",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidDerivedComponentParameter"]=104]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidDerivedComponentParameter",e[e["SRIMessageSignatureIssue::SignatureInputHeaderKeyIdLength"]=105]="SRIMessageSignatureIssue::SignatureInputHeaderKeyIdLength",e[e["SRIMessageSignatureIssue::SignatureInputHeaderInvalidParameter"]=106]="SRIMessageSignatureIssue::SignatureInputHeaderInvalidParameter",e[e["SRIMessageSignatureIssue::SignatureInputHeaderMissingRequiredParameters"]=107]="SRIMessageSignatureIssue::SignatureInputHeaderMissingRequiredParameters",e[e["SRIMessageSignatureIssue::ValidationFailedSignatureExpired"]=108]="SRIMessageSignatureIssue::ValidationFailedSignatureExpired",e[e["SRIMessageSignatureIssue::ValidationFailedInvalidLength"]=109]="SRIMessageSignatureIssue::ValidationFailedInvalidLength",e[e["SRIMessageSignatureIssue::ValidationFailedSignatureMismatch"]=110]="SRIMessageSignatureIssue::ValidationFailedSignatureMismatch",e[e["CorsIssue::LocalNetworkAccessPermissionDenied"]=111]="CorsIssue::LocalNetworkAccessPermissionDenied",e[e["SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch"]=112]="SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch",e[e.MAX_VALUE=113]="MAX_VALUE"}(de||(de={})),function(e){e[e.af=1]="af",e[e.am=2]="am",e[e.ar=3]="ar",e[e.as=4]="as",e[e.az=5]="az",e[e.be=6]="be",e[e.bg=7]="bg",e[e.bn=8]="bn",e[e.bs=9]="bs",e[e.ca=10]="ca",e[e.cs=11]="cs",e[e.cy=12]="cy",e[e.da=13]="da",e[e.de=14]="de",e[e.el=15]="el",e[e["en-GB"]=16]="en-GB",e[e["en-US"]=17]="en-US",e[e["es-419"]=18]="es-419",e[e.es=19]="es",e[e.et=20]="et",e[e.eu=21]="eu",e[e.fa=22]="fa",e[e.fi=23]="fi",e[e.fil=24]="fil",e[e["fr-CA"]=25]="fr-CA",e[e.fr=26]="fr",e[e.gl=27]="gl",e[e.gu=28]="gu",e[e.he=29]="he",e[e.hi=30]="hi",e[e.hr=31]="hr",e[e.hu=32]="hu",e[e.hy=33]="hy",e[e.id=34]="id",e[e.is=35]="is",e[e.it=36]="it",e[e.ja=37]="ja",e[e.ka=38]="ka",e[e.kk=39]="kk",e[e.km=40]="km",e[e.kn=41]="kn",e[e.ko=42]="ko",e[e.ky=43]="ky",e[e.lo=44]="lo",e[e.lt=45]="lt",e[e.lv=46]="lv",e[e.mk=47]="mk",e[e.ml=48]="ml",e[e.mn=49]="mn",e[e.mr=50]="mr",e[e.ms=51]="ms",e[e.my=52]="my",e[e.ne=53]="ne",e[e.nl=54]="nl",e[e.no=55]="no",e[e.or=56]="or",e[e.pa=57]="pa",e[e.pl=58]="pl",e[e["pt-PT"]=59]="pt-PT",e[e.pt=60]="pt",e[e.ro=61]="ro",e[e.ru=62]="ru",e[e.si=63]="si",e[e.sk=64]="sk",e[e.sl=65]="sl",e[e.sq=66]="sq",e[e["sr-Latn"]=67]="sr-Latn",e[e.sr=68]="sr",e[e.sv=69]="sv",e[e.sw=70]="sw",e[e.ta=71]="ta",e[e.te=72]="te",e[e.th=73]="th",e[e.tr=74]="tr",e[e.uk=75]="uk",e[e.ur=76]="ur",e[e.uz=77]="uz",e[e.vi=78]="vi",e[e.zh=79]="zh",e[e["zh-HK"]=80]="zh-HK",e[e["zh-TW"]=81]="zh-TW",e[e.zu=82]="zu",e[e.MAX_VALUE=83]="MAX_VALUE"}(ce||(ce={})),function(e){e[e.OtherSection=0]="OtherSection",e[e.Identity=1]="Identity",e[e.Presentation=2]="Presentation",e[e["Protocol Handlers"]=3]="Protocol Handlers",e[e.Icons=4]="Icons",e[e["Window Controls Overlay"]=5]="Window Controls Overlay",e[e.MAX_VALUE=6]="MAX_VALUE"}(le||(le={}));var ge=Object.freeze({__proto__:null,get Action(){return J},get DevtoolsExperiments(){return se},get ElementsSidebarTabCodes(){return re},get IssueCreated(){return de},get IssueExpanded(){return ie},get IssueResourceOpened(){return ae},get KeybindSetSettings(){return ne},get KeyboardShortcutAction(){return oe},get Language(){return ce},get ManifestSectionCodes(){return le},get MediaTypes(){return te},get PanelCodes(){return Z},get PanelWithLocation(){return ee},UserMetrics:me});const pe=new me,he=K();export{U as AidaClient,F as InspectorFrontendHost,i as InspectorFrontendHostAPI,X as Platform,ue as RNPerfMetrics,v as ResourceLoader,ge as UserMetrics,he as rnPerfMetrics,pe as userMetrics}; diff --git a/packages/debugger-frontend/dist/third-party/front_end/core/i18n/locales/en-US.json b/packages/debugger-frontend/dist/third-party/front_end/core/i18n/locales/en-US.json index 5ba1fe1b929b..2134ee005530 100644 --- a/packages/debugger-frontend/dist/third-party/front_end/core/i18n/locales/en-US.json +++ b/packages/debugger-frontend/dist/third-party/front_end/core/i18n/locales/en-US.json @@ -1 +1 @@ -{"core/common/ResourceType.ts | cspviolationreport":{"message":"CSPViolationReport"},"core/common/ResourceType.ts | css":{"message":"CSS"},"core/common/ResourceType.ts | directsocket":{"message":"DirectSocket"},"core/common/ResourceType.ts | doc":{"message":"Doc"},"core/common/ResourceType.ts | document":{"message":"Document"},"core/common/ResourceType.ts | eventsource":{"message":"EventSource"},"core/common/ResourceType.ts | fetch":{"message":"Fetch"},"core/common/ResourceType.ts | fetchAndXHR":{"message":"Fetch and XHR"},"core/common/ResourceType.ts | font":{"message":"Font"},"core/common/ResourceType.ts | image":{"message":"Image"},"core/common/ResourceType.ts | img":{"message":"Img"},"core/common/ResourceType.ts | javascript":{"message":"JavaScript"},"core/common/ResourceType.ts | js":{"message":"JS"},"core/common/ResourceType.ts | manifest":{"message":"Manifest"},"core/common/ResourceType.ts | media":{"message":"Media"},"core/common/ResourceType.ts | other":{"message":"Other"},"core/common/ResourceType.ts | ping":{"message":"Ping"},"core/common/ResourceType.ts | preflight":{"message":"Preflight"},"core/common/ResourceType.ts | script":{"message":"Script"},"core/common/ResourceType.ts | signedexchange":{"message":"SignedExchange"},"core/common/ResourceType.ts | socketShort":{"message":"Socket"},"core/common/ResourceType.ts | stylesheet":{"message":"Stylesheet"},"core/common/ResourceType.ts | texttrack":{"message":"TextTrack"},"core/common/ResourceType.ts | wasm":{"message":"Wasm"},"core/common/ResourceType.ts | webassembly":{"message":"WebAssembly"},"core/common/ResourceType.ts | webbundle":{"message":"WebBundle"},"core/common/ResourceType.ts | websocket":{"message":"WebSocket"},"core/common/ResourceType.ts | webtransport":{"message":"WebTransport"},"core/common/Revealer.ts | animationsPanel":{"message":"Animations panel"},"core/common/Revealer.ts | applicationPanel":{"message":"Application panel"},"core/common/Revealer.ts | changesDrawer":{"message":"Changes drawer"},"core/common/Revealer.ts | developerResourcesPanel":{"message":"Developer Resources panel"},"core/common/Revealer.ts | elementsPanel":{"message":"Elements panel"},"core/common/Revealer.ts | issuesView":{"message":"Issues view"},"core/common/Revealer.ts | memoryInspectorPanel":{"message":"Memory inspector panel"},"core/common/Revealer.ts | networkPanel":{"message":"Network panel"},"core/common/Revealer.ts | securityPanel":{"message":"Security panel"},"core/common/Revealer.ts | sourcesPanel":{"message":"Sources panel"},"core/common/Revealer.ts | stylesSidebar":{"message":"styles sidebar"},"core/common/Revealer.ts | timelinePanel":{"message":"Performance panel"},"core/common/SettingRegistration.ts | adorner":{"message":"Adorner"},"core/common/SettingRegistration.ts | ai":{"message":"AI"},"core/common/SettingRegistration.ts | appearance":{"message":"Appearance"},"core/common/SettingRegistration.ts | console":{"message":"Console"},"core/common/SettingRegistration.ts | debugger":{"message":"Debugger"},"core/common/SettingRegistration.ts | elements":{"message":"Elements"},"core/common/SettingRegistration.ts | extension":{"message":"Extension"},"core/common/SettingRegistration.ts | global":{"message":"Global"},"core/common/SettingRegistration.ts | grid":{"message":"Grid"},"core/common/SettingRegistration.ts | memory":{"message":"Memory"},"core/common/SettingRegistration.ts | mobile":{"message":"Mobile"},"core/common/SettingRegistration.ts | network":{"message":"Network"},"core/common/SettingRegistration.ts | performance":{"message":"Performance"},"core/common/SettingRegistration.ts | persistence":{"message":"Persistence"},"core/common/SettingRegistration.ts | privacy":{"message":"Privacy"},"core/common/SettingRegistration.ts | rendering":{"message":"Rendering"},"core/common/SettingRegistration.ts | sources":{"message":"Sources"},"core/common/SettingRegistration.ts | sync":{"message":"Sync"},"core/host/InspectorFrontendHost.ts | devtoolsS":{"message":"DevTools - {PH1}"},"core/host/ResourceLoader.ts | cacheError":{"message":"Cache error"},"core/host/ResourceLoader.ts | certificateError":{"message":"Certificate error"},"core/host/ResourceLoader.ts | certificateManagerError":{"message":"Certificate manager error"},"core/host/ResourceLoader.ts | connectionError":{"message":"Connection error"},"core/host/ResourceLoader.ts | decodingDataUrlFailed":{"message":"Decoding Data URL failed"},"core/host/ResourceLoader.ts | dnsResolverError":{"message":"DNS resolver error"},"core/host/ResourceLoader.ts | ftpError":{"message":"FTP error"},"core/host/ResourceLoader.ts | httpError":{"message":"HTTP error"},"core/host/ResourceLoader.ts | httpErrorStatusCodeSS":{"message":"HTTP error: status code {PH1}, {PH2}"},"core/host/ResourceLoader.ts | invalidUrl":{"message":"Invalid URL"},"core/host/ResourceLoader.ts | signedExchangeError":{"message":"Signed Exchange error"},"core/host/ResourceLoader.ts | systemError":{"message":"System error"},"core/host/ResourceLoader.ts | unknownError":{"message":"Unknown error"},"core/sdk/ChildTargetManager.ts | main":{"message":"Main"},"core/sdk/CompilerSourceMappingContentProvider.ts | couldNotLoadContentForSS":{"message":"Could not load content for {PH1} ({PH2})"},"core/sdk/Connections.ts | websocketDisconnected":{"message":"WebSocket disconnected"},"core/sdk/ConsoleModel.ts | bfcacheNavigation":{"message":"Navigation to {PH1} was restored from back/forward cache (see https://web.dev/bfcache/)"},"core/sdk/ConsoleModel.ts | failedToSaveToTempVariable":{"message":"Failed to save to temp variable."},"core/sdk/ConsoleModel.ts | navigatedToS":{"message":"Navigated to {PH1}"},"core/sdk/ConsoleModel.ts | profileSFinished":{"message":"Profile ''{PH1}'' finished."},"core/sdk/ConsoleModel.ts | profileSStarted":{"message":"Profile ''{PH1}'' started."},"core/sdk/CPUProfilerModel.ts | profileD":{"message":"Profile {PH1}"},"core/sdk/CPUThrottlingManager.ts | calibratedLowTierMobile":{"message":"Low-tier mobile"},"core/sdk/CPUThrottlingManager.ts | calibratedMidTierMobile":{"message":"Mid-tier mobile"},"core/sdk/CPUThrottlingManager.ts | calibrationErrorDeviceTooWeak":{"message":"Device is not powerful enough"},"core/sdk/CPUThrottlingManager.ts | dSlowdown":{"message":"{PH1}× slowdown"},"core/sdk/CPUThrottlingManager.ts | noThrottling":{"message":"No throttling"},"core/sdk/CSSStyleSheetHeader.ts | couldNotFindTheOriginalStyle":{"message":"Could not find the original style sheet."},"core/sdk/CSSStyleSheetHeader.ts | thereWasAnErrorRetrievingThe":{"message":"There was an error retrieving the source styles."},"core/sdk/DebuggerModel.ts | block":{"message":"Block"},"core/sdk/DebuggerModel.ts | catchBlock":{"message":"Catch block"},"core/sdk/DebuggerModel.ts | closure":{"message":"Closure"},"core/sdk/DebuggerModel.ts | exception":{"message":"Exception"},"core/sdk/DebuggerModel.ts | expression":{"message":"Expression"},"core/sdk/DebuggerModel.ts | global":{"message":"Global"},"core/sdk/DebuggerModel.ts | local":{"message":"Local"},"core/sdk/DebuggerModel.ts | module":{"message":"Module"},"core/sdk/DebuggerModel.ts | returnValue":{"message":"Return value"},"core/sdk/DebuggerModel.ts | script":{"message":"Script"},"core/sdk/DebuggerModel.ts | withBlock":{"message":"With block"},"core/sdk/NetworkManager.ts | directSocketStatusAborted":{"message":"Aborted"},"core/sdk/NetworkManager.ts | directSocketStatusClosed":{"message":"Closed"},"core/sdk/NetworkManager.ts | directSocketStatusOpen":{"message":"Open"},"core/sdk/NetworkManager.ts | directSocketStatusOpening":{"message":"Opening"},"core/sdk/NetworkManager.ts | fast4G":{"message":"Fast 4G"},"core/sdk/NetworkManager.ts | fastG":{"message":"Slow 4G"},"core/sdk/NetworkManager.ts | noContentForPreflight":{"message":"No content available for preflight request"},"core/sdk/NetworkManager.ts | noContentForRedirect":{"message":"No content available because this request was redirected"},"core/sdk/NetworkManager.ts | noContentForWebSocket":{"message":"Content for WebSockets is currently not supported"},"core/sdk/NetworkManager.ts | noThrottling":{"message":"No throttling"},"core/sdk/NetworkManager.ts | offline":{"message":"Offline"},"core/sdk/NetworkManager.ts | requestWasBlockedByDevtoolsS":{"message":"Request was blocked by DevTools: \"{PH1}\""},"core/sdk/NetworkManager.ts | sFailedLoadingSS":{"message":"{PH1} failed loading: {PH2} \"{PH3}\"."},"core/sdk/NetworkManager.ts | sFinishedLoadingSS":{"message":"{PH1} finished loading: {PH2} \"{PH3}\"."},"core/sdk/NetworkManager.ts | slowG":{"message":"3G"},"core/sdk/NetworkRequest.ts | anUnknownErrorWasEncounteredWhenTrying":{"message":"An unknown error was encountered when trying to store this cookie."},"core/sdk/NetworkRequest.ts | binary":{"message":"(binary)"},"core/sdk/NetworkRequest.ts | blockedReasonInvalidDomain":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because its Domain attribute was invalid with regards to the current host url."},"core/sdk/NetworkRequest.ts | blockedReasonInvalidPrefix":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it used the \"__Secure-\" or \"__Host-\" prefix in its name and broke the additional rules applied to cookies with these prefixes as defined in https://tools.ietf.org/html/draft-west-cookie-prefixes-05."},"core/sdk/NetworkRequest.ts | blockedReasonOverwriteSecure":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it was not sent over a secure connection and would have overwritten a cookie with the Secure attribute."},"core/sdk/NetworkRequest.ts | blockedReasonSameSiteNoneInsecure":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"SameSite=None\" attribute but did not have the \"Secure\" attribute, which is required in order to use \"SameSite=None\"."},"core/sdk/NetworkRequest.ts | blockedReasonSameSiteStrictLax":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"{PH1}\" attribute but came from a cross-site response which was not the response to a top-level navigation."},"core/sdk/NetworkRequest.ts | blockedReasonSameSiteUnspecifiedTreatedAsLax":{"message":"This Set-Cookie header didn't specify a \"SameSite\" attribute and was defaulted to \"SameSite=Lax,\" and was blocked because it came from a cross-site response which was not the response to a top-level navigation. The Set-Cookie had to have been set with \"SameSite=None\" to enable cross-site usage."},"core/sdk/NetworkRequest.ts | blockedReasonSecureOnly":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"Secure\" attribute but was not received over a secure connection."},"core/sdk/NetworkRequest.ts | domainMismatch":{"message":"This cookie was blocked because neither did the request URL's domain exactly match the cookie's domain, nor was the request URL's domain a subdomain of the cookie's Domain attribute value."},"core/sdk/NetworkRequest.ts | exemptionReasonEnterprisePolicy":{"message":"This cookie is allowed by Chrome Enterprise policy. Learn more: goo.gle/ce-3pc"},"core/sdk/NetworkRequest.ts | exemptionReasonScheme":{"message":"This cookie is allowed by the top-level url scheme"},"core/sdk/NetworkRequest.ts | exemptionReasonStorageAccessAPI":{"message":"This cookie is allowed by the Storage Access API. Learn more: goo.gle/saa"},"core/sdk/NetworkRequest.ts | exemptionReasonTopLevelStorageAccessAPI":{"message":"This cookie is allowed by the top-level Storage Access API. Learn more: goo.gle/saa-top"},"core/sdk/NetworkRequest.ts | exemptionReasonTopLevelTPCDDeprecationTrial":{"message":"This cookie is allowed by top-level third-party cookie deprecation trial. Learn more: goo.gle/ps-dt."},"core/sdk/NetworkRequest.ts | exemptionReasonTPCDDeprecationTrial":{"message":"This cookie is allowed by third-party cookie deprecation trial. Learn more: goo.gle/ps-dt."},"core/sdk/NetworkRequest.ts | exemptionReasonTPCDHeuristics":{"message":"This cookie is allowed by third-party cookie heuristics. Learn more: goo.gle/hbe"},"core/sdk/NetworkRequest.ts | exemptionReasonTPCDMetadata":{"message":"This cookie is allowed by a third-party cookie deprecation trial grace period. Learn more: goo.gle/dt-grace."},"core/sdk/NetworkRequest.ts | exemptionReasonUserSetting":{"message":"This cookie is allowed by user preference."},"core/sdk/NetworkRequest.ts | nameValuePairExceedsMaxSize":{"message":"This cookie was blocked because it was too large. The combined size of the name and value must be less than or equal to 4096 characters."},"core/sdk/NetworkRequest.ts | notOnPath":{"message":"This cookie was blocked because its path was not an exact match for or a superdirectory of the request url's path."},"core/sdk/NetworkRequest.ts | samePartyFromCrossPartyContext":{"message":"This cookie was blocked because it had the \"SameParty\" attribute but the request was cross-party. The request was considered cross-party because the domain of the resource's URL and the domains of the resource's enclosing frames/documents are neither owners nor members in the same First-Party Set."},"core/sdk/NetworkRequest.ts | sameSiteLax":{"message":"This cookie was blocked because it had the \"SameSite=Lax\" attribute and the request was made from a different site and was not initiated by a top-level navigation."},"core/sdk/NetworkRequest.ts | sameSiteNoneInsecure":{"message":"This cookie was blocked because it had the \"SameSite=None\" attribute but was not marked \"Secure\". Cookies without SameSite restrictions must be marked \"Secure\" and sent over a secure connection."},"core/sdk/NetworkRequest.ts | sameSiteStrict":{"message":"This cookie was blocked because it had the \"SameSite=Strict\" attribute and the request was made from a different site. This includes top-level navigation requests initiated by other sites."},"core/sdk/NetworkRequest.ts | sameSiteUnspecifiedTreatedAsLax":{"message":"This cookie didn't specify a \"SameSite\" attribute when it was stored and was defaulted to \"SameSite=Lax,\" and was blocked because the request was made from a different site and was not initiated by a top-level navigation. The cookie had to have been set with \"SameSite=None\" to enable cross-site usage."},"core/sdk/NetworkRequest.ts | schemefulSameSiteLax":{"message":"This cookie was blocked because it had the \"SameSite=Lax\" attribute but the request was cross-site and was not initiated by a top-level navigation. This request is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | schemefulSameSiteStrict":{"message":"This cookie was blocked because it had the \"SameSite=Strict\" attribute but the request was cross-site. This includes top-level navigation requests initiated by other sites. This request is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | schemefulSameSiteUnspecifiedTreatedAsLax":{"message":"This cookie didn't specify a \"SameSite\" attribute when it was stored, was defaulted to \"SameSite=Lax\", and was blocked because the request was cross-site and was not initiated by a top-level navigation. This request is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | secureOnly":{"message":"This cookie was blocked because it had the \"Secure\" attribute and the connection was not secure."},"core/sdk/NetworkRequest.ts | setcookieHeaderIsIgnoredIn":{"message":"Set-Cookie header is ignored in response from url: {PH1}. The combined size of the name and value must be less than or equal to 4096 characters."},"core/sdk/NetworkRequest.ts | theSchemeOfThisConnectionIsNot":{"message":"The scheme of this connection is not allowed to store cookies."},"core/sdk/NetworkRequest.ts | thirdPartyPhaseout":{"message":"This cookie was blocked either because of Chrome flags or browser configuration. Learn more in the Issues panel."},"core/sdk/NetworkRequest.ts | thisSetcookieDidntSpecifyASamesite":{"message":"This Set-Cookie header didn't specify a \"SameSite\" attribute, was defaulted to \"SameSite=Lax\", and was blocked because it came from a cross-site response which was not the response to a top-level navigation. This response is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | thisSetcookieHadADisallowedCharacter":{"message":"This Set-Cookie header contained a disallowed character (a forbidden ASCII control character, or the tab character if it appears in the middle of the cookie name, value, an attribute name, or an attribute value)."},"core/sdk/NetworkRequest.ts | thisSetcookieHadInvalidSyntax":{"message":"This Set-Cookie header had invalid syntax."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseItHadTheSameparty":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"SameParty\" attribute but the request was cross-party. The request was considered cross-party because the domain of the resource's URL and the domains of the resource's enclosing frames/documents are neither owners nor members in the same First-Party Set."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseItHadTheSamepartyAttribute":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"SameParty\" attribute but also had other conflicting attributes. Chrome requires cookies that use the \"SameParty\" attribute to also have the \"Secure\" attribute, and to not be restricted to \"SameSite=Strict\"."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseItHadTheSamesiteStrictLax":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"{PH1}\" attribute but came from a cross-site response which was not the response to a top-level navigation. This response is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseTheNameValuePairExceedsMaxSize":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because the cookie was too large. The combined size of the name and value must be less than or equal to 4096 characters."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedDueThirdPartyPhaseout":{"message":"Setting this cookie was blocked either because of Chrome flags or browser configuration. Learn more in the Issues panel."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedDueToUser":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked due to user preferences."},"core/sdk/NetworkRequest.ts | unknownError":{"message":"An unknown error was encountered when trying to send this cookie."},"core/sdk/NetworkRequest.ts | userPreferences":{"message":"This cookie was blocked due to user preferences."},"core/sdk/OverlayModel.ts | pausedInDebugger":{"message":"Paused in debugger"},"core/sdk/PageResourceLoader.ts | loadCanceledDueToReloadOf":{"message":"Load canceled due to reload of inspected page"},"core/sdk/RehydratingConnection.ts | errorLoadingLog":{"message":"Error loading log"},"core/sdk/RehydratingConnection.ts | noHostWindow":{"message":"Can not find host window"},"core/sdk/RehydratingConnection.ts | noSourceText":{"message":"No source text available"},"core/sdk/Script.ts | scriptRemovedOrDeleted":{"message":"Script removed or deleted."},"core/sdk/Script.ts | unableToFetchScriptSource":{"message":"Unable to fetch script source."},"core/sdk/sdk-meta.ts | achromatopsia":{"message":"Achromatopsia (no color)"},"core/sdk/sdk-meta.ts | blurredVision":{"message":"Blurred vision"},"core/sdk/sdk-meta.ts | captureAsyncStackTraces":{"message":"Capture async stack traces"},"core/sdk/sdk-meta.ts | customFormatters":{"message":"Custom formatters"},"core/sdk/sdk-meta.ts | deuteranopia":{"message":"Deuteranopia (no green)"},"core/sdk/sdk-meta.ts | disableAsyncStackTraces":{"message":"Disable async stack traces"},"core/sdk/sdk-meta.ts | disableAvifFormat":{"message":"Disable AVIF format"},"core/sdk/sdk-meta.ts | disableCache":{"message":"Disable cache while DevTools is open"},"core/sdk/sdk-meta.ts | disableJavascript":{"message":"Disable JavaScript"},"core/sdk/sdk-meta.ts | disableLocalFonts":{"message":"Disable local fonts"},"core/sdk/sdk-meta.ts | disableNetworkRequestBlocking":{"message":"Disable network request blocking"},"core/sdk/sdk-meta.ts | disableWebpFormat":{"message":"Disable WebP format"},"core/sdk/sdk-meta.ts | doNotCaptureAsyncStackTraces":{"message":"Do not capture async stack traces"},"core/sdk/sdk-meta.ts | doNotEmulateAFocusedPage":{"message":"Do not emulate a focused page"},"core/sdk/sdk-meta.ts | doNotEmulateAnyVisionDeficiency":{"message":"Do not emulate any vision deficiency"},"core/sdk/sdk-meta.ts | doNotEmulateCss":{"message":"Do not emulate CSS {PH1}"},"core/sdk/sdk-meta.ts | doNotEmulateCssMediaType":{"message":"Do not emulate CSS media type"},"core/sdk/sdk-meta.ts | doNotExtendGridLines":{"message":"Do not extend grid lines"},"core/sdk/sdk-meta.ts | doNotHighlightAdFrames":{"message":"Do not highlight ad frames"},"core/sdk/sdk-meta.ts | doNotPauseOnExceptions":{"message":"Do not pause on exceptions"},"core/sdk/sdk-meta.ts | doNotPreserveLogUponNavigation":{"message":"Do not preserve log upon navigation"},"core/sdk/sdk-meta.ts | doNotShowGridNamedAreas":{"message":"Do not show grid named areas"},"core/sdk/sdk-meta.ts | doNotShowGridTrackSizes":{"message":"Do not show grid track sizes"},"core/sdk/sdk-meta.ts | doNotShowRulersOnHover":{"message":"Do not show rulers on hover"},"core/sdk/sdk-meta.ts | emulateAchromatopsia":{"message":"Emulate achromatopsia (no color)"},"core/sdk/sdk-meta.ts | emulateAFocusedPage":{"message":"Emulate a focused page"},"core/sdk/sdk-meta.ts | emulateAutoDarkMode":{"message":"Emulate auto dark mode"},"core/sdk/sdk-meta.ts | emulateBlurredVision":{"message":"Emulate blurred vision"},"core/sdk/sdk-meta.ts | emulateCss":{"message":"Emulate CSS {PH1}"},"core/sdk/sdk-meta.ts | emulateCssMediaFeature":{"message":"Emulate CSS media feature {PH1}"},"core/sdk/sdk-meta.ts | emulateCssMediaType":{"message":"Emulate CSS media type"},"core/sdk/sdk-meta.ts | emulateCssPrintMediaType":{"message":"Emulate CSS print media type"},"core/sdk/sdk-meta.ts | emulateCssScreenMediaType":{"message":"Emulate CSS screen media type"},"core/sdk/sdk-meta.ts | emulateDeuteranopia":{"message":"Emulate deuteranopia (no green)"},"core/sdk/sdk-meta.ts | emulateProtanopia":{"message":"Emulate protanopia (no red)"},"core/sdk/sdk-meta.ts | emulateReducedContrast":{"message":"Emulate reduced contrast"},"core/sdk/sdk-meta.ts | emulateTritanopia":{"message":"Emulate tritanopia (no blue)"},"core/sdk/sdk-meta.ts | emulateVisionDeficiencies":{"message":"Emulate vision deficiencies"},"core/sdk/sdk-meta.ts | enableAvifFormat":{"message":"Enable AVIF format"},"core/sdk/sdk-meta.ts | enableCache":{"message":"Enable cache"},"core/sdk/sdk-meta.ts | enableJavascript":{"message":"Enable JavaScript"},"core/sdk/sdk-meta.ts | enableLocalFonts":{"message":"Enable local fonts"},"core/sdk/sdk-meta.ts | enableNetworkRequestBlocking":{"message":"Enable network request blocking"},"core/sdk/sdk-meta.ts | enableRemoteFileLoading":{"message":"Allow DevTools to load resources, such as source maps, from remote file paths. Disabled by default for security reasons."},"core/sdk/sdk-meta.ts | enableWebpFormat":{"message":"Enable WebP format"},"core/sdk/sdk-meta.ts | extendGridLines":{"message":"Extend grid lines"},"core/sdk/sdk-meta.ts | hideFramesPerSecondFpsMeter":{"message":"Hide frames per second (FPS) meter"},"core/sdk/sdk-meta.ts | hideLayerBorders":{"message":"Hide layer borders"},"core/sdk/sdk-meta.ts | hideLayoutShiftRegions":{"message":"Hide layout shift regions"},"core/sdk/sdk-meta.ts | hideLineLabels":{"message":"Hide line labels"},"core/sdk/sdk-meta.ts | hidePaintFlashingRectangles":{"message":"Hide paint flashing rectangles"},"core/sdk/sdk-meta.ts | hideScrollPerformanceBottlenecks":{"message":"Hide scroll performance bottlenecks"},"core/sdk/sdk-meta.ts | highlightAdFrames":{"message":"Highlight ad frames"},"core/sdk/sdk-meta.ts | networkCacheExplanation":{"message":"Disabling the network cache will simulate a network experience similar to a first time visitor."},"core/sdk/sdk-meta.ts | networkRequestBlocking":{"message":"Network request blocking"},"core/sdk/sdk-meta.ts | noEmulation":{"message":"No emulation"},"core/sdk/sdk-meta.ts | pauseOnExceptions":{"message":"Pause on exceptions"},"core/sdk/sdk-meta.ts | preserveLogUponNavigation":{"message":"Preserve log upon navigation"},"core/sdk/sdk-meta.ts | print":{"message":"print"},"core/sdk/sdk-meta.ts | protanopia":{"message":"Protanopia (no red)"},"core/sdk/sdk-meta.ts | query":{"message":"query"},"core/sdk/sdk-meta.ts | reducedContrast":{"message":"Reduced contrast"},"core/sdk/sdk-meta.ts | screen":{"message":"screen"},"core/sdk/sdk-meta.ts | showAreaNames":{"message":"Show area names"},"core/sdk/sdk-meta.ts | showFramesPerSecondFpsMeter":{"message":"Show frames per second (FPS) meter"},"core/sdk/sdk-meta.ts | showGridNamedAreas":{"message":"Show grid named areas"},"core/sdk/sdk-meta.ts | showGridTrackSizes":{"message":"Show grid track sizes"},"core/sdk/sdk-meta.ts | showLayerBorders":{"message":"Show layer borders"},"core/sdk/sdk-meta.ts | showLayoutShiftRegions":{"message":"Show layout shift regions"},"core/sdk/sdk-meta.ts | showLineLabels":{"message":"Show line labels"},"core/sdk/sdk-meta.ts | showLineNames":{"message":"Show line names"},"core/sdk/sdk-meta.ts | showLineNumbers":{"message":"Show line numbers"},"core/sdk/sdk-meta.ts | showPaintFlashingRectangles":{"message":"Show paint flashing rectangles"},"core/sdk/sdk-meta.ts | showRulersOnHover":{"message":"Show rulers on hover"},"core/sdk/sdk-meta.ts | showScrollPerformanceBottlenecks":{"message":"Show scroll performance bottlenecks"},"core/sdk/sdk-meta.ts | showTrackSizes":{"message":"Show track sizes"},"core/sdk/sdk-meta.ts | tritanopia":{"message":"Tritanopia (no blue)"},"core/sdk/ServerTiming.ts | deprecatedSyntaxFoundPleaseUse":{"message":"Deprecated syntax found. Please use: ;dur=;desc="},"core/sdk/ServerTiming.ts | duplicateParameterSIgnored":{"message":"Duplicate parameter \"{PH1}\" ignored."},"core/sdk/ServerTiming.ts | extraneousTrailingCharacters":{"message":"Extraneous trailing characters."},"core/sdk/ServerTiming.ts | noValueFoundForParameterS":{"message":"No value found for parameter \"{PH1}\"."},"core/sdk/ServerTiming.ts | unableToParseSValueS":{"message":"Unable to parse \"{PH1}\" value \"{PH2}\"."},"core/sdk/ServerTiming.ts | unrecognizedParameterS":{"message":"Unrecognized parameter \"{PH1}\"."},"core/sdk/ServiceWorkerCacheModel.ts | serviceworkercacheagentError":{"message":"ServiceWorkerCacheAgent error deleting cache entry {PH1} in cache: {PH2}"},"core/sdk/ServiceWorkerManager.ts | activated":{"message":"activated"},"core/sdk/ServiceWorkerManager.ts | activating":{"message":"activating"},"core/sdk/ServiceWorkerManager.ts | installed":{"message":"installed"},"core/sdk/ServiceWorkerManager.ts | installing":{"message":"installing"},"core/sdk/ServiceWorkerManager.ts | new":{"message":"new"},"core/sdk/ServiceWorkerManager.ts | redundant":{"message":"redundant"},"core/sdk/ServiceWorkerManager.ts | running":{"message":"running"},"core/sdk/ServiceWorkerManager.ts | sSS":{"message":"{PH1} #{PH2} ({PH3})"},"core/sdk/ServiceWorkerManager.ts | starting":{"message":"starting"},"core/sdk/ServiceWorkerManager.ts | stopped":{"message":"stopped"},"core/sdk/ServiceWorkerManager.ts | stopping":{"message":"stopping"},"core/sdk/SourceMapScopeChainEntry.ts | block":{"message":"Block"},"core/sdk/SourceMapScopeChainEntry.ts | closure":{"message":"Closure"},"core/sdk/SourceMapScopeChainEntry.ts | global":{"message":"Global"},"core/sdk/SourceMapScopeChainEntry.ts | local":{"message":"Local"},"core/sdk/SourceMapScopeChainEntry.ts | returnValue":{"message":"Return value"},"entrypoints/inspector_main/inspector_main-meta.ts | autoOpenDevTools":{"message":"Auto-open DevTools for popups"},"entrypoints/inspector_main/inspector_main-meta.ts | blockAds":{"message":"Block ads on this site"},"entrypoints/inspector_main/inspector_main-meta.ts | colorVisionDeficiency":{"message":"color vision deficiency"},"entrypoints/inspector_main/inspector_main-meta.ts | cssMediaFeature":{"message":"CSS media feature"},"entrypoints/inspector_main/inspector_main-meta.ts | cssMediaType":{"message":"CSS media type"},"entrypoints/inspector_main/inspector_main-meta.ts | disablePaused":{"message":"Disable paused state overlay"},"entrypoints/inspector_main/inspector_main-meta.ts | doNotAutoOpen":{"message":"Do not auto-open DevTools for popups"},"entrypoints/inspector_main/inspector_main-meta.ts | forceAdBlocking":{"message":"Force ad blocking on this site"},"entrypoints/inspector_main/inspector_main-meta.ts | fps":{"message":"fps"},"entrypoints/inspector_main/inspector_main-meta.ts | hardReloadPage":{"message":"Hard reload page"},"entrypoints/inspector_main/inspector_main-meta.ts | layout":{"message":"layout"},"entrypoints/inspector_main/inspector_main-meta.ts | paint":{"message":"paint"},"entrypoints/inspector_main/inspector_main-meta.ts | reloadPage":{"message":"Reload page"},"entrypoints/inspector_main/inspector_main-meta.ts | rendering":{"message":"Rendering"},"entrypoints/inspector_main/inspector_main-meta.ts | showAds":{"message":"Show ads on this site, if allowed"},"entrypoints/inspector_main/inspector_main-meta.ts | showRendering":{"message":"Show Rendering"},"entrypoints/inspector_main/inspector_main-meta.ts | toggleCssPrefersColorSchemeMedia":{"message":"Toggle CSS media feature prefers-color-scheme"},"entrypoints/inspector_main/inspector_main-meta.ts | visionDeficiency":{"message":"vision deficiency"},"entrypoints/inspector_main/InspectorMain.ts | javascriptIsDisabled":{"message":"JavaScript is disabled"},"entrypoints/inspector_main/InspectorMain.ts | main":{"message":"Main"},"entrypoints/inspector_main/InspectorMain.ts | openDedicatedTools":{"message":"Open dedicated DevTools for Node.js"},"entrypoints/inspector_main/InspectorMain.ts | tab":{"message":"Tab"},"entrypoints/inspector_main/OutermostTargetSelector.ts | targetNotSelected":{"message":"Page: Not selected"},"entrypoints/inspector_main/OutermostTargetSelector.ts | targetS":{"message":"Page: {PH1}"},"entrypoints/inspector_main/RenderingOptions.ts | disableAvifImageFormat":{"message":"Disable AVIF image format"},"entrypoints/inspector_main/RenderingOptions.ts | disableLocalFonts":{"message":"Disable local fonts"},"entrypoints/inspector_main/RenderingOptions.ts | disablesLocalSourcesInFontface":{"message":"Disables local() sources in @font-face rules. Requires a page reload to apply."},"entrypoints/inspector_main/RenderingOptions.ts | disableWebpImageFormat":{"message":"Disable WebP image format"},"entrypoints/inspector_main/RenderingOptions.ts | emulateAFocusedPage":{"message":"Emulate a focused page"},"entrypoints/inspector_main/RenderingOptions.ts | emulateAutoDarkMode":{"message":"Enable automatic dark mode"},"entrypoints/inspector_main/RenderingOptions.ts | emulatesAFocusedPage":{"message":"Keep page focused. Commonly used for debugging disappearing elements."},"entrypoints/inspector_main/RenderingOptions.ts | emulatesAutoDarkMode":{"message":"Enables automatic dark mode and sets prefers-color-scheme to dark."},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssColorgamutMediaFeature":{"message":"Forces CSS color-gamut media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssForcedColors":{"message":"Forces CSS forced-colors media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPreferscolorschemeMedia":{"message":"Forces CSS prefers-color-scheme media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPreferscontrastMedia":{"message":"Forces CSS prefers-contrast media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPrefersreduceddataMedia":{"message":"Forces CSS prefers-reduced-data media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPrefersreducedmotion":{"message":"Forces CSS prefers-reduced-motion media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPrefersreducedtransparencyMedia":{"message":"Forces CSS prefers-reduced-transparency media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesMediaTypeForTestingPrint":{"message":"Forces media type for testing print and screen styles"},"entrypoints/inspector_main/RenderingOptions.ts | forcesVisionDeficiencyEmulation":{"message":"Forces vision deficiency emulation"},"entrypoints/inspector_main/RenderingOptions.ts | frameRenderingStats":{"message":"Frame Rendering Stats"},"entrypoints/inspector_main/RenderingOptions.ts | highlightAdFrames":{"message":"Highlight ad frames"},"entrypoints/inspector_main/RenderingOptions.ts | highlightsAreasOfThePageBlueThat":{"message":"Highlights areas of the page (blue) that were shifted. May not be suitable for people prone to photosensitive epilepsy."},"entrypoints/inspector_main/RenderingOptions.ts | highlightsAreasOfThePageGreen":{"message":"Highlights areas of the page (green) that need to be repainted. May not be suitable for people prone to photosensitive epilepsy."},"entrypoints/inspector_main/RenderingOptions.ts | highlightsElementsTealThatCan":{"message":"Highlights elements (teal) that can slow down scrolling, including touch & wheel event handlers and other main-thread scrolling situations."},"entrypoints/inspector_main/RenderingOptions.ts | highlightsFramesRedDetectedToBe":{"message":"Highlights frames (red) detected to be ads."},"entrypoints/inspector_main/RenderingOptions.ts | layerBorders":{"message":"Layer borders"},"entrypoints/inspector_main/RenderingOptions.ts | layoutShiftRegions":{"message":"Layout shift regions"},"entrypoints/inspector_main/RenderingOptions.ts | paintFlashing":{"message":"Paint flashing"},"entrypoints/inspector_main/RenderingOptions.ts | plotsFrameThroughputDropped":{"message":"Plots frame throughput, dropped frames distribution, and GPU memory."},"entrypoints/inspector_main/RenderingOptions.ts | requiresAPageReloadToApplyAnd":{"message":"Requires a page reload to apply and disables caching for image requests."},"entrypoints/inspector_main/RenderingOptions.ts | scrollingPerformanceIssues":{"message":"Scrolling performance issues"},"entrypoints/inspector_main/RenderingOptions.ts | showsLayerBordersOrangeoliveAnd":{"message":"Shows layer borders (orange/olive) and tiles (cyan)."},"entrypoints/js_app/js_app.ts | main":{"message":"Main"},"entrypoints/js_app/js_app.ts | networkTitle":{"message":"Scripts"},"entrypoints/js_app/js_app.ts | showNode":{"message":"Show Scripts"},"entrypoints/main/main-meta.ts | auto":{"message":"auto"},"entrypoints/main/main-meta.ts | autoTheme":{"message":"Auto"},"entrypoints/main/main-meta.ts | bottom":{"message":"Bottom"},"entrypoints/main/main-meta.ts | browserLanguage":{"message":"Browser UI language"},"entrypoints/main/main-meta.ts | cancelSearch":{"message":"Cancel search"},"entrypoints/main/main-meta.ts | darkCapital":{"message":"Dark"},"entrypoints/main/main-meta.ts | darkLower":{"message":"dark"},"entrypoints/main/main-meta.ts | devtoolsDefault":{"message":"DevTools (Default)"},"entrypoints/main/main-meta.ts | dockToBottom":{"message":"Dock to bottom"},"entrypoints/main/main-meta.ts | dockToLeft":{"message":"Dock to left"},"entrypoints/main/main-meta.ts | dockToRight":{"message":"Dock to right"},"entrypoints/main/main-meta.ts | dontMatchChromeColorSchemeCommand":{"message":"Don't match Chrome color scheme"},"entrypoints/main/main-meta.ts | enableCtrlShortcutToSwitchPanels":{"message":"Enable Ctrl + 1-9 shortcut to switch panels"},"entrypoints/main/main-meta.ts | enableShortcutToSwitchPanels":{"message":"Enable ⌘ + 1-9 shortcut to switch panels"},"entrypoints/main/main-meta.ts | enableSync":{"message":"Enable settings sync"},"entrypoints/main/main-meta.ts | findNextResult":{"message":"Find next result"},"entrypoints/main/main-meta.ts | findPreviousResult":{"message":"Find previous result"},"entrypoints/main/main-meta.ts | focusDebuggee":{"message":"Focus page"},"entrypoints/main/main-meta.ts | horizontal":{"message":"horizontal"},"entrypoints/main/main-meta.ts | language":{"message":"Language:"},"entrypoints/main/main-meta.ts | left":{"message":"Left"},"entrypoints/main/main-meta.ts | lightCapital":{"message":"Light"},"entrypoints/main/main-meta.ts | lightLower":{"message":"light"},"entrypoints/main/main-meta.ts | matchChromeColorScheme":{"message":"Match Chrome color scheme"},"entrypoints/main/main-meta.ts | matchChromeColorSchemeCommand":{"message":"Match Chrome color scheme"},"entrypoints/main/main-meta.ts | matchChromeColorSchemeDocumentation":{"message":"Match DevTools colors to your customized Chrome theme (when enabled)"},"entrypoints/main/main-meta.ts | nextPanel":{"message":"Next panel"},"entrypoints/main/main-meta.ts | panelLayout":{"message":"Panel layout:"},"entrypoints/main/main-meta.ts | previousPanel":{"message":"Previous panel"},"entrypoints/main/main-meta.ts | reloadDevtools":{"message":"Reload DevTools"},"entrypoints/main/main-meta.ts | resetZoomLevel":{"message":"Reset zoom level"},"entrypoints/main/main-meta.ts | restoreLastDockPosition":{"message":"Restore last dock position"},"entrypoints/main/main-meta.ts | right":{"message":"Right"},"entrypoints/main/main-meta.ts | searchAsYouTypeCommand":{"message":"Enable search as you type"},"entrypoints/main/main-meta.ts | searchAsYouTypeSetting":{"message":"Search as you type"},"entrypoints/main/main-meta.ts | searchInPanel":{"message":"Search in panel"},"entrypoints/main/main-meta.ts | searchOnEnterCommand":{"message":"Disable search as you type (press Enter to search)"},"entrypoints/main/main-meta.ts | switchToBrowserPreferredTheme":{"message":"Switch to browser's preferred theme"},"entrypoints/main/main-meta.ts | switchToDarkTheme":{"message":"Switch to dark theme"},"entrypoints/main/main-meta.ts | switchToLightTheme":{"message":"Switch to light theme"},"entrypoints/main/main-meta.ts | theme":{"message":"Theme:"},"entrypoints/main/main-meta.ts | toggleDrawer":{"message":"Toggle drawer"},"entrypoints/main/main-meta.ts | undocked":{"message":"Undocked"},"entrypoints/main/main-meta.ts | undockIntoSeparateWindow":{"message":"Undock into separate window"},"entrypoints/main/main-meta.ts | useAutomaticPanelLayout":{"message":"Use automatic panel layout"},"entrypoints/main/main-meta.ts | useHorizontalPanelLayout":{"message":"Use horizontal panel layout"},"entrypoints/main/main-meta.ts | useVerticalPanelLayout":{"message":"Use vertical panel layout"},"entrypoints/main/main-meta.ts | vertical":{"message":"vertical"},"entrypoints/main/main-meta.ts | zoomIn":{"message":"Zoom in"},"entrypoints/main/main-meta.ts | zoomOut":{"message":"Zoom out"},"entrypoints/main/MainImpl.ts | customizeAndControlDevtools":{"message":"Customize and control DevTools"},"entrypoints/main/MainImpl.ts | dockSide":{"message":"Dock side"},"entrypoints/main/MainImpl.ts | dockSideNaviation":{"message":"Use left and right arrow keys to navigate the options"},"entrypoints/main/MainImpl.ts | dockToBottom":{"message":"Dock to bottom"},"entrypoints/main/MainImpl.ts | dockToLeft":{"message":"Dock to left"},"entrypoints/main/MainImpl.ts | dockToRight":{"message":"Dock to right"},"entrypoints/main/MainImpl.ts | focusDebuggee":{"message":"Focus page"},"entrypoints/main/MainImpl.ts | help":{"message":"Help"},"entrypoints/main/MainImpl.ts | hideConsoleDrawer":{"message":"Hide console drawer"},"entrypoints/main/MainImpl.ts | moreTools":{"message":"More tools"},"entrypoints/main/MainImpl.ts | placementOfDevtoolsRelativeToThe":{"message":"Placement of DevTools relative to the page. ({PH1} to restore last position)"},"entrypoints/main/MainImpl.ts | showConsoleDrawer":{"message":"Show console drawer"},"entrypoints/main/MainImpl.ts | undockIntoSeparateWindow":{"message":"Undock into separate window"},"entrypoints/node_app/node_app.ts | connection":{"message":"Connection"},"entrypoints/node_app/node_app.ts | networkTitle":{"message":"Node"},"entrypoints/node_app/node_app.ts | node":{"message":"node"},"entrypoints/node_app/node_app.ts | showConnection":{"message":"Show Connection"},"entrypoints/node_app/node_app.ts | showNode":{"message":"Show Node"},"entrypoints/node_app/NodeConnectionsPanel.ts | addConnection":{"message":"Add connection"},"entrypoints/node_app/NodeConnectionsPanel.ts | networkAddressEgLocalhost":{"message":"Network address (e.g. localhost:9229)"},"entrypoints/node_app/NodeConnectionsPanel.ts | noConnectionsSpecified":{"message":"No connections specified"},"entrypoints/node_app/NodeConnectionsPanel.ts | nodejsDebuggingGuide":{"message":"Node.js debugging guide"},"entrypoints/node_app/NodeConnectionsPanel.ts | specifyNetworkEndpointAnd":{"message":"Specify network endpoint and DevTools will connect to it automatically. Read {PH1} to learn more."},"entrypoints/node_app/NodeMain.ts | main":{"message":"Main"},"entrypoints/node_app/NodeMain.ts | nodejsS":{"message":"Node.js: {PH1}"},"entrypoints/node_app/NodeMain.ts | NodejsTitleS":{"message":"DevTools - Node.js: {PH1}"},"entrypoints/rn_fusebox/FuseboxExperimentsObserver.ts | reloadRequiredForNetworkPanelMessage":{"message":"The Network panel is now available for dogfooding. Please reload to access it."},"entrypoints/rn_fusebox/FuseboxReconnectDeviceButton.ts | connectionStatusDisconnectedLabel":{"message":"Reconnect DevTools"},"entrypoints/rn_fusebox/FuseboxReconnectDeviceButton.ts | connectionStatusDisconnectedTooltip":{"message":"Debugging connection was closed"},"entrypoints/rn_fusebox/rn_fusebox.ts | networkTitle":{"message":"React Native"},"entrypoints/rn_fusebox/rn_fusebox.ts | sendFeedback":{"message":"[FB-only] Send feedback"},"entrypoints/rn_fusebox/rn_fusebox.ts | showReactNative":{"message":"Show React Native"},"entrypoints/rn_inspector/rn_inspector.ts | networkTitle":{"message":"React Native"},"entrypoints/rn_inspector/rn_inspector.ts | showReactNative":{"message":"Show React Native"},"entrypoints/worker_app/WorkerMain.ts | main":{"message":"Main"},"generated/Deprecation.ts | AuthorizationCoveredByWildcard":{"message":"Authorization will not be covered by the wildcard symbol (*) in CORS Access-Control-Allow-Headers handling."},"generated/Deprecation.ts | CanRequestURLHTTPContainingNewline":{"message":"Resource requests whose URLs contained both removed whitespace \\(n|r|t) characters and less-than characters (<) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources."},"generated/Deprecation.ts | ChromeLoadTimesConnectionInfo":{"message":"chrome.loadTimes() is deprecated, instead use standardized API: Navigation Timing 2."},"generated/Deprecation.ts | ChromeLoadTimesFirstPaintAfterLoadTime":{"message":"chrome.loadTimes() is deprecated, instead use standardized API: Paint Timing."},"generated/Deprecation.ts | ChromeLoadTimesWasAlternateProtocolAvailable":{"message":"chrome.loadTimes() is deprecated, instead use standardized API: nextHopProtocol in Navigation Timing 2."},"generated/Deprecation.ts | CookieWithTruncatingChar":{"message":"Cookies containing a \\(0|r|n) character will be rejected instead of truncated."},"generated/Deprecation.ts | CrossOriginAccessBasedOnDocumentDomain":{"message":"Relaxing the same-origin policy by setting document.domain is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting document.domain."},"generated/Deprecation.ts | CrossOriginWindowAlert":{"message":"Triggering window.alert from cross origin iframes has been deprecated and will be removed in the future."},"generated/Deprecation.ts | CrossOriginWindowConfirm":{"message":"Triggering window.confirm from cross origin iframes has been deprecated and will be removed in the future."},"generated/Deprecation.ts | CSSSelectorInternalMediaControlsOverlayCastButton":{"message":"The disableRemotePlayback attribute should be used in order to disable the default Cast integration instead of using -internal-media-controls-overlay-cast-button selector."},"generated/Deprecation.ts | CSSValueAppearanceSliderVertical":{"message":"CSS appearance value slider-vertical is not standardized and will be removed."},"generated/Deprecation.ts | DataUrlInSvgUse":{"message":"Support for data: URLs in SVGUseElement is deprecated and it will be removed in the future."},"generated/Deprecation.ts | DOMMutationEvents":{"message":"DOM Mutation Events, including DOMSubtreeModified, DOMNodeInserted, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMNodeInsertedIntoDocument, and DOMCharacterDataModified are deprecated (https://w3c.github.io/uievents/#legacy-event-types) and will be removed. Please use MutationObserver instead."},"generated/Deprecation.ts | GeolocationInsecureOrigin":{"message":"getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."},"generated/Deprecation.ts | GeolocationInsecureOriginDeprecatedNotRemoved":{"message":"getCurrentPosition() and watchPosition() are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."},"generated/Deprecation.ts | GetUserMediaInsecureOrigin":{"message":"getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."},"generated/Deprecation.ts | H1UserAgentFontSizeInSection":{"message":"Found an

tag within an
,