From 19f20ec0fa30bab54cc1bcbaeae21387da6ad36b Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Wed, 11 Mar 2026 11:56:05 +0100 Subject: [PATCH 01/49] Bump dependencies --- e2e/android/app/build.gradle | 4 +- e2e/package-lock.json | 482 +++++++++++++------------- e2e/package.json | 28 +- example/android/app/build.gradle | 4 +- example/package-lock.json | 484 +++++++++++++------------- example/package.json | 28 +- package-lock.json | 577 ++++++++++++++++++------------- package.json | 10 +- 8 files changed, 856 insertions(+), 761 deletions(-) diff --git a/e2e/android/app/build.gradle b/e2e/android/app/build.gradle index cad5d2e80..87b748d4d 100644 --- a/e2e/android/app/build.gradle +++ b/e2e/android/app/build.gradle @@ -20,9 +20,9 @@ react { /* Variants */ // The list of variants to that are debuggable. For those we're going to - // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // skip the bundling of the JS bundle and the assets. Default is "debug", "debugOptimized". // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. - // debuggableVariants = ["liteDebug", "prodDebug"] + // debuggableVariants = ["liteDebug", "liteDebugOptimized", "prodDebug", "prodDebugOptimized"] /* Bundling */ // A list containing the node command and its flags. Default is just 'node'. diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 49fc19aac..9c4474fd7 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -8,10 +8,10 @@ "name": "react-native-theoplayer-e2e", "version": "0.0.1", "dependencies": { - "@theoplayer/react-native-ui": "^0.21.1", - "react": "19.2.0", - "react-dom": "19.2.0", - "react-native": "npm:react-native-tvos@^0.83.1-0", + "@theoplayer/react-native-ui": "^0.22.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "react-native": "npm:react-native-tvos@^0.84.1-0", "react-native-device-info": "^14.1.1", "react-native-status-bar-height": "^2.6.0", "react-native-svg": "^15.12.1", @@ -23,16 +23,16 @@ "@babel/core": "^7.25.9", "@babel/preset-env": "^7.25.9", "@babel/runtime": "^7.26.10", - "@react-native-community/cli": "20.0.0", - "@react-native-community/cli-platform-android": "20.0.0", - "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.83.1", - "@react-native/eslint-config": "0.83.1", - "@react-native/metro-config": "0.83.1", - "@react-native/typescript-config": "0.83.1", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.84.1", + "@react-native/eslint-config": "0.84.1", + "@react-native/metro-config": "0.84.1", + "@react-native/typescript-config": "0.84.1", "@types/cavy": "^3.2.9", - "@types/react": "^19.2.0", - "@types/react-dom": "^19.1.6", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", "babel-loader": "^8.4.1", "babel-plugin-module-resolver": "^5.0.2", "babel-plugin-react-native-web": "^0.17.7", @@ -49,11 +49,11 @@ "webpack-dev-server": "^5.2.1" }, "engines": { - "node": ">=20" + "node": ">= 22.11.0" } }, "..": { - "version": "10.11.0", + "version": "10.13.0", "license": "BSD-3-Clause-Clear", "dependencies": { "@theoplayer/cmcd-connector-web": "^1.4.0", @@ -62,8 +62,8 @@ "devDependencies": { "@eslint/js": "^9.13.0", "@expo/config-plugins": "^10.0.2", - "@react-native/eslint-config": "^0.83.1", - "@types/react": "^19.2.0", + "@react-native/eslint-config": "^0.84.1", + "@types/react": "^19.2.14", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", "eslint-plugin-react-hooks": "^7.0.0", @@ -71,10 +71,10 @@ "lint-staged": "^15.5.1", "pod-install": "^0.1.39", "prettier": "^3.5.3", - "react": "^19.2.0", - "react-native": "^0.83.1", + "react": "^19.2.3", + "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.10.0", + "theoplayer": "^10.11.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", @@ -883,7 +883,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1022,7 +1022,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -1205,7 +1205,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", @@ -1239,7 +1239,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1255,7 +1255,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1406,7 +1406,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1422,7 +1422,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", @@ -1492,7 +1492,7 @@ "version": "7.27.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1697,7 +1697,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1713,7 +1713,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -1730,7 +1730,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -2699,25 +2699,25 @@ } }, "node_modules/@react-native-community/cli": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.0.0.tgz", - "integrity": "sha512-/cMnGl5V1rqnbElY1Fvga1vfw0d3bnqiJLx2+2oh7l9ulnXfVRWb5tU2kgBqiMxuDOKA+DQoifC9q/tvkj5K2w==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.0.tgz", + "integrity": "sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-clean": "20.0.0", - "@react-native-community/cli-config": "20.0.0", - "@react-native-community/cli-doctor": "20.0.0", - "@react-native-community/cli-server-api": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "@react-native-community/cli-types": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-clean": "20.1.0", + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-doctor": "20.1.0", + "@react-native-community/cli-server-api": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "@react-native-community/cli-types": "20.1.0", "commander": "^9.4.1", "deepmerge": "^4.3.0", "execa": "^5.0.0", "find-up": "^5.0.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", + "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" }, @@ -2725,91 +2725,91 @@ "rnc-cli": "build/bin.js" }, "engines": { - "node": ">=18" + "node": ">=20.19.4" } }, "node_modules/@react-native-community/cli-clean": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.0.0.tgz", - "integrity": "sha512-YmdNRcT+Dp8lC7CfxSDIfPMbVPEXVFzBH62VZNbYGxjyakqAvoQUFTYPgM2AyFusAr4wDFbDOsEv88gCDwR3ig==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.0.tgz", + "integrity": "sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-glob": "^3.3.2" + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-config": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.0.0.tgz", - "integrity": "sha512-5Ky9ceYuDqG62VIIpbOmkg8Lybj2fUjf/5wK4UO107uRqejBgNgKsbGnIZgEhREcaSEOkujWrroJ9gweueLfBg==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.0.tgz", + "integrity": "sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "cosmiconfig": "^9.0.0", "deepmerge": "^4.3.0", "fast-glob": "^3.3.2", - "joi": "^17.2.1" + "joi": "^17.2.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-config-android": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.0.0.tgz", - "integrity": "sha512-asv60qYCnL1v0QFWcG9r1zckeFlKG+14GGNyPXY72Eea7RX5Cxdx8Pb6fIPKroWH1HEWjYH9KKHksMSnf9FMKw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.0.tgz", + "integrity": "sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "fast-glob": "^3.3.2", - "fast-xml-parser": "^4.4.1" + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-config-apple": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.0.0.tgz", - "integrity": "sha512-PS1gNOdpeQ6w7dVu1zi++E+ix2D0ZkGC2SQP6Y/Qp002wG4se56esLXItYiiLrJkhH21P28fXdmYvTEkjSm9/Q==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.0.tgz", + "integrity": "sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-glob": "^3.3.2" + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-doctor": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.0.0.tgz", - "integrity": "sha512-cPHspi59+Fy41FDVxt62ZWoicCZ1o34k8LAl64NVSY0lwPl+CEi78jipXJhtfkVqSTetloA8zexa/vSAcJy57Q==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.0.tgz", + "integrity": "sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config": "20.0.0", - "@react-native-community/cli-platform-android": "20.0.0", - "@react-native-community/cli-platform-apple": "20.0.0", - "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-apple": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "command-exists": "^1.2.8", "deepmerge": "^4.3.0", "envinfo": "^7.13.0", "execa": "^5.0.0", "node-stream-zip": "^1.9.1", "ora": "^5.4.1", + "picocolors": "^1.1.1", "semver": "^7.5.2", "wcwidth": "^1.0.1", "yaml": "^2.2.1" } }, "node_modules/@react-native-community/cli-doctor/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "devOptional": true, "license": "ISC", "bin": { @@ -2820,51 +2820,51 @@ } }, "node_modules/@react-native-community/cli-platform-android": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.0.0.tgz", - "integrity": "sha512-th3ji1GRcV6ACelgC0wJtt9daDZ+63/52KTwL39xXGoqczFjml4qERK90/ppcXU0Ilgq55ANF8Pr+UotQ2AB/A==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.0.tgz", + "integrity": "sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config-android": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config-android": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "logkitty": "^0.7.1" + "logkitty": "^0.7.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-platform-apple": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.0.0.tgz", - "integrity": "sha512-rZZCnAjUHN1XBgiWTAMwEKpbVTO4IHBSecdd1VxJFeTZ7WjmstqA6L/HXcnueBgxrzTCRqvkRIyEQXxC1OfhGw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.0.tgz", + "integrity": "sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config-apple": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config-apple": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-xml-parser": "^4.4.1" + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-platform-ios": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.0.0.tgz", - "integrity": "sha512-Z35M+4gUJgtS4WqgpKU9/XYur70nmj3Q65c9USyTq6v/7YJ4VmBkmhC9BticPs6wuQ9Jcv0NyVCY0Wmh6kMMYw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.0.tgz", + "integrity": "sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-platform-apple": "20.0.0" + "@react-native-community/cli-platform-apple": "20.1.0" } }, "node_modules/@react-native-community/cli-server-api": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.0.0.tgz", - "integrity": "sha512-Ves21bXtjUK3tQbtqw/NdzpMW1vR2HvYCkUQ/MXKrJcPjgJnXQpSnTqHXz6ZdBlMbbwLJXOhSPiYzxb5/v4CDg==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.0.tgz", + "integrity": "sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", + "@react-native-community/cli-tools": "20.1.0", "body-parser": "^1.20.3", "compression": "^1.7.1", "connect": "^3.6.5", @@ -2877,28 +2877,28 @@ } }, "node_modules/@react-native-community/cli-tools": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.0.0.tgz", - "integrity": "sha512-akSZGxr1IajJ8n0YCwQoA3DI0HttJ0WB7M3nVpb0lOM+rJpsBN7WG5Ft+8ozb6HyIPX+O+lLeYazxn5VNG/Xhw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", "devOptional": true, "license": "MIT", "dependencies": { "@vscode/sudo-prompt": "^9.0.0", "appdirsjs": "^1.2.4", - "chalk": "^4.1.2", "execa": "^5.0.0", "find-up": "^5.0.0", "launch-editor": "^2.9.1", "mime": "^2.4.1", "ora": "^5.4.1", + "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" } }, "node_modules/@react-native-community/cli-tools/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "devOptional": true, "license": "ISC", "bin": { @@ -2909,9 +2909,9 @@ } }, "node_modules/@react-native-community/cli-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.0.0.tgz", - "integrity": "sha512-7J4hzGWOPTBV1d30Pf2NidV+bfCWpjfCOiGO3HUhz1fH4MvBM0FbbBmE9LE5NnMz7M8XSRSi68ZGYQXgLBB2Qw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.0.tgz", + "integrity": "sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2932,9 +2932,9 @@ } }, "node_modules/@react-native-tvos/virtualized-lists": { - "version": "0.83.1-0", - "resolved": "https://registry.npmjs.org/@react-native-tvos/virtualized-lists/-/virtualized-lists-0.83.1-0.tgz", - "integrity": "sha512-AQxQkh7/I485IEWOvrwWGBiTfc4Q74HgJvbUNRf4PJxraWxiRHQzhlNG4MO33tSFmEzC8lFexl2GDWM6Rme49Q==", + "version": "0.84.1-0", + "resolved": "https://registry.npmjs.org/@react-native-tvos/virtualized-lists/-/virtualized-lists-0.84.1-0.tgz", + "integrity": "sha512-+pKuqyolRwyqQHeIYfJxtedBc2k1rudIOwp27S9VJSfTjpm2V+x2kHUaBU5upHW2Tyag2kI7jedlYkA5reoN5Q==", "license": "MIT", "dependencies": { "invariant": "^2.2.4", @@ -2955,32 +2955,32 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", - "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.84.1.tgz", + "integrity": "sha512-lAJ6PDZv95FdT9s9uhc9ivhikW1Zwh4j9XdXM7J2l4oUA3t37qfoBmTSDLuPyE3Bi+Xtwa11hJm0BUTT2sc/gg==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", - "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.84.1.tgz", + "integrity": "sha512-vorvcvptGxtK0qTDCFQb+W3CU6oIhzcX5dduetWRBoAhXdthEQM0MQnF+GTXoXL8/luffKgy7PlZRG/WeI/oRQ==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.83.1" + "@react-native/codegen": "0.84.1" }, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-preset": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", - "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.84.1.tgz", + "integrity": "sha512-3GpmCKk21f4oe32bKIdmkdn+WydvhhZL+1nsoFBGi30Qrq9vL16giKu31OcnWshYz139x+mVAvCyoyzgn8RXSw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2990,27 +2990,19 @@ "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", @@ -3019,13 +3011,9 @@ "@babel/plugin-transform-react-jsx-source": "^7.24.7", "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.83.1", + "@react-native/babel-plugin-codegen": "0.84.1", "babel-plugin-syntax-hermes-parser": "0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" @@ -3038,17 +3026,17 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", - "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.84.1.tgz", + "integrity": "sha512-n1RIU0QAavgCg1uC5+s53arL7/mpM+16IBhJ3nCFSd/iK5tUmCwxQDcIDC703fuXfpub/ZygeSjVN8bcOWn0gA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", - "glob": "^7.1.1", "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", "yargs": "^17.6.2" }, "engines": { @@ -3059,12 +3047,12 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", - "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.1.tgz", + "integrity": "sha512-f6a+mJEJ6Joxlt/050TqYUr7uRRbeKnz8lnpL7JajhpsgZLEbkJRjH8HY5QiLcRdUwWFtizml4V+vcO3P4RxoQ==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.83.1", + "@react-native/dev-middleware": "0.84.1", "debug": "^4.4.0", "invariant": "^2.2.4", "metro": "^0.83.3", @@ -3089,9 +3077,9 @@ } }, "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3101,21 +3089,22 @@ } }, "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.84.1.tgz", + "integrity": "sha512-rUU/Pyh3R5zT0WkVgB+yA6VwOp7HM5Hz4NYE97ajFS07OUIcv8JzBL3MXVdSSjLfldfqOuPEuKUaZcAOwPgabw==", "license": "BSD-3-Clause", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.84.1.tgz", + "integrity": "sha512-LIGhh4q4ette3yW5OzmukNMYwmINYrRGDZqKyTYc/VZyNpblZPw72coXVHXdfpPT6+YlxHqXzn3UjFZpNODGCQ==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.6", + "debug": "^4.4.0", "fb-dotslash": "0.5.8" }, "engines": { @@ -3123,14 +3112,14 @@ } }, "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.84.1.tgz", + "integrity": "sha512-Z83ra+Gk6ElAhH3XRrv3vwbwCPTb04sPPlNpotxcFZb5LtRQZwT91ZQEXw3GOJCVIFp9EQ/gj8AQbVvtHKOUlQ==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", + "@react-native/debugger-frontend": "0.84.1", + "@react-native/debugger-shell": "0.84.1", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -3195,15 +3184,15 @@ } }, "node_modules/@react-native/eslint-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.83.1.tgz", - "integrity": "sha512-fo3DmFywzkpVZgIji9vR93kN7sSAY122ZIB7VcudgKlmD/YFxJ5Yi+ZNiWYl6aprLexxOWjROgHXNP0B0XaAng==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.84.1.tgz", + "integrity": "sha512-Z8j0uahXvPgvBAslxwIWwFliRQO0bL7nLpNiFroVnT1ojYCQHwFAbObDcAIs+Yva2FTat2A5m2rbi98MHVC+cg==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/eslint-plugin": "0.83.1", + "@react-native/eslint-plugin": "0.84.1", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "eslint-config-prettier": "^8.5.0", @@ -3212,20 +3201,20 @@ "eslint-plugin-jest": "^29.0.1", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-native": "^4.0.0" + "eslint-plugin-react-native": "^5.0.0" }, "engines": { "node": ">= 20.19.4" }, "peerDependencies": { - "eslint": ">=8", + "eslint": "^8.0.0 || ^9.0.0", "prettier": ">=2" } }, "node_modules/@react-native/eslint-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.83.1.tgz", - "integrity": "sha512-nKd/FONY8aIIjtjEqI2ScvgJYeblBgdnwseRHlIC+Nm3f3tuOifUrHFtWBJznlrKFJcme31Tl7qiryE2SruLYw==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.84.1.tgz", + "integrity": "sha512-mKhsn3+CmN03vyW7/YQ6/LvLQppWT+eYqlCvmOvVoGlnh+XrJHJgwNr891zsyxGNELTwu/x2+T83ogwCmRHMEw==", "dev": true, "license": "MIT", "engines": { @@ -3233,32 +3222,32 @@ } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", - "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.84.1.tgz", + "integrity": "sha512-7uVlPBE3uluRNRX4MW7PUJIO1LDBTpAqStKHU7LHH+GRrdZbHsWtOEAX8PiY4GFfBEvG8hEjiuTOqAxMjV+hDg==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", - "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.84.1.tgz", + "integrity": "sha512-UsTe2AbUugsfyI7XIHMQq4E7xeC8a6GrYwuK+NohMMMJMxmyM3JkzIk+GB9e2il6ScEQNMJNaj+q+i5za8itxQ==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/metro-babel-transformer": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.83.1.tgz", - "integrity": "sha512-fqt6DHWX1GBGDKa5WJOjDtPPy2M9lkYVLn59fBeFQ0GXhBRzNbUh8JzWWI/Q2CLDZ2tgKCcwaiXJ1OHWVd2BCQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.84.1.tgz", + "integrity": "sha512-NswINguTz0eg1Dc0oGO/1dejXSr6iQaz8/NnCRn5HJdA3dGfqadS7zlYv0YjiWpgKgcW6uENaIEgJOQww0KSpw==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.83.1", + "@react-native/babel-preset": "0.84.1", "hermes-parser": "0.32.0", "nullthrows": "^1.1.1" }, @@ -3270,14 +3259,14 @@ } }, "node_modules/@react-native/metro-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.83.1.tgz", - "integrity": "sha512-1rjYZf62fCm6QAinHmRAKnJxIypX0VF/zBPd0qWvWABMZugrS0eACuIbk9Wk0StBod4yL8KnwEJyg77ak8xYzQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.84.1.tgz", + "integrity": "sha512-KlRawK4aXxRLlR3HYVfZKhfQp7sejQefQ/LttUWUkErhKO0AFt+yznoSLq7xwIrH9K3A3YwImHuFVtUtuDmurA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native/js-polyfills": "0.83.1", - "@react-native/metro-babel-transformer": "0.83.1", + "@react-native/js-polyfills": "0.84.1", + "@react-native/metro-babel-transformer": "0.84.1", "metro-config": "^0.83.3", "metro-runtime": "^0.83.3" }, @@ -3286,15 +3275,15 @@ } }, "node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.84.1.tgz", + "integrity": "sha512-/UPaQ4jl95soXnLDEJ6Cs6lnRXhwbxtT4KbZz+AFDees7prMV2NOLcHfCnzmTabf5Y3oxENMVBL666n4GMLcTA==", "license": "MIT" }, "node_modules/@react-native/typescript-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.83.1.tgz", - "integrity": "sha512-y83qd7fmlZG+EJoOyKEmAXifdjN1csNhcfpyxDvgaIUNO/pw2ws3MV/wp+ERQ8F6JIuAu1zcfyCy1/pEA7tC9g==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.84.1.tgz", + "integrity": "sha512-ar7Gn6ma3b+Ricdxn2sTZL2DT1NMlrfsWmOkFZegpfQJzheqX/8gzIB1aIbfZyvhEDsoz07RG7wmsyQAWqXjsw==", "dev": true, "license": "MIT" }, @@ -3347,9 +3336,9 @@ } }, "node_modules/@theoplayer/react-native-ui": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.21.2.tgz", - "integrity": "sha512-8iHrnizIwliS3udc3KVGatLKutHYM88D4vj1ICbJZHBEp70C1KnQGJVkvQhavCXy4EUe1nu9xHmLhXEHvacuwQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.22.0.tgz", + "integrity": "sha512-7nk/VBKIcOdN7f/WgewejSItzNIZ2qdej43qvhp2UREXWWcpppmR0oltYPL9P16oOaMoOMK8vAXMIxengomxJg==", "license": "SEE LICENSE AT https://www.theoplayer.com/terms", "dependencies": { "@miblanchard/react-native-slider": "^2.6.0", @@ -3616,9 +3605,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", "dependencies": { @@ -3981,9 +3970,9 @@ "license": "ISC" }, "node_modules/@vscode/sudo-prompt": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.1.tgz", - "integrity": "sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", "devOptional": true, "license": "MIT" }, @@ -5875,9 +5864,9 @@ "license": "MIT" }, "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -6036,9 +6025,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "devOptional": true, "license": "MIT" }, @@ -6426,17 +6415,21 @@ } }, "node_modules/errorhandler": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", - "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", + "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", "devOptional": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "escape-html": "~1.0.3" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/es-abstract": { @@ -6875,16 +6868,16 @@ } }, "node_modules/eslint-plugin-react-native": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", - "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-5.0.0.tgz", + "integrity": "sha512-VyWlyCC/7FC/aONibOwLkzmyKg4j9oI8fzrk9WYNs4I8/m436JuOTAFwLvEn1CVvc7La4cPfbCyspP4OYpP52Q==", "dev": true, "license": "MIT", "dependencies": { "eslint-plugin-react-native-globals": "^0.1.1" }, "peerDependencies": { - "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "node_modules/eslint-plugin-react-native-globals": { @@ -7372,9 +7365,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.4.tgz", - "integrity": "sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.5.tgz", + "integrity": "sha512-cK9c5I/DwIOI7/Q7AlGN3DuTdwN61gwSfL8rvuVPK+0mcCNHHGxRrpiFtaZZRfRMJL3Gl8B2AFlBG6qXf03w9A==", "devOptional": true, "funding": [ { @@ -8116,9 +8109,9 @@ } }, "node_modules/hermes-compiler": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", - "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "version": "250829098.0.9", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.9.tgz", + "integrity": "sha512-hZ5O7PDz1vQ99TS7HD3FJ9zVynfU1y+VWId6U1Pldvd8hmAYrNec/XLPYJKD3dLOW6NXak6aAQAuMuSo3ji0tQ==", "license": "MIT" }, "node_modules/hermes-estree": { @@ -11533,9 +11526,9 @@ } }, "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11573,15 +11566,15 @@ } }, "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.0" + "react": "^19.2.3" } }, "node_modules/react-is": { @@ -11593,19 +11586,19 @@ }, "node_modules/react-native": { "name": "react-native-tvos", - "version": "0.83.1-0", - "resolved": "https://registry.npmjs.org/react-native-tvos/-/react-native-tvos-0.83.1-0.tgz", - "integrity": "sha512-l+18XpdWmh7qDqTMZ2vwCv0PmvF+lxQSaxHk+Kt+0ZGwWi+gz0KyK15bf39xuzp2W+WBBgamLMtx+D6OBCUb7A==", + "version": "0.84.1-0", + "resolved": "https://registry.npmjs.org/react-native-tvos/-/react-native-tvos-0.84.1-0.tgz", + "integrity": "sha512-vJWbzbnUhI88wtvdZEKR+A85OYvqRqTffg3grW3XJrNNP8pXJ7yEK2q8Vbg3SCqtWuox9KJ+Ss0KCv+yUcd66A==", "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native-tvos/virtualized-lists": "0.83.1-0", - "@react-native/assets-registry": "0.83.1", - "@react-native/codegen": "0.83.1", - "@react-native/community-cli-plugin": "0.83.1", - "@react-native/gradle-plugin": "0.83.1", - "@react-native/js-polyfills": "0.83.1", - "@react-native/normalize-colors": "0.83.1", + "@react-native-tvos/virtualized-lists": "0.84.1-0", + "@react-native/assets-registry": "0.84.1", + "@react-native/codegen": "0.84.1", + "@react-native/community-cli-plugin": "0.84.1", + "@react-native/gradle-plugin": "0.84.1", + "@react-native/js-polyfills": "0.84.1", + "@react-native/normalize-colors": "0.84.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -11614,8 +11607,7 @@ "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", - "hermes-compiler": "0.14.0", + "hermes-compiler": "250829098.0.9", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", @@ -11630,6 +11622,7 @@ "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", "whatwg-fetch": "^3.0.0", "ws": "^7.5.10", "yargs": "^17.6.2" @@ -11642,7 +11635,7 @@ }, "peerDependencies": { "@types/react": "^19.1.1", - "react": "^19.2.0" + "react": "^19.2.3" }, "peerDependenciesMeta": { "@types/react": { @@ -11784,9 +11777,9 @@ } }, "node_modules/react-native/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -13382,9 +13375,9 @@ } }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -13444,7 +13437,6 @@ "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -13461,7 +13453,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -13479,7 +13470,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" diff --git a/e2e/package.json b/e2e/package.json index 45f09c207..261a4f81e 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -14,10 +14,10 @@ "update-dependencies": "npx ncu '/@theoplayer\\/.*/' -u" }, "dependencies": { - "@theoplayer/react-native-ui": "^0.21.1", - "react": "19.2.0", - "react-dom": "19.2.0", - "react-native": "npm:react-native-tvos@^0.83.1-0", + "@theoplayer/react-native-ui": "^0.22.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "react-native": "npm:react-native-tvos@^0.84.1-0", "react-native-device-info": "^14.1.1", "react-native-status-bar-height": "^2.6.0", "react-native-svg": "^15.12.1", @@ -29,16 +29,16 @@ "@babel/core": "^7.25.9", "@babel/preset-env": "^7.25.9", "@babel/runtime": "^7.26.10", - "@react-native-community/cli": "20.0.0", - "@react-native-community/cli-platform-android": "20.0.0", - "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.83.1", - "@react-native/eslint-config": "0.83.1", - "@react-native/metro-config": "0.83.1", - "@react-native/typescript-config": "0.83.1", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.84.1", + "@react-native/eslint-config": "0.84.1", + "@react-native/metro-config": "0.84.1", + "@react-native/typescript-config": "0.84.1", "@types/cavy": "^3.2.9", - "@types/react": "^19.2.0", - "@types/react-dom": "^19.1.6", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", "babel-loader": "^8.4.1", "babel-plugin-module-resolver": "^5.0.2", "babel-plugin-react-native-web": "^0.17.7", @@ -61,6 +61,6 @@ } }, "engines": { - "node": ">=20" + "node": ">= 22.11.0" } } diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 19d99169b..cb057edd6 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -20,9 +20,9 @@ react { /* Variants */ // The list of variants to that are debuggable. For those we're going to - // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // skip the bundling of the JS bundle and the assets. Default is "debug", "debugOptimized". // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. - // debuggableVariants = ["liteDebug", "prodDebug"] + // debuggableVariants = ["liteDebug", "liteDebugOptimized", "prodDebug", "prodDebugOptimized"] /* Bundling */ // A list containing the node command and its flags. Default is just 'node'. diff --git a/example/package-lock.json b/example/package-lock.json index 5bbe237b5..2e676584b 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9,10 +9,10 @@ "version": "0.0.1", "dependencies": { "@theoplayer/react-native-drm": "^1.10.0", - "@theoplayer/react-native-ui": "^0.21.1", - "react": "19.2.0", - "react-dom": "19.2.0", - "react-native": "npm:react-native-tvos@^0.83.1-0", + "@theoplayer/react-native-ui": "^0.22.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "react-native": "npm:react-native-tvos@^0.84.1-0", "react-native-safe-area-context": "^5.5.2", "react-native-status-bar-height": "^2.6.0", "react-native-svg": "^15.12.1", @@ -24,15 +24,15 @@ "@babel/core": "^7.25.9", "@babel/preset-env": "^7.25.9", "@babel/runtime": "^7.26.10", - "@react-native-community/cli": "20.0.0", - "@react-native-community/cli-platform-android": "20.0.0", - "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.83.1", - "@react-native/eslint-config": "0.83.1", - "@react-native/metro-config": "0.83.1", - "@react-native/typescript-config": "0.83.1", - "@types/react": "^19.2.0", - "@types/react-dom": "^19.2.0", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.84.1", + "@react-native/eslint-config": "0.84.1", + "@react-native/metro-config": "0.84.1", + "@react-native/typescript-config": "0.84.1", + "@types/react": "^19.2.3", + "@types/react-dom": "^19.2.3", "babel-loader": "^8.4.1", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "^0.17.7", @@ -47,11 +47,11 @@ "webpack-dev-server": "^5.2.1" }, "engines": { - "node": ">= 20" + "node": ">= 22.11.0" } }, "..": { - "version": "10.9.0", + "version": "10.13.0", "license": "BSD-3-Clause-Clear", "dependencies": { "@theoplayer/cmcd-connector-web": "^1.4.0", @@ -60,8 +60,8 @@ "devDependencies": { "@eslint/js": "^9.13.0", "@expo/config-plugins": "^10.0.2", - "@react-native/eslint-config": "^0.83.1", - "@types/react": "^19.2.0", + "@react-native/eslint-config": "^0.84.1", + "@types/react": "^19.2.14", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", "eslint-plugin-react-hooks": "^7.0.0", @@ -69,10 +69,10 @@ "lint-staged": "^15.5.1", "pod-install": "^0.1.39", "prettier": "^3.5.3", - "react": "^19.2.0", - "react-native": "^0.83.1", + "react": "^19.2.3", + "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.10.0", + "theoplayer": "^10.11.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", @@ -881,7 +881,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1020,7 +1020,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -1203,7 +1203,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", @@ -1237,7 +1237,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1253,7 +1253,7 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1404,7 +1404,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1420,7 +1420,7 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", @@ -1490,7 +1490,7 @@ "version": "7.27.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1695,7 +1695,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1711,7 +1711,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", @@ -1728,7 +1728,7 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -2697,25 +2697,25 @@ } }, "node_modules/@react-native-community/cli": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.0.0.tgz", - "integrity": "sha512-/cMnGl5V1rqnbElY1Fvga1vfw0d3bnqiJLx2+2oh7l9ulnXfVRWb5tU2kgBqiMxuDOKA+DQoifC9q/tvkj5K2w==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-20.1.0.tgz", + "integrity": "sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-clean": "20.0.0", - "@react-native-community/cli-config": "20.0.0", - "@react-native-community/cli-doctor": "20.0.0", - "@react-native-community/cli-server-api": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "@react-native-community/cli-types": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-clean": "20.1.0", + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-doctor": "20.1.0", + "@react-native-community/cli-server-api": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", + "@react-native-community/cli-types": "20.1.0", "commander": "^9.4.1", "deepmerge": "^4.3.0", "execa": "^5.0.0", "find-up": "^5.0.0", "fs-extra": "^8.1.0", "graceful-fs": "^4.1.3", + "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" }, @@ -2723,91 +2723,91 @@ "rnc-cli": "build/bin.js" }, "engines": { - "node": ">=18" + "node": ">=20.19.4" } }, "node_modules/@react-native-community/cli-clean": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.0.0.tgz", - "integrity": "sha512-YmdNRcT+Dp8lC7CfxSDIfPMbVPEXVFzBH62VZNbYGxjyakqAvoQUFTYPgM2AyFusAr4wDFbDOsEv88gCDwR3ig==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-20.1.0.tgz", + "integrity": "sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-glob": "^3.3.2" + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-config": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.0.0.tgz", - "integrity": "sha512-5Ky9ceYuDqG62VIIpbOmkg8Lybj2fUjf/5wK4UO107uRqejBgNgKsbGnIZgEhREcaSEOkujWrroJ9gweueLfBg==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-20.1.0.tgz", + "integrity": "sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "cosmiconfig": "^9.0.0", "deepmerge": "^4.3.0", "fast-glob": "^3.3.2", - "joi": "^17.2.1" + "joi": "^17.2.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-config-android": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.0.0.tgz", - "integrity": "sha512-asv60qYCnL1v0QFWcG9r1zckeFlKG+14GGNyPXY72Eea7RX5Cxdx8Pb6fIPKroWH1HEWjYH9KKHksMSnf9FMKw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-android/-/cli-config-android-20.1.0.tgz", + "integrity": "sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "fast-glob": "^3.3.2", - "fast-xml-parser": "^4.4.1" + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-config-apple": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.0.0.tgz", - "integrity": "sha512-PS1gNOdpeQ6w7dVu1zi++E+ix2D0ZkGC2SQP6Y/Qp002wG4se56esLXItYiiLrJkhH21P28fXdmYvTEkjSm9/Q==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config-apple/-/cli-config-apple-20.1.0.tgz", + "integrity": "sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-glob": "^3.3.2" + "fast-glob": "^3.3.2", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-doctor": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.0.0.tgz", - "integrity": "sha512-cPHspi59+Fy41FDVxt62ZWoicCZ1o34k8LAl64NVSY0lwPl+CEi78jipXJhtfkVqSTetloA8zexa/vSAcJy57Q==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-20.1.0.tgz", + "integrity": "sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config": "20.0.0", - "@react-native-community/cli-platform-android": "20.0.0", - "@react-native-community/cli-platform-apple": "20.0.0", - "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-apple": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "command-exists": "^1.2.8", "deepmerge": "^4.3.0", "envinfo": "^7.13.0", "execa": "^5.0.0", "node-stream-zip": "^1.9.1", "ora": "^5.4.1", + "picocolors": "^1.1.1", "semver": "^7.5.2", "wcwidth": "^1.0.1", "yaml": "^2.2.1" } }, "node_modules/@react-native-community/cli-doctor/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "devOptional": true, "license": "ISC", "bin": { @@ -2818,51 +2818,51 @@ } }, "node_modules/@react-native-community/cli-platform-android": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.0.0.tgz", - "integrity": "sha512-th3ji1GRcV6ACelgC0wJtt9daDZ+63/52KTwL39xXGoqczFjml4qERK90/ppcXU0Ilgq55ANF8Pr+UotQ2AB/A==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-20.1.0.tgz", + "integrity": "sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config-android": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config-android": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "logkitty": "^0.7.1" + "logkitty": "^0.7.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-platform-apple": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.0.0.tgz", - "integrity": "sha512-rZZCnAjUHN1XBgiWTAMwEKpbVTO4IHBSecdd1VxJFeTZ7WjmstqA6L/HXcnueBgxrzTCRqvkRIyEQXxC1OfhGw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-20.1.0.tgz", + "integrity": "sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-config-apple": "20.0.0", - "@react-native-community/cli-tools": "20.0.0", - "chalk": "^4.1.2", + "@react-native-community/cli-config-apple": "20.1.0", + "@react-native-community/cli-tools": "20.1.0", "execa": "^5.0.0", - "fast-xml-parser": "^4.4.1" + "fast-xml-parser": "^4.4.1", + "picocolors": "^1.1.1" } }, "node_modules/@react-native-community/cli-platform-ios": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.0.0.tgz", - "integrity": "sha512-Z35M+4gUJgtS4WqgpKU9/XYur70nmj3Q65c9USyTq6v/7YJ4VmBkmhC9BticPs6wuQ9Jcv0NyVCY0Wmh6kMMYw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-20.1.0.tgz", + "integrity": "sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-platform-apple": "20.0.0" + "@react-native-community/cli-platform-apple": "20.1.0" } }, "node_modules/@react-native-community/cli-server-api": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.0.0.tgz", - "integrity": "sha512-Ves21bXtjUK3tQbtqw/NdzpMW1vR2HvYCkUQ/MXKrJcPjgJnXQpSnTqHXz6ZdBlMbbwLJXOhSPiYzxb5/v4CDg==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-20.1.0.tgz", + "integrity": "sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-community/cli-tools": "20.0.0", + "@react-native-community/cli-tools": "20.1.0", "body-parser": "^1.20.3", "compression": "^1.7.1", "connect": "^3.6.5", @@ -2875,28 +2875,28 @@ } }, "node_modules/@react-native-community/cli-tools": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.0.0.tgz", - "integrity": "sha512-akSZGxr1IajJ8n0YCwQoA3DI0HttJ0WB7M3nVpb0lOM+rJpsBN7WG5Ft+8ozb6HyIPX+O+lLeYazxn5VNG/Xhw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-20.1.0.tgz", + "integrity": "sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==", "devOptional": true, "license": "MIT", "dependencies": { "@vscode/sudo-prompt": "^9.0.0", "appdirsjs": "^1.2.4", - "chalk": "^4.1.2", "execa": "^5.0.0", "find-up": "^5.0.0", "launch-editor": "^2.9.1", "mime": "^2.4.1", "ora": "^5.4.1", + "picocolors": "^1.1.1", "prompts": "^2.4.2", "semver": "^7.5.2" } }, "node_modules/@react-native-community/cli-tools/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "devOptional": true, "license": "ISC", "bin": { @@ -2907,9 +2907,9 @@ } }, "node_modules/@react-native-community/cli-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.0.0.tgz", - "integrity": "sha512-7J4hzGWOPTBV1d30Pf2NidV+bfCWpjfCOiGO3HUhz1fH4MvBM0FbbBmE9LE5NnMz7M8XSRSi68ZGYQXgLBB2Qw==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-20.1.0.tgz", + "integrity": "sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2930,9 +2930,9 @@ } }, "node_modules/@react-native-tvos/virtualized-lists": { - "version": "0.83.1-0", - "resolved": "https://registry.npmjs.org/@react-native-tvos/virtualized-lists/-/virtualized-lists-0.83.1-0.tgz", - "integrity": "sha512-AQxQkh7/I485IEWOvrwWGBiTfc4Q74HgJvbUNRf4PJxraWxiRHQzhlNG4MO33tSFmEzC8lFexl2GDWM6Rme49Q==", + "version": "0.84.1-0", + "resolved": "https://registry.npmjs.org/@react-native-tvos/virtualized-lists/-/virtualized-lists-0.84.1-0.tgz", + "integrity": "sha512-+pKuqyolRwyqQHeIYfJxtedBc2k1rudIOwp27S9VJSfTjpm2V+x2kHUaBU5upHW2Tyag2kI7jedlYkA5reoN5Q==", "license": "MIT", "dependencies": { "invariant": "^2.2.4", @@ -2953,32 +2953,32 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", - "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.84.1.tgz", + "integrity": "sha512-lAJ6PDZv95FdT9s9uhc9ivhikW1Zwh4j9XdXM7J2l4oUA3t37qfoBmTSDLuPyE3Bi+Xtwa11hJm0BUTT2sc/gg==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.83.1.tgz", - "integrity": "sha512-VPj8O3pG1ESjZho9WVKxqiuryrotAECPHGF5mx46zLUYNTWR5u9OMUXYk7LeLy+JLWdGEZ2Gn3KoXeFZbuqE+g==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.84.1.tgz", + "integrity": "sha512-vorvcvptGxtK0qTDCFQb+W3CU6oIhzcX5dduetWRBoAhXdthEQM0MQnF+GTXoXL8/luffKgy7PlZRG/WeI/oRQ==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.83.1" + "@react-native/codegen": "0.84.1" }, "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/babel-preset": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.83.1.tgz", - "integrity": "sha512-xI+tbsD4fXcI6PVU4sauRCh0a5fuLQC849SINmU2J5wP8kzKu4Ye0YkGjUW3mfGrjaZcjkWmF6s33jpyd3gdTw==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.84.1.tgz", + "integrity": "sha512-3GpmCKk21f4oe32bKIdmkdn+WydvhhZL+1nsoFBGi30Qrq9vL16giKu31OcnWshYz139x+mVAvCyoyzgn8RXSw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -2988,27 +2988,19 @@ "@babel/plugin-syntax-export-default-from": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoping": "^7.25.0", "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-flow-strip-types": "^7.25.2", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", "@babel/plugin-transform-private-methods": "^7.24.7", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-react-display-name": "^7.24.7", @@ -3017,13 +3009,9 @@ "@babel/plugin-transform-react-jsx-source": "^7.24.7", "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.83.1", + "@react-native/babel-plugin-codegen": "0.84.1", "babel-plugin-syntax-hermes-parser": "0.32.0", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" @@ -3036,17 +3024,17 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", - "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.84.1.tgz", + "integrity": "sha512-n1RIU0QAavgCg1uC5+s53arL7/mpM+16IBhJ3nCFSd/iK5tUmCwxQDcIDC703fuXfpub/ZygeSjVN8bcOWn0gA==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", - "glob": "^7.1.1", "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", "yargs": "^17.6.2" }, "engines": { @@ -3057,12 +3045,12 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", - "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.1.tgz", + "integrity": "sha512-f6a+mJEJ6Joxlt/050TqYUr7uRRbeKnz8lnpL7JajhpsgZLEbkJRjH8HY5QiLcRdUwWFtizml4V+vcO3P4RxoQ==", "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.83.1", + "@react-native/dev-middleware": "0.84.1", "debug": "^4.4.0", "invariant": "^2.2.4", "metro": "^0.83.3", @@ -3087,9 +3075,9 @@ } }, "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -3099,21 +3087,22 @@ } }, "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.84.1.tgz", + "integrity": "sha512-rUU/Pyh3R5zT0WkVgB+yA6VwOp7HM5Hz4NYE97ajFS07OUIcv8JzBL3MXVdSSjLfldfqOuPEuKUaZcAOwPgabw==", "license": "BSD-3-Clause", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.84.1.tgz", + "integrity": "sha512-LIGhh4q4ette3yW5OzmukNMYwmINYrRGDZqKyTYc/VZyNpblZPw72coXVHXdfpPT6+YlxHqXzn3UjFZpNODGCQ==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.6", + "debug": "^4.4.0", "fb-dotslash": "0.5.8" }, "engines": { @@ -3121,14 +3110,14 @@ } }, "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.84.1.tgz", + "integrity": "sha512-Z83ra+Gk6ElAhH3XRrv3vwbwCPTb04sPPlNpotxcFZb5LtRQZwT91ZQEXw3GOJCVIFp9EQ/gj8AQbVvtHKOUlQ==", "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", + "@react-native/debugger-frontend": "0.84.1", + "@react-native/debugger-shell": "0.84.1", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -3193,15 +3182,15 @@ } }, "node_modules/@react-native/eslint-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.83.1.tgz", - "integrity": "sha512-fo3DmFywzkpVZgIji9vR93kN7sSAY122ZIB7VcudgKlmD/YFxJ5Yi+ZNiWYl6aprLexxOWjROgHXNP0B0XaAng==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.84.1.tgz", + "integrity": "sha512-Z8j0uahXvPgvBAslxwIWwFliRQO0bL7nLpNiFroVnT1ojYCQHwFAbObDcAIs+Yva2FTat2A5m2rbi98MHVC+cg==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/eslint-plugin": "0.83.1", + "@react-native/eslint-plugin": "0.84.1", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "eslint-config-prettier": "^8.5.0", @@ -3210,20 +3199,20 @@ "eslint-plugin-jest": "^29.0.1", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-native": "^4.0.0" + "eslint-plugin-react-native": "^5.0.0" }, "engines": { "node": ">= 20.19.4" }, "peerDependencies": { - "eslint": ">=8", + "eslint": "^8.0.0 || ^9.0.0", "prettier": ">=2" } }, "node_modules/@react-native/eslint-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.83.1.tgz", - "integrity": "sha512-nKd/FONY8aIIjtjEqI2ScvgJYeblBgdnwseRHlIC+Nm3f3tuOifUrHFtWBJznlrKFJcme31Tl7qiryE2SruLYw==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.84.1.tgz", + "integrity": "sha512-mKhsn3+CmN03vyW7/YQ6/LvLQppWT+eYqlCvmOvVoGlnh+XrJHJgwNr891zsyxGNELTwu/x2+T83ogwCmRHMEw==", "dev": true, "license": "MIT", "engines": { @@ -3231,32 +3220,32 @@ } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", - "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.84.1.tgz", + "integrity": "sha512-7uVlPBE3uluRNRX4MW7PUJIO1LDBTpAqStKHU7LHH+GRrdZbHsWtOEAX8PiY4GFfBEvG8hEjiuTOqAxMjV+hDg==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/js-polyfills": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", - "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.84.1.tgz", + "integrity": "sha512-UsTe2AbUugsfyI7XIHMQq4E7xeC8a6GrYwuK+NohMMMJMxmyM3JkzIk+GB9e2il6ScEQNMJNaj+q+i5za8itxQ==", "license": "MIT", "engines": { "node": ">= 20.19.4" } }, "node_modules/@react-native/metro-babel-transformer": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.83.1.tgz", - "integrity": "sha512-fqt6DHWX1GBGDKa5WJOjDtPPy2M9lkYVLn59fBeFQ0GXhBRzNbUh8JzWWI/Q2CLDZ2tgKCcwaiXJ1OHWVd2BCQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.84.1.tgz", + "integrity": "sha512-NswINguTz0eg1Dc0oGO/1dejXSr6iQaz8/NnCRn5HJdA3dGfqadS7zlYv0YjiWpgKgcW6uENaIEgJOQww0KSpw==", "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.83.1", + "@react-native/babel-preset": "0.84.1", "hermes-parser": "0.32.0", "nullthrows": "^1.1.1" }, @@ -3268,14 +3257,14 @@ } }, "node_modules/@react-native/metro-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.83.1.tgz", - "integrity": "sha512-1rjYZf62fCm6QAinHmRAKnJxIypX0VF/zBPd0qWvWABMZugrS0eACuIbk9Wk0StBod4yL8KnwEJyg77ak8xYzQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.84.1.tgz", + "integrity": "sha512-KlRawK4aXxRLlR3HYVfZKhfQp7sejQefQ/LttUWUkErhKO0AFt+yznoSLq7xwIrH9K3A3YwImHuFVtUtuDmurA==", "devOptional": true, "license": "MIT", "dependencies": { - "@react-native/js-polyfills": "0.83.1", - "@react-native/metro-babel-transformer": "0.83.1", + "@react-native/js-polyfills": "0.84.1", + "@react-native/metro-babel-transformer": "0.84.1", "metro-config": "^0.83.3", "metro-runtime": "^0.83.3" }, @@ -3284,15 +3273,15 @@ } }, "node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.84.1.tgz", + "integrity": "sha512-/UPaQ4jl95soXnLDEJ6Cs6lnRXhwbxtT4KbZz+AFDees7prMV2NOLcHfCnzmTabf5Y3oxENMVBL666n4GMLcTA==", "license": "MIT" }, "node_modules/@react-native/typescript-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.83.1.tgz", - "integrity": "sha512-y83qd7fmlZG+EJoOyKEmAXifdjN1csNhcfpyxDvgaIUNO/pw2ws3MV/wp+ERQ8F6JIuAu1zcfyCy1/pEA7tC9g==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.84.1.tgz", + "integrity": "sha512-ar7Gn6ma3b+Ricdxn2sTZL2DT1NMlrfsWmOkFZegpfQJzheqX/8gzIB1aIbfZyvhEDsoz07RG7wmsyQAWqXjsw==", "dev": true, "license": "MIT" }, @@ -3356,9 +3345,9 @@ } }, "node_modules/@theoplayer/react-native-ui": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.21.2.tgz", - "integrity": "sha512-8iHrnizIwliS3udc3KVGatLKutHYM88D4vj1ICbJZHBEp70C1KnQGJVkvQhavCXy4EUe1nu9xHmLhXEHvacuwQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.22.0.tgz", + "integrity": "sha512-7nk/VBKIcOdN7f/WgewejSItzNIZ2qdej43qvhp2UREXWWcpppmR0oltYPL9P16oOaMoOMK8vAXMIxengomxJg==", "license": "SEE LICENSE AT https://www.theoplayer.com/terms", "dependencies": { "@miblanchard/react-native-slider": "^2.6.0", @@ -3980,9 +3969,9 @@ "license": "ISC" }, "node_modules/@vscode/sudo-prompt": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.1.tgz", - "integrity": "sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==", + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@vscode/sudo-prompt/-/sudo-prompt-9.3.2.tgz", + "integrity": "sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==", "devOptional": true, "license": "MIT" }, @@ -5712,9 +5701,9 @@ "license": "MIT" }, "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -5873,9 +5862,9 @@ } }, "node_modules/dayjs": { - "version": "1.11.19", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz", - "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "devOptional": true, "license": "MIT" }, @@ -6263,17 +6252,21 @@ } }, "node_modules/errorhandler": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", - "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.2.tgz", + "integrity": "sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==", "devOptional": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "escape-html": "~1.0.3" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/es-abstract": { @@ -6712,16 +6705,16 @@ } }, "node_modules/eslint-plugin-react-native": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", - "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-5.0.0.tgz", + "integrity": "sha512-VyWlyCC/7FC/aONibOwLkzmyKg4j9oI8fzrk9WYNs4I8/m436JuOTAFwLvEn1CVvc7La4cPfbCyspP4OYpP52Q==", "dev": true, "license": "MIT", "dependencies": { "eslint-plugin-react-native-globals": "^0.1.1" }, "peerDependencies": { - "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "node_modules/eslint-plugin-react-native-globals": { @@ -7209,9 +7202,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.4.tgz", - "integrity": "sha512-jE8ugADnYOBsu1uaoayVl1tVKAMNOXyjwvv2U6udEA2ORBhDooJDWoGxTkhd4Qn4yh59JVVt/pKXtjPwx9OguQ==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.5.tgz", + "integrity": "sha512-cK9c5I/DwIOI7/Q7AlGN3DuTdwN61gwSfL8rvuVPK+0mcCNHHGxRrpiFtaZZRfRMJL3Gl8B2AFlBG6qXf03w9A==", "devOptional": true, "funding": [ { @@ -7943,9 +7936,9 @@ } }, "node_modules/hermes-compiler": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", - "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "version": "250829098.0.9", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.9.tgz", + "integrity": "sha512-hZ5O7PDz1vQ99TS7HD3FJ9zVynfU1y+VWId6U1Pldvd8hmAYrNec/XLPYJKD3dLOW6NXak6aAQAuMuSo3ji0tQ==", "license": "MIT" }, "node_modules/hermes-estree": { @@ -11190,9 +11183,9 @@ } }, "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -11230,15 +11223,15 @@ } }, "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.0" + "react": "^19.2.3" } }, "node_modules/react-is": { @@ -11249,19 +11242,19 @@ }, "node_modules/react-native": { "name": "react-native-tvos", - "version": "0.83.1-0", - "resolved": "https://registry.npmjs.org/react-native-tvos/-/react-native-tvos-0.83.1-0.tgz", - "integrity": "sha512-l+18XpdWmh7qDqTMZ2vwCv0PmvF+lxQSaxHk+Kt+0ZGwWi+gz0KyK15bf39xuzp2W+WBBgamLMtx+D6OBCUb7A==", + "version": "0.84.1-0", + "resolved": "https://registry.npmjs.org/react-native-tvos/-/react-native-tvos-0.84.1-0.tgz", + "integrity": "sha512-vJWbzbnUhI88wtvdZEKR+A85OYvqRqTffg3grW3XJrNNP8pXJ7yEK2q8Vbg3SCqtWuox9KJ+Ss0KCv+yUcd66A==", "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native-tvos/virtualized-lists": "0.83.1-0", - "@react-native/assets-registry": "0.83.1", - "@react-native/codegen": "0.83.1", - "@react-native/community-cli-plugin": "0.83.1", - "@react-native/gradle-plugin": "0.83.1", - "@react-native/js-polyfills": "0.83.1", - "@react-native/normalize-colors": "0.83.1", + "@react-native-tvos/virtualized-lists": "0.84.1-0", + "@react-native/assets-registry": "0.84.1", + "@react-native/codegen": "0.84.1", + "@react-native/community-cli-plugin": "0.84.1", + "@react-native/gradle-plugin": "0.84.1", + "@react-native/js-polyfills": "0.84.1", + "@react-native/normalize-colors": "0.84.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -11270,8 +11263,7 @@ "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", - "hermes-compiler": "0.14.0", + "hermes-compiler": "250829098.0.9", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", @@ -11286,6 +11278,7 @@ "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", "whatwg-fetch": "^3.0.0", "ws": "^7.5.10", "yargs": "^17.6.2" @@ -11298,7 +11291,7 @@ }, "peerDependencies": { "@types/react": "^19.1.1", - "react": "^19.2.0" + "react": "^19.2.3" }, "peerDependenciesMeta": { "@types/react": { @@ -11441,9 +11434,9 @@ } }, "node_modules/react-native/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -13025,9 +13018,9 @@ } }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -13035,9 +13028,9 @@ } }, "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", - "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -13093,7 +13086,6 @@ "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -13110,7 +13102,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -13128,7 +13119,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -13338,7 +13328,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/example/package.json b/example/package.json index a2d6312e8..b4c369b03 100644 --- a/example/package.json +++ b/example/package.json @@ -16,10 +16,10 @@ }, "dependencies": { "@theoplayer/react-native-drm": "^1.10.0", - "@theoplayer/react-native-ui": "^0.21.1", - "react": "19.2.0", - "react-dom": "19.2.0", - "react-native": "npm:react-native-tvos@^0.83.1-0", + "@theoplayer/react-native-ui": "^0.22.0", + "react": "19.2.3", + "react-dom": "19.2.3", + "react-native": "npm:react-native-tvos@^0.84.1-0", "react-native-safe-area-context": "^5.5.2", "react-native-status-bar-height": "^2.6.0", "react-native-svg": "^15.12.1", @@ -31,15 +31,15 @@ "@babel/core": "^7.25.9", "@babel/preset-env": "^7.25.9", "@babel/runtime": "^7.26.10", - "@react-native-community/cli": "20.0.0", - "@react-native-community/cli-platform-android": "20.0.0", - "@react-native-community/cli-platform-ios": "20.0.0", - "@react-native/babel-preset": "0.83.1", - "@react-native/eslint-config": "0.83.1", - "@react-native/metro-config": "0.83.1", - "@react-native/typescript-config": "0.83.1", - "@types/react": "^19.2.0", - "@types/react-dom": "^19.2.0", + "@react-native-community/cli": "20.1.0", + "@react-native-community/cli-platform-android": "20.1.0", + "@react-native-community/cli-platform-ios": "20.1.0", + "@react-native/babel-preset": "0.84.1", + "@react-native/eslint-config": "0.84.1", + "@react-native/metro-config": "0.84.1", + "@react-native/typescript-config": "0.84.1", + "@types/react": "^19.2.3", + "@types/react-dom": "^19.2.3", "babel-loader": "^8.4.1", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "^0.17.7", @@ -57,6 +57,6 @@ "react-native": "$react-native" }, "engines": { - "node": ">= 20" + "node": ">= 22.11.0" } } diff --git a/package-lock.json b/package-lock.json index d777f185d..b50277f17 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,8 +15,8 @@ "devDependencies": { "@eslint/js": "^9.13.0", "@expo/config-plugins": "^10.0.2", - "@react-native/eslint-config": "^0.83.1", - "@types/react": "^19.2.0", + "@react-native/eslint-config": "^0.84.1", + "@types/react": "^19.2.14", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", "eslint-plugin-react-hooks": "^7.0.0", @@ -24,10 +24,10 @@ "lint-staged": "^15.5.1", "pod-install": "^0.1.39", "prettier": "^3.5.3", - "react": "^19.2.0", - "react-native": "^0.83.1", + "react": "^19.2.3", + "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.10.0", + "theoplayer": "^10.11.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", @@ -62,13 +62,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -135,14 +135,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", - "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -548,13 +548,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", - "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.5" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1981,53 +1981,33 @@ "dev": true }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", - "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.3", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse--for-generate-function-map": { - "name": "@babel/traverse", - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", - "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.5", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.5", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.5", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -2035,9 +2015,9 @@ } }, "node_modules/@babel/types": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", - "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { @@ -2776,9 +2756,9 @@ } }, "node_modules/@react-native/assets-registry": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.83.1.tgz", - "integrity": "sha512-AT7/T6UwQqO39bt/4UL5EXvidmrddXrt0yJa7ENXndAv+8yBzMsZn6fyiax6+ERMt9GLzAECikv3lj22cn2wJA==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.84.1.tgz", + "integrity": "sha512-lAJ6PDZv95FdT9s9uhc9ivhikW1Zwh4j9XdXM7J2l4oUA3t37qfoBmTSDLuPyE3Bi+Xtwa11hJm0BUTT2sc/gg==", "dev": true, "license": "MIT", "engines": { @@ -2786,18 +2766,18 @@ } }, "node_modules/@react-native/codegen": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.83.1.tgz", - "integrity": "sha512-FpRxenonwH+c2a5X5DZMKUD7sCudHxB3eSQPgV9R+uxd28QWslyAWrpnJM/Az96AEksHnymDzEmzq2HLX5nb+g==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.84.1.tgz", + "integrity": "sha512-n1RIU0QAavgCg1uC5+s53arL7/mpM+16IBhJ3nCFSd/iK5tUmCwxQDcIDC703fuXfpub/ZygeSjVN8bcOWn0gA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/parser": "^7.25.3", - "glob": "^7.1.1", "hermes-parser": "0.32.0", "invariant": "^2.2.4", "nullthrows": "^1.1.1", + "tinyglobby": "^0.2.15", "yargs": "^17.6.2" }, "engines": { @@ -2808,13 +2788,13 @@ } }, "node_modules/@react-native/community-cli-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.83.1.tgz", - "integrity": "sha512-FqR1ftydr08PYlRbrDF06eRiiiGOK/hNmz5husv19sK6iN5nHj1SMaCIVjkH/a5vryxEddyFhU6PzO/uf4kOHg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.84.1.tgz", + "integrity": "sha512-f6a+mJEJ6Joxlt/050TqYUr7uRRbeKnz8lnpL7JajhpsgZLEbkJRjH8HY5QiLcRdUwWFtizml4V+vcO3P4RxoQ==", "dev": true, "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.83.1", + "@react-native/dev-middleware": "0.84.1", "debug": "^4.4.0", "invariant": "^2.2.4", "metro": "^0.83.3", @@ -2839,9 +2819,9 @@ } }, "node_modules/@react-native/community-cli-plugin/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -2852,9 +2832,9 @@ } }, "node_modules/@react-native/debugger-frontend": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.83.1.tgz", - "integrity": "sha512-01Rn3goubFvPjHXONooLmsW0FLxJDKIUJNOlOS0cPtmmTIx9YIjxhe/DxwHXGk7OnULd7yl3aYy7WlBsEd5Xmg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.84.1.tgz", + "integrity": "sha512-rUU/Pyh3R5zT0WkVgB+yA6VwOp7HM5Hz4NYE97ajFS07OUIcv8JzBL3MXVdSSjLfldfqOuPEuKUaZcAOwPgabw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2862,13 +2842,14 @@ } }, "node_modules/@react-native/debugger-shell": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.83.1.tgz", - "integrity": "sha512-d+0w446Hxth5OP/cBHSSxOEpbj13p2zToUy6e5e3tTERNJ8ueGlW7iGwGTrSymNDgXXFjErX+dY4P4/3WokPIQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.84.1.tgz", + "integrity": "sha512-LIGhh4q4ette3yW5OzmukNMYwmINYrRGDZqKyTYc/VZyNpblZPw72coXVHXdfpPT6+YlxHqXzn3UjFZpNODGCQ==", "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.6", + "debug": "^4.4.0", "fb-dotslash": "0.5.8" }, "engines": { @@ -2876,15 +2857,15 @@ } }, "node_modules/@react-native/dev-middleware": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.83.1.tgz", - "integrity": "sha512-QJaSfNRzj3Lp7MmlCRgSBlt1XZ38xaBNXypXAp/3H3OdFifnTZOeYOpFmcpjcXYnDqkxetuwZg8VL65SQhB8dg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.84.1.tgz", + "integrity": "sha512-Z83ra+Gk6ElAhH3XRrv3vwbwCPTb04sPPlNpotxcFZb5LtRQZwT91ZQEXw3GOJCVIFp9EQ/gj8AQbVvtHKOUlQ==", "dev": true, "license": "MIT", "dependencies": { "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.83.1", - "@react-native/debugger-shell": "0.83.1", + "@react-native/debugger-frontend": "0.84.1", + "@react-native/debugger-shell": "0.84.1", "chrome-launcher": "^0.15.2", "chromium-edge-launcher": "^0.2.0", "connect": "^3.6.5", @@ -2900,15 +2881,15 @@ } }, "node_modules/@react-native/eslint-config": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.83.1.tgz", - "integrity": "sha512-fo3DmFywzkpVZgIji9vR93kN7sSAY122ZIB7VcudgKlmD/YFxJ5Yi+ZNiWYl6aprLexxOWjROgHXNP0B0XaAng==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/eslint-config/-/eslint-config-0.84.1.tgz", + "integrity": "sha512-Z8j0uahXvPgvBAslxwIWwFliRQO0bL7nLpNiFroVnT1ojYCQHwFAbObDcAIs+Yva2FTat2A5m2rbi98MHVC+cg==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/eslint-plugin": "0.83.1", + "@react-native/eslint-plugin": "0.84.1", "@typescript-eslint/eslint-plugin": "^8.36.0", "@typescript-eslint/parser": "^8.36.0", "eslint-config-prettier": "^8.5.0", @@ -2917,13 +2898,13 @@ "eslint-plugin-jest": "^29.0.1", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-native": "^4.0.0" + "eslint-plugin-react-native": "^5.0.0" }, "engines": { "node": ">= 20.19.4" }, "peerDependencies": { - "eslint": ">=8", + "eslint": "^8.0.0 || ^9.0.0", "prettier": ">=2" } }, @@ -3060,18 +3041,6 @@ "eslint": "^8.1.0" } }, - "node_modules/@react-native/eslint-config/node_modules/eslint-plugin-react-native": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-4.1.0.tgz", - "integrity": "sha512-QLo7rzTBOl43FvVqDdq5Ql9IoElIuTdjrz9SKAXCvULvBoRZ44JGSkx9z4999ZusCsb4rK3gjS8gOGyeYqZv2Q==", - "dev": true, - "dependencies": { - "eslint-plugin-react-native-globals": "^0.1.1" - }, - "peerDependencies": { - "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, "node_modules/@react-native/eslint-config/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", @@ -3083,9 +3052,9 @@ } }, "node_modules/@react-native/eslint-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.83.1.tgz", - "integrity": "sha512-nKd/FONY8aIIjtjEqI2ScvgJYeblBgdnwseRHlIC+Nm3f3tuOifUrHFtWBJznlrKFJcme31Tl7qiryE2SruLYw==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/eslint-plugin/-/eslint-plugin-0.84.1.tgz", + "integrity": "sha512-mKhsn3+CmN03vyW7/YQ6/LvLQppWT+eYqlCvmOvVoGlnh+XrJHJgwNr891zsyxGNELTwu/x2+T83ogwCmRHMEw==", "dev": true, "license": "MIT", "engines": { @@ -3093,9 +3062,9 @@ } }, "node_modules/@react-native/gradle-plugin": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.83.1.tgz", - "integrity": "sha512-6ESDnwevp1CdvvxHNgXluil5OkqbjkJAkVy7SlpFsMGmVhrSxNAgD09SSRxMNdKsnLtzIvMsFCzyHLsU/S4PtQ==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.84.1.tgz", + "integrity": "sha512-7uVlPBE3uluRNRX4MW7PUJIO1LDBTpAqStKHU7LHH+GRrdZbHsWtOEAX8PiY4GFfBEvG8hEjiuTOqAxMjV+hDg==", "dev": true, "license": "MIT", "engines": { @@ -3103,9 +3072,9 @@ } }, "node_modules/@react-native/js-polyfills": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.83.1.tgz", - "integrity": "sha512-qgPpdWn/c5laA+3WoJ6Fak8uOm7CG50nBsLlPsF8kbT7rUHIVB9WaP6+GPsoKV/H15koW7jKuLRoNVT7c3Ht3w==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.84.1.tgz", + "integrity": "sha512-UsTe2AbUugsfyI7XIHMQq4E7xeC8a6GrYwuK+NohMMMJMxmyM3JkzIk+GB9e2il6ScEQNMJNaj+q+i5za8itxQ==", "dev": true, "license": "MIT", "engines": { @@ -3113,16 +3082,16 @@ } }, "node_modules/@react-native/normalize-colors": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.83.1.tgz", - "integrity": "sha512-84feABbmeWo1kg81726UOlMKAhcQyFXYz2SjRKYkS78QmfhVDhJ2o/ps1VjhFfBz0i/scDwT1XNv9GwmRIghkg==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.84.1.tgz", + "integrity": "sha512-/UPaQ4jl95soXnLDEJ6Cs6lnRXhwbxtT4KbZz+AFDees7prMV2NOLcHfCnzmTabf5Y3oxENMVBL666n4GMLcTA==", "dev": true, "license": "MIT" }, "node_modules/@react-native/virtualized-lists": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.83.1.tgz", - "integrity": "sha512-MdmoAbQUTOdicCocm5XAFDJWsswxk7hxa6ALnm6Y88p01HFML0W593hAn6qOt9q6IM1KbAcebtH6oOd4gcQy8w==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.84.1.tgz", + "integrity": "sha512-sJoDunzhci8ZsqxlUiKoLut4xQeQcmbIgvDHGQKeBz6uEq9HgU+hCWOijMRr6sLP0slQVfBAza34Rq7IbXZZOA==", "dev": true, "license": "MIT", "dependencies": { @@ -3260,9 +3229,9 @@ } }, "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "dev": true, "license": "MIT", "dependencies": { @@ -5684,11 +5653,25 @@ "hermes-estree": "0.25.1" } }, + "node_modules/eslint-plugin-react-native": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-5.0.0.tgz", + "integrity": "sha512-VyWlyCC/7FC/aONibOwLkzmyKg4j9oI8fzrk9WYNs4I8/m436JuOTAFwLvEn1CVvc7La4cPfbCyspP4OYpP52Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-plugin-react-native-globals": "^0.1.1" + }, + "peerDependencies": { + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, "node_modules/eslint-plugin-react-native-globals": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { "version": "1.1.11", @@ -6575,9 +6558,9 @@ } }, "node_modules/hermes-compiler": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.14.0.tgz", - "integrity": "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q==", + "version": "250829098.0.9", + "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-250829098.0.9.tgz", + "integrity": "sha512-hZ5O7PDz1vQ99TS7HD3FJ9zVynfU1y+VWId6U1Pldvd8hmAYrNec/XLPYJKD3dLOW6NXak6aAQAuMuSo3ji0tQ==", "dev": true, "license": "MIT" }, @@ -8183,20 +8166,20 @@ } }, "node_modules/metro": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.3.tgz", - "integrity": "sha512-+rP+/GieOzkt97hSJ0MrPOuAH/jpaS21ZDvL9DJ35QYRDlQcwzcvUlGUf79AnQxq/2NPiS/AULhhM4TKutIt8Q==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.5.tgz", + "integrity": "sha512-BgsXevY1MBac/3ZYv/RfNFf/4iuW9X7f4H8ZNkiH+r667HD9sVujxcmu4jvEzGCAm4/WyKdZCuyhAcyhTHOucQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", + "@babel/code-frame": "^7.29.0", "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "accepts": "^1.3.7", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "accepts": "^2.0.0", "chalk": "^4.0.0", "ci-info": "^2.0.0", "connect": "^3.6.5", @@ -8204,25 +8187,25 @@ "error-stack-parser": "^2.0.6", "flow-enums-runtime": "^0.0.6", "graceful-fs": "^4.2.4", - "hermes-parser": "0.32.0", + "hermes-parser": "0.33.3", "image-size": "^1.0.2", "invariant": "^2.2.4", "jest-worker": "^29.7.0", "jsc-safe-url": "^0.2.2", "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.3", - "metro-cache": "0.83.3", - "metro-cache-key": "0.83.3", - "metro-config": "0.83.3", - "metro-core": "0.83.3", - "metro-file-map": "0.83.3", - "metro-resolver": "0.83.3", - "metro-runtime": "0.83.3", - "metro-source-map": "0.83.3", - "metro-symbolicate": "0.83.3", - "metro-transform-plugins": "0.83.3", - "metro-transform-worker": "0.83.3", - "mime-types": "^2.1.27", + "metro-babel-transformer": "0.83.5", + "metro-cache": "0.83.5", + "metro-cache-key": "0.83.5", + "metro-config": "0.83.5", + "metro-core": "0.83.5", + "metro-file-map": "0.83.5", + "metro-resolver": "0.83.5", + "metro-runtime": "0.83.5", + "metro-source-map": "0.83.5", + "metro-symbolicate": "0.83.5", + "metro-transform-plugins": "0.83.5", + "metro-transform-worker": "0.83.5", + "mime-types": "^3.0.1", "nullthrows": "^1.1.1", "serialize-error": "^2.1.0", "source-map": "^0.5.6", @@ -8238,41 +8221,58 @@ } }, "node_modules/metro-babel-transformer": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.3.tgz", - "integrity": "sha512-1vxlvj2yY24ES1O5RsSIvg4a4WeL7PFXgKOHvXTXiW0deLvQr28ExXj6LjwCCDZ4YZLhq6HddLpZnX4dEdSq5g==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.5.tgz", + "integrity": "sha512-d9FfmgUEVejTiSb7bkQeLRGl6aeno2UpuPm3bo3rCYwxewj03ymvOn8s8vnS4fBqAPQ+cE9iQM40wh7nGXR+eA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.32.0", + "hermes-parser": "0.33.3", "nullthrows": "^1.1.1" }, "engines": { "node": ">=20.19.4" } }, + "node_modules/metro-babel-transformer/node_modules/hermes-estree": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.33.3.tgz", + "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/metro-babel-transformer/node_modules/hermes-parser": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.33.3.tgz", + "integrity": "sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.33.3" + } + }, "node_modules/metro-cache": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.3.tgz", - "integrity": "sha512-3jo65X515mQJvKqK3vWRblxDEcgY55Sk3w4xa6LlfEXgQ9g1WgMh9m4qVZVwgcHoLy0a2HENTPCCX4Pk6s8c8Q==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.5.tgz", + "integrity": "sha512-oH+s4U+IfZyg8J42bne2Skc90rcuESIYf86dYittcdWQtPfcaFXWpByPyTuWk3rR1Zz3Eh5HOrcVImfEhhJLng==", "dev": true, "license": "MIT", "dependencies": { "exponential-backoff": "^3.1.1", "flow-enums-runtime": "^0.0.6", "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.3" + "metro-core": "0.83.5" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-cache-key": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.3.tgz", - "integrity": "sha512-59ZO049jKzSmvBmG/B5bZ6/dztP0ilp0o988nc6dpaDsU05Cl1c/lRf+yx8m9WW/JVgbmfO5MziBU559XjI5Zw==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.5.tgz", + "integrity": "sha512-Ycl8PBajB7bhbAI7Rt0xEyiF8oJ0RWX8EKkolV1KfCUlC++V/GStMSGpPLwnnBZXZWkCC5edBPzv1Hz1Yi0Euw==", "dev": true, "license": "MIT", "dependencies": { @@ -8283,19 +8283,19 @@ } }, "node_modules/metro-config": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", - "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.5.tgz", + "integrity": "sha512-JQ/PAASXH7yczgV6OCUSRhZYME+NU8NYjI2RcaG5ga4QfQ3T/XdiLzpSb3awWZYlDCcQb36l4Vl7i0Zw7/Tf9w==", "dev": true, "license": "MIT", "dependencies": { "connect": "^3.6.5", "flow-enums-runtime": "^0.0.6", "jest-validate": "^29.7.0", - "metro": "0.83.3", - "metro-cache": "0.83.3", - "metro-core": "0.83.3", - "metro-runtime": "0.83.3", + "metro": "0.83.5", + "metro-cache": "0.83.5", + "metro-core": "0.83.5", + "metro-runtime": "0.83.5", "yaml": "^2.6.1" }, "engines": { @@ -8303,24 +8303,24 @@ } }, "node_modules/metro-core": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.3.tgz", - "integrity": "sha512-M+X59lm7oBmJZamc96usuF1kusd5YimqG/q97g4Ac7slnJ3YiGglW5CsOlicTR5EWf8MQFxxjDoB6ytTqRe8Hw==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.5.tgz", + "integrity": "sha512-YcVcLCrf0ed4mdLa82Qob0VxYqfhmlRxUS8+TO4gosZo/gLwSvtdeOjc/Vt0pe/lvMNrBap9LlmvZM8FIsMgJQ==", "dev": true, "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.3" + "metro-resolver": "0.83.5" }, "engines": { "node": ">=20.19.4" } }, "node_modules/metro-file-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.3.tgz", - "integrity": "sha512-jg5AcyE0Q9Xbbu/4NAwwZkmQn7doJCKGW0SLeSJmzNB9Z24jBe0AL2PHNMy4eu0JiKtNWHz9IiONGZWq7hjVTA==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.5.tgz", + "integrity": "sha512-ZEt8s3a1cnYbn40nyCD+CsZdYSlwtFh2kFym4lo+uvfM+UMMH+r/BsrC6rbNClSrt+B7rU9T+Te/sh/NL8ZZKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -8339,9 +8339,9 @@ } }, "node_modules/metro-minify-terser": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.3.tgz", - "integrity": "sha512-O2BmfWj6FSfzBLrNCXt/rr2VYZdX5i6444QJU0fFoc7Ljg+Q+iqebwE3K0eTvkI6TRjELsXk1cjU+fXwAR4OjQ==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.5.tgz", + "integrity": "sha512-Toe4Md1wS1PBqbvB0cFxBzKEVyyuYTUb0sgifAZh/mSvLH84qA1NAWik9sISWatzvfWf3rOGoUoO5E3f193a3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -8353,9 +8353,9 @@ } }, "node_modules/metro-resolver": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.3.tgz", - "integrity": "sha512-0js+zwI5flFxb1ktmR///bxHYg7OLpRpWZlBBruYG8OKYxeMP7SV0xQ/o/hUelrEMdK4LJzqVtHAhBm25LVfAQ==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.5.tgz", + "integrity": "sha512-7p3GtzVUpbAweJeCcUJihJeOQl1bDuimO5ueo1K0BUpUtR41q5EilbQ3klt16UTPPMpA+tISWBtsrqU556mY1A==", "dev": true, "license": "MIT", "dependencies": { @@ -8366,9 +8366,9 @@ } }, "node_modules/metro-runtime": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", - "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.5.tgz", + "integrity": "sha512-f+b3ue9AWTVlZe2Xrki6TAoFtKIqw30jwfk7GQ1rDUBQaE0ZQ+NkiMEtb9uwH7uAjJ87U7Tdx1Jg1OJqUfEVlA==", "dev": true, "license": "MIT", "dependencies": { @@ -8380,20 +8380,19 @@ } }, "node_modules/metro-source-map": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.3.tgz", - "integrity": "sha512-xkC3qwUBh2psVZgVavo8+r2C9Igkk3DibiOXSAht1aYRRcztEZNFtAMtfSB7sdO2iFMx2Mlyu++cBxz/fhdzQg==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.5.tgz", + "integrity": "sha512-VT9bb2KO2/4tWY9Z2yeZqTUao7CicKAOps9LUg2aQzsz+04QyuXL3qgf1cLUVRjA/D6G5u1RJAlN1w9VNHtODQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.3", - "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", - "@babel/types": "^7.25.2", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-symbolicate": "0.83.3", + "metro-symbolicate": "0.83.5", "nullthrows": "^1.1.1", - "ob1": "0.83.3", + "ob1": "0.83.5", "source-map": "^0.5.6", "vlq": "^1.0.0" }, @@ -8402,15 +8401,15 @@ } }, "node_modules/metro-symbolicate": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.3.tgz", - "integrity": "sha512-F/YChgKd6KbFK3eUR5HdUsfBqVsanf5lNTwFd4Ca7uuxnHgBC3kR/Hba/RGkenR3pZaGNp5Bu9ZqqP52Wyhomw==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.5.tgz", + "integrity": "sha512-EMIkrjNRz/hF+p0RDdxoE60+dkaTLPN3vaaGkFmX5lvFdO6HPfHA/Ywznzkev+za0VhPQ5KSdz49/MALBRteHA==", "dev": true, "license": "MIT", "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", - "metro-source-map": "0.83.3", + "metro-source-map": "0.83.5", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" @@ -8423,16 +8422,16 @@ } }, "node_modules/metro-transform-plugins": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.3.tgz", - "integrity": "sha512-eRGoKJU6jmqOakBMH5kUB7VitEWiNrDzBHpYbkBXW7C5fUGeOd2CyqrosEzbMK5VMiZYyOcNFEphvxk3OXey2A==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.5.tgz", + "integrity": "sha512-KxYKzZL+lt3Os5H2nx7YkbkWVduLZL5kPrE/Yq+Prm/DE1VLhpfnO6HtPs8vimYFKOa58ncl60GpoX0h7Wm0Vw==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.3", + "@babel/generator": "^7.29.1", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", "flow-enums-runtime": "^0.0.6", "nullthrows": "^1.1.1" }, @@ -8441,30 +8440,44 @@ } }, "node_modules/metro-transform-worker": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.3.tgz", - "integrity": "sha512-Ztekew9t/gOIMZX1tvJOgX7KlSLL5kWykl0Iwu2cL2vKMKVALRl1hysyhUw0vjpAvLFx+Kfq9VLjnHIkW32fPA==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.5.tgz", + "integrity": "sha512-8N4pjkNXc6ytlP9oAM6MwqkvUepNSW39LKYl9NjUMpRDazBQ7oBpQDc8Sz4aI8jnH6AGhF7s1m/ayxkN1t04yA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/generator": "^7.29.1", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "flow-enums-runtime": "^0.0.6", - "metro": "0.83.3", - "metro-babel-transformer": "0.83.3", - "metro-cache": "0.83.3", - "metro-cache-key": "0.83.3", - "metro-minify-terser": "0.83.3", - "metro-source-map": "0.83.3", - "metro-transform-plugins": "0.83.3", + "metro": "0.83.5", + "metro-babel-transformer": "0.83.5", + "metro-cache": "0.83.5", + "metro-cache-key": "0.83.5", + "metro-minify-terser": "0.83.5", + "metro-source-map": "0.83.5", + "metro-transform-plugins": "0.83.5", "nullthrows": "^1.1.1" }, "engines": { "node": ">=20.19.4" } }, + "node_modules/metro/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/metro/node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -8472,6 +8485,60 @@ "dev": true, "license": "MIT" }, + "node_modules/metro/node_modules/hermes-estree": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.33.3.tgz", + "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/metro/node_modules/hermes-parser": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.33.3.tgz", + "integrity": "sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.33.3" + } + }, + "node_modules/metro/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/metro/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -8664,9 +8731,9 @@ "dev": true }, "node_modules/ob1": { - "version": "0.83.3", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.3.tgz", - "integrity": "sha512-egUxXCDwoWG06NGCS5s5AdcpnumHKJlfd3HH06P3m9TEMwwScfcY35wpQxbm9oHof+dM/lVH9Rfyu1elTVelSA==", + "version": "0.83.5", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.5.tgz", + "integrity": "sha512-vNKPYC8L5ycVANANpF/S+WZHpfnRWKx/F3AYP4QMn6ZJTh+l2HOrId0clNkEmua58NB9vmI9Qh7YOoV/4folYg==", "dev": true, "license": "MIT", "dependencies": { @@ -9286,9 +9353,9 @@ } }, "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "dev": true, "license": "MIT", "engines": { @@ -9313,20 +9380,20 @@ "dev": true }, "node_modules/react-native": { - "version": "0.83.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.83.1.tgz", - "integrity": "sha512-mL1q5HPq5cWseVhWRLl+Fwvi5z1UO+3vGOpjr+sHFwcUletPRZ5Kv+d0tUfqHmvi73/53NjlQqX1Pyn4GguUfA==", + "version": "0.84.1", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.84.1.tgz", + "integrity": "sha512-0PjxOyXRu3tZ8EobabxSukvhKje2HJbsZikR0U+pvS0pYZza2hXKjcSBiBdFN4h9D0S3v6a8kkrDK6WTRKMwzg==", "dev": true, "license": "MIT", "dependencies": { "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.83.1", - "@react-native/codegen": "0.83.1", - "@react-native/community-cli-plugin": "0.83.1", - "@react-native/gradle-plugin": "0.83.1", - "@react-native/js-polyfills": "0.83.1", - "@react-native/normalize-colors": "0.83.1", - "@react-native/virtualized-lists": "0.83.1", + "@react-native/assets-registry": "0.84.1", + "@react-native/codegen": "0.84.1", + "@react-native/community-cli-plugin": "0.84.1", + "@react-native/gradle-plugin": "0.84.1", + "@react-native/js-polyfills": "0.84.1", + "@react-native/normalize-colors": "0.84.1", + "@react-native/virtualized-lists": "0.84.1", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -9335,8 +9402,7 @@ "base64-js": "^1.5.1", "commander": "^12.0.0", "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", - "hermes-compiler": "0.14.0", + "hermes-compiler": "250829098.0.9", "invariant": "^2.2.4", "jest-environment-node": "^29.7.0", "memoize-one": "^5.0.0", @@ -9351,6 +9417,7 @@ "scheduler": "0.27.0", "semver": "^7.1.3", "stacktrace-parser": "^0.1.10", + "tinyglobby": "^0.2.15", "whatwg-fetch": "^3.0.0", "ws": "^7.5.10", "yargs": "^17.6.2" @@ -9363,7 +9430,7 @@ }, "peerDependencies": { "@types/react": "^19.1.1", - "react": "^19.2.0" + "react": "^19.2.3" }, "peerDependenciesMeta": { "@types/react": { @@ -10869,9 +10936,9 @@ "dev": true }, "node_modules/theoplayer": { - "version": "10.10.0", - "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-10.10.0.tgz", - "integrity": "sha512-24UKdnryzQHl8ch+E3YLJv4swZpydtjNZuh+mA57xBosQsirIxMKuuU0tE6ZjRu21ULgreu2KFwy3Qg9n0hMgg==", + "version": "10.13.0", + "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-10.13.0.tgz", + "integrity": "sha512-RrHWZWFG9xEcNPwQV46mRJM1YouvS4A/ZB/0o2OM2GuFvZH65DUhsr3fml7YIXKa6iLUawvsuwHxMoM2MztNZQ==", "license": "SEE LICENSE AT https://www.theoplayer.com/terms" }, "node_modules/throat": { @@ -10890,6 +10957,54 @@ "xtend": "~4.0.1" } }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", diff --git a/package.json b/package.json index 3f5491302..c08597723 100644 --- a/package.json +++ b/package.json @@ -58,8 +58,8 @@ "devDependencies": { "@eslint/js": "^9.13.0", "@expo/config-plugins": "^10.0.2", - "@react-native/eslint-config": "^0.83.1", - "@types/react": "^19.2.0", + "@react-native/eslint-config": "^0.84.1", + "@types/react": "^19.2.14", "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", "eslint-plugin-react-hooks": "^7.0.0", @@ -67,10 +67,10 @@ "lint-staged": "^15.5.1", "pod-install": "^0.1.39", "prettier": "^3.5.3", - "react": "^19.2.0", - "react-native": "^0.83.1", + "react": "^19.2.3", + "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.10.0", + "theoplayer": "^10.11.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", From 650cdb1e27fec1fed77f3ea48252338b8fddcd0a Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 12 Mar 2026 13:16:58 +0100 Subject: [PATCH 02/49] Add changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c10615c8..0046b41c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Changed + +- Upgraded example app to React-Native v0.84.1. + ## [10.13.0] - 26-03-27 ### Fixed From fde8961bcd3ae7f1cc700f5baf9bc43d85d36169 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:13:03 +0000 Subject: [PATCH 03/49] Bump serialize-javascript, terser-webpack-plugin and copy-webpack-plugin Removes [serialize-javascript](https://github.com/yahoo/serialize-javascript). It's no longer used after updating ancestor dependencies [serialize-javascript](https://github.com/yahoo/serialize-javascript), [terser-webpack-plugin](https://github.com/webpack/terser-webpack-plugin) and [copy-webpack-plugin](https://github.com/webpack/copy-webpack-plugin). These dependencies need to be updated together. Removes `serialize-javascript` Updates `terser-webpack-plugin` from 5.3.16 to 5.4.0 - [Release notes](https://github.com/webpack/terser-webpack-plugin/releases) - [Changelog](https://github.com/webpack/terser-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/webpack/terser-webpack-plugin/compare/v5.3.16...v5.4.0) Updates `copy-webpack-plugin` from 13.0.1 to 14.0.0 - [Release notes](https://github.com/webpack/copy-webpack-plugin/releases) - [Changelog](https://github.com/webpack/copy-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/webpack/copy-webpack-plugin/compare/v13.0.1...v14.0.0) --- updated-dependencies: - dependency-name: serialize-javascript dependency-version: dependency-type: indirect - dependency-name: terser-webpack-plugin dependency-version: 5.4.0 dependency-type: indirect - dependency-name: copy-webpack-plugin dependency-version: 14.0.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- example/package-lock.json | 51 +++++++++++++++------------------------ example/package.json | 2 +- 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/example/package-lock.json b/example/package-lock.json index 2e676584b..d5f4cc602 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -36,7 +36,7 @@ "babel-loader": "^8.4.1", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "^0.17.7", - "copy-webpack-plugin": "^13.0.1", + "copy-webpack-plugin": "^14.0.0", "eslint": "^8.57.1", "html-webpack-plugin": "^5.6.3", "react-native-svg-web": "^1.0.9", @@ -5599,20 +5599,20 @@ "license": "MIT" }, "node_modules/copy-webpack-plugin": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", - "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", + "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", "dev": true, "license": "MIT", "dependencies": { "glob-parent": "^6.0.1", "normalize-path": "^3.0.0", "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2", + "serialize-javascript": "^7.0.3", "tinyglobby": "^0.2.12" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 20.9.0" }, "funding": { "type": "opencollective", @@ -5679,6 +5679,16 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/core-js-compat": { "version": "3.47.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", @@ -11147,16 +11157,6 @@ ], "license": "MIT" }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -12118,16 +12118,6 @@ "node": ">=0.10.0" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -12875,16 +12865,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -13328,7 +13317,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/example/package.json b/example/package.json index b4c369b03..ba0fd7ddb 100644 --- a/example/package.json +++ b/example/package.json @@ -43,7 +43,7 @@ "babel-loader": "^8.4.1", "babel-plugin-react-compiler": "^1.0.0", "babel-plugin-react-native-web": "^0.17.7", - "copy-webpack-plugin": "^13.0.1", + "copy-webpack-plugin": "^14.0.0", "eslint": "^8.57.1", "html-webpack-plugin": "^5.6.3", "react-native-svg-web": "^1.0.9", From 20e3aae6d35c450199000f171074cb2d86f0c179 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:13:04 +0000 Subject: [PATCH 04/49] Bump serialize-javascript, terser-webpack-plugin and copy-webpack-plugin Removes [serialize-javascript](https://github.com/yahoo/serialize-javascript). It's no longer used after updating ancestor dependencies [serialize-javascript](https://github.com/yahoo/serialize-javascript), [terser-webpack-plugin](https://github.com/webpack/terser-webpack-plugin) and [copy-webpack-plugin](https://github.com/webpack/copy-webpack-plugin). These dependencies need to be updated together. Removes `serialize-javascript` Updates `terser-webpack-plugin` from 5.3.16 to 5.4.0 - [Release notes](https://github.com/webpack/terser-webpack-plugin/releases) - [Changelog](https://github.com/webpack/terser-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/webpack/terser-webpack-plugin/compare/v5.3.16...v5.4.0) Updates `copy-webpack-plugin` from 13.0.1 to 14.0.0 - [Release notes](https://github.com/webpack/copy-webpack-plugin/releases) - [Changelog](https://github.com/webpack/copy-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/webpack/copy-webpack-plugin/compare/v13.0.1...v14.0.0) --- updated-dependencies: - dependency-name: serialize-javascript dependency-version: dependency-type: indirect - dependency-name: terser-webpack-plugin dependency-version: 5.4.0 dependency-type: indirect - dependency-name: copy-webpack-plugin dependency-version: 14.0.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- e2e/package-lock.json | 49 +++++++++++++++++-------------------------- e2e/package.json | 2 +- 2 files changed, 20 insertions(+), 31 deletions(-) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 9c4474fd7..30a377b0e 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -38,7 +38,7 @@ "babel-plugin-react-native-web": "^0.17.7", "cavy": "github:tvanlaerhoven/cavy#v4.1.2", "cavy-cli": "github:tvanlaerhoven/cavy-cli#v3.1.7", - "copy-webpack-plugin": "^13.0.0", + "copy-webpack-plugin": "^14.0.0", "eslint": "^8.57.1", "html-webpack-plugin": "^5.6.3", "npm-check-updates": "^17.1.13", @@ -5762,20 +5762,20 @@ "license": "MIT" }, "node_modules/copy-webpack-plugin": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", - "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-14.0.0.tgz", + "integrity": "sha512-3JLW90aBGeaTLpM7mYQKpnVdgsUZRExY55giiZgLuX/xTQRUs1dOCwbBnWnvY6Q6rfZoXMNwzOQJCSZPppfqXA==", "dev": true, "license": "MIT", "dependencies": { "glob-parent": "^6.0.1", "normalize-path": "^3.0.0", "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2", + "serialize-javascript": "^7.0.3", "tinyglobby": "^0.2.12" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 20.9.0" }, "funding": { "type": "opencollective", @@ -5842,6 +5842,16 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, "node_modules/core-js-compat": { "version": "3.47.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz", @@ -11490,16 +11500,6 @@ ], "license": "MIT" }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -12475,16 +12475,6 @@ "node": ">=0.10.0" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -13232,16 +13222,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { diff --git a/e2e/package.json b/e2e/package.json index 261a4f81e..c351f8a68 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -44,7 +44,7 @@ "babel-plugin-react-native-web": "^0.17.7", "cavy": "github:tvanlaerhoven/cavy#v4.1.2", "cavy-cli": "github:tvanlaerhoven/cavy-cli#v3.1.7", - "copy-webpack-plugin": "^13.0.0", + "copy-webpack-plugin": "^14.0.0", "eslint": "^8.57.1", "html-webpack-plugin": "^5.6.3", "npm-check-updates": "^17.1.13", From 7d3e69a88565f699c4385ceb85775aef4d5ed56c Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 30 Mar 2026 12:56:47 +0200 Subject: [PATCH 05/49] Add useIsAttached hook --- src/internal/hooks/useIsAttached.ts | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/internal/hooks/useIsAttached.ts diff --git a/src/internal/hooks/useIsAttached.ts b/src/internal/hooks/useIsAttached.ts new file mode 100644 index 000000000..c73712318 --- /dev/null +++ b/src/internal/hooks/useIsAttached.ts @@ -0,0 +1,44 @@ +/** + * React hook to determine if a referenced HTMLDivElement is currently attached to the document. + * + * This hook checks if the provided ref's current element is attached to the DOM (document.body). + * Returns a boolean indicating the attachment state. + * Once attached, it will stop observing for changes to optimize performance. + * + * @param ref - React ref object pointing to an HTMLDivElement + * @returns boolean - true if the element is attached to the document, false otherwise + */ +import { RefObject, useEffect, useState } from 'react'; + +/** + * @param ref + */ +export const useIsAttached = (ref: RefObject) => { + const [isAttached, setIsAttached] = useState(false); + + useEffect(() => { + if (!ref.current) return; + + const checkAttached = () => { + const connected = ref.current?.isConnected ?? false; + setIsAttached(connected); + return connected; + }; + + if (checkAttached()) return; + + const observer: MutationObserver = new MutationObserver(() => { + const attached = checkAttached(); + // Once attached, stop observing. + if (attached) { + observer.disconnect(); + } + }); + observer.observe(document.body, { + childList: true, + subtree: true, + }); + return () => observer.disconnect(); + }, [ref]); + return isAttached; +}; From fe96776717f2070554ef698d2ba5ce77f81ff84f Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 30 Mar 2026 12:58:06 +0200 Subject: [PATCH 06/49] Check for attached container --- src/internal/THEOplayerView.web.tsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/internal/THEOplayerView.web.tsx b/src/internal/THEOplayerView.web.tsx index 00d4dc4d7..de3767aeb 100644 --- a/src/internal/THEOplayerView.web.tsx +++ b/src/internal/THEOplayerView.web.tsx @@ -2,16 +2,18 @@ import React, { useEffect, useRef } from 'react'; import type { THEOplayerViewProps } from 'react-native-theoplayer'; import { ChromelessPlayer } from 'theoplayer'; import { THEOplayerWebAdapter } from './adapter/THEOplayerWebAdapter'; +import { useIsAttached } from './hooks/useIsAttached'; export function THEOplayerView(props: React.PropsWithChildren) { const { config, children, onPlayerReady, onPlayerDestroy } = props; const player = useRef(null); const adapter = useRef(null); - const container = useRef(null); + const container = useRef(null); + const attachedToDocument = useIsAttached(container); useEffect(() => { - // Create player inside container. - if (container.current) { + // Create player inside container once it is attached to the document. + if (container.current && attachedToDocument) { const ads = { ...config?.ads, googleIma: { @@ -51,7 +53,7 @@ export function THEOplayerView(props: React.PropsWithChildren Date: Mon, 30 Mar 2026 13:07:27 +0200 Subject: [PATCH 07/49] Add changelog entry --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0046b41c0..41e62901e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Upgraded example app to React-Native v0.84.1. +### Fixed + +- Fixed an issue on Web where Google IMA could fail to initialize when used with `react-reverse-portal` due to the player container not being attached to the document yet. + ## [10.13.0] - 26-03-27 ### Fixed From e99c3438c08204a464c55ea63dca2e8304bce5e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 00:29:31 +0000 Subject: [PATCH 08/49] Bump @xmldom/xmldom from 0.8.10 to 0.8.12 Bumps [@xmldom/xmldom](https://github.com/xmldom/xmldom) from 0.8.10 to 0.8.12. - [Release notes](https://github.com/xmldom/xmldom/releases) - [Changelog](https://github.com/xmldom/xmldom/blob/master/CHANGELOG.md) - [Commits](https://github.com/xmldom/xmldom/compare/0.8.10...0.8.12) --- updated-dependencies: - dependency-name: "@xmldom/xmldom" dependency-version: 0.8.12 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b50277f17..8c411dce4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3842,9 +3842,9 @@ "dev": true }, "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz", + "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==", "dev": true, "license": "MIT", "engines": { From 4c809b79755177490dee8350e0fe8b69024024ef Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Wed, 1 Apr 2026 12:48:15 +0200 Subject: [PATCH 09/49] Update NativeAd implementation to changed Ad API --- ios/ads/THEOplayerRCTAdsNative.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/ads/THEOplayerRCTAdsNative.swift b/ios/ads/THEOplayerRCTAdsNative.swift index a27abbde9..151f2ec16 100644 --- a/ios/ads/THEOplayerRCTAdsNative.swift +++ b/ios/ads/THEOplayerRCTAdsNative.swift @@ -5,7 +5,7 @@ import THEOplayerSDK class NativeAd: THEOplayerSDK.Ad { /** A reference to the `AdBreak` of which the ad is a part of.*/ - var adBreak: AdBreak + var adBreak: AdBreak? /** An array of `CompanionAd`s associated to the ad, if available within the same Creatives element.*/ var companions: [THEOplayerSDK.CompanionAd] = [] /** Either 'linear' or 'nonlinear', depending on the concrete implementer.*/ From 58537c4d9fb2de1892411025175d9f9388b05803 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Wed, 1 Apr 2026 13:14:42 +0200 Subject: [PATCH 10/49] Use adBreak as an optional property --- ios/ads/THEOplayerRCTAdAdapter.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/ads/THEOplayerRCTAdAdapter.swift b/ios/ads/THEOplayerRCTAdAdapter.swift index 51dd07f90..31bfbac45 100644 --- a/ios/ads/THEOplayerRCTAdAdapter.swift +++ b/ios/ads/THEOplayerRCTAdAdapter.swift @@ -62,8 +62,8 @@ class THEOplayerRCTAdAdapter { if let skipOffset = ad.skipOffset { adData[PROP_AD_SKIP_OFFSET] = (skipOffset == -1) ? skipOffset : skipOffset } - if processAdBreak { - adData[PROP_AD_BREAK] = THEOplayerRCTAdAdapter.fromAdBreak(adBreak: ad.adBreak) + if processAdBreak, let adBreak = ad.adBreak { + adData[PROP_AD_BREAK] = THEOplayerRCTAdAdapter.fromAdBreak(adBreak: adBreak) } #if os(iOS) From a23e5d90532c33a07f704c29ec6d4b22700524a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 08:42:34 +0000 Subject: [PATCH 11/49] Bump lodash from 4.17.23 to 4.18.1 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.18.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8c411dce4..00a9660fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7976,9 +7976,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, From 5122341c56bf0d60a2602ae4c822ee63caee50f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Apr 2026 10:11:41 +0000 Subject: [PATCH 12/49] Bump lodash from 4.17.23 to 4.18.1 in /example Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.18.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- example/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/example/package-lock.json b/example/package-lock.json index d5f4cc602..4d48167f3 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -9520,9 +9520,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, From bd0e9e9ca279e7b2fb0bed53fcf0e728eca1283b Mon Sep 17 00:00:00 2001 From: rbnbtns Date: Fri, 10 Apr 2026 16:36:58 +0200 Subject: [PATCH 13/49] Bump wrapper --- android/build.gradle | 2 +- .../ads-wrapper/10.12.0/ads-wrapper-10.12.0.aar | Bin 23269 -> 0 bytes .../ads-wrapper/11.0.0/ads-wrapper-11.0.0.aar | Bin 0 -> 23318 bytes .../ads-wrapper-11.0.0.pom} | 6 +++--- .../ads-wrapper/maven-metadata-local.xml | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/10.12.0/ads-wrapper-10.12.0.aar create mode 100644 android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/11.0.0/ads-wrapper-11.0.0.aar rename android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/{10.12.0/ads-wrapper-10.12.0.pom => 11.0.0/ads-wrapper-11.0.0.pom} (85%) diff --git a/android/build.gradle b/android/build.gradle index a61022ee2..d90d5f07e 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -125,7 +125,7 @@ repositories { // The minimum supported THEOplayer version is 10.12.0 def theoVersion = safeExtGet('THEOplayer_sdk', '[10.12.0, 11.0.0)') def theoMediaSessionVersion = safeExtGet('THEOplayer_mediasession', '[8.0.0, 11.0.0)') -def theoAdsWrapperVersion = "10.12.0" +def theoAdsWrapperVersion = "11.0.0" def coroutinesVersion = safeExtGet('coroutinesVersion', '1.10.2') def appcompatVersion = safeExtGet('appcompatVersion', '1.7.1') def corektxVersion = safeExtGet('corektxVersion', '1.16.0') diff --git a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/10.12.0/ads-wrapper-10.12.0.aar b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/10.12.0/ads-wrapper-10.12.0.aar deleted file mode 100644 index d0cac704a880ae529402d20b84482c2903852c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23269 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�eUoRvxhXGvTDJExQRwU{>p+M1fxV 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 czsmpb@6aWAS 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�S6l>!D6 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 - 10.12.0 + 11.0.0 com.theoplayer.theoplayer-sdk-android ads-wrapper - 10.12.0 + 11.0.0 aar com.theoplayer.theoplayer-sdk-android integration-ads-ima - [10.0.0,11.0.0) + [11.0.0,12.0.0) runtime diff --git a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml index 63c6398ae..bd9d59cca 100644 --- a/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml +++ b/android/local/com/theoplayer/theoplayer-sdk-android/ads-wrapper/maven-metadata-local.xml @@ -3,11 +3,11 @@ com.theoplayer.theoplayer-sdk-android ads-wrapper - 10.12.0 - 10.12.0 + 11.0.0 + 11.0.0 - 10.12.0 + 11.0.0 - 20260318164412 + 20260410095400 From 3b42ad05b4ee5e523320e7cfcdf0c7f42c3708be Mon Sep 17 00:00:00 2001 From: rbnbtns Date: Fri, 10 Apr 2026 16:39:51 +0200 Subject: [PATCH 14/49] Update android version --- android/build.gradle | 6 +++--- e2e/android/gradle.properties | 2 +- example/android/gradle.properties | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index d90d5f07e..63c696385 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -122,9 +122,9 @@ repositories { mavenLocal() } -// The minimum supported THEOplayer version is 10.12.0 -def theoVersion = safeExtGet('THEOplayer_sdk', '[10.12.0, 11.0.0)') -def theoMediaSessionVersion = safeExtGet('THEOplayer_mediasession', '[8.0.0, 11.0.0)') +// The minimum supported THEOplayer version is 11.0.0 +def theoVersion = safeExtGet('THEOplayer_sdk', '[11.0.0, 12.0.0)') +def theoMediaSessionVersion = safeExtGet('THEOplayer_mediasession', '[11.0.0, 12.0.0)') def theoAdsWrapperVersion = "11.0.0" def coroutinesVersion = safeExtGet('coroutinesVersion', '1.10.2') def appcompatVersion = safeExtGet('appcompatVersion', '1.7.1') diff --git a/e2e/android/gradle.properties b/e2e/android/gradle.properties index 124071bbb..13c278cb1 100644 --- a/e2e/android/gradle.properties +++ b/e2e/android/gradle.properties @@ -41,7 +41,7 @@ newArchEnabled=true hermesEnabled=true # Version of the THEOplayer SDK, if not specified, the latest available version within bounds is set. -#THEOplayer_sdk=[10.10.0, 11.0.0) +#THEOplayer_sdk=[11.0.0, 12.0.0) # Override Android sdk versions #THEOplayer_compileSdkVersion = 34 diff --git a/example/android/gradle.properties b/example/android/gradle.properties index 3e7bacabb..9e25e3493 100644 --- a/example/android/gradle.properties +++ b/example/android/gradle.properties @@ -46,7 +46,7 @@ hermesEnabled=true edgeToEdgeEnabled=false # Version of the THEOplayer SDK, if not specified, the latest available version within bounds is set. -#THEOplayer_sdk=[10.12.0, 11.0.0) +#THEOplayer_sdk=[11.0.0, 12.0.0) # Override Android sdk versions #THEOplayer_compileSdkVersion = 36 From d89e6cbc55fcc0fd8e9137bbc82ab4305027b433 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 07:31:50 +0000 Subject: [PATCH 15/49] Bump lodash from 4.17.23 to 4.18.1 in /e2e Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.18.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- e2e/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 30a377b0e..d9a452b66 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -9703,9 +9703,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "dev": true, "license": "MIT" }, From 29cb0510ddac9de6cf85003afa97cdb3d10a512d Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 11:14:06 +0200 Subject: [PATCH 16/49] Fix Ad deprecations --- .../main/java/com/theoplayer/ads/AdAdapter.kt | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt index 4052a0055..e003c864c 100644 --- a/android/src/main/java/com/theoplayer/ads/AdAdapter.kt +++ b/android/src/main/java/com/theoplayer/ads/AdAdapter.kt @@ -100,7 +100,7 @@ object AdAdapter { adPayload.putDouble(PROP_AD_HEIGHT, ad.imaAd.vastMediaHeight.toDouble()) adPayload.putString(PROP_AD_CONTENT_TYPE, ad.imaAd.contentType) adPayload.putString(PROP_AD_DESCRIPTION, ad.imaAd.description) - } catch (ignore: Exception) { + } catch (_: Exception) { // googleImaAd.getImaAd() is not known yet } val universalAdIdsPayload = Arguments.createArray() @@ -142,7 +142,7 @@ object AdAdapter { return adbreakPayload } adbreakPayload.putString(PROP_ADBREAK_INTEGRATION, adbreak.integration.type) - adbreakPayload.putString(PROP_ADBREAK_ID, adbreak.idAsString) + adbreakPayload.putString(PROP_ADBREAK_ID, adbreak.id) adbreakPayload.putInt(PROP_ADBREAK_MAXDURATION,adbreak.maxDuration) adbreakPayload.putInt(PROP_ADBREAK_TIMEOFFSET, adbreak.timeOffset) adbreakPayload.putDouble(PROP_ADBREAK_MAXREMAININGDURATION, adbreak.maxRemainingDuration) @@ -288,10 +288,15 @@ object AdAdapter { return adBreak.getString(PROP_AD_CUSTOM_INTEGRATION) } + @Deprecated("Deprecated in favor of getIdAsString()") override fun getIdAsString(): String? { return if (adBreak.hasKey(PROP_ADBREAK_ID)) adBreak.getString(PROP_ADBREAK_ID) else null } + override fun getId(): String? { + return if (adBreak.hasKey(PROP_ADBREAK_ID)) adBreak.getString(PROP_ADBREAK_ID) else null + } + override fun getCustomData(): Any? { // Not supported yet return null @@ -415,16 +420,6 @@ object AdAdapter { return ad?.getString(PROP_AD_TRAFFICKING_PARAMETERS) ?: "" } - @Deprecated("Deprecated in Java") - override fun getUniversalAdIdRegistry(): String { - return "" - } - - @Deprecated("Deprecated in Java") - override fun getUniversalAdIdValue(): String { - return ad?.getString(PROP_UNIVERSAL_AD_ID_VALUE) ?: "" - } - override fun getCompanionAds(): List { return emptyList() } From 18e91d7ee95c4dd8e0e9794d6bb317243d007ec6 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 11:21:26 +0200 Subject: [PATCH 17/49] Fix ImaSdkSettings properties --- .../java/com/theoplayer/PlayerConfigAdapter.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt b/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt index 11391afdd..95c1bd9dc 100644 --- a/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt +++ b/android/src/main/java/com/theoplayer/PlayerConfigAdapter.kt @@ -133,24 +133,24 @@ class PlayerConfigAdapter(private val configProps: ReadableMap?) { getMap(PROP_FEATURE_FLAGS)?.toHashMap()?.forEach { (key, value) -> convertedMap[key] = value as String } - featureFlags = convertedMap + setFeatureFlags(convertedMap) } // The maximum number of VAST redirects. if (hasKey(PROP_MAX_REDIRECTS)) { maxRedirects = getInt(PROP_MAX_REDIRECTS) } // The partner provided player type. - playerType = "THEOplayer" + setPlayerType("THEOplayer") // The partner provided player version. - playerVersion = THEOplayerGlobal.getVersion() + setPlayerVersion(THEOplayerGlobal.getVersion()) // The Publisher Provided Identification (PPID) sent with ads request. if (hasKey(PROP_PPID)) { - ppid = getString(PROP_PPID) ?: "" + setPpid(getString(PROP_PPID) ?: "") } // The session ID to identify a single user session. This should be a UUID. It // is used exclusively for frequency capping across the user session. if (hasKey(PROP_SESSION_ID)) { - sessionId = getString(PROP_PPID) ?: "" + setSessionId(getString(PROP_PPID) ?: "") } // Toggles debug mode which will output detailed log information to the console. if (hasKey(PROP_ENABLE_DEBUG_MODE)) { @@ -177,11 +177,11 @@ class PlayerConfigAdapter(private val configProps: ReadableMap?) { enablePreloading = preloadTypeString !== "none" } if (hasKey(PROP_ALLOWED_MIMETYPES)) { - mimeTypes = ArrayList().apply { + setMimeTypes(ArrayList().apply { getArray(PROP_ALLOWED_MIMETYPES)?.toArrayList()?.forEach { add(it as String) } - } + }) } } // bitrate and timeout are configured under the ima config From cf9491e096bc26164b00576a79aaeb7d6c1d6f0b Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 11:31:40 +0200 Subject: [PATCH 18/49] Fix trivial warning --- android/src/main/java/com/theoplayer/cast/CastModule.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/android/src/main/java/com/theoplayer/cast/CastModule.kt b/android/src/main/java/com/theoplayer/cast/CastModule.kt index 81d0fe676..21f7491aa 100644 --- a/android/src/main/java/com/theoplayer/cast/CastModule.kt +++ b/android/src/main/java/com/theoplayer/cast/CastModule.kt @@ -59,7 +59,6 @@ class CastModule(context: ReactApplicationContext) : ReactContextBaseJavaModule( PlayerCastState.AVAILABLE -> "available" PlayerCastState.CONNECTED -> "connected" PlayerCastState.CONNECTING -> "connecting" - PlayerCastState.UNAVAILABLE -> "unavailable" else -> "unavailable" } } From 2b4be31d7ff915479db184ac0541322f7d77b719 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 11:32:01 +0200 Subject: [PATCH 19/49] Drop deprecated reactNativeHost --- .../reactnativetheoplayer/MainApplication.kt | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt b/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt index 1939bf063..2e5d462e2 100644 --- a/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt +++ b/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt @@ -15,24 +15,16 @@ import com.facebook.soloader.SoLoader import com.theoplayer.ReactTHEOplayerPackage class MainApplication : Application(), ReactApplication { - override val reactNativeHost: ReactNativeHost = - object : DefaultReactNativeHost(this) { - override fun getPackages(): List = + override val reactHost: ReactHost by lazy { + getDefaultReactHost( + context = applicationContext, + packageList = PackageList(this).packages.apply { // Packages that cannot be autolinked yet can be added manually here, for example: add(ReactTHEOplayerPackage()) - } - - override fun getJSMainModuleName(): String = "index" - - override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG - - override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED - override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED - } - - override val reactHost: ReactHost - get() = getDefaultReactHost(this.applicationContext, reactNativeHost) + }, + ) + } override fun onCreate() { super.onCreate() From 542c24b0c77112cd401ad0c87565e90820079716 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 11:34:19 +0200 Subject: [PATCH 20/49] Upgrade dependencies --- android/build.gradle | 9 ++++++--- e2e/android/build.gradle | 4 ++-- e2e/android/gradle.properties | 4 ++-- example/android/app/build.gradle | 4 ++++ example/android/build.gradle | 4 ++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 63c696385..0ae88fa38 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath "com.android.tools.build:gradle:${safeExtGet('gradlePluginVersion', '8.12.3')}" + classpath "com.android.tools.build:gradle:${safeExtGet('gradlePluginVersion', '8.13.0')}" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${safeExtGet('kotlinVersion', '2.2.10')}" } } @@ -98,6 +98,7 @@ android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 + coreLibraryDesugaringEnabled true } packagingOptions { exclude 'META-INF/kotlin-stdlib.kotlin_module' @@ -128,9 +129,10 @@ def theoMediaSessionVersion = safeExtGet('THEOplayer_mediasession', '[11.0.0, 12 def theoAdsWrapperVersion = "11.0.0" def coroutinesVersion = safeExtGet('coroutinesVersion', '1.10.2') def appcompatVersion = safeExtGet('appcompatVersion', '1.7.1') -def corektxVersion = safeExtGet('corektxVersion', '1.16.0') -def gsonVersion = safeExtGet('gsonVersion', '2.13.1') +def corektxVersion = safeExtGet('corektxVersion', '1.17.0') +def gsonVersion = safeExtGet('gsonVersion', '2.13.2') def activityktxVersion = safeExtGet('activityktxVersion', '1.10.1') +def coreLibraryDesugaringVersion = safeExtGet('coreLibraryDesugaringVersion', '2.1.5') dependencies { def addOptiViewIntegration = { enabled, notation, additional = null -> @@ -156,6 +158,7 @@ dependencies { implementation("androidx.core:core-ktx:$corektxVersion") implementation("androidx.activity:activity-ktx:$activityktxVersion") implementation("com.google.code.gson:gson:$gsonVersion") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:$coreLibraryDesugaringVersion") println("Using THEOplayer (${versionString(theoVersion)})") implementation("com.theoplayer.theoplayer-sdk-android:core:$theoVersion") diff --git a/e2e/android/build.gradle b/e2e/android/build.gradle index a25721b53..0181c74f9 100644 --- a/e2e/android/build.gradle +++ b/e2e/android/build.gradle @@ -12,8 +12,8 @@ buildscript { ndkVersion = "29.0.14033849" castFrameworkVersion = "22.0.0" kotlinVersion = "2.2.10" - agpVersion = "8.12.3" - rnrepoVersion = "0.2.1" + agpVersion = "8.13.0" + rnrepoVersion = "0.2.2" } repositories { google() diff --git a/e2e/android/gradle.properties b/e2e/android/gradle.properties index 13c278cb1..ad66e4ae9 100644 --- a/e2e/android/gradle.properties +++ b/e2e/android/gradle.properties @@ -44,9 +44,9 @@ hermesEnabled=true #THEOplayer_sdk=[11.0.0, 12.0.0) # Override Android sdk versions -#THEOplayer_compileSdkVersion = 34 +#THEOplayer_compileSdkVersion = 36 #THEOplayer_minSdkVersion = 21 -#THEOplayer_targetSdkVersion = 34 +#THEOplayer_targetSdkVersion = 36 # Toggle player event logging using tag 'VideoPlayer' (default: false) #THEOplayer_logPlayerEvents = true diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index cb057edd6..c453f1918 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -94,6 +94,9 @@ android { keyPassword 'android' } } + compileOptions { + coreLibraryDesugaringEnabled true + } buildTypes { debug { signingConfig signingConfigs.debug @@ -120,6 +123,7 @@ dependencies { implementation("com.facebook.react:react-android") implementation("androidx.activity:activity-ktx:1.9.3") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") diff --git a/example/android/build.gradle b/example/android/build.gradle index a25721b53..0181c74f9 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -12,8 +12,8 @@ buildscript { ndkVersion = "29.0.14033849" castFrameworkVersion = "22.0.0" kotlinVersion = "2.2.10" - agpVersion = "8.12.3" - rnrepoVersion = "0.2.1" + agpVersion = "8.13.0" + rnrepoVersion = "0.2.2" } repositories { google() From 68b46b5bfa2abde42d98e0d2f3b35ea6a3700a56 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 11:41:38 +0200 Subject: [PATCH 21/49] Fix trivial warnings --- .../com/theoplayer/track/TrackListAdapter.kt | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt b/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt index 2003722f1..1db1144db 100644 --- a/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt +++ b/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt @@ -43,9 +43,6 @@ private const val PROP_ENDDATE = "endDate" private const val PROP_DURATION = "duration" private const val PROP_PLANNED_DURATION = "plannedDuration" private const val PROP_END_ON_NEXT = "endOnNext" -private const val PROP_SCTE35CMD = "scte35Cmd" -private const val PROP_SCTE35OUT = "scte35Out" -private const val PROP_SCTE35IN = "scte35In" private const val PROP_CUSTOM_ATTRIBUTES = "customAttributes" object TrackListAdapter { @@ -167,13 +164,12 @@ object TrackListAdapter { audioTrackPayload.putString(PROP_LABEL, audioTrack.label) audioTrackPayload.putString(PROP_LANGUAGE, audioTrack.language) audioTrackPayload.putBoolean(PROP_ENABLED, audioTrack.isEnabled) - val qualityList = audioTrack.qualities val qualities = Arguments.createArray() try { - qualityList?.forEach { quality -> + audioTrack.qualities.forEach { quality -> qualities.pushMap(fromAudioQuality(quality)) } - } catch (ignore: NullPointerException) { + } catch (_: NullPointerException) { } audioTrackPayload.putArray(PROP_QUALITIES, qualities) val activeQuality = audioTrack.activeQuality @@ -214,18 +210,15 @@ object TrackListAdapter { videoTrackPayload.putBoolean(PROP_ENABLED, videoTrack.isEnabled) val qualities = Arguments.createArray() try { - val qualityList = videoTrack.qualities - if (qualityList != null) { - // Sort qualities according to (height, bandwidth) - val sortedQualityList = QualityListAdapter(qualityList) - sortedQualityList.sort { o: VideoQuality, t1: VideoQuality -> - if (o.height == t1.height) t1.bandwidth.compareTo(o.bandwidth) else t1.height.compareTo(o.height) - } - for (quality in sortedQualityList) { - qualities.pushMap(fromVideoQuality(quality as VideoQuality)) - } + // Sort qualities according to (height, bandwidth) + val sortedQualityList = QualityListAdapter(videoTrack.qualities) + sortedQualityList.sort { o: VideoQuality, t1: VideoQuality -> + if (o.height == t1.height) t1.bandwidth.compareTo(o.bandwidth) else t1.height.compareTo(o.height) + } + for (quality in sortedQualityList) { + qualities.pushMap(fromVideoQuality(quality as VideoQuality)) } - } catch (ignore: java.lang.NullPointerException) { + } catch (_: java.lang.NullPointerException) { } videoTrackPayload.putArray(PROP_QUALITIES, qualities) val activeQuality = videoTrack.activeQuality From e49d1b3f9c8936919e6f3c37e335db2e5d8cd1d6 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 11:53:48 +0200 Subject: [PATCH 22/49] Add desugaring for e2e app --- e2e/android/app/build.gradle | 5 +++++ .../reactnativetheoplayer/MainApplication.kt | 22 ++++++------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/e2e/android/app/build.gradle b/e2e/android/app/build.gradle index 87b748d4d..74c1afb8b 100644 --- a/e2e/android/app/build.gradle +++ b/e2e/android/app/build.gradle @@ -94,6 +94,9 @@ android { keyPassword 'android' } } + compileOptions { + coreLibraryDesugaringEnabled true + } buildTypes { debug { signingConfig signingConfigs.debug @@ -119,6 +122,8 @@ dependencies { // The version of react-native is set by the React Native Gradle Plugin implementation("com.facebook.react:react-android") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") + if (hermesEnabled.toBoolean()) { implementation("com.facebook.react:hermes-android") } else { diff --git a/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt b/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt index 1939bf063..2e5d462e2 100644 --- a/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt +++ b/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt @@ -15,24 +15,16 @@ import com.facebook.soloader.SoLoader import com.theoplayer.ReactTHEOplayerPackage class MainApplication : Application(), ReactApplication { - override val reactNativeHost: ReactNativeHost = - object : DefaultReactNativeHost(this) { - override fun getPackages(): List = + override val reactHost: ReactHost by lazy { + getDefaultReactHost( + context = applicationContext, + packageList = PackageList(this).packages.apply { // Packages that cannot be autolinked yet can be added manually here, for example: add(ReactTHEOplayerPackage()) - } - - override fun getJSMainModuleName(): String = "index" - - override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG - - override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED - override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED - } - - override val reactHost: ReactHost - get() = getDefaultReactHost(this.applicationContext, reactNativeHost) + }, + ) + } override fun onCreate() { super.onCreate() From 187ed991bf817218f93d235e3076d2be2689aa0c Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:00:19 +0200 Subject: [PATCH 23/49] Drop deprecated ResizeEvent --- src/api/event/PlayerEvent.ts | 21 --------------------- src/api/player/PlayerEventMap.ts | 12 ------------ src/internal/THEOplayerView.tsx | 2 -- src/internal/adapter/WebEventForwarder.ts | 2 -- src/internal/adapter/event/PlayerEvents.ts | 13 ------------- 5 files changed, 50 deletions(-) diff --git a/src/api/event/PlayerEvent.ts b/src/api/event/PlayerEvent.ts index 314a6a1c9..5e2d93e73 100644 --- a/src/api/event/PlayerEvent.ts +++ b/src/api/event/PlayerEvent.ts @@ -69,27 +69,6 @@ export interface DimensionChangeEvent extends Event { - /** - * The player's current width. - */ - readonly width: number; - - /** - * The player's current height. - */ - readonly height: number; -} - /** * Dispatched when video is resized. * diff --git a/src/api/player/PlayerEventMap.ts b/src/api/player/PlayerEventMap.ts index 0a39dbeeb..65b31125d 100644 --- a/src/api/player/PlayerEventMap.ts +++ b/src/api/player/PlayerEventMap.ts @@ -12,7 +12,6 @@ import type { TimeUpdateEvent, PresentationModeChangeEvent, VolumeChangeEvent, - ResizeEvent, SeekedEvent, SeekingEvent, VideoResizeEvent, @@ -62,10 +61,6 @@ export enum PlayerEventType { WAITING = 'waiting', PRESENTATIONMODE_CHANGE = 'presentationmodechange', DESTROY = 'destroy', - /** - * @deprecated Use {@link PlayerEventType.DIMENSION_CHANGE} instead. This event is set for removal in version 11. - */ - RESIZE = 'resize', DIMENSION_CHANGE = 'dimensionchange', VIDEO_RESIZE = 'videoresize', } @@ -238,13 +233,6 @@ export interface PlayerEventMap { */ [PlayerEventType.DESTROY]: Event; - /** - * Dispatched when the player size changes. - * - * @deprecated Use {@link dimensionchange} instead. This event is set for removal in version 11. - */ - [PlayerEventType.RESIZE]: ResizeEvent; - /** * Dispatched when the player size changes. */ diff --git a/src/internal/THEOplayerView.tsx b/src/internal/THEOplayerView.tsx index 7ec47b997..b9a428d0c 100644 --- a/src/internal/THEOplayerView.tsx +++ b/src/internal/THEOplayerView.tsx @@ -39,7 +39,6 @@ import { DefaultTextTrackListEvent, DefaultVolumeChangeEvent, DefaultTimeupdateEvent, - DefaultResizeEvent, DefaultSeekingEvent, DefaultSeekedEvent, DefaultVideoResizeEvent, @@ -420,7 +419,6 @@ export class THEOplayerView extends PureComponent) => { const width = event.nativeEvent.width; const height = event.nativeEvent.height; - this._facade?.dispatchEvent(new DefaultResizeEvent(width, height)); this._facade?.dispatchEvent(new DefaultDimensionChangeEvent(width, height)); }; diff --git a/src/internal/adapter/WebEventForwarder.ts b/src/internal/adapter/WebEventForwarder.ts index dbc9459c1..b6d3c63ac 100644 --- a/src/internal/adapter/WebEventForwarder.ts +++ b/src/internal/adapter/WebEventForwarder.ts @@ -62,7 +62,6 @@ import { DefaultProgressEvent, DefaultRateChangeEvent, DefaultReadyStateChangeEvent, - DefaultResizeEvent, DefaultSeekedEvent, DefaultSeekingEvent, DefaultSegmentNotFoundEvent, @@ -289,7 +288,6 @@ export class WebEventForwarder { }; private readonly onDimensionChange = (event: NativeDimensionChangeEvent) => { - this._facade.dispatchEvent(new DefaultResizeEvent(event.width, event.height)); this._facade.dispatchEvent(new DefaultDimensionChangeEvent(event.width, event.height)); }; diff --git a/src/internal/adapter/event/PlayerEvents.ts b/src/internal/adapter/event/PlayerEvents.ts index 0f3414f5e..abf5852f6 100644 --- a/src/internal/adapter/event/PlayerEvents.ts +++ b/src/internal/adapter/event/PlayerEvents.ts @@ -30,7 +30,6 @@ import { Quality, RateChangeEvent, ReadyStateChangeEvent, - ResizeEvent, SeekedEvent, SeekingEvent, SegmentNotFoundEvent, @@ -103,18 +102,6 @@ export class DefaultVolumeChangeEvent extends BaseEvent implements ResizeEvent { - constructor( - public width: number, - public height: number, - ) { - super(PlayerEventType.RESIZE); - } -} - export class DefaultDimensionChangeEvent extends BaseEvent implements DimensionChangeEvent { constructor( public width: number, From 5a353ad7156cb33791edb373bce70432545d8465 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:04:37 +0200 Subject: [PATCH 24/49] Remove deprecated theolive property --- src/api/player/THEOplayer.ts | 7 ------- src/internal/adapter/THEOplayerAdapter.ts | 4 ---- src/internal/adapter/THEOplayerWebAdapter.ts | 4 ---- 3 files changed, 15 deletions(-) diff --git a/src/api/player/THEOplayer.ts b/src/api/player/THEOplayer.ts index a66289724..616899908 100644 --- a/src/api/player/THEOplayer.ts +++ b/src/api/player/THEOplayer.ts @@ -287,11 +287,4 @@ export interface THEOplayer extends EventDispatcher { * The API for THEOlive. */ readonly theoLive: TheoLiveAPI; - - /** - * The API for THEOlive. - * - * @deprecated use {@link THEOplayer.theoLive} instead. - */ - readonly theolive: TheoLiveAPI; } diff --git a/src/internal/adapter/THEOplayerAdapter.ts b/src/internal/adapter/THEOplayerAdapter.ts index c746ad7bd..f31feb3a4 100644 --- a/src/internal/adapter/THEOplayerAdapter.ts +++ b/src/internal/adapter/THEOplayerAdapter.ts @@ -243,10 +243,6 @@ export class THEOplayerAdapter extends DefaultEventDispatcher im return this._theoliveAdapter; } - get theolive(): TheoLiveAPI { - return this._theoliveAdapter; - } - set autoplay(autoplay: boolean) { this._state.autoplay = autoplay; NativePlayerModule.setAutoplay(this._view.nativeHandle, autoplay); diff --git a/src/internal/adapter/THEOplayerWebAdapter.ts b/src/internal/adapter/THEOplayerWebAdapter.ts index eee810e4f..1f4a1642e 100644 --- a/src/internal/adapter/THEOplayerWebAdapter.ts +++ b/src/internal/adapter/THEOplayerWebAdapter.ts @@ -374,10 +374,6 @@ export class THEOplayerWebAdapter extends DefaultEventDispatcher return this._theoliveAdapter; } - public get theolive(): TheoLiveAPI { - return this._theoliveAdapter; - } - public get version(): PlayerVersion { return { version: nativeVersion, From 03d8a9ac7286cd04df8a93c2e5929670133ad27f Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:08:34 +0200 Subject: [PATCH 25/49] Drop deprecated integration property --- src/api/source/SourceDescription.ts | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/src/api/source/SourceDescription.ts b/src/api/source/SourceDescription.ts index 0f6e77697..e303c545a 100644 --- a/src/api/source/SourceDescription.ts +++ b/src/api/source/SourceDescription.ts @@ -50,18 +50,6 @@ export type Sources = Source | Source[]; */ export type CrossOriginSetting = '' | 'anonymous' | 'use-credentials'; -/** - * The integration identifier of a source specific to a pre-integration, represented by a value from the following list: - *
- `'theolive'`: The source contains the THEOlive initialization url. - * - * @category Source - * @public - * @deprecated use {@link TypedSource.type} instead. - */ -export enum SourceIntegrationId { - THEO_LIVE = 'theolive' -} - /** * Describes the configuration of a player's source. * @@ -284,16 +272,6 @@ export interface TextTrackDescription { * @public */ export interface BaseSource { - /** - * The integration ID of the source. - * - * @remarks - *
- This can be used to signal that a source is specific to an integration. - * - * @deprecated use {@link TypedSource.type} instead. - */ - integration?: SourceIntegrationId; - /** * The cross-origin setting of the source. * From d83bb1a05a5291c305fa0a9dcf48953cd8ba665d Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:10:58 +0200 Subject: [PATCH 26/49] Run prettier --- example/babel.config.js | 4 +--- example/package-lock.json | 2 +- src/internal/adapter/track/TextTrackStyleAdapter.ts | 8 ++++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/example/babel.config.js b/example/babel.config.js index 740e17231..b86719fc5 100644 --- a/example/babel.config.js +++ b/example/babel.config.js @@ -1,6 +1,4 @@ module.exports = { presets: ['module:@react-native/babel-preset'], - plugins: [ - 'babel-plugin-react-compiler', - ], + plugins: ['babel-plugin-react-compiler'], }; diff --git a/example/package-lock.json b/example/package-lock.json index d5f4cc602..8c8463894 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -13317,7 +13317,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "devOptional": true, + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", diff --git a/src/internal/adapter/track/TextTrackStyleAdapter.ts b/src/internal/adapter/track/TextTrackStyleAdapter.ts index be106189f..7509a1162 100644 --- a/src/internal/adapter/track/TextTrackStyleAdapter.ts +++ b/src/internal/adapter/track/TextTrackStyleAdapter.ts @@ -77,14 +77,14 @@ export class TextTrackStyleAdapter implements TextTrackStyle { } get fontPath(): string | undefined { - return this._fontPath + return this._fontPath; } set fontPath(path: string) { - this._fontPath = path + this._fontPath = path; NativePlayerModule.setTextTrackStyle(this._view.nativeHandle, { - fontPath: path - }) + fontPath: path, + }); } get fontSize(): string | undefined { From 07e3b76ec654aeada4784be18a14d5dbc8d8a1a6 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:14:28 +0200 Subject: [PATCH 27/49] Add favicon --- example/web/public/index.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/example/web/public/index.html b/example/web/public/index.html index 4a6d88a29..310786e4b 100644 --- a/example/web/public/index.html +++ b/example/web/public/index.html @@ -14,6 +14,9 @@ + + +
From 8257cfa985a04eb16e1c859a609f5fc3a19d9d7b Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:29:40 +0200 Subject: [PATCH 28/49] Update TheoLiveSource --- src/api/theolive/TheoLiveSource.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/api/theolive/TheoLiveSource.ts b/src/api/theolive/TheoLiveSource.ts index 87f77442c..479dc0a4b 100644 --- a/src/api/theolive/TheoLiveSource.ts +++ b/src/api/theolive/TheoLiveSource.ts @@ -1,4 +1,4 @@ -import { SourceIntegrationId, TypedSource } from 'react-native-theoplayer'; +import { TypedSource } from 'react-native-theoplayer'; import { WebrtcOptions } from './WebrtcOptions'; /** @@ -9,9 +9,9 @@ import { WebrtcOptions } from './WebrtcOptions'; */ export interface TheoLiveSource extends TypedSource { /** - * @deprecated use {@link TypedSource.type} instead. + * The source URL of the media resource. */ - integration: SourceIntegrationId.THEO_LIVE; + src: string; /** * The content type. From 75eb408d1f440ac12c5d21e32acfa1b9e43008d7 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:30:10 +0200 Subject: [PATCH 29/49] Update web peerDependency version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c08597723..d80ad1e8c 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^9.12.0 || ^10" + "theoplayer": "^9.12.0 || ^10 || ^11" }, "peerDependenciesMeta": { "theoplayer": { From 3ccab4ed70e2caf13a037c01505d7955dbefda26 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 12:30:34 +0200 Subject: [PATCH 30/49] Update deprecated node version constraint --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d80ad1e8c..4e8f69337 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ } }, "engines": { - "node": ">=16" + "node": ">=20" }, "eslintIgnore": [ "node_modules/", From 2738e3880aa794ad1526ed0a6b965e02062a4194 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 13:11:49 +0200 Subject: [PATCH 31/49] Update changelog --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41e62901e..1f0b164ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Added + +- Added support for player SDK v11. More info on the [migration documentation](./doc/migrating-to-react-native-theoplayer-11.md) page. +- Enabled core library desugaring for Android to support version 3.39.0 of the Google IMA SDK. + ### Changed - Upgraded example app to React-Native v0.84.1. @@ -15,6 +20,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed an issue on Web where Google IMA could fail to initialize when used with `react-reverse-portal` due to the player container not being attached to the document yet. +### Removed + +- Removed deprecated `ResizeEvent` in favor of `DimensionChangeEvent`. +- Removed deprecated `player.theolive` property in favor of `player.theoLive`. +- Removed deprecated `source.integration` property in favor of `source.type`. + ## [10.13.0] - 26-03-27 ### Fixed From fb47c39c6dc94671c34d171cac594291db31e22c Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 13:19:52 +0200 Subject: [PATCH 32/49] Update podspec file --- react-native-theoplayer.podspec | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/react-native-theoplayer.podspec b/react-native-theoplayer.podspec index fe642bd34..75885c65d 100644 --- a/react-native-theoplayer.podspec +++ b/react-native-theoplayer.podspec @@ -32,7 +32,7 @@ Pod::Spec.new do |s| s.license = package["license"] s.authors = package["author"] - s.platforms = { :ios => "13.4", :tvos => "13.4" } + s.platforms = { :ios => "15.0", :tvos => "15.0" } s.source = { :git => "https://www.theoplayer.com/.git", :tag => "#{s.version}" } s.source_files = 'ios/*.{h,m,swift}', 'ios/ads/*.swift', 'ios/casting/*.swift', 'ios/contentprotection/*.swift', 'ios/pip/*.swift', 'ios/backgroundAudio/*.swift', 'ios/cache/*.swift', 'ios/sideloadedMetadata/*.swift', 'ios/eventBroadcasting/*.swift' , 'ios/ui/*.swift', 'ios/presentationMode/*.swift', 'ios/viewController/*.swift', 'ios/THEOlive/*.swift', 'ios/THEOads/*.swift', 'ios/millicast/*.swift' @@ -43,37 +43,37 @@ Pod::Spec.new do |s| # THEOplayer Dependency puts "Adding THEOplayerSDK-core" - s.dependency "THEOplayerSDK-core", "~> 10.10" + s.dependency "THEOplayerSDK-core", "~> 11.0" # THEOlive Dependency puts "Adding THEOplayer-Integration-THEOlive" - s.dependency "THEOplayer-Integration-THEOlive", "~> 10.12" + s.dependency "THEOplayer-Integration-THEOlive", "~> 11.0" # Feature based integration dependencies if theofeatures.include?("GOOGLE_IMA") puts "Adding THEOplayer-Integration-GoogleIMA" - s.dependency "THEOplayer-Integration-GoogleIMA", "~> 10.12" + s.dependency "THEOplayer-Integration-GoogleIMA", "~> 11.0" end if theofeatures.include?("CHROMECAST") puts "Adding THEOplayer-Integration-GoogleCast" - s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 10.12" + s.ios.dependency "THEOplayer-Integration-GoogleCast", "~> 11.0" end if theofeatures.include?("THEO_ADS") puts "Adding THEOplayer-Integration-THEOads" - s.dependency "THEOplayer-Integration-THEOads", "~> 10.12" + s.dependency "THEOplayer-Integration-THEOads", "~> 11.0" end if theofeatures.include?("MILLICAST") puts "Adding THEOplayer-Integration-Millicast" - s.dependency "THEOplayer-Integration-Millicast", "~> 10.12" + s.dependency "THEOplayer-Integration-Millicast", "~> 11.0" end # Feature based connector dependencies if theofeatures.include?("SIDELOADED_TEXTTRACKS") puts "Adding THEOplayer-Connector-SideloadedSubtitle" - s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 10.12" + s.dependency "THEOplayer-Connector-SideloadedSubtitle", "~> 11.0" end end From eefb559eb18d82f5371ff8f74f110841c8a4a275 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Mon, 13 Apr 2026 13:23:02 +0200 Subject: [PATCH 33/49] Add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f0b164ac..0c418c7c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Changed - Upgraded example app to React-Native v0.84.1. +- Changed the minimum supported iOS/tvOS version to 15.0, dropping support for iOS/tvOS 13 and 14. ### Fixed From edb87dcacc2a649225e6433d56dcde2f2b7e6300 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2026 19:06:59 +0000 Subject: [PATCH 34/49] Bump follow-redirects from 1.15.11 to 1.16.0 in /e2e Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0) --- updated-dependencies: - dependency-name: follow-redirects dependency-version: 1.16.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- e2e/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index d9a452b66..30f4b0af3 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -7631,9 +7631,9 @@ "license": "MIT" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { From 044e6d475618b6d736cb68f2867f5cf071d60fc5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2026 19:10:33 +0000 Subject: [PATCH 35/49] Bump follow-redirects from 1.15.11 to 1.16.0 in /example Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0) --- updated-dependencies: - dependency-name: follow-redirects dependency-version: 1.16.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- example/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/example/package-lock.json b/example/package-lock.json index 4d48167f3..5e11e10db 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -7458,9 +7458,9 @@ "license": "MIT" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { From 45607cf6ddd2d2245d23ee473149f6596fd16ca6 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 11:29:06 +0200 Subject: [PATCH 36/49] Add migration guide --- ...migrating-to-react-native-theoplayer-11.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 doc/migrating-to-react-native-theoplayer-11.md diff --git a/doc/migrating-to-react-native-theoplayer-11.md b/doc/migrating-to-react-native-theoplayer-11.md new file mode 100644 index 000000000..7b343802e --- /dev/null +++ b/doc/migrating-to-react-native-theoplayer-11.md @@ -0,0 +1,41 @@ +# Migrating to THEOplayer React Native SDK 11.x + +This article will guide you through updating to THEOplayer React Native SDK version 11 (from version 10), +and the changes needed in your code. + +## Update React Native THEOplayer + +Run the following command to install THEOplayer React Native SDK version 11: + +```bash +npm install react-native-theoplayer@11 +``` + +## Breaking API changes + +- Removed deprecated `ResizeEvent` in favor of `DimensionChangeEvent`. +- Removed deprecated `player.theolive` property in favor of `player.theoLive`. +- Removed deprecated `source.integration` property in favor of `source.type`. + +## Breaking Changes on Web + +The breaking changes for the native Web SDK are listed in the v11 [changelog](https://optiview.dolby.com/docs/theoplayer/changelog/#-breaking-changes), +none of which impact the React Native SDK on Web. + +## Breaking Changes on iOS + +The breaking changes for the native Web SDK are listed in the v11 [changelog](https://optiview.dolby.com/docs/theoplayer/changelog/#-breaking-changes-2). + +The following updates in particular impact the React Native SDK on iOS. + +- The minimum supported iOS/tvOS version is now 15.0, dropping support for iOS/tvOS 13 and 14. + +## Breaking Changes on Android + +The breaking changes for the native Android SDK are listed in the v11 [changelog](https://optiview.dolby.com/docs/theoplayer/changelog/#-breaking-changes-1). + +The following updates in particular impact the React Native SDK on Android. + +- The Google IMA SDK integration now requires [core library desugaring](https://developer.android.com/studio/write/java8-support#library-desugaring) to be enabled. +See [our updated guide for Google IMA](https://optiview.dolby.com/docs/theoplayer/how-to-guides/ads/google-ima/#android-sdk) for instructions, or the +React Native THEOplayer [example app](https://github.com/THEOplayer/react-native-theoplayer/tree/develop/example) for a sample implementation. From 74e3965f63900c33e8de1d94ee00abe62a6e82af Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 11:40:22 +0200 Subject: [PATCH 37/49] Bump package versions --- e2e/package.json | 2 +- example/package-lock.json | 40 +++++++++++++++++++-------------------- example/package.json | 6 +++--- package-lock.json | 12 ++++++------ package.json | 2 +- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/e2e/package.json b/e2e/package.json index c351f8a68..e9e755871 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -14,7 +14,7 @@ "update-dependencies": "npx ncu '/@theoplayer\\/.*/' -u" }, "dependencies": { - "@theoplayer/react-native-ui": "^0.22.0", + "@theoplayer/react-native-ui": "^0.23.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "npm:react-native-tvos@^0.84.1-0", diff --git a/example/package-lock.json b/example/package-lock.json index 8c8463894..43c6ef647 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -8,8 +8,8 @@ "name": "react-native-theoplayer-example", "version": "0.0.1", "dependencies": { - "@theoplayer/react-native-drm": "^1.10.0", - "@theoplayer/react-native-ui": "^0.22.0", + "@theoplayer/react-native-drm": "^1.11.0", + "@theoplayer/react-native-ui": "^0.23.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "npm:react-native-tvos@^0.84.1-0", @@ -40,7 +40,7 @@ "eslint": "^8.57.1", "html-webpack-plugin": "^5.6.3", "react-native-svg-web": "^1.0.9", - "theoplayer": "^10", + "theoplayer": "^11", "typescript": "5.8.3", "webpack": "^5.105.0", "webpack-cli": "^6.0.1", @@ -51,7 +51,7 @@ } }, "..": { - "version": "10.13.0", + "version": "11.0.0", "license": "BSD-3-Clause-Clear", "dependencies": { "@theoplayer/cmcd-connector-web": "^1.4.0", @@ -72,7 +72,7 @@ "react": "^19.2.3", "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.11.0", + "theoplayer": "^11.0.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", @@ -80,12 +80,12 @@ "typescript-eslint": "^8.30.1" }, "engines": { - "node": ">=16" + "node": ">=20" }, "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^9.12.0 || ^10" + "theoplayer": "^9.12.0 || ^10 || ^11" }, "peerDependenciesMeta": { "theoplayer": { @@ -3334,20 +3334,20 @@ } }, "node_modules/@theoplayer/react-native-drm": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@theoplayer/react-native-drm/-/react-native-drm-1.10.0.tgz", - "integrity": "sha512-s7QQMlpxVE8nmCTwzNaHbdIsEmoqUvdixoblW0oNwxks9ocyubOmHwxoc+TRalo2Q6dq/BzacHKCXp2F1KhFrg==", - "license": "SEE LICENSE AT https://www.theoplayer.com/terms", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@theoplayer/react-native-drm/-/react-native-drm-1.12.0.tgz", + "integrity": "sha512-n3+FBLEyBP43mDG3hk0iy6AcQhWoE3NoVWZsTL1LiHHcr4jJvTQLjQO3r3FHv4I5E337nojks1gVFVdYx7dbSg==", + "license": "BSD-3-Clause-Clear", "peerDependencies": { "react": "*", - "react-native-theoplayer": "^7 || ^8 || ^9 || ^10", - "theoplayer": "^7 || ^8 || ^9 || ^10" + "react-native-theoplayer": "^7 || ^8 || ^9 || ^10 || ^11", + "theoplayer": "^7 || ^8 || ^9 || ^10 || ^11" } }, "node_modules/@theoplayer/react-native-ui": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.22.0.tgz", - "integrity": "sha512-7nk/VBKIcOdN7f/WgewejSItzNIZ2qdej43qvhp2UREXWWcpppmR0oltYPL9P16oOaMoOMK8vAXMIxengomxJg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.23.0.tgz", + "integrity": "sha512-NzRdsx2Z/466E3ZDTgQFqBrkRQ0v/1TtJv7Pv67NJMmotc0yXLOYwDy2pyL/QDyYUzmTrUX9A26VP10wsXSHig==", "license": "SEE LICENSE AT https://www.theoplayer.com/terms", "dependencies": { "@miblanchard/react-native-slider": "^2.6.0", @@ -3359,7 +3359,7 @@ "react-native": "*", "react-native-google-cast": "*", "react-native-svg": "^13.8.0 || ^14 || ^15", - "react-native-theoplayer": "^7 || ^8 || ^9 || ^10" + "react-native-theoplayer": "^7 || ^8 || ^9 || ^10 || ^11" } }, "node_modules/@types/babel__core": { @@ -13036,9 +13036,9 @@ "license": "MIT" }, "node_modules/theoplayer": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-10.6.1.tgz", - "integrity": "sha512-mz3LpcChF0/pUWJwzJtMwKWyuqmv85Ao8eAFVmYFI0K+krjC+yAm28suFa7E6BITZfNTtwlDTY+ZPRDcxd6+ng==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-11.0.0.tgz", + "integrity": "sha512-pxjpNtd++m87H5ndEPlNbKpHhXCNbFDgnXB0g6RfTv/v7zSpSLwiB0F0vIJe5asaqEJ6pKH7kvpTgnaEN2TElw==", "license": "SEE LICENSE AT https://www.theoplayer.com/terms" }, "node_modules/thingies": { diff --git a/example/package.json b/example/package.json index ba0fd7ddb..4ea8890d7 100644 --- a/example/package.json +++ b/example/package.json @@ -15,8 +15,8 @@ "pod-update": "cd ios && RCT_NEW_ARCH_ENABLED=1 bundle exec pod update" }, "dependencies": { - "@theoplayer/react-native-drm": "^1.10.0", - "@theoplayer/react-native-ui": "^0.22.0", + "@theoplayer/react-native-drm": "^1.11.0", + "@theoplayer/react-native-ui": "^0.23.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "npm:react-native-tvos@^0.84.1-0", @@ -47,7 +47,7 @@ "eslint": "^8.57.1", "html-webpack-plugin": "^5.6.3", "react-native-svg-web": "^1.0.9", - "theoplayer": "^10", + "theoplayer": "^11", "typescript": "5.8.3", "webpack": "^5.105.0", "webpack-cli": "^6.0.1", diff --git a/package-lock.json b/package-lock.json index 8c411dce4..eb8369f6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "react": "^19.2.3", "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.11.0", + "theoplayer": "^11.0.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", @@ -35,12 +35,12 @@ "typescript-eslint": "^8.30.1" }, "engines": { - "node": ">=16" + "node": ">=20" }, "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^9.12.0 || ^10" + "theoplayer": "^9.12.0 || ^10 || ^11" }, "peerDependenciesMeta": { "theoplayer": { @@ -10936,9 +10936,9 @@ "dev": true }, "node_modules/theoplayer": { - "version": "10.13.0", - "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-10.13.0.tgz", - "integrity": "sha512-RrHWZWFG9xEcNPwQV46mRJM1YouvS4A/ZB/0o2OM2GuFvZH65DUhsr3fml7YIXKa6iLUawvsuwHxMoM2MztNZQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/theoplayer/-/theoplayer-11.0.0.tgz", + "integrity": "sha512-pxjpNtd++m87H5ndEPlNbKpHhXCNbFDgnXB0g6RfTv/v7zSpSLwiB0F0vIJe5asaqEJ6pKH7kvpTgnaEN2TElw==", "license": "SEE LICENSE AT https://www.theoplayer.com/terms" }, "node_modules/throat": { diff --git a/package.json b/package.json index 4e8f69337..3619b6c2a 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "react": "^19.2.3", "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.11.0", + "theoplayer": "^11.0.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", From 9f927afafbe1b26fd3e890f0c6544a797f157260 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 11:58:46 +0200 Subject: [PATCH 38/49] Update DRM package --- example/package-lock.json | 4 ++-- example/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/example/package-lock.json b/example/package-lock.json index 43c6ef647..4925024e5 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -8,7 +8,7 @@ "name": "react-native-theoplayer-example", "version": "0.0.1", "dependencies": { - "@theoplayer/react-native-drm": "^1.11.0", + "@theoplayer/react-native-drm": "^1.12.0", "@theoplayer/react-native-ui": "^0.23.0", "react": "19.2.3", "react-dom": "19.2.3", @@ -51,7 +51,7 @@ } }, "..": { - "version": "11.0.0", + "version": "10.13.0", "license": "BSD-3-Clause-Clear", "dependencies": { "@theoplayer/cmcd-connector-web": "^1.4.0", diff --git a/example/package.json b/example/package.json index 4ea8890d7..60f9eb982 100644 --- a/example/package.json +++ b/example/package.json @@ -15,7 +15,7 @@ "pod-update": "cd ios && RCT_NEW_ARCH_ENABLED=1 bundle exec pod update" }, "dependencies": { - "@theoplayer/react-native-drm": "^1.11.0", + "@theoplayer/react-native-drm": "^1.12.0", "@theoplayer/react-native-ui": "^0.23.0", "react": "19.2.3", "react-dom": "19.2.3", From 3abc3d9668180ac8f4881a8bea90ac06193fe85f Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 12:57:56 +0200 Subject: [PATCH 39/49] Drop unused imports --- .../main/java/com/reactnativetheoplayer/MainApplication.kt | 6 ------ .../main/java/com/reactnativetheoplayer/MainApplication.kt | 6 ------ 2 files changed, 12 deletions(-) diff --git a/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt b/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt index 2e5d462e2..f96443c13 100644 --- a/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt +++ b/e2e/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt @@ -5,13 +5,7 @@ import com.facebook.react.PackageList import com.facebook.react.ReactApplication import com.facebook.react.ReactHost import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative -import com.facebook.react.ReactNativeHost -import com.facebook.react.ReactPackage -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost -import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.react.soloader.OpenSourceMergedSoMapping -import com.facebook.soloader.SoLoader import com.theoplayer.ReactTHEOplayerPackage class MainApplication : Application(), ReactApplication { diff --git a/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt b/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt index 2e5d462e2..f96443c13 100644 --- a/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt +++ b/example/android/app/src/main/java/com/reactnativetheoplayer/MainApplication.kt @@ -5,13 +5,7 @@ import com.facebook.react.PackageList import com.facebook.react.ReactApplication import com.facebook.react.ReactHost import com.facebook.react.ReactNativeApplicationEntryPoint.loadReactNative -import com.facebook.react.ReactNativeHost -import com.facebook.react.ReactPackage -import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost -import com.facebook.react.defaults.DefaultReactNativeHost -import com.facebook.react.soloader.OpenSourceMergedSoMapping -import com.facebook.soloader.SoLoader import com.theoplayer.ReactTHEOplayerPackage class MainApplication : Application(), ReactApplication { From 28513013ca75691290f10aa41c827966586beb4e Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 13:21:15 +0200 Subject: [PATCH 40/49] Update cmcd connector --- package-lock.json | 10 +++++----- package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb8369f6e..65bdba51a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "10.13.0", "license": "BSD-3-Clause-Clear", "dependencies": { - "@theoplayer/cmcd-connector-web": "^1.4.0", + "@theoplayer/cmcd-connector-web": "^1.5.0", "buffer": "^6.0.3" }, "devDependencies": { @@ -3137,12 +3137,12 @@ } }, "node_modules/@theoplayer/cmcd-connector-web": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@theoplayer/cmcd-connector-web/-/cmcd-connector-web-1.4.0.tgz", - "integrity": "sha512-fOl94/HKnJLiBwhy4KPLOtxcNksUHfCyXQTvTM0kVBdd+Y6DwgreGpk6RXeHpxzkVXgH0Sx1DjNutwfIqLk/yA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@theoplayer/cmcd-connector-web/-/cmcd-connector-web-1.5.0.tgz", + "integrity": "sha512-eWElrE36ubYqaxcsc4iA8L1YwRB0m48rXl3OWjiQIZINdMUSyEB87999xEG9Y21WKVDCjG7yegnJzFBKnzttmQ==", "license": "MIT", "peerDependencies": { - "theoplayer": "^5 || ^6 || ^7 || ^8 || ^9 || ^10" + "theoplayer": "^5 || ^6 || ^7 || ^8 || ^9 || ^10 || ^11" } }, "node_modules/@types/babel__core": { diff --git a/package.json b/package.json index 3619b6c2a..7505ef920 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ ] }, "dependencies": { - "@theoplayer/cmcd-connector-web": "^1.4.0", + "@theoplayer/cmcd-connector-web": "^1.5.0", "buffer": "^6.0.3" } } From c518b20b309c5a74d17966e416ebe353e11d6ace Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 13:24:21 +0200 Subject: [PATCH 41/49] Update lock files --- e2e/package-lock.json | 18 +++++++++--------- example/package-lock.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 30a377b0e..dd0adc2ba 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -8,7 +8,7 @@ "name": "react-native-theoplayer-e2e", "version": "0.0.1", "dependencies": { - "@theoplayer/react-native-ui": "^0.22.0", + "@theoplayer/react-native-ui": "^0.23.0", "react": "19.2.3", "react-dom": "19.2.3", "react-native": "npm:react-native-tvos@^0.84.1-0", @@ -56,7 +56,7 @@ "version": "10.13.0", "license": "BSD-3-Clause-Clear", "dependencies": { - "@theoplayer/cmcd-connector-web": "^1.4.0", + "@theoplayer/cmcd-connector-web": "^1.5.0", "buffer": "^6.0.3" }, "devDependencies": { @@ -74,7 +74,7 @@ "react": "^19.2.3", "react-native": "^0.84.1", "react-native-builder-bob": "^0.39.1", - "theoplayer": "^10.11.0", + "theoplayer": "^11.0.0", "typedoc": "^0.25.13", "typedoc-plugin-external-resolver": "^1.0.3", "typedoc-plugin-mdn-links": "^3.3.4", @@ -82,12 +82,12 @@ "typescript-eslint": "^8.30.1" }, "engines": { - "node": ">=16" + "node": ">=20" }, "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^9.12.0 || ^10" + "theoplayer": "^9.12.0 || ^10 || ^11" }, "peerDependenciesMeta": { "theoplayer": { @@ -3336,9 +3336,9 @@ } }, "node_modules/@theoplayer/react-native-ui": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.22.0.tgz", - "integrity": "sha512-7nk/VBKIcOdN7f/WgewejSItzNIZ2qdej43qvhp2UREXWWcpppmR0oltYPL9P16oOaMoOMK8vAXMIxengomxJg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@theoplayer/react-native-ui/-/react-native-ui-0.23.0.tgz", + "integrity": "sha512-NzRdsx2Z/466E3ZDTgQFqBrkRQ0v/1TtJv7Pv67NJMmotc0yXLOYwDy2pyL/QDyYUzmTrUX9A26VP10wsXSHig==", "license": "SEE LICENSE AT https://www.theoplayer.com/terms", "dependencies": { "@miblanchard/react-native-slider": "^2.6.0", @@ -3350,7 +3350,7 @@ "react-native": "*", "react-native-google-cast": "*", "react-native-svg": "^13.8.0 || ^14 || ^15", - "react-native-theoplayer": "^7 || ^8 || ^9 || ^10" + "react-native-theoplayer": "^7 || ^8 || ^9 || ^10 || ^11" } }, "node_modules/@types/babel__core": { diff --git a/example/package-lock.json b/example/package-lock.json index 4925024e5..f351f6626 100644 --- a/example/package-lock.json +++ b/example/package-lock.json @@ -54,7 +54,7 @@ "version": "10.13.0", "license": "BSD-3-Clause-Clear", "dependencies": { - "@theoplayer/cmcd-connector-web": "^1.4.0", + "@theoplayer/cmcd-connector-web": "^1.5.0", "buffer": "^6.0.3" }, "devDependencies": { From 2150d82486a11dc41b3557dada42fe3588010335 Mon Sep 17 00:00:00 2001 From: William Van Haevre Date: Thu, 16 Apr 2026 13:55:18 +0200 Subject: [PATCH 42/49] Drop Sideloaded texttracks feature for e2e tests. --- e2e/react-native-theoplayer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/react-native-theoplayer.json b/e2e/react-native-theoplayer.json index a91ca8d26..0ec39ba29 100644 --- a/e2e/react-native-theoplayer.json +++ b/e2e/react-native-theoplayer.json @@ -1,5 +1,5 @@ { "ios": { - "features": ["GOOGLE_IMA", "CHROMECAST", "SIDELOADED_TEXTTRACKS", "THEO_ADS", "MILLICAST"] + "features": ["GOOGLE_IMA", "CHROMECAST", "THEO_ADS", "MILLICAST"] } } From 53abeab1339c2d5529e410488c240060a36507f1 Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Thu, 16 Apr 2026 14:32:21 +0200 Subject: [PATCH 43/49] Require THEOplayer Web SDK 11.x --- e2e/package-lock.json | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/package-lock.json b/e2e/package-lock.json index 5685eba0e..086bde286 100644 --- a/e2e/package-lock.json +++ b/e2e/package-lock.json @@ -87,7 +87,7 @@ "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^9.12.0 || ^10 || ^11" + "theoplayer": "^11" }, "peerDependenciesMeta": { "theoplayer": { diff --git a/package-lock.json b/package-lock.json index f90a24f0e..bf1df6af3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^9.12.0 || ^10 || ^11" + "theoplayer": "^11" }, "peerDependenciesMeta": { "theoplayer": { diff --git a/package.json b/package.json index 7505ef920..cd799e19e 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "peerDependencies": { "react": "*", "react-native": "*", - "theoplayer": "^9.12.0 || ^10 || ^11" + "theoplayer": "^11" }, "peerDependenciesMeta": { "theoplayer": { From 5449e145158b1a4d03aa188a60da3077915b921c Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Tue, 14 Apr 2026 15:07:30 +0200 Subject: [PATCH 44/49] Enable buildConfig feature --- android/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/android/build.gradle b/android/build.gradle index 0ae88fa38..23139c788 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -92,6 +92,9 @@ android { minifyEnabled false } } + buildFeatures { + buildConfig true + } lint { disable 'GradleCompatible' } From 7c3fb55bd49f01f586bcad489eb43863c6af3c3e Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Tue, 14 Apr 2026 15:09:00 +0200 Subject: [PATCH 45/49] Add `TextTrack.captionChannel` --- .../java/com/theoplayer/track/TrackListAdapter.kt | 4 ++++ src/api/track/TextTrack.ts | 11 +++++++++++ src/internal/adapter/web/TrackUtils.ts | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt b/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt index 1db1144db..27b46dde2 100644 --- a/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt +++ b/android/src/main/java/com/theoplayer/track/TrackListAdapter.kt @@ -26,6 +26,7 @@ private const val PROP_NAME = "name" private const val PROP_ENABLED = "enabled" private const val PROP_SRC = "src" private const val PROP_FORCED = "forced" +private const val PROP_CAPTION_CHANNEL = "captionChannel" private const val PROP_AUDIO_SAMPLING_RATE = "audioSamplingRate" private const val PROP_BANDWIDTH = "bandwidth" private const val PROP_QUALITIES = "qualities" @@ -69,6 +70,9 @@ object TrackListAdapter { textTrackPayload.putString(PROP_SRC, textTrack.source) textTrackPayload.putBoolean(PROP_FORCED, textTrack.isForced) + // THEOplayer v10.13+ + textTrack.captionChannel?.let { textTrackPayload.putInt(PROP_CAPTION_CHANNEL, it) } + // Optionally pass cue list. val cueList = textTrack.cues if (cueList != null) { diff --git a/src/api/track/TextTrack.ts b/src/api/track/TextTrack.ts index cfe59f936..f9c3b7be6 100644 --- a/src/api/track/TextTrack.ts +++ b/src/api/track/TextTrack.ts @@ -149,6 +149,17 @@ export interface TextTrack extends Track { *
- For HLS: the corresponding #EXT-X-MEDIA tag contains the attributes TYPE=SUBTITLES and FORCED=YES (not supported yet) */ readonly forced: boolean; + + /** + * The closed caption service number of the text track. + * + * @remarks + *
- For CEA-608 caption tracks, this holds the channel number. + *
- For CEA-708 caption tracks, this holds the service number. + *
- Otherwise, this is `undefined`. + *
- Not yet supported on iOS. + */ + readonly captionChannel?: number; } /** diff --git a/src/internal/adapter/web/TrackUtils.ts b/src/internal/adapter/web/TrackUtils.ts index c8c4baca6..bd0ff83e0 100644 --- a/src/internal/adapter/web/TrackUtils.ts +++ b/src/internal/adapter/web/TrackUtils.ts @@ -41,7 +41,7 @@ export function fromNativeTextTrackList(tracks: NativeTextTrackList): TextTrack[ } export function fromNativeTextTrack(track: NativeTextTrack): TextTrack { - const { id, uid, kind, label, language, mode, type, src, forced } = track; + const { id, uid, kind, label, language, mode, type, src, forced, captionChannel } = track; return { id, @@ -53,6 +53,7 @@ export function fromNativeTextTrack(track: NativeTextTrack): TextTrack { type, src, forced, + captionChannel, cues: track.cues ? track.cues.map((cue) => fromNativeCue(cue)) : [], } as TextTrack; } From 83f968274ea0bca4b1286d740f37a56720fd8e8f Mon Sep 17 00:00:00 2001 From: Mattias Buelens Date: Tue, 14 Apr 2026 15:13:03 +0200 Subject: [PATCH 46/49] Update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c418c7c1..8adb4368e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added support for player SDK v11. More info on the [migration documentation](./doc/migrating-to-react-native-theoplayer-11.md) page. - Enabled core library desugaring for Android to support version 3.39.0 of the Google IMA SDK. +- Added `TextTrack.captionChannel` to retrieve the CEA-608 channel and/or CEA-708 service numbers of closed caption text tracks. ### Changed From 935350795857c822fffc57fb38615383160aa18c Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 09:17:33 +0200 Subject: [PATCH 47/49] Use platform tag --- src/api/track/TextTrack.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/api/track/TextTrack.ts b/src/api/track/TextTrack.ts index f9c3b7be6..1ddfe517d 100644 --- a/src/api/track/TextTrack.ts +++ b/src/api/track/TextTrack.ts @@ -153,11 +153,12 @@ export interface TextTrack extends Track { /** * The closed caption service number of the text track. * + * @platform web,android + * * @remarks *
- For CEA-608 caption tracks, this holds the channel number. *
- For CEA-708 caption tracks, this holds the service number. *
- Otherwise, this is `undefined`. - *
- Not yet supported on iOS. */ readonly captionChannel?: number; } From 52a67e4c4247cb3bf28c481bc444086028673ba8 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 15:42:59 +0200 Subject: [PATCH 48/49] Update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8adb4368e..937d0075e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.1.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [11.0.0] - 26-04-16 ### Added From e0b5bdeb11defc383f2eb47e32eee2766fe6a008 Mon Sep 17 00:00:00 2001 From: Tom Van Laerhoven Date: Thu, 16 Apr 2026 15:48:12 +0200 Subject: [PATCH 49/49] 11.0.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index bf1df6af3..326740a01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "react-native-theoplayer", - "version": "10.13.0", + "version": "11.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "react-native-theoplayer", - "version": "10.13.0", + "version": "11.0.0", "license": "BSD-3-Clause-Clear", "dependencies": { "@theoplayer/cmcd-connector-web": "^1.5.0", diff --git a/package.json b/package.json index cd799e19e..836af3299 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-theoplayer", - "version": "10.13.0", + "version": "11.0.0", "description": "A THEOplayer video component for react-native.", "main": "lib/commonjs/index", "module": "lib/module/index",