From fbf6fcd761dc07061dd33f0d406cb3de03e12bbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 10:21:20 +0000 Subject: [PATCH 001/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20the=20babel=20gro?= =?UTF-8?q?up=20with=208=20updates=20(#15539)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the babel group with 8 updates: | Package | From | To | | --- | --- | --- | | [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.28.5` | `7.28.6` | | [@babel/generator](https://github.com/babel/babel/tree/HEAD/packages/babel-generator) | `7.28.5` | `7.28.6` | | [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) | `7.28.5` | `7.28.6` | | [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) | `7.28.4` | `7.28.6` | | [@babel/eslint-parser](https://github.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser) | `7.28.5` | `7.28.6` | | [@babel/plugin-transform-regenerator](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-regenerator) | `7.28.4` | `7.28.6` | | [@babel/plugin-transform-private-methods](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-private-methods) | `7.27.1` | `7.28.6` | | [@babel/plugin-transform-private-property-in-object](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-private-property-in-object) | `7.27.1` | `7.28.6` | Updates `@babel/core` from 7.28.5 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-core) Updates `@babel/generator` from 7.28.5 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-generator) Updates `@babel/preset-env` from 7.28.5 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-preset-env) Updates `@babel/runtime` from 7.28.4 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-runtime) Updates `@babel/eslint-parser` from 7.28.5 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/eslint/babel-eslint-parser) Updates `@babel/plugin-transform-regenerator` from 7.28.4 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-plugin-transform-regenerator) Updates `@babel/plugin-transform-private-methods` from 7.27.1 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-plugin-transform-private-methods) Updates `@babel/plugin-transform-private-property-in-object` from 7.27.1 to 7.28.6 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.28.6/packages/babel-plugin-transform-private-property-in-object) --- updated-dependencies: - dependency-name: "@babel/core" dependency-version: 7.28.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/generator" dependency-version: 7.28.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/preset-env" dependency-version: 7.28.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/runtime" dependency-version: 7.28.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/eslint-parser" dependency-version: 7.28.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/plugin-transform-regenerator" dependency-version: 7.28.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel - dependency-name: "@babel/plugin-transform-private-methods" dependency-version: 7.28.6 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: babel - dependency-name: "@babel/plugin-transform-private-property-in-object" dependency-version: 7.28.6 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: babel ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 604 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 317 insertions(+), 287 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2ea0de7b68c..771cc6d04c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,34 +2,34 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" + integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== dependencies: - "@babel/helper-validator-identifier" "^7.27.1" + "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f" - integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA== +"@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c" + integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg== "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.22.0", "@babel/core@^7.23.9", "@babel/core@^7.25.2": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.5.tgz#4c81b35e51e1b734f510c99b07dfbc7bbbb48f7e" - integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helpers" "^7.28.4" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/traverse" "^7.28.5" - "@babel/types" "^7.28.5" + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f" + integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw== + dependencies: + "@babel/code-frame" "^7.28.6" + "@babel/generator" "^7.28.6" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helpers" "^7.28.6" + "@babel/parser" "^7.28.6" + "@babel/template" "^7.28.6" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -38,21 +38,21 @@ semver "^6.3.1" "@babel/eslint-parser@^7.25.1": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.5.tgz#0b8883a4a1c2cbed7b3cd9d7765d80e8f480b9ae" - integrity sha512-fcdRcWahONYo+JRnJg1/AekOacGvKx12Gu0qXJXFi2WBqQA1i7+O5PaxRB7kxE/Op94dExnCiiar6T09pvdHpA== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.6.tgz#6a294a4add732ebe7ded8a8d2792dd03dd81dc3f" + integrity sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.25.0", "@babel/generator@^7.28.5", "@babel/generator@^7.7.2": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298" - integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ== +"@babel/generator@^7.25.0", "@babel/generator@^7.28.5", "@babel/generator@^7.28.6", "@babel/generator@^7.7.2": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1" + integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw== dependencies: - "@babel/parser" "^7.28.5" - "@babel/types" "^7.28.5" + "@babel/parser" "^7.28.6" + "@babel/types" "^7.28.6" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" @@ -64,18 +64,18 @@ dependencies: "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2", "@babel/helper-compilation-targets@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" + integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== dependencies: - "@babel/compat-data" "^7.27.2" + "@babel/compat-data" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.27.1", "@babel/helper-create-class-features-plugin@^7.28.3", "@babel/helper-create-class-features-plugin@^7.28.5": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz#472d0c28028850968979ad89f173594a6995da46" integrity sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ== @@ -88,7 +88,20 @@ "@babel/traverse" "^7.28.5" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": +"@babel/helper-create-class-features-plugin@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz#611ff5482da9ef0db6291bcd24303400bca170fb" + integrity sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-member-expression-to-functions" "^7.28.5" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.28.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1", "@babel/helper-create-regexp-features-plugin@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz#7c1ddd64b2065c7f78034b25b43346a7e19ed997" integrity sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw== @@ -129,14 +142,22 @@ "@babel/traverse" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz#a2b37d3da3b2344fe085dab234426f2b9a2fa5f6" - integrity sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw== +"@babel/helper-module-imports@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" + integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/traverse" "^7.28.6" + "@babel/types" "^7.28.6" + +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3", "@babel/helper-module-transforms@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" + integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== + dependencies: + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-validator-identifier" "^7.28.5" + "@babel/traverse" "^7.28.6" "@babel/helper-optimise-call-expression@^7.27.1": version "7.27.1" @@ -145,10 +166,10 @@ dependencies: "@babel/types" "^7.27.1" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.28.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz#6f13ea251b68c8532e985fd532f28741a8af9ac8" + integrity sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug== "@babel/helper-remap-async-to-generator@^7.27.1": version "7.27.1" @@ -168,6 +189,15 @@ "@babel/helper-optimise-call-expression" "^7.27.1" "@babel/traverse" "^7.27.1" +"@babel/helper-replace-supers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz#94aa9a1d7423a00aead3f204f78834ce7d53fe44" + integrity sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.28.5" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": version "7.27.1" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" @@ -181,7 +211,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5": +"@babel/helper-validator-identifier@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== @@ -200,20 +230,20 @@ "@babel/traverse" "^7.28.3" "@babel/types" "^7.28.2" -"@babel/helpers@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.4.tgz#fe07274742e95bdf7cf1443593eeb8926ab63827" - integrity sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w== +"@babel/helpers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" + integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== dependencies: - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.4" + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08" - integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.28.5", "@babel/parser@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" + integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== dependencies: - "@babel/types" "^7.28.5" + "@babel/types" "^7.28.6" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": version "7.28.5" @@ -246,13 +276,13 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-optional-chaining" "^7.27.1" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz#373f6e2de0016f73caf8f27004f61d167743742a" - integrity sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz#0e8289cec28baaf05d54fd08d81ae3676065f69f" + integrity sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.28.3" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/traverse" "^7.28.6" "@babel/plugin-proposal-class-properties@^7.13.0": version "7.18.6" @@ -355,19 +385,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-assertions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" - integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== +"@babel/plugin-syntax-import-assertions@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz#ae9bc1923a6ba527b70104dd2191b0cd872c8507" + integrity sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz#b71d5914665f60124e133696f17cd7669062c503" + integrity sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -468,22 +498,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.25.4", "@babel/plugin-transform-async-generator-functions@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" - integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== +"@babel/plugin-transform-async-generator-functions@^7.25.4", "@babel/plugin-transform-async-generator-functions@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz#80cb86d3eaa2102e18ae90dd05ab87bdcad3877d" + integrity sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.0" + "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-async-to-generator@^7.24.7", "@babel/plugin-transform-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" - integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== +"@babel/plugin-transform-async-to-generator@^7.24.7", "@babel/plugin-transform-async-to-generator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz#bd97b42237b2d1bc90d74bcb486c39be5b4d7e77" + integrity sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g== dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-imports" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" "@babel/plugin-transform-block-scoped-functions@^7.27.1": @@ -493,50 +523,50 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.25.0", "@babel/plugin-transform-block-scoping@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz#e0d3af63bd8c80de2e567e690a54e84d85eb16f6" - integrity sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g== +"@babel/plugin-transform-block-scoping@^7.25.0", "@babel/plugin-transform-block-scoping@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz#e1ef5633448c24e76346125c2534eeb359699a99" + integrity sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-properties@^7.25.4", "@babel/plugin-transform-class-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" - integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== +"@babel/plugin-transform-class-properties@^7.25.4", "@babel/plugin-transform-class-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz#d274a4478b6e782d9ea987fda09bdb6d28d66b72" + integrity sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-class-static-block@^7.28.3": - version "7.28.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852" - integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg== +"@babel/plugin-transform-class-static-block@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz#1257491e8259c6d125ac4d9a6f39f9d2bf3dba70" + integrity sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-classes@^7.25.4", "@babel/plugin-transform-classes@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz#75d66175486788c56728a73424d67cbc7473495c" - integrity sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA== +"@babel/plugin-transform-classes@^7.25.4", "@babel/plugin-transform-classes@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz#8f6fb79ba3703978e701ce2a97e373aae7dda4b7" + integrity sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q== dependencies: "@babel/helper-annotate-as-pure" "^7.27.3" - "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-globals" "^7.28.0" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/traverse" "^7.28.4" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/helper-replace-supers" "^7.28.6" + "@babel/traverse" "^7.28.6" -"@babel/plugin-transform-computed-properties@^7.24.7", "@babel/plugin-transform-computed-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" - integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== +"@babel/plugin-transform-computed-properties@^7.24.7", "@babel/plugin-transform-computed-properties@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz#936824fc71c26cb5c433485776d79c8e7b0202d2" + integrity sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/template" "^7.28.6" -"@babel/plugin-transform-destructuring@^7.24.8", "@babel/plugin-transform-destructuring@^7.28.0", "@babel/plugin-transform-destructuring@^7.28.5": +"@babel/plugin-transform-destructuring@^7.24.8", "@babel/plugin-transform-destructuring@^7.28.5": version "7.28.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz#b8402764df96179a2070bb7b501a1586cf8ad7a7" integrity sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw== @@ -544,13 +574,13 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/traverse" "^7.28.5" -"@babel/plugin-transform-dotall-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" - integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== +"@babel/plugin-transform-dotall-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz#def31ed84e0fb6e25c71e53c124e7b76a4ab8e61" + integrity sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-duplicate-keys@^7.27.1": version "7.27.1" @@ -559,13 +589,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" - integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz#e0c59ba54f1655dd682f2edf5f101b5910a8f6f3" + integrity sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-dynamic-import@^7.27.1": version "7.27.1" @@ -574,20 +604,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-explicit-resource-management@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" - integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== +"@babel/plugin-transform-explicit-resource-management@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz#dd6788f982c8b77e86779d1d029591e39d9d8be7" + integrity sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" -"@babel/plugin-transform-exponentiation-operator@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz#7cc90a8170e83532676cfa505278e147056e94fe" - integrity sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw== +"@babel/plugin-transform-exponentiation-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz#5e477eb7eafaf2ab5537a04aaafcf37e2d7f1091" + integrity sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-export-namespace-from@^7.27.1": version "7.27.1" @@ -621,12 +651,12 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-json-strings@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" - integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== +"@babel/plugin-transform-json-strings@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz#4c8c15b2dc49e285d110a4cf3dac52fd2dfc3038" + integrity sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-literals@^7.25.2", "@babel/plugin-transform-literals@^7.27.1": version "7.27.1" @@ -635,12 +665,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.24.7", "@babel/plugin-transform-logical-assignment-operators@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz#d028fd6db8c081dee4abebc812c2325e24a85b0e" - integrity sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7", "@babel/plugin-transform-logical-assignment-operators@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz#53028a3d77e33c50ef30a8fce5ca17065936e605" + integrity sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-member-expression-literals@^7.27.1": version "7.27.1" @@ -657,13 +687,13 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.8", "@babel/plugin-transform-modules-commonjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" - integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.8", "@babel/plugin-transform-modules-commonjs@^7.27.1", "@babel/plugin-transform-modules-commonjs@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz#c0232e0dfe66a734cc4ad0d5e75fc3321b6fdef1" + integrity sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA== dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-modules-systemjs@^7.28.5": version "7.28.5" @@ -698,30 +728,30 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" - integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz#9bc62096e90ab7a887f3ca9c469f6adec5679757" + integrity sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-numeric-separator@^7.24.7", "@babel/plugin-transform-numeric-separator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" - integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== +"@babel/plugin-transform-numeric-separator@^7.24.7", "@babel/plugin-transform-numeric-separator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz#1310b0292762e7a4a335df5f580c3320ee7d9e9f" + integrity sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-object-rest-spread@^7.24.7", "@babel/plugin-transform-object-rest-spread@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz#9ee1ceca80b3e6c4bac9247b2149e36958f7f98d" - integrity sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew== +"@babel/plugin-transform-object-rest-spread@^7.24.7", "@babel/plugin-transform-object-rest-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz#fdd4bc2d72480db6ca42aed5c051f148d7b067f7" + integrity sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA== dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/traverse" "^7.28.4" + "@babel/traverse" "^7.28.6" "@babel/plugin-transform-object-super@^7.27.1": version "7.27.1" @@ -731,19 +761,19 @@ "@babel/helper-plugin-utils" "^7.27.1" "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-optional-catch-binding@^7.24.7", "@babel/plugin-transform-optional-catch-binding@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" - integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== +"@babel/plugin-transform-optional-catch-binding@^7.24.7", "@babel/plugin-transform-optional-catch-binding@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz#75107be14c78385978201a49c86414a150a20b4c" + integrity sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-optional-chaining@^7.24.8", "@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz#8238c785f9d5c1c515a90bf196efb50d075a4b26" - integrity sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ== +"@babel/plugin-transform-optional-chaining@^7.24.8", "@babel/plugin-transform-optional-chaining@^7.27.1", "@babel/plugin-transform-optional-chaining@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz#926cf150bd421fc8362753e911b4a1b1ce4356cd" + integrity sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-parameters@^7.24.7", "@babel/plugin-transform-parameters@^7.27.7": @@ -753,22 +783,22 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-methods@^7.22.0", "@babel/plugin-transform-private-methods@^7.24.7", "@babel/plugin-transform-private-methods@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== +"@babel/plugin-transform-private-methods@^7.22.0", "@babel/plugin-transform-private-methods@^7.24.7", "@babel/plugin-transform-private-methods@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz#c76fbfef3b86c775db7f7c106fff544610bdb411" + integrity sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-private-property-in-object@^7.22.0", "@babel/plugin-transform-private-property-in-object@^7.24.7", "@babel/plugin-transform-private-property-in-object@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" - integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== +"@babel/plugin-transform-private-property-in-object@^7.22.0", "@babel/plugin-transform-private-property-in-object@^7.24.7", "@babel/plugin-transform-private-property-in-object@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz#4fafef1e13129d79f1d75ac180c52aafefdb2811" + integrity sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA== dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-property-literals@^7.27.1": version "7.27.1" @@ -809,20 +839,20 @@ "@babel/plugin-syntax-jsx" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.24.7", "@babel/plugin-transform-regenerator@^7.28.4": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz#9d3fa3bebb48ddd0091ce5729139cd99c67cea51" - integrity sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA== +"@babel/plugin-transform-regenerator@^7.24.7", "@babel/plugin-transform-regenerator@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz#6ca2ed5b76cff87980f96eaacfc2ce833e8e7a1b" + integrity sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-regexp-modifiers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" - integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== +"@babel/plugin-transform-regexp-modifiers@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz#7ef0163bd8b4a610481b2509c58cf217f065290b" + integrity sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-reserved-words@^7.27.1": version "7.27.1" @@ -850,12 +880,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.24.7", "@babel/plugin-transform-spread@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" - integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== +"@babel/plugin-transform-spread@^7.24.7", "@babel/plugin-transform-spread@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz#40a2b423f6db7b70f043ad027a58bcb44a9757b6" + integrity sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA== dependencies: - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" "@babel/plugin-transform-sticky-regex@^7.24.7", "@babel/plugin-transform-sticky-regex@^7.27.1": @@ -897,13 +927,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-property-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" - integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== +"@babel/plugin-transform-unicode-property-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz#63a7a6c21a0e75dae9b1861454111ea5caa22821" + integrity sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-unicode-regex@^7.24.7", "@babel/plugin-transform-unicode-regex@^7.27.1": version "7.27.1" @@ -913,83 +943,83 @@ "@babel/helper-create-regexp-features-plugin" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-sets-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" - integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== +"@babel/plugin-transform-unicode-sets-regex@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz#924912914e5df9fe615ec472f88ff4788ce04d4e" + integrity sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/preset-env@^7.0.0", "@babel/preset-env@^7.22.0", "@babel/preset-env@^7.25.3": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.5.tgz#82dd159d1563f219a1ce94324b3071eb89e280b0" - integrity sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.6.tgz#b4586bb59d8c61be6c58997f4912e7ea6bd17178" + integrity sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw== dependencies: - "@babel/compat-data" "^7.28.5" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/compat-data" "^7.28.6" + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.28.6" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.27.1" - "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-import-assertions" "^7.28.6" + "@babel/plugin-syntax-import-attributes" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.0" - "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.28.6" + "@babel/plugin-transform-async-to-generator" "^7.28.6" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.28.5" - "@babel/plugin-transform-class-properties" "^7.27.1" - "@babel/plugin-transform-class-static-block" "^7.28.3" - "@babel/plugin-transform-classes" "^7.28.4" - "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.6" + "@babel/plugin-transform-class-properties" "^7.28.6" + "@babel/plugin-transform-class-static-block" "^7.28.6" + "@babel/plugin-transform-classes" "^7.28.6" + "@babel/plugin-transform-computed-properties" "^7.28.6" "@babel/plugin-transform-destructuring" "^7.28.5" - "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-dotall-regex" "^7.28.6" "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.28.6" "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-explicit-resource-management" "^7.28.0" - "@babel/plugin-transform-exponentiation-operator" "^7.28.5" + "@babel/plugin-transform-explicit-resource-management" "^7.28.6" + "@babel/plugin-transform-exponentiation-operator" "^7.28.6" "@babel/plugin-transform-export-namespace-from" "^7.27.1" "@babel/plugin-transform-for-of" "^7.27.1" "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.28.6" "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.28.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.28.6" "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.28.6" "@babel/plugin-transform-modules-systemjs" "^7.28.5" "@babel/plugin-transform-modules-umd" "^7.27.1" "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" - "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.28.4" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" + "@babel/plugin-transform-numeric-separator" "^7.28.6" + "@babel/plugin-transform-object-rest-spread" "^7.28.6" "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.28.5" + "@babel/plugin-transform-optional-catch-binding" "^7.28.6" + "@babel/plugin-transform-optional-chaining" "^7.28.6" "@babel/plugin-transform-parameters" "^7.27.7" - "@babel/plugin-transform-private-methods" "^7.27.1" - "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-private-methods" "^7.28.6" + "@babel/plugin-transform-private-property-in-object" "^7.28.6" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.4" - "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.28.6" + "@babel/plugin-transform-regexp-modifiers" "^7.28.6" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-spread" "^7.28.6" "@babel/plugin-transform-sticky-regex" "^7.27.1" "@babel/plugin-transform-template-literals" "^7.27.1" "@babel/plugin-transform-typeof-symbol" "^7.27.1" "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.28.6" "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.14" babel-plugin-polyfill-corejs3 "^0.13.0" @@ -1038,18 +1068,18 @@ source-map-support "^0.5.16" "@babel/runtime@^7.0.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.25.0": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" - integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.6.tgz#d267a43cb1836dc4d182cce93ae75ba954ef6d2b" + integrity sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA== -"@babel/template@^7.25.0", "@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== +"@babel/template@^7.25.0", "@babel/template@^7.27.2", "@babel/template@^7.28.6", "@babel/template@^7.3.3": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" + integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== 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" "@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3": version "7.28.5" @@ -1064,23 +1094,23 @@ "@babel/types" "^7.28.5" debug "^4.3.1" -"@babel/traverse@^7.23.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.0", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.4", "@babel/traverse@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b" - integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ== +"@babel/traverse@^7.23.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e" + integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg== dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.28.5" + "@babel/code-frame" "^7.28.6" + "@babel/generator" "^7.28.6" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.5" - "@babel/template" "^7.27.2" - "@babel/types" "^7.28.5" + "@babel/parser" "^7.28.6" + "@babel/template" "^7.28.6" + "@babel/types" "^7.28.6" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4", "@babel/types@^7.28.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b" - integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.28.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" + integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" From 4ee3269e02981ff1489b3909e65297b040c3bbec Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Jan 2026 10:26:43 +0000 Subject: [PATCH 002/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20@microsoft/1ds-po?= =?UTF-8?q?st-js=20from=204.3.10=20to=204.3.11=20(#15542)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@microsoft/1ds-post-js](https://github.com/microsoft/ApplicationInsights-JS) from 4.3.10 to 4.3.11. - [Release notes](https://github.com/microsoft/ApplicationInsights-JS/releases) - [Changelog](https://github.com/microsoft/ApplicationInsights-JS/blob/main/RELEASES.md) - [Commits](https://github.com/microsoft/ApplicationInsights-JS/commits) --- updated-dependencies: - dependency-name: "@microsoft/1ds-post-js" dependency-version: 4.3.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index 771cc6d04c7..c21610f4e8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1656,23 +1656,23 @@ resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== -"@microsoft/1ds-core-js@4.3.10", "@microsoft/1ds-core-js@^4.3.0": - version "4.3.10" - resolved "https://registry.yarnpkg.com/@microsoft/1ds-core-js/-/1ds-core-js-4.3.10.tgz#d8aeccd14a6a836106dbc487ee978b20f6193f00" - integrity sha512-5fSZmkGwWkH+mrIA5M1GYPZdPM+SjXwCCl2Am7VhFoVwOBJNhRnwvIpAdzw6sFjiebN/rz+/YH0NdxztGZSa9Q== +"@microsoft/1ds-core-js@4.3.11", "@microsoft/1ds-core-js@^4.3.0": + version "4.3.11" + resolved "https://registry.yarnpkg.com/@microsoft/1ds-core-js/-/1ds-core-js-4.3.11.tgz#523c600d25e004379c59404b0d75ee00043625cd" + integrity sha512-QyQE/YzFYB+31WEpX9hvDoXZOIXA7308Z5uuL1mSsyDSkNPl24hBWz9O3vZL+/p9shy756eKLI2nFLwwIAhXyw== dependencies: - "@microsoft/applicationinsights-core-js" "3.3.10" + "@microsoft/applicationinsights-core-js" "3.3.11" "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" "@nevware21/ts-async" ">= 0.5.4 < 2.x" "@nevware21/ts-utils" ">= 0.11.8 < 2.x" "@microsoft/1ds-post-js@^4.3.0": - version "4.3.10" - resolved "https://registry.yarnpkg.com/@microsoft/1ds-post-js/-/1ds-post-js-4.3.10.tgz#737730421a5aa1578c66b253225582baefc87cd3" - integrity sha512-VSLjc9cT+Y+eTiSfYltJHJCejn8oYr0E6Pq2BMhOEO7F6IyLGYIxzKKvo78ze9x+iHX7KPTATcZ+PFgjGXuNqg== + version "4.3.11" + resolved "https://registry.yarnpkg.com/@microsoft/1ds-post-js/-/1ds-post-js-4.3.11.tgz#88ec08e4b4ab5969b00228254f5303d603bff09e" + integrity sha512-V0ZeeALy/Pj8HWgNHDsK+yDeCYnJ9bCgTWhcrna/ZiAT+sGfWs6mDBjAVcG03uP7TDjdWLf8w79lgbXJ3+s3DA== dependencies: - "@microsoft/1ds-core-js" "4.3.10" + "@microsoft/1ds-core-js" "4.3.11" "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" "@nevware21/ts-async" ">= 0.5.4 < 2.x" @@ -1707,10 +1707,10 @@ source-map "~0.6.1" typescript "5.8.2" -"@microsoft/applicationinsights-core-js@3.3.10": - version "3.3.10" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.3.10.tgz#a30ab61c1b33c82226479b9adfbaf3bc4c85cff9" - integrity sha512-5yKeyassZTq2l+SAO4npu6LPnbS++UD+M+Ghjm9uRzoBwD8tumFx0/F8AkSVqbniSREd+ztH/2q2foewa2RZyg== +"@microsoft/applicationinsights-core-js@3.3.11": + version "3.3.11" + resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.3.11.tgz#92ce960924b16121f86814a9b5ea35d5c6a7b8e0" + integrity sha512-WlBY1sKDNL62T++NifgFCyDuOoNUNrVILfnHubOzgU/od7MFEQYWU8EZyDcBC/+Z8e3TD6jfixurYtWoUC+6Eg== dependencies: "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" From 39e354db3eda47b0d92c5ae836a6be2059e99dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20C=C3=A9sar=20Rocha?= Date: Fri, 16 Jan 2026 16:30:53 -0800 Subject: [PATCH 003/138] Add web multipart/form-data test (#15550) * Add web test * Update filters * UNDO: comment-out ImageLoader, NativeAnimatedModule * Make response content clearer --- Directory.Build.targets | 1 + ...-14d8afe5-5c05-4205-aeec-11134992e9c2.json | 7 +++++ .../Microsoft/Office/OfficeJsTests.cs | 27 +++++++++++++++++++ vnext/TestWebSite/Program.cs | 4 +++ 4 files changed, 39 insertions(+) create mode 100644 change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json diff --git a/Directory.Build.targets b/Directory.Build.targets index cc00330b206..eb2e9b5f23d 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -105,6 +105,7 @@ BaseOutDir; ReactNativeDir; ReactNativeWindowsDir; + RnwNewArch; FollyDir; YogaDir; WinVer; diff --git a/change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json b/change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json new file mode 100644 index 00000000000..c647fcb05d5 --- /dev/null +++ b/change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Add multipart/form-data test endpoint", + "packageName": "react-native-windows", + "email": "julio.rocha@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/vnext/TestWebSite/Microsoft/Office/OfficeJsTests.cs b/vnext/TestWebSite/Microsoft/Office/OfficeJsTests.cs index 917fc139f9c..6f26f9cafc3 100644 --- a/vnext/TestWebSite/Microsoft/Office/OfficeJsTests.cs +++ b/vnext/TestWebSite/Microsoft/Office/OfficeJsTests.cs @@ -1,4 +1,5 @@ using System.Text; +using System.Text.RegularExpressions; namespace Microsoft.Office.Test { @@ -13,5 +14,31 @@ public static async Task Issue4144(HttpContext context) var bytes = Encoding.UTF8.GetBytes("Check headers: [Access-Control-Allow-Origin]"); await response.Body.WriteAsync(bytes); } + + public static async Task Issue5869(HttpContext context) + { + var response = context.Response; + response.ContentType = "text/plain"; + response.StatusCode = 200; + + var request = context.Request; + + string? resBody; + if (Regex.IsMatch(request.ContentType!, @"multipart/form-data(;\s+.*)?")) + { + resBody = $"Multipart form data with {request.Form.Count} entries"; + } + else if (request.ContentType == "application/x-www-form-urlencoded") + { + resBody = $"URL-encoded form data with {request.Form.Count} entries"; + } + else + { + resBody = $"Unknown Content-Type [{request.ContentType}]"; + } + + var bytes = Encoding.UTF8.GetBytes(resBody); + await response.Body.WriteAsync(bytes); + } } } diff --git a/vnext/TestWebSite/Program.cs b/vnext/TestWebSite/Program.cs index ef80f6b735f..0fe4dd3aca7 100644 --- a/vnext/TestWebSite/Program.cs +++ b/vnext/TestWebSite/Program.cs @@ -85,6 +85,10 @@ async Task DefaultRequestDelegate(HttpContext context) Microsoft.Office.Test.OfficeJsTests.Issue4144) .RequireCors(originPolicyName); +app.MapPost( + "/officedev/office-js/issues/5869", + Microsoft.Office.Test.OfficeJsTests.Issue5869); + #endregion Request Mappings await app.RunAsync(); From 3f3df4df73a81e061b4e4cb4b62037f853e81973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20C=C3=A9sar=20Rocha?= Date: Fri, 16 Jan 2026 18:55:08 -0800 Subject: [PATCH 004/138] Fix default features for non-solution builds (#15551) * Remove redundant experimental feature declaration * Change files --- Directory.Build.targets | 2 +- ...indows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json | 7 +++++++ vnext/ExperimentalFeatures.props | 13 +------------ 3 files changed, 9 insertions(+), 13 deletions(-) create mode 100644 change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json diff --git a/Directory.Build.targets b/Directory.Build.targets index eb2e9b5f23d..a8b078a0544 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -106,6 +106,7 @@ ReactNativeDir; ReactNativeWindowsDir; RnwNewArch; + UseFabric; FollyDir; YogaDir; WinVer; @@ -121,7 +122,6 @@ HermesVersion; HermesPackage; HermesArch; - UseFabric; UseV8; V8Package; V8Version; diff --git a/change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json b/change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json new file mode 100644 index 00000000000..450b6917f76 --- /dev/null +++ b/change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Remove redundant experimental feature declaration", + "packageName": "react-native-windows", + "email": "julio.rocha@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/vnext/ExperimentalFeatures.props b/vnext/ExperimentalFeatures.props index f305876cfb9..5906b27f66b 100644 --- a/vnext/ExperimentalFeatures.props +++ b/vnext/ExperimentalFeatures.props @@ -1,19 +1,8 @@ - - true - true - true - - + true true true - - - - false - false - false true From 12e2a98e33d59b0b853b9eee494e223a487d7321 Mon Sep 17 00:00:00 2001 From: React-Native-Windows Bot <53619745+rnbot@users.noreply.github.com> Date: Sat, 17 Jan 2026 06:41:00 +0000 Subject: [PATCH 005/138] applying package updates ***NO_CI*** --- ...-14d8afe5-5c05-4205-aeec-11134992e9c2.json | 7 ------- ...-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json | 7 ------- .../automation-channel/CHANGELOG.json | 15 +++++++++++++ .../automation-channel/CHANGELOG.md | 10 ++++++++- .../automation-channel/package.json | 4 ++-- .../automation-commands/CHANGELOG.json | 15 +++++++++++++ .../automation-commands/CHANGELOG.md | 10 ++++++++- .../automation-commands/package.json | 4 ++-- .../automation/CHANGELOG.json | 15 +++++++++++++ .../automation/CHANGELOG.md | 10 ++++++++- .../automation/package.json | 4 ++-- .../@react-native-windows/tester/package.json | 4 ++-- packages/debug-test/package.json | 2 +- packages/e2e-test-app-fabric/package.json | 8 +++---- packages/playground/package.json | 2 +- packages/sample-app-fabric/package.json | 2 +- packages/sample-custom-component/package.json | 2 +- vnext/CHANGELOG.json | 21 +++++++++++++++++++ vnext/CHANGELOG.md | 11 +++++++++- .../Generated/PackageVersion.g.props | 4 ++-- vnext/package.json | 2 +- 21 files changed, 122 insertions(+), 37 deletions(-) delete mode 100644 change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json delete mode 100644 change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json diff --git a/change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json b/change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json deleted file mode 100644 index c647fcb05d5..00000000000 --- a/change/react-native-windows-14d8afe5-5c05-4205-aeec-11134992e9c2.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "prerelease", - "comment": "Add multipart/form-data test endpoint", - "packageName": "react-native-windows", - "email": "julio.rocha@microsoft.com", - "dependentChangeType": "patch" -} diff --git a/change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json b/change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json deleted file mode 100644 index 450b6917f76..00000000000 --- a/change/react-native-windows-a87cf1e3-7c94-41a4-a826-d9700bf60c62.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "type": "prerelease", - "comment": "Remove redundant experimental feature declaration", - "packageName": "react-native-windows", - "email": "julio.rocha@microsoft.com", - "dependentChangeType": "patch" -} diff --git a/packages/@react-native-windows/automation-channel/CHANGELOG.json b/packages/@react-native-windows/automation-channel/CHANGELOG.json index e1259179271..baba8e6eeb6 100644 --- a/packages/@react-native-windows/automation-channel/CHANGELOG.json +++ b/packages/@react-native-windows/automation-channel/CHANGELOG.json @@ -1,6 +1,21 @@ { "name": "@react-native-windows/automation-channel", "entries": [ + { + "date": "Sat, 17 Jan 2026 06:40:58 GMT", + "version": "0.0.0-canary.1031", + "tag": "@react-native-windows/automation-channel_v0.0.0-canary.1031", + "comments": { + "prerelease": [ + { + "author": "beachball", + "package": "@react-native-windows/automation-channel", + "comment": "Bump react-native-windows to v0.0.0-canary.1031", + "commit": "not available" + } + ] + } + }, { "date": "Tue, 13 Jan 2026 13:00:13 GMT", "version": "0.0.0-canary.1030", diff --git a/packages/@react-native-windows/automation-channel/CHANGELOG.md b/packages/@react-native-windows/automation-channel/CHANGELOG.md index e9fb4f695ba..b77c9d0fb35 100644 --- a/packages/@react-native-windows/automation-channel/CHANGELOG.md +++ b/packages/@react-native-windows/automation-channel/CHANGELOG.md @@ -1,9 +1,17 @@ # Change Log - @react-native-windows/automation-channel - + +## 0.0.0-canary.1031 + +Sat, 17 Jan 2026 06:40:58 GMT + +### Changes + +- Bump react-native-windows to v0.0.0-canary.1031 + ## 0.0.0-canary.1030 Tue, 13 Jan 2026 13:00:13 GMT diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index 6c98bbc619d..801fa39548b 100644 --- a/packages/@react-native-windows/automation-channel/package.json +++ b/packages/@react-native-windows/automation-channel/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-windows/automation-channel", - "version": "0.0.0-canary.1030", + "version": "0.0.0-canary.1031", "license": "MIT", "repository": { "type": "git", @@ -33,7 +33,7 @@ "prettier": "2.8.8", "react": "19.1.1", "react-native": "0.82.0-nightly-20250902-9731e8ebc", - "react-native-windows": "^0.0.0-canary.1030", + "react-native-windows": "^0.0.0-canary.1031", "typescript": "5.0.4" }, "files": [ diff --git a/packages/@react-native-windows/automation-commands/CHANGELOG.json b/packages/@react-native-windows/automation-commands/CHANGELOG.json index 26f83cd76c5..e74d974938f 100644 --- a/packages/@react-native-windows/automation-commands/CHANGELOG.json +++ b/packages/@react-native-windows/automation-commands/CHANGELOG.json @@ -1,6 +1,21 @@ { "name": "@react-native-windows/automation-commands", "entries": [ + { + "date": "Sat, 17 Jan 2026 06:40:58 GMT", + "version": "0.0.0-canary.1031", + "tag": "@react-native-windows/automation-commands_v0.0.0-canary.1031", + "comments": { + "prerelease": [ + { + "author": "beachball", + "package": "@react-native-windows/automation-commands", + "comment": "Bump @react-native-windows/automation-channel to v0.0.0-canary.1031", + "commit": "not available" + } + ] + } + }, { "date": "Tue, 13 Jan 2026 13:00:14 GMT", "version": "0.0.0-canary.1030", diff --git a/packages/@react-native-windows/automation-commands/CHANGELOG.md b/packages/@react-native-windows/automation-commands/CHANGELOG.md index fff786b82c7..4087100cc29 100644 --- a/packages/@react-native-windows/automation-commands/CHANGELOG.md +++ b/packages/@react-native-windows/automation-commands/CHANGELOG.md @@ -1,9 +1,17 @@ # Change Log - @react-native-windows/automation-commands - + +## 0.0.0-canary.1031 + +Sat, 17 Jan 2026 06:40:58 GMT + +### Changes + +- Bump @react-native-windows/automation-channel to v0.0.0-canary.1031 + ## 0.0.0-canary.1030 Tue, 13 Jan 2026 13:00:14 GMT diff --git a/packages/@react-native-windows/automation-commands/package.json b/packages/@react-native-windows/automation-commands/package.json index 9e02bc2ff23..822dffcb6ec 100644 --- a/packages/@react-native-windows/automation-commands/package.json +++ b/packages/@react-native-windows/automation-commands/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-windows/automation-commands", - "version": "0.0.0-canary.1030", + "version": "0.0.0-canary.1031", "description": "Allows controlling your react-native-windows application", "main": "lib-commonjs/index.js", "license": "MIT", @@ -18,7 +18,7 @@ "watch": "rnw-scripts watch" }, "dependencies": { - "@react-native-windows/automation-channel": "0.0.0-canary.1030", + "@react-native-windows/automation-channel": "0.0.0-canary.1031", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1" }, diff --git a/packages/@react-native-windows/automation/CHANGELOG.json b/packages/@react-native-windows/automation/CHANGELOG.json index 81577a1a7a8..b3e58d52f53 100644 --- a/packages/@react-native-windows/automation/CHANGELOG.json +++ b/packages/@react-native-windows/automation/CHANGELOG.json @@ -1,6 +1,21 @@ { "name": "@react-native-windows/automation", "entries": [ + { + "date": "Sat, 17 Jan 2026 06:40:58 GMT", + "version": "0.0.0-canary.1031", + "tag": "@react-native-windows/automation_v0.0.0-canary.1031", + "comments": { + "prerelease": [ + { + "author": "beachball", + "package": "@react-native-windows/automation", + "comment": "Bump @react-native-windows/automation-channel to v0.0.0-canary.1031", + "commit": "not available" + } + ] + } + }, { "date": "Tue, 13 Jan 2026 13:00:14 GMT", "version": "0.0.0-canary.1030", diff --git a/packages/@react-native-windows/automation/CHANGELOG.md b/packages/@react-native-windows/automation/CHANGELOG.md index 39f36bd2114..53ddefd5ff3 100644 --- a/packages/@react-native-windows/automation/CHANGELOG.md +++ b/packages/@react-native-windows/automation/CHANGELOG.md @@ -1,9 +1,17 @@ # Change Log - @react-native-windows/automation - + +## 0.0.0-canary.1031 + +Sat, 17 Jan 2026 06:40:58 GMT + +### Changes + +- Bump @react-native-windows/automation-channel to v0.0.0-canary.1031 + ## 0.0.0-canary.1030 Tue, 13 Jan 2026 13:00:14 GMT diff --git a/packages/@react-native-windows/automation/package.json b/packages/@react-native-windows/automation/package.json index ce34802b8b4..c7d2c534aea 100644 --- a/packages/@react-native-windows/automation/package.json +++ b/packages/@react-native-windows/automation/package.json @@ -1,6 +1,6 @@ { "name": "@react-native-windows/automation", - "version": "0.0.0-canary.1030", + "version": "0.0.0-canary.1031", "description": "UI Automation Suite for React Native Windows Applications", "main": "lib-commonjs/index.js", "repository": { @@ -18,7 +18,7 @@ "watch": "rnw-scripts watch" }, "dependencies": { - "@react-native-windows/automation-channel": "0.0.0-canary.1030", + "@react-native-windows/automation-channel": "0.0.0-canary.1031", "@react-native-windows/fs": "^0.0.0-canary.70", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", diff --git a/packages/@react-native-windows/tester/package.json b/packages/@react-native-windows/tester/package.json index d6f52e670e9..51192239190 100644 --- a/packages/@react-native-windows/tester/package.json +++ b/packages/@react-native-windows/tester/package.json @@ -20,7 +20,7 @@ "@react-native-picker/picker": "2.11.0", "react": "19.1.1", "react-native": "0.82.0-nightly-20250902-9731e8ebc", - "react-native-windows": "^0.0.0-canary.1030", + "react-native-windows": "^0.0.0-canary.1031", "react-native-xaml": "^0.0.80" }, "devDependencies": { @@ -35,7 +35,7 @@ "just-scripts": "^1.3.3", "react-native": "0.82.0-nightly-20250902-9731e8ebc", "react-native-platform-override": "0.0.0-canary.1019", - "react-native-windows": "^0.0.0-canary.1030", + "react-native-windows": "^0.0.0-canary.1031", "typescript": "5.0.4" }, "engines": { diff --git a/packages/debug-test/package.json b/packages/debug-test/package.json index 01705d533eb..e6dcd285601 100644 --- a/packages/debug-test/package.json +++ b/packages/debug-test/package.json @@ -8,7 +8,7 @@ "lint:fix": "rnw-scripts lint:fix" }, "devDependencies": { - "@react-native-windows/automation": "0.0.0-canary.1030", + "@react-native-windows/automation": "0.0.0-canary.1031", "@react-native-windows/fs": "^0.0.0-canary.70", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/ts-config": "2.0.6", diff --git a/packages/e2e-test-app-fabric/package.json b/packages/e2e-test-app-fabric/package.json index 3905a68d338..158149c93f0 100644 --- a/packages/e2e-test-app-fabric/package.json +++ b/packages/e2e-test-app-fabric/package.json @@ -14,14 +14,14 @@ "bundle:debug": "npx @react-native-community/cli bundle --entry-file index.js --bundle-output ./windows/x64/Debug/RNTesterApp-Fabric/Bundle/index.windows.bundle --assets-dest ./windows/x64/Debug/RNTesterApp-Fabric/Bundle --platform windows" }, "dependencies": { - "@react-native-windows/automation-channel": "0.0.0-canary.1030", + "@react-native-windows/automation-channel": "0.0.0-canary.1031", "@react-native-windows/tester": "0.0.1", "@types/react": "^19.1.1", "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", "react": "^19.1.1", "react-native": "0.82.0-nightly-20250902-9731e8ebc", - "react-native-windows": "^0.0.0-canary.1030" + "react-native-windows": "^0.0.0-canary.1031" }, "devDependencies": { "@babel/core": "^7.25.2", @@ -31,8 +31,8 @@ "@babel/runtime": "^7.20.0", "@react-native-community/cli": "20.0.0", "@react-native/metro-config": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native-windows/automation": "0.0.0-canary.1030", - "@react-native-windows/automation-commands": "0.0.0-canary.1030", + "@react-native-windows/automation": "0.0.0-canary.1031", + "@react-native-windows/automation-commands": "0.0.0-canary.1031", "@rnw-scripts/babel-node-config": "2.3.3", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", diff --git a/packages/playground/package.json b/packages/playground/package.json index 5d3da4f8b3a..d7cea1c15e9 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -16,7 +16,7 @@ "@typescript-eslint/parser": "^7.1.1", "react": "^19.1.1", "react-native": "0.82.0-nightly-20250902-9731e8ebc", - "react-native-windows": "^0.0.0-canary.1030" + "react-native-windows": "^0.0.0-canary.1031" }, "devDependencies": { "@babel/core": "^7.25.2", diff --git a/packages/sample-app-fabric/package.json b/packages/sample-app-fabric/package.json index c9c302f683d..25c7f5d119e 100644 --- a/packages/sample-app-fabric/package.json +++ b/packages/sample-app-fabric/package.json @@ -18,7 +18,7 @@ "@typescript-eslint/parser": "^7.1.1", "react": "^19.1.1", "react-native": "0.82.0-nightly-20250902-9731e8ebc", - "react-native-windows": "^0.0.0-canary.1030" + "react-native-windows": "^0.0.0-canary.1031" }, "devDependencies": { "@babel/core": "^7.25.2", diff --git a/packages/sample-custom-component/package.json b/packages/sample-custom-component/package.json index 14951bcf3a8..d3e5e9714c7 100644 --- a/packages/sample-custom-component/package.json +++ b/packages/sample-custom-component/package.json @@ -23,7 +23,7 @@ "@types/react": "^19.1.1", "react": "^19.1.1", "react-native": "0.82.0-nightly-20250902-9731e8ebc", - "react-native-windows": "^0.0.0-canary.1030" + "react-native-windows": "^0.0.0-canary.1031" }, "devDependencies": { "@babel/core": "^7.25.2", diff --git a/vnext/CHANGELOG.json b/vnext/CHANGELOG.json index 87a69951b7d..acf2e7a0e31 100644 --- a/vnext/CHANGELOG.json +++ b/vnext/CHANGELOG.json @@ -1,6 +1,27 @@ { "name": "react-native-windows", "entries": [ + { + "date": "Sat, 17 Jan 2026 06:40:58 GMT", + "version": "0.0.0-canary.1031", + "tag": "react-native-windows_v0.0.0-canary.1031", + "comments": { + "prerelease": [ + { + "author": "julio.rocha@microsoft.com", + "package": "react-native-windows", + "commit": "39e354db3eda47b0d92c5ae836a6be2059e99dd8", + "comment": "Add multipart/form-data test endpoint" + }, + { + "author": "julio.rocha@microsoft.com", + "package": "react-native-windows", + "commit": "3f3df4df73a81e061b4e4cb4b62037f853e81973", + "comment": "Remove redundant experimental feature declaration" + } + ] + } + }, { "date": "Tue, 13 Jan 2026 13:00:14 GMT", "version": "0.0.0-canary.1030", diff --git a/vnext/CHANGELOG.md b/vnext/CHANGELOG.md index 8374813f9c1..dc3257f2816 100644 --- a/vnext/CHANGELOG.md +++ b/vnext/CHANGELOG.md @@ -1,9 +1,18 @@ # Change Log - react-native-windows - + +## 0.0.0-canary.1031 + +Sat, 17 Jan 2026 06:40:58 GMT + +### Changes + +- Add multipart/form-data test endpoint (julio.rocha@microsoft.com) +- Remove redundant experimental feature declaration (julio.rocha@microsoft.com) + ## 0.0.0-canary.1030 Tue, 13 Jan 2026 13:00:14 GMT diff --git a/vnext/PropertySheets/Generated/PackageVersion.g.props b/vnext/PropertySheets/Generated/PackageVersion.g.props index 4a72ce5a251..e85a5172d7e 100644 --- a/vnext/PropertySheets/Generated/PackageVersion.g.props +++ b/vnext/PropertySheets/Generated/PackageVersion.g.props @@ -10,11 +10,11 @@ --> - 0.0.0-canary.1030 + 0.0.0-canary.1031 0 0 0 true - da1e74cb1c7d7d1749fd963398580069fa62344b + 3f3df4df73a81e061b4e4cb4b62037f853e81973 \ No newline at end of file diff --git a/vnext/package.json b/vnext/package.json index 2ad664967dd..5ee8ffdb161 100644 --- a/vnext/package.json +++ b/vnext/package.json @@ -1,6 +1,6 @@ { "name": "react-native-windows", - "version": "0.0.0-canary.1030", + "version": "0.0.0-canary.1031", "license": "MIT", "repository": { "type": "git", From 8de80ec15bcd089f1472156e7c7e089c9c6dee8c Mon Sep 17 00:00:00 2001 From: Abhijeet Jha <74712637+iamAbhi-916@users.noreply.github.com> Date: Mon, 19 Jan 2026 10:18:23 +0530 Subject: [PATCH 006/138] Implements selectionColor for (#15553) * implements selectionColor * Change files --- ...-28d68603-5db6-40f6-9d44-4a5b489813d4.json | 7 + packages/playground/Samples/text.tsx | 41 ++++- .../Composition/ParagraphComponentView.cpp | 13 +- .../components/text/BaseParagraphProps.cpp | 174 ++++++++++++++++++ .../components/text/BaseParagraphProps.h | 69 +++++++ vnext/overrides.json | 14 ++ 6 files changed, 315 insertions(+), 3 deletions(-) create mode 100644 change/react-native-windows-28d68603-5db6-40f6-9d44-4a5b489813d4.json create mode 100644 vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.cpp create mode 100644 vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.h diff --git a/change/react-native-windows-28d68603-5db6-40f6-9d44-4a5b489813d4.json b/change/react-native-windows-28d68603-5db6-40f6-9d44-4a5b489813d4.json new file mode 100644 index 00000000000..e9f5b2f70ae --- /dev/null +++ b/change/react-native-windows-28d68603-5db6-40f6-9d44-4a5b489813d4.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "implements selectionColor", + "packageName": "react-native-windows", + "email": "74712637+iamAbhi-916@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/playground/Samples/text.tsx b/packages/playground/Samples/text.tsx index e5ce13a5090..a3143746077 100644 --- a/packages/playground/Samples/text.tsx +++ b/packages/playground/Samples/text.tsx @@ -37,10 +37,42 @@ export default class Bootstrap extends React.Component { + + Selection Color Test + + Red selection color - Select this text to see red highlight! + + + Green selection color (#00FF00) - Select this text! + + + Orange with 50% opacity - Select this text! + + + Blue selection color - Select this text! + + + Default selection color (no selectionColor prop) - Uses theme + default. + + + selectionBrush; - const D2D1_COLOR_F selectionColor = theme()->D2DPlatformColor("Highlight@40"); + D2D1_COLOR_F selectionColor; + const auto &props = paragraphProps(); + if (props.selectionColor) { + selectionColor = theme()->D2DColor(**props.selectionColor); + } else { + selectionColor = theme()->D2DPlatformColor("Highlight@40"); + } hr = renderTarget.CreateSolidColorBrush(selectionColor, selectionBrush.put()); if (FAILED(hr)) { diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.cpp b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.cpp new file mode 100644 index 00000000000..e2f3091a321 --- /dev/null +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.cpp @@ -0,0 +1,174 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#include "BaseParagraphProps.h" + +#include +#include +#include +#include +#include + +#include + +namespace facebook::react { + +BaseParagraphProps::BaseParagraphProps( + const PropsParserContext& context, + const BaseParagraphProps& sourceProps, + const RawProps& rawProps) + : ViewProps(context, sourceProps, rawProps), + BaseTextProps(context, sourceProps, rawProps), + paragraphAttributes( + ReactNativeFeatureFlags::enableCppPropsIteratorSetter() + ? sourceProps.paragraphAttributes + : convertRawProp( + context, + rawProps, + sourceProps.paragraphAttributes, + {})), + isSelectable( + ReactNativeFeatureFlags::enableCppPropsIteratorSetter() + ? sourceProps.isSelectable + : convertRawProp( + context, + rawProps, + "selectable", + sourceProps.isSelectable, + false)), + onTextLayout( + ReactNativeFeatureFlags::enableCppPropsIteratorSetter() + ? sourceProps.onTextLayout + : convertRawProp( + context, + rawProps, + "onTextLayout", + sourceProps.onTextLayout, + {})), + // [Windows] + selectionColor( + ReactNativeFeatureFlags::enableCppPropsIteratorSetter() + ? sourceProps.selectionColor + : convertRawProp( + context, + rawProps, + "selectionColor", + sourceProps.selectionColor, + {})) { + /* + * These props are applied to `View`, therefore they must not be a part of + * base text attributes. + */ + textAttributes.opacity = std::numeric_limits::quiet_NaN(); + textAttributes.backgroundColor = {}; +}; + +void BaseParagraphProps::setProp( + const PropsParserContext& context, + RawPropsPropNameHash hash, + const char* propName, + const RawValue& value) { + // All Props structs setProp methods must always, unconditionally, + // call all super::setProp methods, since multiple structs may + // reuse the same values. + ViewProps::setProp(context, hash, propName, value); + BaseTextProps::setProp(context, hash, propName, value); + + static auto defaults = BaseParagraphProps{}; + + // ParagraphAttributes has its own switch statement - to keep all + // of these fields together, and because there are some collisions between + // propnames parsed here and outside of ParagraphAttributes. + // This code is also duplicated in AndroidTextInput. + static auto paDefaults = ParagraphAttributes{}; + switch (hash) { + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + maximumNumberOfLines, + "numberOfLines"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, value, paragraphAttributes, ellipsizeMode, "ellipsizeMode"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + textBreakStrategy, + "textBreakStrategy"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + adjustsFontSizeToFit, + "adjustsFontSizeToFit"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + minimumFontScale, + "minimumFontScale"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + minimumFontSize, + "minimumFontSize"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + maximumFontSize, + "maximumFontSize"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + includeFontPadding, + "includeFontPadding"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + android_hyphenationFrequency, + "android_hyphenationFrequency"); + REBUILD_FIELD_SWITCH_CASE( + paDefaults, + value, + paragraphAttributes, + textAlignVertical, + "textAlignVertical"); + } + + switch (hash) { + RAW_SET_PROP_SWITCH_CASE(isSelectable, "selectable"); + RAW_SET_PROP_SWITCH_CASE_BASIC(onTextLayout); + // [Windows] + RAW_SET_PROP_SWITCH_CASE_BASIC(selectionColor); + } + + /* + * These props are applied to `View`, therefore they must not be a part of + * base text attributes. + */ + textAttributes.opacity = std::numeric_limits::quiet_NaN(); + textAttributes.backgroundColor = {}; +} + +#pragma mark - DebugStringConvertible + +#if RN_DEBUG_STRING_CONVERTIBLE +SharedDebugStringConvertibleList BaseParagraphProps::getDebugProps() const { + return ViewProps::getDebugProps() + BaseTextProps::getDebugProps() + + paragraphAttributes.getDebugProps() + + SharedDebugStringConvertibleList{ + debugStringConvertibleItem("selectable", isSelectable), + // [Windows] + debugStringConvertibleItem("selectionColor", selectionColor)}; +} +#endif +} // namespace facebook::react diff --git a/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.h b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.h new file mode 100644 index 00000000000..b2ac7275c17 --- /dev/null +++ b/vnext/ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.h @@ -0,0 +1,69 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +// [Windows] +#include + +#include +#include +#include +#include +#include +// [Windows] +#include + +namespace facebook::react { + +/* + * Props of component. + * Most of the props are directly stored in composed `ParagraphAttributes` + * object. + */ +class BaseParagraphProps : public ViewProps, public BaseTextProps { + public: + BaseParagraphProps() = default; + BaseParagraphProps( + const PropsParserContext &context, + const BaseParagraphProps &sourceProps, + const RawProps &rawProps); + + void + setProp(const PropsParserContext &context, RawPropsPropNameHash hash, const char *propName, const RawValue &value); + +#pragma mark - Props + + /* + * Contains all prop values that affect visual representation of the + * paragraph. + */ + ParagraphAttributes paragraphAttributes{}; + + /* + * Defines can the text be selected (and copied) or not. + */ + bool isSelectable{}; + + bool onTextLayout{}; + + /* + * Defines the color of the selection highlight. + * [Windows] + */ + std::optional selectionColor{}; + +#pragma mark - DebugStringConvertible + +#if RN_DEBUG_STRING_CONVERTIBLE + SharedDebugStringConvertibleList getDebugProps() const override; +#endif +}; + +} // namespace facebook::react diff --git a/vnext/overrides.json b/vnext/overrides.json index 1db59f5a4d3..a2b7d27d711 100644 --- a/vnext/overrides.json +++ b/vnext/overrides.json @@ -159,6 +159,20 @@ "baseHash": "7fdf1967fa9c3421b11e841afcf207624df18706", "issue": 15379 }, + { + "type": "derived", + "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.cpp", + "baseFile": "packages/react-native/ReactCommon/react/renderer/components/text/BaseParagraphProps.cpp", + "baseHash": "1aaf0a003c83195882c512a664409e429de4f892", + "issue": 15552 + }, + { + "type": "derived", + "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/BaseParagraphProps.h", + "baseFile": "packages/react-native/ReactCommon/react/renderer/components/text/BaseParagraphProps.h", + "baseHash": "7661ba5c8392034cbda48f5d4b721a1ff30fe68d", + "issue": 15552 + }, { "type": "patch", "file": "ReactCommon/TEMP_UntilReactCommonUpdate/react/renderer/components/text/ParagraphShadowNode.cpp", From d8f874e7b3b1c893c6f8a26486272d74272ad3d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 06:02:56 +0000 Subject: [PATCH 007/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20@types/node=20fro?= =?UTF-8?q?m=2022.19.5=20to=2022.19.7=20(#15555)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.19.5 to 22.19.7. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 22.19.7 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c21610f4e8c..2e3a2bc9fc6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2848,9 +2848,9 @@ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^22.0.0", "@types/node@^22.14.0": - version "22.19.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.5.tgz#82e8c3da99667246efc63a634114ab34fb34e08e" - integrity sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q== + version "22.19.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.7.tgz#434094ee1731ae76c16083008590a5835a8c39c1" + integrity sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw== dependencies: undici-types "~6.21.0" From b8b50e960059f6db08e51b8fc635fae110e640bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Jan 2026 06:03:49 +0000 Subject: [PATCH 008/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20lage=20from=202.1?= =?UTF-8?q?4.15=20to=202.14.16=20(#15554)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [lage](https://github.com/microsoft/lage) from 2.14.15 to 2.14.16. - [Commits](https://github.com/microsoft/lage/compare/lage_v2.14.15...lage_v2.14.16) --- updated-dependencies: - dependency-name: lage dependency-version: 2.14.16 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2e3a2bc9fc6..6f9b6e7de2e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8211,9 +8211,9 @@ kleur@^3.0.3: integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== lage@^2.7.1: - version "2.14.15" - resolved "https://registry.yarnpkg.com/lage/-/lage-2.14.15.tgz#40be004543bebf9ed8d844ca78eda9b676bb373e" - integrity sha512-rgtRY4/3ixcFXbyn41GzaiJUEInAdJDIXJIUiFobOK19KgLPVOFQelej57ZgtH4t2kMP50P+nll9e5Qvm3icaA== + version "2.14.16" + resolved "https://registry.yarnpkg.com/lage/-/lage-2.14.16.tgz#cdc1d986a17188d33f990b3bd401773c71cfd54b" + integrity sha512-yQJcWA2DyCPHvPvWRIGdP3tSSYth9fStnCc5kajG+MEOz0XwvBb6N2H4JdShzyoDSherW3DOwRXeEvLDQVTeqA== dependencies: glob-hasher "^1.4.2" optionalDependencies: From ee9c3fcaf1278bf61edb6226f0560afa301cf79c Mon Sep 17 00:00:00 2001 From: Danny van Velzen Date: Tue, 20 Jan 2026 15:24:59 -0800 Subject: [PATCH 009/138] SFI ES2.6 Migrate from service accounts to Managed Identities (#15559) --- .ado/publish.yml | 8 ++++---- .ado/release.yml | 18 ++++++------------ ...nticate-office-react-native-windows-bot.yml | 11 +++++++++++ 3 files changed, 21 insertions(+), 16 deletions(-) create mode 100644 .ado/templates/authenticate-office-react-native-windows-bot.yml diff --git a/.ado/publish.yml b/.ado/publish.yml index 32ce9524823..4508463db95 100644 --- a/.ado/publish.yml +++ b/.ado/publish.yml @@ -80,10 +80,6 @@ variables: value: false - name: EnableCodesign value: false - - name: ArtifactServices.Symbol.AccountName - value: microsoft - - name: ArtifactServices.Symbol.PAT - value: $(pat-symbols-publish-microsoft) - name: SourceBranchWithFolders value: $[ replace(variables['Build.SourceBranch'], 'refs/heads/', '') ] @@ -346,6 +342,8 @@ extends: # Make symbols available through http://symweb. - task: PublishSymbols@2 displayName: Publish symbols + env: + ARTIFACTSERVICES_SYMBOL_ACCOUNTNAME: microsoft inputs: SearchPattern: vnext/target/**/*.pdb SymbolServerType: TeamServices @@ -436,6 +434,8 @@ extends: - task: PublishSymbols@2 displayName: 'Publish Symbols to Microsoft Symbol Server' condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')) + env: + ARTIFACTSERVICES_SYMBOL_ACCOUNTNAME: microsoft inputs: SymbolsFolder: '$(System.DefaultWorkingDirectory)\NugetRoot' SearchPattern: '**/*.pdb' diff --git a/.ado/release.yml b/.ado/release.yml index 260a3ae270c..146acb2c428 100644 --- a/.ado/release.yml +++ b/.ado/release.yml @@ -81,7 +81,7 @@ extends: approvers: 'khosany@microsoft.com' - job: PushPrivateAdo - displayName: ADO - react-native + displayName: ADO - nuget - react-native timeoutInMinutes: 0 templateContext: inputs: @@ -93,18 +93,15 @@ extends: - checkout: none - task: NuGetToolInstaller@1 displayName: 'Use NuGet ' - - task: NuGetAuthenticate@1 - displayName: NuGet Authenticate - inputs: - nuGetServiceConnections: ms/react-native ADO Feed + - template: .ado/templates/authenticate-office-react-native-windows-bot.yml@self - task: CmdLine@2 displayName: NuGet push (react-native) inputs: - script: nuget.exe push *.nupkg -ApiKey AzureArtifacts -Source https://pkgs.dev.azure.com/ms/_packaging/react-native/nuget/v3/index.json -NonInteractive -Verbosity Detailed -SkipDuplicate -NoSymbols + script: nuget.exe push *.nupkg -ApiKey $(oficeReactnativeWindowsBotAadAuthToken) -Source https://pkgs.dev.azure.com/ms/_packaging/react-native/nuget/v3/index.json -NonInteractive -Verbosity Detailed -SkipDuplicate -NoSymbols workingDirectory: $(Pipeline.Workspace)/ReactWindows-final-nuget - job: PushPublicAdo - displayName: ADO - react-native-public + displayName: ADO - nuget - react-native-public timeoutInMinutes: 0 templateContext: inputs: @@ -116,14 +113,11 @@ extends: - checkout: none - task: NuGetToolInstaller@1 displayName: 'Use NuGet ' - - task: NuGetAuthenticate@1 - displayName: NuGet Authenticate - inputs: - nuGetServiceConnections: ms/react-native-public ADO Feed + - template: .ado/templates/authenticate-office-react-native-windows-bot.yml@self - task: CmdLine@2 displayName: NuGet push (react-native-public) inputs: - script: nuget.exe push *.nupkg -ApiKey AzureArtifacts -Source https://pkgs.dev.azure.com/ms/react-native/_packaging/react-native-public/nuget/v3/index.json -NonInteractive -Verbosity Detailed -SkipDuplicate -NoSymbols + script: nuget.exe push *.nupkg -ApiKey $(oficeReactnativeWindowsBotAadAuthToken) -Source https://pkgs.dev.azure.com/ms/react-native/_packaging/react-native-public/nuget/v3/index.json -NonInteractive -Verbosity Detailed -SkipDuplicate -NoSymbols workingDirectory: $(Pipeline.Workspace)/ReactWindows-final-nuget - job: PushNuGetOrg diff --git a/.ado/templates/authenticate-office-react-native-windows-bot.yml b/.ado/templates/authenticate-office-react-native-windows-bot.yml new file mode 100644 index 00000000000..ab43399a15d --- /dev/null +++ b/.ado/templates/authenticate-office-react-native-windows-bot.yml @@ -0,0 +1,11 @@ +steps: + - task: AzureCLI@2 + inputs: + azureSubscription: 'Office-React-Native-Windows-Bot' + scriptType: 'bash' + scriptLocation: 'inlineScript' + inlineScript: | + # Note that the resource is specified to limit the token to Azure DevOps + aadToken=$(az account get-access-token --query accessToken --resource 499b84ac-1321-427f-aa17-267ca6975798 -o tsv) + echo "##vso[task.setvariable variable=oficeReactnativeWindowsBotAadAuthToken;issecret=true]$aadToken" + displayName: 'Generate oficeReactnativeWindowsBotAadAuthToken AAD token using Azure CLI' \ No newline at end of file From eac4dbda52e0f691371904fa5dc169594f624e40 Mon Sep 17 00:00:00 2001 From: Abhijeet Jha <74712637+iamAbhi-916@users.noreply.github.com> Date: Wed, 21 Jan 2026 14:43:47 +0530 Subject: [PATCH 010/138] Implements italic underline and strikethrough styling for TextInput (#15563) * fix: Apply fontStyle italic to TextInput component * Change files * Implements underline and strikethrough styling for TextInput --- ...-084fcc59-de79-4413-8539-af111bc24555.json | 7 ++++ .../WindowsTextInputComponentView.cpp | 32 ++++++++++++------- 2 files changed, 27 insertions(+), 12 deletions(-) create mode 100644 change/react-native-windows-084fcc59-de79-4413-8539-af111bc24555.json diff --git a/change/react-native-windows-084fcc59-de79-4413-8539-af111bc24555.json b/change/react-native-windows-084fcc59-de79-4413-8539-af111bc24555.json new file mode 100644 index 00000000000..ab13b1ad85e --- /dev/null +++ b/change/react-native-windows-084fcc59-de79-4413-8539-af111bc24555.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "fix: Apply fontStyle italic to TextInput component", + "packageName": "react-native-windows", + "email": "74712637+iamAbhi-916@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp index 425f146a140..3ee3ca3708e 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp @@ -1508,18 +1508,26 @@ void WindowsTextInputComponentView::UpdateCharFormat() noexcept { cfNew.wWeight = props.textAttributes.fontWeight ? static_cast(*props.textAttributes.fontWeight) : DWRITE_FONT_WEIGHT_NORMAL; - // set font style - // cfNew.dwMask |= (CFM_ITALIC | CFM_STRIKEOUT | CFM_UNDERLINE); - // int dFontStyle = fontDetails.FontStyle; - // if (dFontStyle & FS_Italic) { - // cfNew.dwEffects |= CFE_ITALIC; - // } - // if (dFontStyle & FS_StrikeOut) { - // cfNew.dwEffects |= CFE_STRIKEOUT; - //} - // if (dFontStyle & FS_Underline) { - // cfNew.dwEffects |= CFE_UNDERLINE; - // } + // set font style (italic) + cfNew.dwMask |= CFM_ITALIC; + if (props.textAttributes.fontStyle == facebook::react::FontStyle::Italic || + props.textAttributes.fontStyle == facebook::react::FontStyle::Oblique) { + cfNew.dwEffects |= CFE_ITALIC; + } + + // set text decoration (underline and strikethrough) + cfNew.dwMask |= (CFM_UNDERLINE | CFM_STRIKEOUT); + if (props.textAttributes.textDecorationLineType.has_value()) { + auto decorationType = *props.textAttributes.textDecorationLineType; + if (decorationType == facebook::react::TextDecorationLineType::Underline || + decorationType == facebook::react::TextDecorationLineType::UnderlineStrikethrough) { + cfNew.dwEffects |= CFE_UNDERLINE; + } + if (decorationType == facebook::react::TextDecorationLineType::Strikethrough || + decorationType == facebook::react::TextDecorationLineType::UnderlineStrikethrough) { + cfNew.dwEffects |= CFE_STRIKEOUT; + } + } // set font family if (!props.textAttributes.fontFamily.empty()) { From 7bfa8bf5abd5d9d4ed67741e2f3bb070165ce1f0 Mon Sep 17 00:00:00 2001 From: Tommy Nguyen <4123478+tido64@users.noreply.github.com> Date: Wed, 21 Jan 2026 18:30:04 +0000 Subject: [PATCH 011/138] fix(cli): fix template info not detecting mixed architecture projects (#15567) --- ...-67af0813-4acc-4796-b7a7-a05f5eb1d623.json | 7 ++++++ .../cli/src/commands/config/configUtils.ts | 24 +++++++++---------- 2 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 change/@react-native-windows-cli-67af0813-4acc-4796-b7a7-a05f5eb1d623.json diff --git a/change/@react-native-windows-cli-67af0813-4acc-4796-b7a7-a05f5eb1d623.json b/change/@react-native-windows-cli-67af0813-4acc-4796-b7a7-a05f5eb1d623.json new file mode 100644 index 00000000000..52a5d76c9d8 --- /dev/null +++ b/change/@react-native-windows-cli-67af0813-4acc-4796-b7a7-a05f5eb1d623.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Fixed template info not detecting mixed architecture projects", + "packageName": "@react-native-windows/cli", + "email": "4123478+tido64@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/@react-native-windows/cli/src/commands/config/configUtils.ts b/packages/@react-native-windows/cli/src/commands/config/configUtils.ts index 4e1d2d26167..131a4e3c510 100644 --- a/packages/@react-native-windows/cli/src/commands/config/configUtils.ts +++ b/packages/@react-native-windows/cli/src/commands/config/configUtils.ts @@ -143,43 +143,43 @@ export function getRawTemplateInfo(filePath: string): RawTemplateInfo { if ( importProjectExists( projectContents, - 'Microsoft.ReactNative.Uwp.CppApp.targets', + 'Microsoft.ReactNative.Composition.CppApp.targets', ) ) { result.projectType = 'app'; - result.projectArch = 'old'; + result.projectArch = 'new'; } else if ( importProjectExists( projectContents, - 'Microsoft.ReactNative.Uwp.CppLib.targets', + 'Microsoft.ReactNative.Composition.CppLib.targets', ) ) { result.projectType = 'lib'; - result.projectArch = 'old'; + result.projectArch = 'new'; } else if ( importProjectExists( projectContents, - 'Microsoft.ReactNative.Composition.CppApp.targets', + 'Microsoft.ReactNative.CppLib.targets', ) ) { - result.projectType = 'app'; - result.projectArch = 'new'; + result.projectType = 'lib'; + result.projectArch = 'mixed'; } else if ( importProjectExists( projectContents, - 'Microsoft.ReactNative.Composition.CppLib.targets', + 'Microsoft.ReactNative.Uwp.CppApp.targets', ) ) { - result.projectType = 'lib'; - result.projectArch = 'new'; + result.projectType = 'app'; + result.projectArch = 'old'; } else if ( importProjectExists( projectContents, - 'Microsoft.ReactNative.CppLib.targets', + 'Microsoft.ReactNative.Uwp.CppLib.targets', ) ) { result.projectType = 'lib'; - result.projectArch = 'mixed'; + result.projectArch = 'old'; } } From 206c4ee2984c54e369626645f31084b51c00d740 Mon Sep 17 00:00:00 2001 From: Abhijeet Jha <74712637+iamAbhi-916@users.noreply.github.com> Date: Fri, 23 Jan 2026 13:10:23 +0530 Subject: [PATCH 012/138] Fix selectable text not receiving pointer events inside ScrollView (#15577) * Fix selectable text not working inside ScrollView * Change files --- ...-230b1cbb-2867-42d5-b799-bfb0f33c6baf.json | 7 +++++ .../Composition/ParagraphComponentView.cpp | 29 ++++++++++++++++--- .../Composition/ParagraphComponentView.h | 5 ++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 change/react-native-windows-230b1cbb-2867-42d5-b799-bfb0f33c6baf.json diff --git a/change/react-native-windows-230b1cbb-2867-42d5-b799-bfb0f33c6baf.json b/change/react-native-windows-230b1cbb-2867-42d5-b799-bfb0f33c6baf.json new file mode 100644 index 00000000000..99c92d2fe1b --- /dev/null +++ b/change/react-native-windows-230b1cbb-2867-42d5-b799-bfb0f33c6baf.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Fix selectable text not working inside ScrollView", + "packageName": "react-native-windows", + "email": "74712637+iamAbhi-916@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp index d81066c051f..a9d78cdc452 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp @@ -171,6 +171,26 @@ void ParagraphComponentView::updateTextAlignment( m_textLayout = nullptr; } +facebook::react::Tag ParagraphComponentView::hitTest( + facebook::react::Point pt, + facebook::react::Point &localPt, + bool ignorePointerEvents) const noexcept { + facebook::react::Point ptLocal{pt.x - m_layoutMetrics.frame.origin.x, pt.y - m_layoutMetrics.frame.origin.y}; + const auto &props = paragraphProps(); + const auto &vProps = *viewProps(); + + if (props.isSelectable && ptLocal.x >= 0 && ptLocal.x <= m_layoutMetrics.frame.size.width && ptLocal.y >= 0 && + ptLocal.y <= m_layoutMetrics.frame.size.height) { + // claims if pointer events are enabled for this component + if (ignorePointerEvents || vProps.pointerEvents == facebook::react::PointerEventsMode::Auto || + vProps.pointerEvents == facebook::react::PointerEventsMode::BoxOnly) { + localPt = ptLocal; + return Tag(); + } + } + return Super::hitTest(pt, localPt, ignorePointerEvents); +} + bool ParagraphComponentView::IsTextSelectableAtPoint(facebook::react::Point pt) noexcept { // paragraph-level selectable prop is enabled const auto &props = paragraphProps(); @@ -543,7 +563,8 @@ void ParagraphComponentView::OnPointerPressed( return; } - auto pp = args.GetCurrentPoint(-1); + // Use Tag() to get coordinates in component's local space + auto pp = args.GetCurrentPoint(static_cast(Tag())); // Ignores right-click if (pp.Properties().PointerUpdateKind() == @@ -554,8 +575,8 @@ void ParagraphComponentView::OnPointerPressed( auto position = pp.Position(); - facebook::react::Point localPt{ - position.X - m_layoutMetrics.frame.origin.x, position.Y - m_layoutMetrics.frame.origin.y}; + // GetCurrentPoint(Tag()) returns position relative to component origin + facebook::react::Point localPt{position.X, position.Y}; std::optional charPosition = GetTextPositionAtPoint(localPt); @@ -629,7 +650,7 @@ void ParagraphComponentView::OnPointerMoved( void ParagraphComponentView::OnPointerReleased( const winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs &args) noexcept { // Check for right-click to show context menu - auto pp = args.GetCurrentPoint(-1); + auto pp = args.GetCurrentPoint(static_cast(Tag())); if (pp.Properties().PointerUpdateKind() == winrt::Microsoft::ReactNative::Composition::Input::PointerUpdateKind::RightButtonReleased) { const auto &props = paragraphProps(); diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h index 91290a80c12..096d58d23d7 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h @@ -49,6 +49,11 @@ struct ParagraphComponentView : ParagraphComponentViewT Date: Tue, 27 Jan 2026 16:11:54 +0530 Subject: [PATCH 013/138] Fix rnw-dependencies.ps1 Node.js installation failures (#15548) * Fix rnw-dependencies.ps1 Node.js installation failures * Change files * Fix node.js version * update command --------- Co-authored-by: Harini Malothu --- ...ows-3211d67c-3146-40b2-8d6b-5c2ef4008bd7.json | 7 +++++++ vnext/Scripts/rnw-dependencies.ps1 | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 change/react-native-windows-3211d67c-3146-40b2-8d6b-5c2ef4008bd7.json diff --git a/change/react-native-windows-3211d67c-3146-40b2-8d6b-5c2ef4008bd7.json b/change/react-native-windows-3211d67c-3146-40b2-8d6b-5c2ef4008bd7.json new file mode 100644 index 00000000000..20e8bcf603f --- /dev/null +++ b/change/react-native-windows-3211d67c-3146-40b2-8d6b-5c2ef4008bd7.json @@ -0,0 +1,7 @@ +{ + "type": "none", + "comment": "Fix rnw-dependencies.ps1 Node.js installation failures", + "packageName": "react-native-windows", + "email": "hmalothu@microsoft.com", + "dependentChangeType": "none" +} diff --git a/vnext/Scripts/rnw-dependencies.ps1 b/vnext/Scripts/rnw-dependencies.ps1 index 7d401ba3b67..a57d7809f5c 100644 --- a/vnext/Scripts/rnw-dependencies.ps1 +++ b/vnext/Scripts/rnw-dependencies.ps1 @@ -469,7 +469,7 @@ $requirements = @( Name = 'Node.js (LTS, >= 22.0)'; Tags = @('appDev'); Valid = { CheckNode; } - Install = { WinGetInstall OpenJS.NodeJS.LTS "22.14.0" }; + Install = { WinGetInstall OpenJS.NodeJS.22 "22.22.0"}; HasVerboseOutput = $true; }, @{ @@ -600,6 +600,9 @@ function WinGetInstall { Write-Verbose "Executing `winget install `"$wingetPackage`""; & winget install "$wingetPackage" --accept-source-agreements --accept-package-agreements } + + # Refresh PATH environment variable to pick up newly installed tools + $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User") } function IsElevated { @@ -685,6 +688,17 @@ foreach ($req in $filteredRequirements) $LASTEXITCODE = 0; $outputFromInstall = Invoke-Command $req.Install -ErrorAction Stop; + # Re-validate after install attempt - winget may return non-zero for "already installed" + $validAfterInstall = $false; + try { + $validAfterInstall = Invoke-Command $req.Valid; + } catch { } + + if ($validAfterInstall) { + $Installed++; + continue; # go to the next item + } + if ($LASTEXITCODE -ne 0) { throw "Last exit code was non-zero: $LASTEXITCODE - $outputFromInstall"; } From 2e2f6eb453e6015bd86d4ce388a76d63f1153f9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 08:40:39 -0800 Subject: [PATCH 014/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20beachball=20from?= =?UTF-8?q?=202.62.0=20to=202.63.0=20(#15581)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [beachball](https://github.com/microsoft/beachball) from 2.62.0 to 2.63.0. - [Changelog](https://github.com/microsoft/beachball/blob/main/CHANGELOG.md) - [Commits](https://github.com/microsoft/beachball/compare/beachball_v2.62.0...beachball_v2.63.0) --- updated-dependencies: - dependency-name: beachball dependency-version: 2.63.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 212 ++++-------------------------------------------------- 1 file changed, 12 insertions(+), 200 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6f9b6e7de2e..965560d415e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1803,13 +1803,6 @@ "@gar/promisify" "^1.0.1" semver "^7.3.5" -"@npmcli/fs@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" - integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== - dependencies: - semver "^7.3.5" - "@npmcli/move-file@^1.0.1": version "1.1.2" resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" @@ -1919,11 +1912,6 @@ dependencies: "@octokit/openapi-types" "^12.11.0" -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - "@puppeteer/browsers@2.11.0": version "2.11.0" resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-2.11.0.tgz#b2dcd7cb02dd2de5909531d00e717a04bd61de73" @@ -2617,11 +2605,6 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" @@ -3569,7 +3552,7 @@ agent-base@^7.1.0, agent-base@^7.1.2: resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== -agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: +agentkeepalive@^4.1.3: version "4.6.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== @@ -4228,14 +4211,13 @@ basic-ftp@^5.0.2: integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg== beachball@^2.20.0: - version "2.62.0" - resolved "https://registry.yarnpkg.com/beachball/-/beachball-2.62.0.tgz#c6b1e71b07e2851a4bd3038d6165d676d6ffa2f8" - integrity sha512-WWHMNlYRBpXou//qu1r9NH5svqG7WPPGhLTkxkHZ1goLMF1SHRV8bqZCi4Jp8ceoRWBHPUxSPj5Z4rrMNCatrg== + version "2.63.0" + resolved "https://registry.yarnpkg.com/beachball/-/beachball-2.63.0.tgz#1fd0d5597c46b19745b9fef89804445260292ad2" + integrity sha512-SGVmPVHUtnflMS3/J3p6Bk9wWijSHOaE2rdqxqcf5zmsWT4rUx3pQ4yYIlUM2acaYLIfJ436PmAQc/9uxTCLAQ== dependencies: cosmiconfig "^9.0.0" execa "^5.0.0" minimatch "^3.0.4" - npm-registry-fetch "^14.0.0" p-graph "^1.1.2" p-limit "^3.0.2" prompts "^2.4.2" @@ -4380,24 +4362,6 @@ cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacache@^17.0.0: - version "17.1.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" - integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== - dependencies: - "@npmcli/fs" "^3.1.0" - fs-minipass "^3.0.0" - glob "^10.2.2" - lru-cache "^7.7.1" - minipass "^7.0.3" - minipass-collect "^1.0.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - p-map "^4.0.0" - ssri "^10.0.0" - tar "^6.1.11" - unique-filename "^3.0.0" - cacheable-lookup@^5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" @@ -5358,7 +5322,7 @@ encodeurl@~2.0.0: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== -encoding@^0.1.12, encoding@^0.1.13: +encoding@^0.1.12: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -6280,7 +6244,7 @@ for-each@^0.3.3, for-each@^0.3.5: dependencies: is-callable "^1.2.7" -foreground-child@^3.1.0, foreground-child@^3.3.1: +foreground-child@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== @@ -6365,13 +6329,6 @@ fs-minipass@^2.0.0: dependencies: minipass "^3.0.0" -fs-minipass@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" - integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== - dependencies: - minipass "^7.0.3" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -6571,18 +6528,6 @@ glob-to-regex.js@^1.0.1: resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== -glob@^10.2.2: - version "10.5.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" - integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - glob@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-11.1.0.tgz#4f826576e4eb99c7dad383793d2f9f08f67e50a6" @@ -6866,19 +6811,12 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -hosted-git-info@^6.0.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.3.tgz#2ee1a14a097a1236bddf8672c35b613c46c55946" - integrity sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw== - dependencies: - lru-cache "^7.5.1" - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== @@ -6914,15 +6852,6 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: version "7.0.2" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" @@ -7578,15 +7507,6 @@ iterator.prototype@^1.1.4: has-symbols "^1.1.0" set-function-name "^2.0.2" -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - jackspeak@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" @@ -8492,11 +8412,6 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - lru-cache@^11.0.0: version "11.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d" @@ -8516,7 +8431,7 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.14.1, lru-cache@^7.5.1, lru-cache@^7.7.1: +lru-cache@^7.14.1: version "7.18.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== @@ -8548,27 +8463,6 @@ make-error@^1.3.6: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" - integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== - dependencies: - agentkeepalive "^4.2.1" - cacache "^17.0.0" - http-cache-semantics "^4.1.1" - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^7.7.1" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.3" - promise-retry "^2.0.1" - socks-proxy-agent "^7.0.0" - ssri "^10.0.0" - make-fetch-happen@^9.0.1: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" @@ -9352,17 +9246,6 @@ minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: optionalDependencies: encoding "^0.1.12" -minipass-fetch@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" - integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== - dependencies: - minipass "^7.0.3" - minipass-sized "^1.0.3" - minizlib "^2.1.2" - optionalDependencies: - encoding "^0.1.13" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -9404,12 +9287,12 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.1.2: +minipass@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== -minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: +minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -9485,7 +9368,7 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -negotiator@^0.6.2, negotiator@^0.6.3, negotiator@~0.6.4: +negotiator@^0.6.2, negotiator@~0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== @@ -9594,16 +9477,6 @@ now-and-later@^3.0.0: dependencies: once "^1.4.0" -npm-package-arg@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" - integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== - dependencies: - hosted-git-info "^6.0.0" - proc-log "^3.0.0" - semver "^7.3.5" - validate-npm-package-name "^5.0.0" - npm-package-arg@^8.0.0: version "8.1.5" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" @@ -9625,19 +9498,6 @@ npm-registry-fetch@^11.0.0: minizlib "^2.0.0" npm-package-arg "^8.0.0" -npm-registry-fetch@^14.0.0: - version "14.0.5" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" - integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== - dependencies: - make-fetch-happen "^11.0.0" - minipass "^5.0.0" - minipass-fetch "^3.0.0" - minipass-json-stream "^1.0.1" - minizlib "^2.1.2" - npm-package-arg "^10.0.0" - proc-log "^3.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -10088,14 +9948,6 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.1.tgz#4b6572376cfd8b811fca9cd1f5c24b3cbac0fe10" @@ -10241,11 +10093,6 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -proc-log@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" - integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== - process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -11262,15 +11109,6 @@ socks-proxy-agent@^6.0.0: debug "^4.3.3" socks "^2.6.2" -socks-proxy-agent@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" - integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - socks-proxy-agent@^8.0.5: version "8.0.5" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" @@ -11342,13 +11180,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -ssri@^10.0.0: - version "10.0.6" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" - integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== - dependencies: - minipass "^7.0.3" - ssri@^8.0.0, ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" @@ -11681,7 +11512,7 @@ tar-stream@^3.1.5: fast-fifo "^1.2.0" streamx "^2.15.0" -tar@^6.0.2, tar@^6.1.11, tar@^6.1.9: +tar@^6.0.2, tar@^6.1.9: version "6.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== @@ -12104,13 +11935,6 @@ unique-filename@^1.1.1: dependencies: unique-slug "^2.0.0" -unique-filename@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" - integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== - dependencies: - unique-slug "^4.0.0" - unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" @@ -12118,13 +11942,6 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" -unique-slug@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" - integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== - dependencies: - imurmurhash "^0.1.4" - universal-user-agent@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" @@ -12214,11 +12031,6 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -validate-npm-package-name@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" - integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== - validator@^13.7.0: version "13.15.26" resolved "https://registry.yarnpkg.com/validator/-/validator-13.15.26.tgz#36c3deeab30e97806a658728a155c66fcaa5b944" From e2dc99a36053b8bbc04be9f613e33f3f7efb4cc4 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Tue, 27 Jan 2026 09:13:48 -0800 Subject: [PATCH 015/138] [NetUI] TouchableWin32 fix (#15593) * Fix TouchableWin32 and LogBox * Change files * restore images in logbox next/prev --- ...-native-win32-52c1b87f-1049-492d-864b-5ddfd09a66d9.json | 7 +++++++ .../Libraries/Components/Touchable/TouchableWin32.tsx | 2 +- .../Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 change/@office-iss-react-native-win32-52c1b87f-1049-492d-864b-5ddfd09a66d9.json diff --git a/change/@office-iss-react-native-win32-52c1b87f-1049-492d-864b-5ddfd09a66d9.json b/change/@office-iss-react-native-win32-52c1b87f-1049-492d-864b-5ddfd09a66d9.json new file mode 100644 index 00000000000..4b17de08f82 --- /dev/null +++ b/change/@office-iss-react-native-win32-52c1b87f-1049-492d-864b-5ddfd09a66d9.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Fix TouchableWin32 and LogBox", + "packageName": "@office-iss/react-native-win32", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableWin32.tsx b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableWin32.tsx index af275ea76cb..3e5371419f2 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableWin32.tsx +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/Touchable/TouchableWin32.tsx @@ -30,7 +30,7 @@ import { IKeyboardEvent } from '../View/ViewPropTypes'; const BoundingDimensions = require('./BoundingDimensions'); const Position = require('./Position'); -const {findNodeHandle} = require('../../Renderer/shims/ReactNative'); +const {findNodeHandle} = require('../../ReactNative/RendererProxy'); /** * Extracts a single touch, generally this is the active touch or touch that diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js index 4eeba7fab46..8bcf5edb791 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/LogBox/UI/LogBoxInspectorHeader.win32.js @@ -61,7 +61,7 @@ export default function LogBoxInspectorHeader(props: Props): React.Node { id="logbox_header_button_prev" disabled={props.total <= 1} level={props.level} - image={new String('←')} + image={require('./LogBoxImages/chevron-left.png')} onPress={() => props.onSelectIndex(prevIndex)} /> @@ -73,7 +73,7 @@ export default function LogBoxInspectorHeader(props: Props): React.Node { id="logbox_header_button_next" disabled={props.total <= 1} level={props.level} - image={new String('→')} + image={require('./LogBoxImages/chevron-right.png')} onPress={() => props.onSelectIndex(nextIndex)} /> From a9de7006423d0eab97712a7289085bbb6833ce08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 19:07:30 +0530 Subject: [PATCH 016/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20diff=20from=208.0?= =?UTF-8?q?.2=20to=208.0.3=20(#15547)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [diff](https://github.com/kpdecker/jsdiff) from 8.0.2 to 8.0.3. - [Changelog](https://github.com/kpdecker/jsdiff/blob/master/release-notes.md) - [Commits](https://github.com/kpdecker/jsdiff/compare/v8.0.2...v8.0.3) --- updated-dependencies: - dependency-name: diff dependency-version: 8.0.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Danny van Velzen --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 965560d415e..5b4834514f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5228,9 +5228,9 @@ diff-sequences@^29.6.3: integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== diff@~8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-8.0.2.tgz#712156a6dd288e66ebb986864e190c2fc9eddfae" - integrity sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg== + version "8.0.3" + resolved "https://registry.yarnpkg.com/diff/-/diff-8.0.3.tgz#c7da3d9e0e8c283bb548681f8d7174653720c2d5" + integrity sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ== dijkstrajs@^1.0.1: version "1.0.3" From 0b07f133c63fd77dac7ffb92dec50288d5aebacb Mon Sep 17 00:00:00 2001 From: Suraj Raykar <168889106+ssuraj2504@users.noreply.github.com> Date: Fri, 30 Jan 2026 15:06:01 +0530 Subject: [PATCH 017/138] docs: fix broken markdown links in pipeline (#15594) * docs: fix broken markdown links * Address reviewer feedback * Remove obsolete docs and clean conflict markers * Delete managedCodeGen.md --------- Co-authored-by: Protik Biswas Co-authored-by: Vineeth <66076509+vineethkuttan@users.noreply.github.com> --- README.md | 2 +- docs/attack-surface-analyzer.md | 1 - docs/managedCodeGen.md | 38 --------------------------------- 3 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 docs/managedCodeGen.md diff --git a/README.md b/README.md index fca6bff31ad..ba73b3047b8 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ React Native has [great documentation](https://reactnative.dev/docs/getting-star - Check the [samples repo](https://github.com/microsoft/react-native-windows-samples) for more standalone samples. - The [React Native Gallery](https://github.com/microsoft/react-native-gallery) app demonstrates various components in an interactive way. - Check out the [React Native Developer Blog](https://devblogs.microsoft.com/react-native/) to see examples from past conference talks, blog posts, and more. -- For more sample code browse the [RNTester folder](https://github.com/microsoft/react-native-windows/tree/main/packages/e2e-test-app-fabric/windows/RNTesterApp) in the GitHub web UI. +- For more sample code browse the [RNTester folder](https://github.com/microsoft/react-native-windows/tree/main/packages/e2e-test-app-fabric/windows/RNTesterApp-Fabric) in the GitHub web UI. ## 📢 Contributing See [Contributing guidelines](https://github.com/microsoft/react-native-windows/blob/main/CONTRIBUTING.md) for how to setup your fork of the repo and start a PR to contribute to React Native for Windows. diff --git a/docs/attack-surface-analyzer.md b/docs/attack-surface-analyzer.md index 92bd7af1727..a677f243dcd 100644 --- a/docs/attack-surface-analyzer.md +++ b/docs/attack-surface-analyzer.md @@ -196,7 +196,6 @@ dotnet --version - [Microsoft Attack Surface Analyzer GitHub](https://github.com/microsoft/AttackSurfaceAnalyzer) - [ASA Documentation](https://github.com/microsoft/AttackSurfaceAnalyzer/wiki) -- [SDL Requirements](https://liquid.microsoft.com/Web/Object/Read/MS.Security/Requirements/Microsoft.Security.AccessControl.10011) - [ASA CLI Usage](https://github.com/microsoft/AttackSurfaceAnalyzer/wiki/Command-Line-Usage) ## Support diff --git a/docs/managedCodeGen.md b/docs/managedCodeGen.md deleted file mode 100644 index 2f33659fbc9..00000000000 --- a/docs/managedCodeGen.md +++ /dev/null @@ -1,38 +0,0 @@ -# Code generation for managed react-native modules - -This feature is applicable to C# implemented modules or `ViewManager`s. Its objective is to ensure the code needed to integrate with the `react-native` application is constructed at build time instead of at runtime. - -In earlier versions of react-native-windows managed modules registered themselves based on reflection at runtime. This method has a few disadvantages: -1) the error handling was limited and only available at runtime. -2) The cost for doing reflection was paid each and every time the app ran. -3) .NET Native - which is used by UWP apps - has somewhat restrictions on what types/APIs can be reflected upon and complex ways of working around it. -Doing it at build time should result in developers seeing all errors up front, rather than only seeing errors for the code being tested. And the runtime cost is not incurred every single time. - -## How it works -This change adds a new targets file that is imported from the [CSharpLib.targets](https://github.com/microsoft/react-native-windows/blob/main/vnext/PropertySheets/External/Microsoft.ReactNative.Uwp.CppLib.targets) and [CSharpApp.targets](https://github.com/microsoft/react-native-windows/blob/main/vnext/PropertySheets/External/Microsoft.ReactNative.Uwp.CppApp.targets). That will enable the codegen for managed projects. - -Those targets will collect all the C# source files, assembly references and defines from the app (or library) and invoke the CodeGen tool to generate a C# file. This is very similar to how the translation of Xaml to csharp code behind files works. -The generated C# file will contain a class called `ReactPackageProvider` in the default namespace of your project. The generate class implements `Microsoft.ReactNative.IReactPackageProvider`. The implementation of the generated class will: - * Register the detected ViewManagers (classes implementing `Microsoft.ReactNative.IViewManager`) - * Register the detected Modules (classes with attribute `[Microsoft.ReactNative.Managed.ReactModule]`) - * Generate and register serializers for types that need to be serialized for the registred modules. - * Generate and register custom serialization methods. - -### In source mode -The targets file hooks up an MSBuild target that will ensure the tool is compiled, deployed and runnable based on the tools sources. The codegen tool is defined in the Microsoft.ReactNative.Managed.CodeGen project. It will build and deploy the tool in the current configuraiton of your project (debug or release) but will always build and run it in platform x64. - -### In NuGet mode (Future) -The tool will be shipped as a binary and the steps won't have to build or deploy the tool. The shipped version in the NuGet package will only be release win-x64. -When building the apps that are checked in to our repo for testing, we have to remain running off the source version as MSBuild and NuGet are not flexible enough to build and consume a NuGet package in the same build. - -## Turning on/off -Currently the feature is behind an MSBuild property `$(ReactNativeCodeGenEnabled)`. -The default at the moment is false, it is only turned on for a single project for now which is the [SampleLibraryCS.csproj](https://github.com/microsoft/react-native-windows/blob/main/packages/sample-apps/windows/SampleLibraryCS/SampleLibraryCS.csproj) project, to prove it is stable. We will slowly enable it for all projects in the repo and then make it the default. - -## MSBuild/NuGet Complications -MSBuild and NuGet spent a long time fighting me in mixing a NetCoreApp3.1 executable and WinRT apps in the same solution and the same build. ProjectReferences cannot be used so I had to use the `` task directly in the targets and it was tricky making it build from both the customer apps as well as our main build solution and unittest (Microsoft.ReactNative.sln). In the end there are a few hacks in place to make this work. -The hookups in MSBuild do not use the latest BeforeTargets/AfterTargets feature to schedule the main work. I opted to follow the same pattern that the Xaml Codegen uses, so the React CodeGen runs after all the other codegen tools (like resgen, xamlcompile etc) to ensure people familiar with those extensions know how to work with the React Managed CodeGen. - -## Future improvements - * Add support for `Task` async methods. [#5143](https://github.com/microsoft/react-native-windows/issues/5143) - * Ship it as a NuGet package [#4546](https://github.com/microsoft/react-native-windows/issues/4546) From 27ce28e4b42211c75987dc4109761d6da1e47df4 Mon Sep 17 00:00:00 2001 From: Vineeth <66076509+vineethkuttan@users.noreply.github.com> Date: Fri, 30 Jan 2026 22:20:57 +0530 Subject: [PATCH 018/138] Bring Narrator focus to XAML island (#15611) * Use automationoption as frameworkbased for childsite * Change files * remove tokens associated with fragment based --- ...-6aa7fa60-ce9f-4693-b4ec-7fe965283489.json | 7 ++ .../ContentIslandComponentView.cpp | 73 ++----------------- .../Composition/ContentIslandComponentView.h | 4 - 3 files changed, 13 insertions(+), 71 deletions(-) create mode 100644 change/react-native-windows-6aa7fa60-ce9f-4693-b4ec-7fe965283489.json diff --git a/change/react-native-windows-6aa7fa60-ce9f-4693-b4ec-7fe965283489.json b/change/react-native-windows-6aa7fa60-ce9f-4693-b4ec-7fe965283489.json new file mode 100644 index 00000000000..b6786f16eaa --- /dev/null +++ b/change/react-native-windows-6aa7fa60-ce9f-4693-b4ec-7fe965283489.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Use automationoption as frameworkbased for childsite", + "packageName": "react-native-windows", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp index 41215fea0e2..84d73ef2899 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp @@ -171,24 +171,6 @@ ContentIslandComponentView::~ContentIslandComponentView() noexcept { m_navigationHost.DepartFocusRequested(m_navigationHostDepartFocusRequestedToken); m_navigationHostDepartFocusRequestedToken = {}; } - if (m_childSiteLink) { - if (m_fragmentRootAutomationProviderRequestedToken) { - m_childSiteLink.FragmentRootAutomationProviderRequested(m_fragmentRootAutomationProviderRequestedToken); - m_fragmentRootAutomationProviderRequestedToken = {}; - } - if (m_parentAutomationProviderRequestedToken) { - m_childSiteLink.ParentAutomationProviderRequested(m_parentAutomationProviderRequestedToken); - m_parentAutomationProviderRequestedToken = {}; - } - if (m_nextSiblingAutomationProviderRequestedToken) { - m_childSiteLink.NextSiblingAutomationProviderRequested(m_nextSiblingAutomationProviderRequestedToken); - m_nextSiblingAutomationProviderRequestedToken = {}; - } - if (m_previousSiblingAutomationProviderRequestedToken) { - m_childSiteLink.PreviousSiblingAutomationProviderRequested(m_previousSiblingAutomationProviderRequestedToken); - m_previousSiblingAutomationProviderRequestedToken = {}; - } - } if (m_islandToConnect) { m_islandToConnect.Close(); } @@ -230,56 +212,13 @@ void ContentIslandComponentView::prepareForRecycle() noexcept { } void ContentIslandComponentView::ConfigureChildSiteLinkAutomation() noexcept { - // This automation mode must be set before connecting the child ContentIsland. - // It puts the child content into a mode where it won't own its own framework root. Instead, the child island's - // automation peers will use the same framework root as the automation peer of this ContentIslandComponentView. - m_childSiteLink.AutomationOption(winrt::Microsoft::UI::Content::ContentAutomationOptions::FragmentBased); - - // These events are raised in response to the child ContentIsland asking for providers. - // For example, the ContentIsland.FragmentRootAutomationProvider property will return - // the provider we provide here in FragmentRootAutomationProviderRequested. - - // We capture "this" as a raw pointer because ContentIslandComponentView doesn't currently support weak ptrs. - // It's safe because we disconnect these events in the destructor. - - m_fragmentRootAutomationProviderRequestedToken = m_childSiteLink.FragmentRootAutomationProviderRequested( - [this]( - const winrt::Microsoft::UI::Content::IContentSiteAutomation &, - const winrt::Microsoft::UI::Content::ContentSiteAutomationProviderRequestedEventArgs &args) { - // The child island's fragment tree doesn't have its own fragment root. - // Here's how we can provide the correct fragment root to the child's UIA logic. - winrt::com_ptr fragmentRoot{nullptr}; - auto uiaProvider = this->EnsureUiaProvider(); - uiaProvider.as()->get_FragmentRoot(fragmentRoot.put()); - args.AutomationProvider(fragmentRoot.as()); - args.Handled(true); - }); - - m_parentAutomationProviderRequestedToken = m_childSiteLink.ParentAutomationProviderRequested( - [this]( - const winrt::Microsoft::UI::Content::IContentSiteAutomation &, - const winrt::Microsoft::UI::Content::ContentSiteAutomationProviderRequestedEventArgs &args) { - auto uiaProvider = this->EnsureUiaProvider(); - args.AutomationProvider(uiaProvider); - args.Handled(true); - }); - - m_nextSiblingAutomationProviderRequestedToken = m_childSiteLink.NextSiblingAutomationProviderRequested( - [](const winrt::Microsoft::UI::Content::IContentSiteAutomation &, - const winrt::Microsoft::UI::Content::ContentSiteAutomationProviderRequestedEventArgs &args) { - // The ContentIsland will always be the one and only child of this node, so it won't have siblings. - args.AutomationProvider(nullptr); - args.Handled(true); - }); - - m_previousSiblingAutomationProviderRequestedToken = m_childSiteLink.PreviousSiblingAutomationProviderRequested( - [](const winrt::Microsoft::UI::Content::IContentSiteAutomation &, - const winrt::Microsoft::UI::Content::ContentSiteAutomationProviderRequestedEventArgs &args) { - // The ContentIsland will always be the one and only child of this node, so it won't have siblings. - args.AutomationProvider(nullptr); - args.Handled(true); - }); + // Use FrameworkBased to let the XamlIsland manage its own framework-level accessibility tree + // and raise focus events naturally. This tells the system that the child island has its own + // framework (WinUI/XAML) that manages automation. + m_childSiteLink.AutomationOption(winrt::Microsoft::UI::Content::ContentAutomationOptions::FrameworkBased); + // When using FrameworkBased mode, we don't register automation callbacks - let the XamlIsland handle its own UIA + // tree. if (m_innerAutomationProvider) { m_innerAutomationProvider->SetChildSiteLink(m_childSiteLink); } diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h index e6f5fe8808a..7c85ee1cc01 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h @@ -70,10 +70,6 @@ struct ContentIslandComponentView : ContentIslandComponentViewT Date: Tue, 3 Feb 2026 10:30:18 +0530 Subject: [PATCH 019/138] Fixing box with corner radius doesn't have shadow (#15613) * adding changes for adding shadow for rounded views * Change files --- ...-16157c2e-c481-4bc0-b639-9e2a979c5227.json | 7 ++ .../CompositionSwitcher.idl | 9 ++- .../Composition/CompositionContextHelper.cpp | 15 ++++ .../CompositionViewComponentView.cpp | 81 ++++++++++++++++++- 4 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 change/react-native-windows-16157c2e-c481-4bc0-b639-9e2a979c5227.json diff --git a/change/react-native-windows-16157c2e-c481-4bc0-b639-9e2a979c5227.json b/change/react-native-windows-16157c2e-c481-4bc0-b639-9e2a979c5227.json new file mode 100644 index 00000000000..c9bddb8481f --- /dev/null +++ b/change/react-native-windows-16157c2e-c481-4bc0-b639-9e2a979c5227.json @@ -0,0 +1,7 @@ +{ + "comment": "adding changes for adding shadow for rounded views", + "type": "prerelease", + "packageName": "react-native-windows", + "email": "protikbiswas@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/CompositionSwitcher.idl b/vnext/Microsoft.ReactNative/CompositionSwitcher.idl index a0946aacd98..1896b0dc357 100644 --- a/vnext/Microsoft.ReactNative/CompositionSwitcher.idl +++ b/vnext/Microsoft.ReactNative/CompositionSwitcher.idl @@ -45,9 +45,16 @@ enum SnapPointsAlignment { void Opacity(Single value); void BlurRadius(Single value); void Color(Windows.UI.Color value); + void Mask(IBrush mask); + void SourcePolicy(CompositionDropShadowSourcePolicy policy); } - [webhosthidden][experimental] interface IVisual { +[webhosthidden][experimental] enum CompositionDropShadowSourcePolicy { + Default = 0, + InheritedOnly = 1 +}; + +[webhosthidden][experimental] interface IVisual { void InsertAt(IVisual visual, Int32 index); void Remove(IVisual visual); IVisual GetAt(UInt32 index); diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp index 7a38f5df942..aa410c86bab 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionContextHelper.cpp @@ -50,6 +50,7 @@ struct CompositionTypeTraits { using CompositionStretch = winrt::Windows::UI::Composition::CompositionStretch; using CompositionStrokeCap = winrt::Windows::UI::Composition::CompositionStrokeCap; using CompositionSurfaceBrush = winrt::Windows::UI::Composition::CompositionSurfaceBrush; + using CompositionDropShadowSourcePolicy = winrt::Windows::UI::Composition::CompositionDropShadowSourcePolicy; using Compositor = winrt::Windows::UI::Composition::Compositor; using ContainerVisual = winrt::Windows::UI::Composition::ContainerVisual; using CubicBezierEasingFunction = winrt::Windows::UI::Composition::CubicBezierEasingFunction; @@ -122,6 +123,7 @@ struct CompositionTypeTraits { using CompositionStretch = winrt::Microsoft::UI::Composition::CompositionStretch; using CompositionStrokeCap = winrt::Microsoft::UI::Composition::CompositionStrokeCap; using CompositionSurfaceBrush = winrt::Microsoft::UI::Composition::CompositionSurfaceBrush; + using CompositionDropShadowSourcePolicy = winrt::Microsoft::UI::Composition::CompositionDropShadowSourcePolicy; using Compositor = winrt::Microsoft::UI::Composition::Compositor; using ContainerVisual = winrt::Microsoft::UI::Composition::ContainerVisual; using CubicBezierEasingFunction = winrt::Microsoft::UI::Composition::CubicBezierEasingFunction; @@ -218,6 +220,19 @@ struct CompDropShadow : public winrt::implements< m_shadow.Color(color); } + void Mask(winrt::Microsoft::ReactNative::Composition::Experimental::IBrush const &mask) noexcept { + if (mask) { + m_shadow.Mask(mask.as()->InnerBrush()); + } else { + m_shadow.Mask(nullptr); + } + } + + void SourcePolicy( + winrt::Microsoft::ReactNative::Composition::Experimental::CompositionDropShadowSourcePolicy policy) noexcept { + m_shadow.SourcePolicy(static_cast(policy)); + } + private: typename TTypeRedirects::DropShadow m_shadow; }; diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp index 5f50d14da18..015c164fb84 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionViewComponentView.cpp @@ -708,7 +708,86 @@ void ComponentView::applyShadowProps(const facebook::react::ViewProps &viewProps shadow.Color(theme()->Color(*viewProps.shadowColor)); } - Visual().as().Shadow(shadow); + // Check if any border radius is set + auto borderMetrics = BorderPrimitive::resolveAndAlignBorderMetrics(m_layoutMetrics, viewProps); + bool hasBorderRadius = borderMetrics.borderRadii.topLeft.horizontal != 0 || + borderMetrics.borderRadii.topRight.horizontal != 0 || borderMetrics.borderRadii.bottomLeft.horizontal != 0 || + borderMetrics.borderRadii.bottomRight.horizontal != 0 || borderMetrics.borderRadii.topLeft.vertical != 0 || + borderMetrics.borderRadii.topRight.vertical != 0 || borderMetrics.borderRadii.bottomLeft.vertical != 0 || + borderMetrics.borderRadii.bottomRight.vertical != 0; + + if (hasBorderRadius) { + // When borderRadius is set, we need to create a shadow mask that follows the rounded rectangle shape. + // Use CompositionVisualSurface to capture the clipped visual's appearance as the shadow mask. + bool maskSet = false; + + // Try Microsoft (WinUI3) Composition first + auto msCompositor = + winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerCompositor( + m_compContext); + if (msCompositor) { + auto innerVisual = + winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper::InnerVisual( + Visual()); + if (innerVisual) { + // Create a VisualSurface that captures the visual (with its clip applied) + auto visualSurface = msCompositor.CreateVisualSurface(); + visualSurface.SourceVisual(innerVisual); + visualSurface.SourceSize( + {m_layoutMetrics.frame.size.width * m_layoutMetrics.pointScaleFactor, + m_layoutMetrics.frame.size.height * m_layoutMetrics.pointScaleFactor}); + + // Create a brush from the visual surface to use as shadow mask + auto maskBrush = msCompositor.CreateSurfaceBrush(visualSurface); + maskBrush.Stretch(winrt::Microsoft::UI::Composition::CompositionStretch::Fill); + + // Get the inner shadow and set the mask + auto innerShadow = winrt::Microsoft::ReactNative::Composition::Experimental::MicrosoftCompositionContextHelper:: + InnerDropShadow(shadow); + if (innerShadow) { + innerShadow.Mask(maskBrush); + maskSet = true; + } + } + } + + // Fallback to System (Windows.UI) Composition if Microsoft Composition is not available + if (!maskSet) { + auto sysCompositor = + winrt::Microsoft::ReactNative::Composition::Experimental::SystemCompositionContextHelper::InnerCompositor( + m_compContext); + if (sysCompositor) { + auto innerVisual = + winrt::Microsoft::ReactNative::Composition::Experimental::SystemCompositionContextHelper::InnerVisual( + Visual()); + if (innerVisual) { + auto visualSurface = sysCompositor.CreateVisualSurface(); + visualSurface.SourceVisual(innerVisual); + visualSurface.SourceSize( + {m_layoutMetrics.frame.size.width * m_layoutMetrics.pointScaleFactor, + m_layoutMetrics.frame.size.height * m_layoutMetrics.pointScaleFactor}); + + auto maskBrush = sysCompositor.CreateSurfaceBrush(visualSurface); + maskBrush.Stretch(winrt::Windows::UI::Composition::CompositionStretch::Fill); + + auto innerShadow = + winrt::Microsoft::ReactNative::Composition::Experimental::SystemCompositionContextHelper::InnerDropShadow( + shadow); + if (innerShadow) { + innerShadow.Mask(maskBrush); + } + } + } + } + + // Apply shadow to OuterVisual (which is not clipped) so the shadow can extend beyond the clip + OuterVisual().as().Shadow(shadow); + Visual().as().Shadow(nullptr); + } else { + // No border radius - apply shadow directly to Visual (original behavior) + Visual().as().Shadow(shadow); + OuterVisual().as().Shadow(nullptr); + } } void ComponentView::updateTransformProps( From 25db080987460d9b4b5f145aeffc5b4b0a669a72 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Tue, 3 Feb 2026 08:55:23 -0800 Subject: [PATCH 020/138] [Win32] Fix TextWin32 export (#15617) * Fix TextWin32 export * Change files --- ...-native-win32-7eb2cfea-8939-46dc-b7ab-0070d93d59b5.json | 7 +++++++ .../@office-iss/react-native-win32/src-win/index.win32.js | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 change/@office-iss-react-native-win32-7eb2cfea-8939-46dc-b7ab-0070d93d59b5.json diff --git a/change/@office-iss-react-native-win32-7eb2cfea-8939-46dc-b7ab-0070d93d59b5.json b/change/@office-iss-react-native-win32-7eb2cfea-8939-46dc-b7ab-0070d93d59b5.json new file mode 100644 index 00000000000..c23a060e69d --- /dev/null +++ b/change/@office-iss-react-native-win32-7eb2cfea-8939-46dc-b7ab-0070d93d59b5.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Fix TextWin32 export", + "packageName": "@office-iss/react-native-win32", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/@office-iss/react-native-win32/src-win/index.win32.js b/packages/@office-iss/react-native-win32/src-win/index.win32.js index 56d3151d72c..a7fdd26391f 100644 --- a/packages/@office-iss/react-native-win32/src-win/index.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/index.win32.js @@ -446,7 +446,7 @@ module.exports = { }, get TextWin32(): any { // Legacy export - return require('./Libraries/Text/Text'); + return require('./Libraries/Text/Text').default; }, get ButtonWin32(): any { return require('./Libraries/Components/Button/ButtonWin32').ButtonWin32; From b556619c728115add498da682dde2c320f86e968 Mon Sep 17 00:00:00 2001 From: Protik Biswas Date: Wed, 4 Feb 2026 15:03:46 +0530 Subject: [PATCH 021/138] adding defensive check to ensure device context is valid before D2D operations (#15620) * adding defensive check to ensure device contetxt is valid before performing D2D operation * Change files --- ...e-windows-964662e9-977d-470e-b110-b559a7f1f545.json | 7 +++++++ vnext/Microsoft.ReactNative.Cxx/AutoDraw.h | 10 +++++++++- .../Fabric/Composition/UriImageManager.cpp | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 change/react-native-windows-964662e9-977d-470e-b110-b559a7f1f545.json diff --git a/change/react-native-windows-964662e9-977d-470e-b110-b559a7f1f545.json b/change/react-native-windows-964662e9-977d-470e-b110-b559a7f1f545.json new file mode 100644 index 00000000000..65da7b81e53 --- /dev/null +++ b/change/react-native-windows-964662e9-977d-470e-b110-b559a7f1f545.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "adding defensive check to ensure device contetxt is valid before performing D2D operation", + "packageName": "react-native-windows", + "email": "protikbiswas@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative.Cxx/AutoDraw.h b/vnext/Microsoft.ReactNative.Cxx/AutoDraw.h index e7a816d3d4e..6c49638271c 100644 --- a/vnext/Microsoft.ReactNative.Cxx/AutoDraw.h +++ b/vnext/Microsoft.ReactNative.Cxx/AutoDraw.h @@ -16,7 +16,10 @@ class AutoDrawDrawingSurface { POINT *offset) noexcept { drawingSurface.as(m_drawingSurfaceInterop); auto dpi = scaleFactor * 96.0f; - m_drawingSurfaceInterop->BeginDraw(m_d2dDeviceContext.put(), dpi, dpi, offset); + auto hr = m_drawingSurfaceInterop->BeginDraw(m_d2dDeviceContext.put(), dpi, dpi, offset); + if (FAILED(hr)) { + m_d2dDeviceContext = nullptr; + } } ~AutoDrawDrawingSurface() noexcept { @@ -34,6 +37,11 @@ class AutoDrawDrawingSurface { return m_d2dDeviceContext.get(); } + // Returns true if the device context is valid and safe to use for drawing operations + bool IsValid() const noexcept { + return m_d2dDeviceContext != nullptr; + } + private: winrt::com_ptr m_drawingSurfaceInterop; winrt::com_ptr m_d2dDeviceContext; diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp index d61b6399173..9bd01c90eed 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/UriImageManager.cpp @@ -104,6 +104,11 @@ struct SvgDataImageHandler ::Microsoft::ReactNative::Composition::AutoDrawDrawingSurface autoDraw(drawingBrush, 1.0, &pt); auto renderTarget = autoDraw.GetRenderTarget(); + // Defensive check: ensure device context is valid before D2D operations + if (!renderTarget) { + return nullptr; + } + winrt::com_ptr deviceContext5; winrt::check_hresult(renderTarget->QueryInterface(IID_ID2D1DeviceContext5, deviceContext5.put_void())); From 9b992efa19a7170195dbb490bb956a694d1fe25f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Feb 2026 12:17:53 +0000 Subject: [PATCH 022/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20@isaacs/brace-exp?= =?UTF-8?q?ansion=20from=205.0.0=20to=205.0.1=20(#15625)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps @isaacs/brace-expansion from 5.0.0 to 5.0.1. --- updated-dependencies: - dependency-name: "@isaacs/brace-expansion" dependency-version: 5.0.1 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5b4834514f5..802940c2ead 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1319,9 +1319,9 @@ integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== "@isaacs/brace-expansion@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" - integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== + version "5.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz#0ef5a92d91f2fff2a37646ce54da9e5f599f6eff" + integrity sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ== dependencies: "@isaacs/balanced-match" "^4.0.1" From 514158602335b4d8b24b665af1feaea6d065917d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julio=20C=C3=A9sar=20Rocha?= Date: Wed, 4 Feb 2026 16:42:28 -0800 Subject: [PATCH 023/138] Remove OpenSSL dependency (#15606) * Format filters * Remove dependency ReactWindows.OpenSSL.StdCall.Static * Remove React.Windows.Test from Desktop solution * Add EchoBinary web endpoint * Move web servers to Desktop.IntegrationTests * Remove SecureWebSocketSession * Delete WebSocketResourcePerformanceTests.cpp * Remove React.Windows.Desktop.Test.DLL from solution * Update in-proc server references * Delete vnext/{Desktop.Test.DLL,Test} * Delete OpenSSL NUSPEC * Change files --- ...-9e6d1974-bb89-4edb-8898-662918068e7d.json | 7 + .../HttpOriginPolicyIntegrationTest.cpp | 5 +- .../HttpResourceIntegrationTests.cpp | 3 +- .../HttpServer.cpp | 6 +- .../HttpServer.h | 0 ...t.Windows.Desktop.IntegrationTests.vcxproj | 9 +- ...s.Desktop.IntegrationTests.vcxproj.filters | 15 +- .../WebSocketIntegrationTest.cpp | 7 +- .../WebSocketResourcePerformanceTests.cpp | 138 ------------------ .../WebSocketServer.cpp | 134 +---------------- .../WebSocketServer.h | 23 --- .../packages.experimentalwinui3.lock.json | 13 -- .../packages.lock.json | 13 -- .../React.Windows.Desktop.Test.ARM64.def | 20 --- .../React.Windows.Desktop.Test.DLL.vcxproj | 96 ------------ ...t.Windows.Desktop.Test.DLL.vcxproj.filters | 20 --- .../React.Windows.Desktop.Test.x64.def | 20 --- .../React.Windows.Desktop.Test.x86.def | 19 --- vnext/Desktop.Test.DLL/packages.lock.json | 26 ---- vnext/Desktop.Test.DLL/pch.cpp | 0 .../React.Windows.Desktop.UnitTests.vcxproj | 1 - .../packages.experimentalwinui3.lock.json | 6 - vnext/Desktop.UnitTests/packages.lock.json | 6 - vnext/{Test => FollyWin32}/packages.lock.json | 17 ++- vnext/ReactWindows-Desktop.sln | 42 +----- vnext/Scripts/OfficeReact.Win32.nuspec | 11 -- vnext/Scripts/OpenSSL.nuspec | 39 ----- vnext/Scripts/OpenSSL.targets | 36 ----- vnext/Scripts/Tfs/Layout-Desktop-Headers.ps1 | 16 +- vnext/Shared/Shared.vcxitems.filters | 4 +- vnext/Test/React.Windows.Test.vcxproj | 93 ------------ vnext/Test/React.Windows.Test.vcxproj.filters | 30 ---- .../Microsoft/React/WebSocketTests.cs | 25 ++++ vnext/TestWebSite/Program.cs | 5 + 34 files changed, 88 insertions(+), 817 deletions(-) create mode 100644 change/react-native-windows-9e6d1974-bb89-4edb-8898-662918068e7d.json rename vnext/{Test => Desktop.IntegrationTests}/HttpServer.cpp (98%) rename vnext/{Test => Desktop.IntegrationTests}/HttpServer.h (100%) delete mode 100644 vnext/Desktop.IntegrationTests/WebSocketResourcePerformanceTests.cpp rename vnext/{Test => Desktop.IntegrationTests}/WebSocketServer.cpp (56%) rename vnext/{Test => Desktop.IntegrationTests}/WebSocketServer.h (82%) delete mode 100644 vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.ARM64.def delete mode 100644 vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj delete mode 100644 vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj.filters delete mode 100644 vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x64.def delete mode 100644 vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x86.def delete mode 100644 vnext/Desktop.Test.DLL/packages.lock.json delete mode 100644 vnext/Desktop.Test.DLL/pch.cpp rename vnext/{Test => FollyWin32}/packages.lock.json (56%) delete mode 100644 vnext/Scripts/OpenSSL.nuspec delete mode 100644 vnext/Scripts/OpenSSL.targets delete mode 100644 vnext/Test/React.Windows.Test.vcxproj delete mode 100644 vnext/Test/React.Windows.Test.vcxproj.filters diff --git a/change/react-native-windows-9e6d1974-bb89-4edb-8898-662918068e7d.json b/change/react-native-windows-9e6d1974-bb89-4edb-8898-662918068e7d.json new file mode 100644 index 00000000000..5831c34f1dd --- /dev/null +++ b/change/react-native-windows-9e6d1974-bb89-4edb-8898-662918068e7d.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Remove dependency ReactWindows.OpenSSL.StdCall.Static", + "packageName": "react-native-windows", + "email": "julio.rocha@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Desktop.IntegrationTests/HttpOriginPolicyIntegrationTest.cpp b/vnext/Desktop.IntegrationTests/HttpOriginPolicyIntegrationTest.cpp index b6855e6e51a..c6c16b2644b 100644 --- a/vnext/Desktop.IntegrationTests/HttpOriginPolicyIntegrationTest.cpp +++ b/vnext/Desktop.IntegrationTests/HttpOriginPolicyIntegrationTest.cpp @@ -6,11 +6,12 @@ #include #include #include -#include // Standard Library #include +#include "HttpServer.h" + using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace http = boost::beast::http; @@ -110,7 +111,7 @@ TEST_CLASS(HttpOriginPolicyIntegrationTest) case http::verb::options: default: - Assert::Fail(L"Unsupported request method"); + Assert::Fail(L"Unsupported request method"); } return server; diff --git a/vnext/Desktop.IntegrationTests/HttpResourceIntegrationTests.cpp b/vnext/Desktop.IntegrationTests/HttpResourceIntegrationTests.cpp index 1037575f885..c20c173e86e 100644 --- a/vnext/Desktop.IntegrationTests/HttpResourceIntegrationTests.cpp +++ b/vnext/Desktop.IntegrationTests/HttpResourceIntegrationTests.cpp @@ -9,7 +9,6 @@ #include #include #include -#include #include // Boost Library @@ -18,6 +17,8 @@ // Standard Library #include +#include "HttpServer.h" + using namespace Microsoft::React; using namespace Microsoft::VisualStudio::CppUnitTestFramework; diff --git a/vnext/Test/HttpServer.cpp b/vnext/Desktop.IntegrationTests/HttpServer.cpp similarity index 98% rename from vnext/Test/HttpServer.cpp rename to vnext/Desktop.IntegrationTests/HttpServer.cpp index b08ccacf14b..32457be591a 100644 --- a/vnext/Test/HttpServer.cpp +++ b/vnext/Desktop.IntegrationTests/HttpServer.cpp @@ -1,4 +1,8 @@ // clang-format off + +// C4996: 'gethostbyaddr': Use getnameinfo() or GetNameInfoW() instead +#define _WINSOCK_DEPRECATED_NO_WARNINGS + #include "HttpServer.h" #include @@ -360,7 +364,7 @@ void HttpServer::Start() Accept(); m_ioThreads.reserve(m_ioThreadCount); - for (int i = 0; i < m_ioThreadCount; i++) + for (size_t i = 0; i < m_ioThreadCount; i++) { m_ioThreads.emplace_back([self = shared_from_this()]() { diff --git a/vnext/Test/HttpServer.h b/vnext/Desktop.IntegrationTests/HttpServer.h similarity index 100% rename from vnext/Test/HttpServer.h rename to vnext/Desktop.IntegrationTests/HttpServer.h diff --git a/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj b/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj index d2b8219f915..c7ca42dd01c 100644 --- a/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj +++ b/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj @@ -113,10 +113,11 @@ + - + @@ -125,9 +126,6 @@ {700A84FD-F92A-43F1-8D06-B0E0745DF9B5} - - {cd0415c6-d908-4212-9481-49be41f58d27} - diff --git a/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj.filters b/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj.filters index 7375c189d4a..39ab943e9e0 100644 --- a/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj.filters +++ b/vnext/Desktop.IntegrationTests/React.Windows.Desktop.IntegrationTests.vcxproj.filters @@ -24,9 +24,6 @@ Integration Tests - - Integration Tests - Source Files\Modules @@ -36,6 +33,12 @@ Integration Tests + + Source Files + + + Source Files + @@ -44,5 +47,11 @@ Header Files\Modules + + Header Files + + + Header Files + \ No newline at end of file diff --git a/vnext/Desktop.IntegrationTests/WebSocketIntegrationTest.cpp b/vnext/Desktop.IntegrationTests/WebSocketIntegrationTest.cpp index 0adaea61079..97ab167a361 100644 --- a/vnext/Desktop.IntegrationTests/WebSocketIntegrationTest.cpp +++ b/vnext/Desktop.IntegrationTests/WebSocketIntegrationTest.cpp @@ -4,13 +4,18 @@ // cspell:disable // clang-format off + +// C4996: 'gethostbyaddr': Use getnameinfo() or GetNameInfoW() instead +#define _WINSOCK_DEPRECATED_NO_WARNINGS + #include #include -#include // Standard Library #include +#include "WebSocketServer.h" + using namespace Microsoft::React; using namespace Microsoft::VisualStudio::CppUnitTestFramework; diff --git a/vnext/Desktop.IntegrationTests/WebSocketResourcePerformanceTests.cpp b/vnext/Desktop.IntegrationTests/WebSocketResourcePerformanceTests.cpp deleted file mode 100644 index 38d3879956e..00000000000 --- a/vnext/Desktop.IntegrationTests/WebSocketResourcePerformanceTests.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -#include -#include -#include -#include - -// Windows API -#include -#include - -// Standard library includes -#include -#include -#include - -using namespace Microsoft::React; -using namespace Microsoft::VisualStudio::CppUnitTestFramework; - -using Microsoft::Common::Unicode::Utf8ToUtf16; -using Networking::IWebSocketResource; -using std::shared_ptr; -using std::string; -using std::vector; - -// None of these tests are runnable -TEST_CLASS (WebSocketResourcePerformanceTest) { - static uint16_t s_port; - - TEST_METHOD_CLEANUP(MethodCleanup) { - // Bug in WebSocketServer does not correctly release TCP port between test methods. - // Using a different por per test for now. - s_port++; - } - - // See http://msdn.microsoft.com/en-us/library/ms686701(v=VS.85).aspx - int32_t GetCurrentThreadCount() { - DWORD procId = GetCurrentProcessId(); - HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0 /*th32ProcessID*/); - - PROCESSENTRY32 entry = {0}; - entry.dwSize = sizeof(entry); - - BOOL procFound = true; - procFound = Process32First(snapshot, &entry); - while (procFound && entry.th32ProcessID != procId) - procFound = Process32Next(snapshot, &entry); - CloseHandle(snapshot); - - if (procFound) - return entry.cntThreads; - - return -1; - } - - /// - /// Spawn a number of WebSocket resources, have it write and read a message - /// several times, then measure the amount of allocated threads. Important. This - /// test must be run in isolation (no other tests running concurrently). - /// - BEGIN_TEST_METHOD_ATTRIBUTE(ProcessThreadsPerResource) - TEST_IGNORE() - END_TEST_METHOD_ATTRIBUTE() - TEST_METHOD(ProcessThreadsPerResource) { - // About 3 seconds total running time. - // 6, if we increase this value to 100. - const int resourceTotal = 50; - const int maxWriteCount = 10; - const int expectedThreadsPerResource = 3; - const int startThreadCount = GetCurrentThreadCount(); - - std::atomic_int32_t threadCount = 0; - bool errorFound = false; - string errorMessage; - - // WebSocket resources scope. - { - vector> resources; - for (int i = 0; i < resourceTotal; i++) { - auto ws = IWebSocketResource::Make(); - ws->SetOnMessage([this, &threadCount, &errorFound](size_t size, const string &message, bool isBinary) { - if (errorFound) - return; - - auto count = this->GetCurrentThreadCount(); - if (count > threadCount.load()) - threadCount.store(count); - }); - ws->SetOnSend([this, &threadCount, &errorFound](size_t) { - if (errorFound) - return; - - auto count = this->GetCurrentThreadCount(); - if (count > threadCount.load()) - threadCount.store(count); - }); - ws->SetOnClose([this, &threadCount, &errorFound](IWebSocketResource::CloseCode, const string & /*reason*/) { - if (errorFound) - return; - - auto count = this->GetCurrentThreadCount(); - if (count > threadCount.load()) - threadCount.store(count); - }); - ws->SetOnError([this, &errorFound, &errorMessage](IWebSocketResource::Error &&error) { - if (errorFound) - return; - - errorFound = true; - errorMessage = error.Message; - }); - ws->Connect("ws://localhost:5555"); - - resources.push_back(std::move(ws)); - } // Create and store WS resources. - - // Send messages. - for (auto &ws : resources) { - ws->Send("some message"); - } - - // Close resources. - for (auto &ws : resources) { - ws->Close(); - } - } - - int32_t finalThreadCount = threadCount.load(); - int64_t threadsPerResource = (finalThreadCount - startThreadCount) / resourceTotal; - - Assert::IsFalse(errorFound, Utf8ToUtf16(errorMessage).c_str()); - Assert::AreNotEqual(finalThreadCount, 0); - Assert::IsTrue(threadsPerResource <= expectedThreadsPerResource); - } -}; - -/*static*/ uint16_t WebSocketResourcePerformanceTest::s_port = 5550; diff --git a/vnext/Test/WebSocketServer.cpp b/vnext/Desktop.IntegrationTests/WebSocketServer.cpp similarity index 56% rename from vnext/Test/WebSocketServer.cpp rename to vnext/Desktop.IntegrationTests/WebSocketServer.cpp index 8a130851389..fc14967f76e 100644 --- a/vnext/Test/WebSocketServer.cpp +++ b/vnext/Desktop.IntegrationTests/WebSocketServer.cpp @@ -1,4 +1,8 @@ // clang-format off + +// C4996: 'gethostbyaddr': Use getnameinfo() or GetNameInfoW() instead +#define _WINSOCK_DEPRECATED_NO_WARNINGS + #include "WebSocketServer.h" #include @@ -10,7 +14,6 @@ using namespace boost::asio; namespace websocket = boost::beast::websocket; using boost::beast::bind_front_handler; -using boost::beast::ssl_stream; using boost::beast::tcp_stream; using boost::system::error_code; using std::function; @@ -195,129 +198,6 @@ std::shared_ptr> WebSocketSession::SharedFromTh #pragma endregion WebSocketSession -#pragma region SecureWebSocketSession - -SecureWebSocketSession::SecureWebSocketSession(ip::tcp::socket socket, WebSocketServiceCallbacks& callbacks) - : BaseWebSocketSession(callbacks) - , m_context{ssl::context::tlsv12} -{ - // cspell:disable - // Initialize SSL context. - string const cert = - "-----BEGIN CERTIFICATE-----\n" - "MIIDhjCCAm6gAwIBAgIJAPh+egUebaStMA0GCSqGSIb3DQEBCwUAMFgxCzAJBgNV\n" - "BAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdSZWRtb25kMRIw\n" - "EAYDVQQKDAlNaWNyb3NvZnQxDjAMBgNVBAsMBVJlYWN0MB4XDTE5MDYwMTA4MDcx\n" - "M1oXDTI5MDUyOTA4MDcxM1owWDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hp\n" - "bmd0b24xEDAOBgNVBAcMB1JlZG1vbmQxEjAQBgNVBAoMCU1pY3Jvc29mdDEOMAwG\n" - "A1UECwwFUmVhY3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgHKC9\n" - "XC+1FjDg2Xdmbpf3ILiJQtGFiD3WFb+duNXThOA0LY6gytVBY6LitAzB7Jm7spvx\n" - "BbA46kw8Dsmv02hI0diVzFKCB5bTTs0N8bgAsem6qvDpo/mvp2TtDU2J8o4RhMQ3\n" - "BQvdZUGgtH4VR2W4vIHufNjVUvN9hTL2eOBz0EYElsMSogG8f97N+m/7L6JeyjPo\n" - "kFwXYTFMjv3ihJmev/cBNkxuchLUT7NAc7bMCtmv5lzsKMKe6g0lUxDSBYxXztqU\n" - "l3huo2g990VbvTWH/lhz3bgdnon/AUKWBmS2eRmK9hH/rGlm1NeMCjexMZrYC3m8\n" - "vvfIR25plGmNjyQJAgMBAAGjUzBRMB0GA1UdDgQWBBTNLE3Nl0s3O40wDEXf9t/7\n" - "r6Y1QjAfBgNVHSMEGDAWgBTNLE3Nl0s3O40wDEXf9t/7r6Y1QjAPBgNVHRMBAf8E\n" - "BTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAbRL+69uZLW3Q6JIQ9qg3CPjm6574o\n" - "cOiyJ9DX49i23AyYNsCYulvLApHgrmltMJHrC4U7EasQCTtwpAMyLJDLIDdujSSs\n" - "ynSe5PcNeElLmEkH4PxyAFsb/2oWI2PSJh0vseuugUpeKTHJv5MPkLUm7WMLHYj5\n" - "uOQzYDwJ+IuveVzX5TRXtkY8jF9ErL4iF8eYTyp0ANeY11vJOAbd2FcAy5baYjB3\n" - "JVczHy7eegwfOQJFM9mIZE7+Ac0SaknC0Jun9486cJ0mvbdrMSd+vgF85OrpWwYU\n" - "ISfux0NDVN1gjvSgdkEB+CWnV1rNKsVKlg4psDkpq33AJEwnx3qNxtKG\n" - "-----END CERTIFICATE-----\n"; - - string const key = - "-----BEGIN RSA PRIVATE KEY-----\n" - "MIIEowIBAAKCAQEAoBygvVwvtRYw4Nl3Zm6X9yC4iULRhYg91hW/nbjV04TgNC2O\n" - "oMrVQWOi4rQMweyZu7Kb8QWwOOpMPA7Jr9NoSNHYlcxSggeW007NDfG4ALHpuqrw\n" - "6aP5r6dk7Q1NifKOEYTENwUL3WVBoLR+FUdluLyB7nzY1VLzfYUy9njgc9BGBJbD\n" - "EqIBvH/ezfpv+y+iXsoz6JBcF2ExTI794oSZnr/3ATZMbnIS1E+zQHO2zArZr+Zc\n" - "7CjCnuoNJVMQ0gWMV87alJd4bqNoPfdFW701h/5Yc924HZ6J/wFClgZktnkZivYR\n" - "/6xpZtTXjAo3sTGa2At5vL73yEduaZRpjY8kCQIDAQABAoIBAA/bpgP7THJYF1E9\n" - "2LiZfY2pfP2DU7MxEkbQ8qCRfQQtJfOlC3pbfJG0Z56ijJzsbTGM+CsAEDsi4ZgV\n" - "Mt6qRqrntdboXMeqLsMRC/g0l6/h7y9g3OmXJxTBtJpR9fsSvgV4K+LzKgCslbpw\n" - "BgjfgHCyov/W97bxN1KYTbrhsAFoWFwyTglDIkTYo/92suwsyYt14pxnK54QyNrM\n" - "tWKS0K9rZmSMjaVYW+nnSLelFVAOAzW4SOt8CE1V0usjIkmD5smdadjT14exWnxV\n" - "zVMhsbrfUFi3oBfW8X+TuWQjBnVfX0akZALY6vmnmOEWLz4pXJBLmazSGpXyM5o2\n" - "JpxSUS0CgYEAywE9MhWqKhZXpOwGWbNe1Nibh4l8vt+pTDs2TpFdHXNT8UfuUk03\n" - "ycCxGKrDPUAUPdVGygvmqdKHpXLbWalPGdFR6Xcn5YjVxM7L37jGl28oQOdNLI5u\n" - "Lw7hJ5L84M0LZqMI5589jA63WrgkLNQ9eKnuFn9N/3n9r/uZqtGVjLsCgYEAyejc\n" - "I/St33V0CNDtfEZ8dBDztXhx1WjDzv+JgNiy7pLUB+8yW0/iU2Y8ptpmfQ0nRDDv\n" - "sGK5myuBv85PRgWQnPskL3V5+L+DK40hyYnrL4bKhxT8az2CQdWI23sS4Nq5b59A\n" - "ylUyGIUXv3P62nUgMq3kM7L6mMgz/cCxeVeQyAsCgYAlZAIIgpMIE3trJgn5ZZ9W\n" - "5tqmuT0fzwRYxSM4j2+uJ/rTGyObRxu6bmJwH6u8UVwpE2ppdo2yw9M2NxSNzDCE\n" - "mdhTfx37Ghv9lvVYLKlvZQruAWxmg4lp43y3FEy9fybVbbwLJXppnKBK9lW7aBA2\n" - "dF4lCKeuIaMHUfk4zEeWVwKBgF81HXEa9E4VfUSW+BUMy6yTPcgJZmwCParDFlya\n" - "Ui1rMO4Y3X7vOUKoR9tJyuAWrrhZ9vwOYYUIy+Lc7saO4zUSu2phk8U20SxdHVyC\n" - "W1MK1T9DJw+ObniKr0EHVMyQdrZqusttxvSG9b7Cerw+VJNxKdUzBTW72cBC96zH\n" - "HK8nAoGBAMGKiSm4a1O5SpSiiZ6kNZHw9wB98Jtic7ozoUrlVEPSeRrXq/BzsyyH\n" - "md/sN/1v/Qq4SPlUtnzRakcPa2sntDb4SEt/Lrr97ouX1C/qfWljh69jRDLPBBez\n" - "cAlHdEzualsWQsACr7I71UebXvha+v0XXAKiIRqAKRrFLmPPCFrP\n" - "-----END RSA PRIVATE KEY-----\n"; - - string dh = - "-----BEGIN DH PARAMETERS-----\n" - "MIIBCAKCAQEA5VbTCtf4s2qPpqTtk2pXsYcqo7cLF0LVQaXMhOZNmif0TKDyclSV\n" - "NQANJcl0K9C5cGfh/1oEZs30A+Ww1zCtjkwJFvQdUAhCy/1U/qhRO2swXtz+CGZL\n" - "7PL0yu0Xht3EqGRS4z98LPCALVYvuqbNKTnFHUZl8oYJT0Xx0lzzZ+r5uFYYghQU\n" - "nCohXf/O0VLCPJMnd/oLY70CcPEL9V1KDb80oTzlYzrVPAHidcOXkiZpmOHgdiA/\n" - "LLG0h495hZhL5OqqDrLM7IWxHNmzgwhQ04PdGa6zPP4fnt7L4Ia5/lYOolvdmNkx\n" - "XgdewtScX7P5ltOMhhcWS4Og+qZn18a3kwIBAg==\n" - "-----END DH PARAMETERS-----\n"; - - // cspell:enable - - // TODO: Remove if not used. - m_context.set_password_callback([](size_t, ssl::context_base::password_purpose) { return "test"; }); - - m_context.set_options(ssl::context::default_workarounds | ssl::context::no_sslv2 | ssl::context::single_dh_use); - m_context.use_certificate_chain(buffer(cert.data(), cert.size())); - m_context.use_private_key(buffer(key.data(), key.size()), ssl::context::file_format::pem); - m_context.use_tmp_dh(buffer(dh.data(), dh.size())); - - m_stream = std::make_shared>>(std::move(socket), m_context); -} - -SecureWebSocketSession::~SecureWebSocketSession() {} - -#pragma region BaseWebSocketSession - -std::shared_ptr>> -SecureWebSocketSession::SharedFromThis() /*override*/ -{ - return this->shared_from_this(); -} - -#pragma endregion BaseWebSocketSession - -#pragma region IWebSocketSession - -void SecureWebSocketSession::Start() /*override*/ -{ - m_stream->next_layer().async_handshake( - ssl::stream_base::server, - bind_front_handler(&SecureWebSocketSession::OnSslHandshake, this->shared_from_this()) - ); -} - -void SecureWebSocketSession::OnSslHandshake(error_code ec) -{ - if (ec) - { - if (ec.value() != 335544539 /*short read*/) // See https://github.com/boostorg/beast/issues/1123 - if (m_callbacks.OnError) - m_callbacks.OnError({ec.message(), ErrorType::Handshake}); - - return; - } - - Accept(); -} - -#pragma endregion IWebSocketSession - -#pragma endregion SecureWebSocketSession - #pragma region WebSocketServer WebSocketServer::WebSocketServer(uint16_t port, bool useTLS) @@ -405,11 +285,7 @@ void WebSocketServer::OnAccept(error_code ec, ip::tcp::socket socket) return; } - std::shared_ptr session; - if (m_useTLS) - session = std::shared_ptr(new SecureWebSocketSession(std::move(socket), m_callbacks)); - else - session = std::shared_ptr(new WebSocketSession(std::move(socket), m_callbacks)); + std::shared_ptr session = std::shared_ptr(new WebSocketSession(std::move(socket), m_callbacks)); m_sessions.push_back(session); session->Start(); diff --git a/vnext/Test/WebSocketServer.h b/vnext/Desktop.IntegrationTests/WebSocketServer.h similarity index 82% rename from vnext/Test/WebSocketServer.h rename to vnext/Desktop.IntegrationTests/WebSocketServer.h index f5d2e5cad70..63b01788fdc 100644 --- a/vnext/Test/WebSocketServer.h +++ b/vnext/Desktop.IntegrationTests/WebSocketServer.h @@ -6,9 +6,7 @@ // Boost Framework #include #include -#include #include -#include // Standard Library #include @@ -79,27 +77,6 @@ class WebSocketSession : ~WebSocketSession(); }; -class SecureWebSocketSession : - public std::enable_shared_from_this, - public BaseWebSocketSession> -{ - boost::asio::ssl::context m_context; - - std::shared_ptr>> SharedFromThis() override; - - public: - SecureWebSocketSession(boost::asio::ip::tcp::socket socket, WebSocketServiceCallbacks& callbacks); - ~SecureWebSocketSession(); - - void OnSslHandshake(boost::system::error_code ec); - -#pragma region IWebSocketSession - - void Start() override; - -#pragma endregion IWebSocketSession -}; - class WebSocketServer : public std::enable_shared_from_this { std::thread m_contextThread; diff --git a/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json b/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json index 5aa1b4e4b84..6c0d51d7238 100644 --- a/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.IntegrationTests/packages.experimentalwinui3.lock.json @@ -20,12 +20,6 @@ "resolved": "0.71.8", "contentHash": "ksHjshj05AMAQ/v7Wet5Dwcwn9Up2BTOIrTv1yEW7+D23FQX0yILW5Zw0bmlWtV8MEtdY611z+06U3Xvu2ygSA==" }, - "ReactWindows.OpenSSL.StdCall.Static": { - "type": "Direct", - "requested": "[1.0.2-p.5, )", - "resolved": "1.0.2-p.5", - "contentHash": "1tAtFgtbVpI/JgRIxy9j30R/W6B1zi9dYt0o5QwAk5V3X2mo9xrrHcbXlbczKQIftYoNHe0Mfq9ExIu9A1Cs0g==" - }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", "resolved": "1.1.1", @@ -214,13 +208,6 @@ "boost": "[1.83.0, )" } }, - "react.windows.test": { - "type": "Project", - "dependencies": { - "ReactWindows.OpenSSL.StdCall.Static": "[1.0.2-p.5, )", - "boost": "[1.83.0, )" - } - }, "reactcommon": { "type": "Project", "dependencies": { diff --git a/vnext/Desktop.IntegrationTests/packages.lock.json b/vnext/Desktop.IntegrationTests/packages.lock.json index ee2b03b8f23..5237d641223 100644 --- a/vnext/Desktop.IntegrationTests/packages.lock.json +++ b/vnext/Desktop.IntegrationTests/packages.lock.json @@ -20,12 +20,6 @@ "resolved": "0.71.8", "contentHash": "ksHjshj05AMAQ/v7Wet5Dwcwn9Up2BTOIrTv1yEW7+D23FQX0yILW5Zw0bmlWtV8MEtdY611z+06U3Xvu2ygSA==" }, - "ReactWindows.OpenSSL.StdCall.Static": { - "type": "Direct", - "requested": "[1.0.2-p.5, )", - "resolved": "1.0.2-p.5", - "contentHash": "1tAtFgtbVpI/JgRIxy9j30R/W6B1zi9dYt0o5QwAk5V3X2mo9xrrHcbXlbczKQIftYoNHe0Mfq9ExIu9A1Cs0g==" - }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", "resolved": "1.1.1", @@ -214,13 +208,6 @@ "boost": "[1.83.0, )" } }, - "react.windows.test": { - "type": "Project", - "dependencies": { - "ReactWindows.OpenSSL.StdCall.Static": "[1.0.2-p.5, )", - "boost": "[1.83.0, )" - } - }, "reactcommon": { "type": "Project", "dependencies": { diff --git a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.ARM64.def b/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.ARM64.def deleted file mode 100644 index c6a00b7ff67..00000000000 --- a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.ARM64.def +++ /dev/null @@ -1,20 +0,0 @@ -EXPORTS - -; Microsoft::React::Test::WebSocketServer -??0WebSocketServer@Test@React@Microsoft@@QEAA@G_N@Z -??0WebSocketServer@Test@React@Microsoft@@QEAA@H_N@Z -?Accept@WebSocketServer@Test@React@Microsoft@@AEAAXXZ -?OnAccept@WebSocketServer@Test@React@Microsoft@@AEAAXVerror_code@system@boost@@V?$basic_stream_socket@Vtcp@ip@asio@boost@@Vany_io_executor@34@@asio@7@@Z -?SetMessageFactory@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$QEAV12@@Z@std@@@Z -?SetOnConnection@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AXXZ@std@@@Z -?SetOnError@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AX$$QEAUError@IWebSocketResource@Networking@React@Microsoft@@@Z@std@@@Z -?SetOnHandshake@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AXAEAV?$message@$0A@U?$basic_string_body@DU?$char_traits@D@std@@V?$allocator@D@2@@http@beast@boost@@V?$basic_fields@V?$allocator@D@std@@@234@@http@beast@boost@@@Z@std@@@Z -?SetOnMessage@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z@std@@@Z -?Start@WebSocketServer@Test@React@Microsoft@@QEAAXXZ -?Stop@WebSocketServer@Test@React@Microsoft@@QEAAXXZ - -; Microsoft::React::Test::HttpServer -;TODO Update symbols - -; Free functions -?CreateStringResponseBody@Test@React@Microsoft@@YA?AV?$basic_multi_buffer@V?$allocator@D@std@@@beast@boost@@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z diff --git a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj b/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj deleted file mode 100644 index fda8c8cf40b..00000000000 --- a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj +++ /dev/null @@ -1,96 +0,0 @@ - - - - - Debug - ARM64EC - - - Debug - x64 - - - Release - ARM64EC - - - Release - x64 - - - Debug - Win32 - - - Release - Win32 - - - Debug - ARM64 - - - Release - ARM64 - - - - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0} - React.Windows.Desktop.Test - - - - - DynamicLibrary - - - - - - - - - - - - - - false - - - - %(PreprocessorDefinitions) - %(AdditionalOptions) - - - Windows - %(AdditionalOptions) - %(AdditionalDependencies) - Use - pch.h - React.Windows.Desktop.Test.x86.def - React.Windows.Desktop.Test.$(Platform).def - - - - - - - - - {cd0415c6-d908-4212-9481-49be41f58d27} - - - - - - - - - - - - \ No newline at end of file diff --git a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj.filters b/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj.filters deleted file mode 100644 index bac21ab293f..00000000000 --- a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.DLL.vcxproj.filters +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - {de7ebe96-8afc-4363-a8ad-2b9ab24b8ed5} - - - {586b6325-c060-4f6a-ab1a-6223dacbb3e7} - - - - - Source Files - - - \ No newline at end of file diff --git a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x64.def b/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x64.def deleted file mode 100644 index c6a00b7ff67..00000000000 --- a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x64.def +++ /dev/null @@ -1,20 +0,0 @@ -EXPORTS - -; Microsoft::React::Test::WebSocketServer -??0WebSocketServer@Test@React@Microsoft@@QEAA@G_N@Z -??0WebSocketServer@Test@React@Microsoft@@QEAA@H_N@Z -?Accept@WebSocketServer@Test@React@Microsoft@@AEAAXXZ -?OnAccept@WebSocketServer@Test@React@Microsoft@@AEAAXVerror_code@system@boost@@V?$basic_stream_socket@Vtcp@ip@asio@boost@@Vany_io_executor@34@@asio@7@@Z -?SetMessageFactory@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6A?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$QEAV12@@Z@std@@@Z -?SetOnConnection@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AXXZ@std@@@Z -?SetOnError@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AX$$QEAUError@IWebSocketResource@Networking@React@Microsoft@@@Z@std@@@Z -?SetOnHandshake@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AXAEAV?$message@$0A@U?$basic_string_body@DU?$char_traits@D@std@@V?$allocator@D@2@@http@beast@boost@@V?$basic_fields@V?$allocator@D@std@@@234@@http@beast@boost@@@Z@std@@@Z -?SetOnMessage@WebSocketServer@Test@React@Microsoft@@QEAAX$$QEAV?$function@$$A6AXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z@std@@@Z -?Start@WebSocketServer@Test@React@Microsoft@@QEAAXXZ -?Stop@WebSocketServer@Test@React@Microsoft@@QEAAXXZ - -; Microsoft::React::Test::HttpServer -;TODO Update symbols - -; Free functions -?CreateStringResponseBody@Test@React@Microsoft@@YA?AV?$basic_multi_buffer@V?$allocator@D@std@@@beast@boost@@$$QEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z diff --git a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x86.def b/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x86.def deleted file mode 100644 index f4d92183bb8..00000000000 --- a/vnext/Desktop.Test.DLL/React.Windows.Desktop.Test.x86.def +++ /dev/null @@ -1,19 +0,0 @@ -EXPORTS - -; Microsoft::React::Test::WebSocketServer -??0WebSocketServer@Test@React@Microsoft@@QAE@G_N@Z -??0WebSocketServer@Test@React@Microsoft@@QAE@H_N@Z -?Accept@WebSocketServer@Test@React@Microsoft@@AAEXXZ -?OnAccept@WebSocketServer@Test@React@Microsoft@@AAEXVerror_code@system@boost@@V?$basic_stream_socket@Vtcp@ip@asio@boost@@Vany_io_executor@34@@asio@7@@Z -?SetMessageFactory@WebSocketServer@Test@React@Microsoft@@QAEX$$QAV?$function@$$A6G?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$QAV12@@Z@std@@@Z -?SetOnConnection@WebSocketServer@Test@React@Microsoft@@QAEX$$QAV?$function@$$A6GXXZ@std@@@Z -?SetOnError@WebSocketServer@Test@React@Microsoft@@QAEX$$QAV?$function@$$A6GX$$QAUError@IWebSocketResource@Networking@React@Microsoft@@@Z@std@@@Z -?SetOnHandshake@WebSocketServer@Test@React@Microsoft@@QAEX$$QAV?$function@$$A6GXAAV?$message@$0A@U?$basic_string_body@DU?$char_traits@D@std@@V?$allocator@D@2@@http@beast@boost@@V?$basic_fields@V?$allocator@D@std@@@234@@http@beast@boost@@@Z@std@@@Z -?SetOnMessage@WebSocketServer@Test@React@Microsoft@@QAEX$$QAV?$function@$$A6GXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z@std@@@Z -?Start@WebSocketServer@Test@React@Microsoft@@QAEXXZ -?Stop@WebSocketServer@Test@React@Microsoft@@QAEXXZ - -; Microsoft::React::Test::HttpServer - -; Free functions -?CreateStringResponseBody@Test@React@Microsoft@@YG?AV?$basic_multi_buffer@V?$allocator@D@std@@@beast@boost@@$$QAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z diff --git a/vnext/Desktop.Test.DLL/packages.lock.json b/vnext/Desktop.Test.DLL/packages.lock.json deleted file mode 100644 index cfbeef79824..00000000000 --- a/vnext/Desktop.Test.DLL/packages.lock.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "dependencies": { - "native,Version=v0.0": { - "boost": { - "type": "Direct", - "requested": "[1.83.0, )", - "resolved": "1.83.0", - "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" - }, - "ReactWindows.OpenSSL.StdCall.Static": { - "type": "Direct", - "requested": "[1.0.2-p.5, )", - "resolved": "1.0.2-p.5", - "contentHash": "1tAtFgtbVpI/JgRIxy9j30R/W6B1zi9dYt0o5QwAk5V3X2mo9xrrHcbXlbczKQIftYoNHe0Mfq9ExIu9A1Cs0g==" - }, - "react.windows.test": { - "type": "Project", - "dependencies": { - "ReactWindows.OpenSSL.StdCall.Static": "[1.0.2-p.5, )", - "boost": "[1.83.0, )" - } - } - } - } -} \ No newline at end of file diff --git a/vnext/Desktop.Test.DLL/pch.cpp b/vnext/Desktop.Test.DLL/pch.cpp deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/vnext/Desktop.UnitTests/React.Windows.Desktop.UnitTests.vcxproj b/vnext/Desktop.UnitTests/React.Windows.Desktop.UnitTests.vcxproj index 051ff6b2402..1d1e90c2f79 100644 --- a/vnext/Desktop.UnitTests/React.Windows.Desktop.UnitTests.vcxproj +++ b/vnext/Desktop.UnitTests/React.Windows.Desktop.UnitTests.vcxproj @@ -126,7 +126,6 @@ - diff --git a/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json b/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json index 34be6b7b3bc..6841d8af1eb 100644 --- a/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json +++ b/vnext/Desktop.UnitTests/packages.experimentalwinui3.lock.json @@ -14,12 +14,6 @@ "resolved": "2.0.230706.1", "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" }, - "ReactWindows.OpenSSL.StdCall.Static": { - "type": "Direct", - "requested": "[1.0.2-p.5, )", - "resolved": "1.0.2-p.5", - "contentHash": "1tAtFgtbVpI/JgRIxy9j30R/W6B1zi9dYt0o5QwAk5V3X2mo9xrrHcbXlbczKQIftYoNHe0Mfq9ExIu9A1Cs0g==" - }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", "resolved": "1.1.1", diff --git a/vnext/Desktop.UnitTests/packages.lock.json b/vnext/Desktop.UnitTests/packages.lock.json index 6b34b4b2856..654392f3352 100644 --- a/vnext/Desktop.UnitTests/packages.lock.json +++ b/vnext/Desktop.UnitTests/packages.lock.json @@ -14,12 +14,6 @@ "resolved": "2.0.230706.1", "contentHash": "l0D7oCw/5X+xIKHqZTi62TtV+1qeSz7KVluNFdrJ9hXsst4ghvqQ/Yhura7JqRdZWBXAuDS0G0KwALptdoxweQ==" }, - "ReactWindows.OpenSSL.StdCall.Static": { - "type": "Direct", - "requested": "[1.0.2-p.5, )", - "resolved": "1.0.2-p.5", - "contentHash": "1tAtFgtbVpI/JgRIxy9j30R/W6B1zi9dYt0o5QwAk5V3X2mo9xrrHcbXlbczKQIftYoNHe0Mfq9ExIu9A1Cs0g==" - }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", "resolved": "1.1.1", diff --git a/vnext/Test/packages.lock.json b/vnext/FollyWin32/packages.lock.json similarity index 56% rename from vnext/Test/packages.lock.json rename to vnext/FollyWin32/packages.lock.json index d48855b6867..8b50ae9b2c3 100644 --- a/vnext/Test/packages.lock.json +++ b/vnext/FollyWin32/packages.lock.json @@ -3,16 +3,19 @@ "dependencies": { "native,Version=v0.0": { "boost": { - "type": "Direct", - "requested": "[1.83.0, )", + "type": "Transitive", "resolved": "1.83.0", "contentHash": "cy53VNMzysEMvhBixDe8ujPk67Fcj3v6FPHQnH91NYJNLHpc6jxa2xq9ruCaaJjE4M3YrGSHDi4uUSTGBWw6EQ==" }, - "ReactWindows.OpenSSL.StdCall.Static": { - "type": "Direct", - "requested": "[1.0.2-p.5, )", - "resolved": "1.0.2-p.5", - "contentHash": "1tAtFgtbVpI/JgRIxy9j30R/W6B1zi9dYt0o5QwAk5V3X2mo9xrrHcbXlbczKQIftYoNHe0Mfq9ExIu9A1Cs0g==" + "fmt": { + "type": "Project" + }, + "folly": { + "type": "Project", + "dependencies": { + "boost": "[1.83.0, )", + "fmt": "[1.0.0, )" + } } }, "native,Version=v0.0/win": {}, diff --git a/vnext/ReactWindows-Desktop.sln b/vnext/ReactWindows-Desktop.sln index a286e0ad016..e30da8b4363 100644 --- a/vnext/ReactWindows-Desktop.sln +++ b/vnext/ReactWindows-Desktop.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.3.32929.385 +# Visual Studio Version 18 +VisualStudioVersion = 18.2.11415.280 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Folly", "Folly\Folly.vcxproj", "{A990658C-CE31-4BCC-976F-0FC6B1AF693D}" EndProject @@ -89,16 +89,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Folly", "Folly", "{41F31595 EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "React.Windows.Desktop.ABITests", "Desktop.ABITests\React.Windows.Desktop.ABITests.vcxproj", "{44DCED9B-9C4C-48FE-8545-0930192BBC16}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "React.Windows.Test", "Test\React.Windows.Test.vcxproj", "{CD0415C6-D908-4212-9481-49BE41F58D27}" - ProjectSection(ProjectDependencies) = postProject - {88BAB0FA-E1AC-4DA7-A30C-F91702A8EADB} = {88BAB0FA-E1AC-4DA7-A30C-F91702A8EADB} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "React.Windows.Desktop.Test.DLL", "Desktop.Test.DLL\React.Windows.Desktop.Test.DLL.vcxproj", "{473FE8E8-26DA-4B46-A7B3-7B4A758075D0}" - ProjectSection(ProjectDependencies) = postProject - {88BAB0FA-E1AC-4DA7-A30C-F91702A8EADB} = {88BAB0FA-E1AC-4DA7-A30C-F91702A8EADB} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Include", "include\Include.vcxitems", "{EF074BA1-2D54-4D49-A28E-5E040B47CD2E}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Common\Common.vcxproj", "{FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}" @@ -275,34 +265,6 @@ Global {44DCED9B-9C4C-48FE-8545-0930192BBC16}.Release|x64.Build.0 = Release|x64 {44DCED9B-9C4C-48FE-8545-0930192BBC16}.Release|x86.ActiveCfg = Release|Win32 {44DCED9B-9C4C-48FE-8545-0930192BBC16}.Release|x86.Build.0 = Release|Win32 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Debug|ARM64.Build.0 = Debug|ARM64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC - {CD0415C6-D908-4212-9481-49BE41F58D27}.Debug|x64.ActiveCfg = Debug|x64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Debug|x64.Build.0 = Debug|x64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Debug|x86.ActiveCfg = Debug|Win32 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Debug|x86.Build.0 = Debug|Win32 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Release|ARM64.ActiveCfg = Release|ARM64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Release|ARM64.Build.0 = Release|ARM64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Release|ARM64EC.ActiveCfg = Release|ARM64EC - {CD0415C6-D908-4212-9481-49BE41F58D27}.Release|x64.ActiveCfg = Release|x64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Release|x64.Build.0 = Release|x64 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Release|x86.ActiveCfg = Release|Win32 - {CD0415C6-D908-4212-9481-49BE41F58D27}.Release|x86.Build.0 = Release|Win32 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Debug|ARM64.Build.0 = Debug|ARM64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Debug|x64.ActiveCfg = Debug|x64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Debug|x64.Build.0 = Debug|x64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Debug|x86.ActiveCfg = Debug|Win32 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Debug|x86.Build.0 = Debug|Win32 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Release|ARM64.ActiveCfg = Release|ARM64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Release|ARM64.Build.0 = Release|ARM64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Release|ARM64EC.ActiveCfg = Release|ARM64EC - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Release|x64.ActiveCfg = Release|x64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Release|x64.Build.0 = Release|x64 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Release|x86.ActiveCfg = Release|Win32 - {473FE8E8-26DA-4B46-A7B3-7B4A758075D0}.Release|x86.Build.0 = Release|Win32 {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM64.ActiveCfg = Debug|ARM64 {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM64.Build.0 = Debug|ARM64 {FCA38F3C-7C73-4C47-BE4E-32F77FA8538D}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC diff --git a/vnext/Scripts/OfficeReact.Win32.nuspec b/vnext/Scripts/OfficeReact.Win32.nuspec index a93e7d7f83c..4d53f228dbf 100644 --- a/vnext/Scripts/OfficeReact.Win32.nuspec +++ b/vnext/Scripts/OfficeReact.Win32.nuspec @@ -28,11 +28,6 @@ - - - - - @@ -59,12 +54,6 @@ - - - - - - diff --git a/vnext/Scripts/OpenSSL.nuspec b/vnext/Scripts/OpenSSL.nuspec deleted file mode 100644 index 6076c4173b2..00000000000 --- a/vnext/Scripts/OpenSSL.nuspec +++ /dev/null @@ -1,39 +0,0 @@ - - - - $id$ - $version$ - OpenSSL for Windows Desktop - Static Library. - Microsoft - https://www.openssl.org - false - - - - - - - OpenSSL - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vnext/Scripts/OpenSSL.targets b/vnext/Scripts/OpenSSL.targets deleted file mode 100644 index 444fe3b9bf6..00000000000 --- a/vnext/Scripts/OpenSSL.targets +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - $(MSBuildThisFileDirectory)..\..\include\$(Platform); - %(AdditionalIncludeDirectories) - - - $(MSBuildThisFileDirectory)..\..\include\x86; - %(AdditionalIncludeDirectories) - - - - - $(MSBuildThisFileDirectory)..\..\lib\win8-$(Platform)\$(Configuration); - %(AdditionalLibraryDirectories) - - - $(MSBuildThisFileDirectory)..\..\lib\win8-x86\$(Configuration); - %(AdditionalLibraryDirectories) - - - - libeay32.lib; - ssleay32.lib; - Crypt32.lib; - %(AdditionalDependencies) - - - - \ No newline at end of file diff --git a/vnext/Scripts/Tfs/Layout-Desktop-Headers.ps1 b/vnext/Scripts/Tfs/Layout-Desktop-Headers.ps1 index 7616b687d49..66b474ab21d 100644 --- a/vnext/Scripts/Tfs/Layout-Desktop-Headers.ps1 +++ b/vnext/Scripts/Tfs/Layout-Desktop-Headers.ps1 @@ -5,7 +5,7 @@ param( [string] $SourceRoot = ($PSScriptRoot | Split-Path | Split-Path | Split-Path), [string] $TargetRoot = "$SourceRoot\vnext\target", [System.IO.DirectoryInfo] $ReactWindowsRoot = "$SourceRoot\vnext", - [System.IO.DirectoryInfo] $ReactNativeRoot = "$SourceRoot\node_modules\react-native", + [System.IO.DirectoryInfo] $ReactNativeRoot = "$SourceRoot\node_modules\react-native", [string[]] $Extensions = ('h', 'hpp', 'def') ) @@ -111,20 +111,6 @@ Get-ChildItem -Path $ReactWindowsRoot\Desktop.DLL -Recurse -Include '*.def' | Fo -Force } -# React.Windows.Test headers -Get-ChildItem -Path $ReactWindowsRoot\Test -Name -Recurse -Include $patterns | ForEach-Object { Copy-Item ` - -Path $ReactWindowsRoot\Test\$_ ` - -Destination (New-Item -ItemType Directory $TargetRoot\inc\Test\$(Split-Path $_) -Force) ` - -Force -} - -# React.Windows.Test DLL DEF files -Get-ChildItem -Path $ReactWindowsRoot\Desktop.Test.DLL -Name -Recurse -Include $patterns | ForEach-Object { Copy-Item ` - -Path $ReactWindowsRoot\Desktop.Test.DLL\$_ ` - -Destination (New-Item -ItemType Directory $TargetRoot\inc\$(Split-Path $_) -Force) ` - -Force -} - # include headers Copy-Item -Force -Recurse -Path $ReactWindowsRoot\include -Destination $TargetRoot\inc diff --git a/vnext/Shared/Shared.vcxitems.filters b/vnext/Shared/Shared.vcxitems.filters index cc51eed036d..8a0eeac25ba 100644 --- a/vnext/Shared/Shared.vcxitems.filters +++ b/vnext/Shared/Shared.vcxitems.filters @@ -266,7 +266,6 @@ - @@ -279,7 +278,6 @@ - @@ -290,7 +288,7 @@ - + diff --git a/vnext/Test/React.Windows.Test.vcxproj b/vnext/Test/React.Windows.Test.vcxproj deleted file mode 100644 index a1046a4fbe1..00000000000 --- a/vnext/Test/React.Windows.Test.vcxproj +++ /dev/null @@ -1,93 +0,0 @@ - - - - {CD0415C6-D908-4212-9481-49BE41F58D27} - StaticLibrary - - - - - - Debug - ARM64 - - - Debug - ARM64EC - - - Debug - x64 - - - Release - ARM64 - - - Release - ARM64EC - - - Release - x64 - - - Debug - Win32 - - - Release - Win32 - - - - StaticLibrary - - - - - - - - - - - - - $(ReactNativeWindowsDir)Shared;$(IncludePath) - - - - - %(AdditionalOptions) - /bigobj - - NotUsing - - - BOOST_ASIO_HAS_IOCP; - _WIN32_WINNT=$(WinVer); - %(PreprocessorDefinitions) - - - - false - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/vnext/Test/React.Windows.Test.vcxproj.filters b/vnext/Test/React.Windows.Test.vcxproj.filters deleted file mode 100644 index 8b6094b9506..00000000000 --- a/vnext/Test/React.Windows.Test.vcxproj.filters +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {bdc1e148-e9fb-46a5-83c5-8d7436c3ad0c} - - - {1c69d5ed-7fe5-444e-8452-7e9ed50ab9e9} - - - {dac5bb6d-4c23-4b2c-af6c-4713f88980c0} - - - - - Header Files - - - Header Files - - - - - Source Files - - - Source Files - - - \ No newline at end of file diff --git a/vnext/TestWebSite/Microsoft/React/WebSocketTests.cs b/vnext/TestWebSite/Microsoft/React/WebSocketTests.cs index 4061a476f92..724af9bc75b 100644 --- a/vnext/TestWebSite/Microsoft/React/WebSocketTests.cs +++ b/vnext/TestWebSite/Microsoft/React/WebSocketTests.cs @@ -33,6 +33,31 @@ public static async Task Echo(HttpContext context) } } + public static async Task EchoBinary(HttpContext context) + { + var ws = await context.WebSockets.AcceptWebSocketAsync(); + wsConnections.Add(ws); + + while (true) + { + if (ws.State == WebSocketState.Closed || + ws.State == WebSocketState.CloseSent || + ws.State == WebSocketState.CloseReceived || + ws.State == WebSocketState.Aborted) + break; + + if (ws.State != WebSocketState.Open) + continue; + + var incomingMessage = await WebSocketUtils.ReceiveStringAsync(ws); + await Console.Out.WriteLineAsync($"Message received: [{incomingMessage}]"); + + var outgoingBytes = Encoding.UTF8.GetBytes(incomingMessage); + + await ws.SendAsync(outgoingBytes, WebSocketMessageType.Binary, true, CancellationToken.None); + } + } + public static async Task EchoSuffix(HttpContext context) { var announcement = @"This will send each incoming message back, with the string '_response' appended."; diff --git a/vnext/TestWebSite/Program.cs b/vnext/TestWebSite/Program.cs index 0fe4dd3aca7..bf70c3cac2e 100644 --- a/vnext/TestWebSite/Program.cs +++ b/vnext/TestWebSite/Program.cs @@ -70,6 +70,11 @@ async Task DefaultRequestDelegate(HttpContext context) Microsoft.React.Test.WebSocketTests.Echo ); +app.Map( + "/rnw/websockets/echobinary", + Microsoft.React.Test.WebSocketTests.EchoBinary + ); + app.Map( "/rnw/websockets/echosuffix", Microsoft.React.Test.WebSocketTests.EchoSuffix From 187b52e383c38b92adc06f5b22b73e18222a0d5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 06:39:20 +0000 Subject: [PATCH 024/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20the=20babel=20gro?= =?UTF-8?q?up=20with=204=20updates=20(#15627)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the babel group with 4 updates: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core), [@babel/generator](https://github.com/babel/babel/tree/HEAD/packages/babel-generator), [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) and [@babel/plugin-transform-regenerator](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-regenerator). Updates `@babel/core` from 7.28.6 to 7.29.0 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.29.0/packages/babel-core) Updates `@babel/generator` from 7.28.6 to 7.29.0 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.29.0/packages/babel-generator) Updates `@babel/preset-env` from 7.28.6 to 7.29.0 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.29.0/packages/babel-preset-env) Updates `@babel/plugin-transform-regenerator` from 7.28.6 to 7.29.0 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.29.0/packages/babel-plugin-transform-regenerator) --- updated-dependencies: - dependency-name: "@babel/core" dependency-version: 7.29.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: babel - dependency-name: "@babel/generator" dependency-version: 7.29.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: babel - dependency-name: "@babel/preset-env" dependency-version: 7.29.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: babel - dependency-name: "@babel/plugin-transform-regenerator" dependency-version: 7.29.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: babel ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 213 +++++++++++++++++++++++++++++------------------------- 1 file changed, 116 insertions(+), 97 deletions(-) diff --git a/yarn.lock b/yarn.lock index 802940c2ead..455ae104c7d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,34 +2,34 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.28.6.tgz#72499312ec58b1e2245ba4a4f550c132be4982f7" - integrity sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" + integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== dependencies: "@babel/helper-validator-identifier" "^7.28.5" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.6.tgz#103f466803fa0f059e82ccac271475470570d74c" - integrity sha512-2lfu57JtzctfIrcGMz992hyLlByuzgIk58+hhGCxjKZ3rWI82NnVLjXcaTqkI2NvlcvOskZaiZ5kjUALo3Lpxg== +"@babel/compat-data@^7.28.6", "@babel/compat-data@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" + integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.22.0", "@babel/core@^7.23.9", "@babel/core@^7.25.2": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.6.tgz#531bf883a1126e53501ba46eb3bb414047af507f" - integrity sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" + integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/generator" "^7.28.6" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-module-transforms" "^7.28.6" "@babel/helpers" "^7.28.6" - "@babel/parser" "^7.28.6" + "@babel/parser" "^7.29.0" "@babel/template" "^7.28.6" - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/traverse" "^7.29.0" + "@babel/types" "^7.29.0" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -46,13 +46,13 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.25.0", "@babel/generator@^7.28.5", "@babel/generator@^7.28.6", "@babel/generator@^7.7.2": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.6.tgz#48dcc65d98fcc8626a48f72b62e263d25fc3c3f1" - integrity sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw== +"@babel/generator@^7.25.0", "@babel/generator@^7.28.5", "@babel/generator@^7.29.0", "@babel/generator@^7.7.2": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f" + integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ== dependencies: - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" + "@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" @@ -121,6 +121,17 @@ lodash.debounce "^4.0.8" resolve "^1.22.10" +"@babel/helper-define-polyfill-provider@^0.6.6": + version "0.6.6" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz#714dfe33d8bd710f556df59953720f6eeb6c1a14" + integrity sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA== + dependencies: + "@babel/helper-compilation-targets" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" + debug "^4.4.3" + lodash.debounce "^4.0.8" + resolve "^1.22.11" + "@babel/helper-globals@^7.28.0": version "7.28.0" resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" @@ -150,7 +161,7 @@ "@babel/traverse" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.3", "@babel/helper-module-transforms@^7.28.6": +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.28.6": version "7.28.6" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== @@ -238,12 +249,12 @@ "@babel/template" "^7.28.6" "@babel/types" "^7.28.6" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.28.5", "@babel/parser@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.6.tgz#f01a8885b7fa1e56dd8a155130226cd698ef13fd" - integrity sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.25.3", "@babel/parser@^7.28.5", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" + integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== dependencies: - "@babel/types" "^7.28.6" + "@babel/types" "^7.29.0" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.28.5": version "7.28.5" @@ -498,14 +509,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.25.4", "@babel/plugin-transform-async-generator-functions@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.6.tgz#80cb86d3eaa2102e18ae90dd05ab87bdcad3877d" - integrity sha512-9knsChgsMzBV5Yh3kkhrZNxH3oCYAfMBkNNaVN4cP2RVlFPe8wYdwwcnOsAbkdDoV9UjFtOXWrWB52M8W4jNeA== +"@babel/plugin-transform-async-generator-functions@^7.25.4", "@babel/plugin-transform-async-generator-functions@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz#63ed829820298f0bf143d5a4a68fb8c06ffd742f" + integrity sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w== dependencies: "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.28.6" + "@babel/traverse" "^7.29.0" "@babel/plugin-transform-async-to-generator@^7.24.7", "@babel/plugin-transform-async-to-generator@^7.28.6": version "7.28.6" @@ -589,10 +600,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.28.6.tgz#e0c59ba54f1655dd682f2edf5f101b5910a8f6f3" - integrity sha512-5suVoXjC14lUN6ZL9OLKIHCNVWCrqGqlmEp/ixdXjvgnEl/kauLvvMO/Xw9NyMc95Joj1AeLVPVMvibBgSoFlA== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz#8014b8a6cfd0e7b92762724443bf0d2400f26df1" + integrity sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.28.5" "@babel/helper-plugin-utils" "^7.28.6" @@ -695,15 +706,15 @@ "@babel/helper-module-transforms" "^7.28.6" "@babel/helper-plugin-utils" "^7.28.6" -"@babel/plugin-transform-modules-systemjs@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz#7439e592a92d7670dfcb95d0cbc04bd3e64801d2" - integrity sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew== +"@babel/plugin-transform-modules-systemjs@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz#e458a95a17807c415924106a3ff188a3b8dee964" + integrity sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ== dependencies: - "@babel/helper-module-transforms" "^7.28.3" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-module-transforms" "^7.28.6" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.5" + "@babel/traverse" "^7.29.0" "@babel/plugin-transform-modules-umd@^7.27.1": version "7.27.1" @@ -713,13 +724,13 @@ "@babel/helper-module-transforms" "^7.27.1" "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz#a26cd51e09c4718588fc4cce1c5d1c0152102d6a" + integrity sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-create-regexp-features-plugin" "^7.28.5" + "@babel/helper-plugin-utils" "^7.28.6" "@babel/plugin-transform-new-target@^7.27.1": version "7.27.1" @@ -839,10 +850,10 @@ "@babel/plugin-syntax-jsx" "^7.27.1" "@babel/types" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.24.7", "@babel/plugin-transform-regenerator@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.6.tgz#6ca2ed5b76cff87980f96eaacfc2ce833e8e7a1b" - integrity sha512-eZhoEZHYQLL5uc1gS5e9/oTknS0sSSAtd5TkKMUp3J+S/CaUjagc0kOUPsEbDmMeva0nC3WWl4SxVY6+OBuxfw== +"@babel/plugin-transform-regenerator@^7.24.7", "@babel/plugin-transform-regenerator@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz#dec237cec1b93330876d6da9992c4abd42c9d18b" + integrity sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog== dependencies: "@babel/helper-plugin-utils" "^7.28.6" @@ -952,11 +963,11 @@ "@babel/helper-plugin-utils" "^7.28.6" "@babel/preset-env@^7.0.0", "@babel/preset-env@^7.22.0", "@babel/preset-env@^7.25.3": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.6.tgz#b4586bb59d8c61be6c58997f4912e7ea6bd17178" - integrity sha512-GaTI4nXDrs7l0qaJ6Rg06dtOXTBCG6TMDB44zbqofCIC4PqC7SEvmFFtpxzCDw9W5aJ7RKVshgXTLvLdBFV/qw== + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.29.0.tgz#c55db400c515a303662faaefd2d87e796efa08d0" + integrity sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w== dependencies: - "@babel/compat-data" "^7.28.6" + "@babel/compat-data" "^7.29.0" "@babel/helper-compilation-targets" "^7.28.6" "@babel/helper-plugin-utils" "^7.28.6" "@babel/helper-validator-option" "^7.27.1" @@ -970,7 +981,7 @@ "@babel/plugin-syntax-import-attributes" "^7.28.6" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.28.6" + "@babel/plugin-transform-async-generator-functions" "^7.29.0" "@babel/plugin-transform-async-to-generator" "^7.28.6" "@babel/plugin-transform-block-scoped-functions" "^7.27.1" "@babel/plugin-transform-block-scoping" "^7.28.6" @@ -981,7 +992,7 @@ "@babel/plugin-transform-destructuring" "^7.28.5" "@babel/plugin-transform-dotall-regex" "^7.28.6" "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.28.6" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-dynamic-import" "^7.27.1" "@babel/plugin-transform-explicit-resource-management" "^7.28.6" "@babel/plugin-transform-exponentiation-operator" "^7.28.6" @@ -994,9 +1005,9 @@ "@babel/plugin-transform-member-expression-literals" "^7.27.1" "@babel/plugin-transform-modules-amd" "^7.27.1" "@babel/plugin-transform-modules-commonjs" "^7.28.6" - "@babel/plugin-transform-modules-systemjs" "^7.28.5" + "@babel/plugin-transform-modules-systemjs" "^7.29.0" "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.29.0" "@babel/plugin-transform-new-target" "^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator" "^7.28.6" "@babel/plugin-transform-numeric-separator" "^7.28.6" @@ -1008,7 +1019,7 @@ "@babel/plugin-transform-private-methods" "^7.28.6" "@babel/plugin-transform-private-property-in-object" "^7.28.6" "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.28.6" + "@babel/plugin-transform-regenerator" "^7.29.0" "@babel/plugin-transform-regexp-modifiers" "^7.28.6" "@babel/plugin-transform-reserved-words" "^7.27.1" "@babel/plugin-transform-shorthand-properties" "^7.27.1" @@ -1021,10 +1032,10 @@ "@babel/plugin-transform-unicode-regex" "^7.27.1" "@babel/plugin-transform-unicode-sets-regex" "^7.28.6" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.14" - babel-plugin-polyfill-corejs3 "^0.13.0" - babel-plugin-polyfill-regenerator "^0.6.5" - core-js-compat "^3.43.0" + babel-plugin-polyfill-corejs2 "^0.4.15" + babel-plugin-polyfill-corejs3 "^0.14.0" + babel-plugin-polyfill-regenerator "^0.6.6" + core-js-compat "^3.48.0" semver "^6.3.1" "@babel/preset-flow@^7.13.13", "@babel/preset-flow@^7.24.7": @@ -1094,23 +1105,23 @@ "@babel/types" "^7.28.5" debug "^4.3.1" -"@babel/traverse@^7.23.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.6.tgz#871ddc79a80599a5030c53b1cc48cbe3a5583c2e" - integrity sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg== +"@babel/traverse@^7.23.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3", "@babel/traverse@^7.28.5", "@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" + integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/generator" "^7.28.6" + "@babel/code-frame" "^7.29.0" + "@babel/generator" "^7.29.0" "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.28.6" + "@babel/parser" "^7.29.0" "@babel/template" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/types" "^7.29.0" debug "^4.3.1" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.6.tgz#c3e9377f1b155005bcc4c46020e7e394e13089df" - integrity sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.2", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.5", "@babel/types@^7.28.6", "@babel/types@^7.29.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.29.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" + integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== dependencies: "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.28.5" @@ -4059,13 +4070,13 @@ babel-plugin-minify-dead-code-elimination@^0.5.2: babel-helper-remove-or-void "^0.4.3" lodash "^4.17.11" -babel-plugin-polyfill-corejs2@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" - integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== +babel-plugin-polyfill-corejs2@^0.4.14, babel-plugin-polyfill-corejs2@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz#808fa349686eea4741807cfaaa2aa3aa57ce120a" + integrity sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw== dependencies: - "@babel/compat-data" "^7.27.7" - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/compat-data" "^7.28.6" + "@babel/helper-define-polyfill-provider" "^0.6.6" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.13.0: @@ -4076,12 +4087,20 @@ babel-plugin-polyfill-corejs3@^0.13.0: "@babel/helper-define-polyfill-provider" "^0.6.5" core-js-compat "^3.43.0" -babel-plugin-polyfill-regenerator@^0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" - integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== +babel-plugin-polyfill-corejs3@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz#65b06cda48d6e447e1e926681f5a247c6ae2b9cf" + integrity sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.5" + "@babel/helper-define-polyfill-provider" "^0.6.6" + core-js-compat "^3.48.0" + +babel-plugin-polyfill-regenerator@^0.6.5, babel-plugin-polyfill-regenerator@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz#69f5dd263cab933c42fe5ea05e83443b374bd4bf" + integrity sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.6" babel-plugin-replace-ts-export-assignment@^0.0.2: version "0.0.2" @@ -4285,7 +4304,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.24.0, browserslist@^4.28.0: +browserslist@^4.24.0, browserslist@^4.28.1: version "4.28.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== @@ -4871,12 +4890,12 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.43.0: - version "3.47.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.47.0.tgz#698224bbdbb6f2e3f39decdda4147b161e3772a3" - integrity sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ== +core-js-compat@^3.43.0, core-js-compat@^3.48.0: + version "3.48.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.48.0.tgz#7efbe1fc1cbad44008190462217cc5558adaeaa6" + integrity sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q== dependencies: - browserslist "^4.28.0" + browserslist "^4.28.1" core-util-is@~1.0.0: version "1.0.3" @@ -10612,7 +10631,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f" integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A== -resolve@^1.1.6, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.10, resolve@^1.22.3, resolve@~1.22.1, resolve@~1.22.2: +resolve@^1.1.6, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.10, resolve@^1.22.11, resolve@^1.22.3, resolve@~1.22.1, resolve@~1.22.2: version "1.22.11" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== From 352626f92bbea333fc5b1eadfcfb9346a62ea512 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 06:40:32 +0000 Subject: [PATCH 025/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20@types/node=20fro?= =?UTF-8?q?m=2022.19.7=20to=2022.19.8=20(#15628)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.19.7 to 22.19.8. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 22.19.8 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 455ae104c7d..d4af006ef43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2842,9 +2842,9 @@ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^22.0.0", "@types/node@^22.14.0": - version "22.19.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.7.tgz#434094ee1731ae76c16083008590a5835a8c39c1" - integrity sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw== + version "22.19.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.8.tgz#b0c7812df8a98a001570950f4275f0c10fcad101" + integrity sha512-ebO/Yl+EAvVe8DnMfi+iaAyIqYdK0q/q0y0rw82INWEKJOBe6b/P3YWE8NW7oOlF/nXFNrHwhARrN/hdgDkraA== dependencies: undici-types "~6.21.0" From 38b2681ce35b876377e81bdd65d4d8fcfcdf97d7 Mon Sep 17 00:00:00 2001 From: Yichen Yao Date: Thu, 5 Feb 2026 17:32:00 -0800 Subject: [PATCH 026/138] Mark release jobs in their templateContext. (#15630) This PR marks release jobs inside publish.yml with "type: releaseJob". --- .ado/publish.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.ado/publish.yml b/.ado/publish.yml index 4508463db95..fd47f0177c3 100644 --- a/.ado/publish.yml +++ b/.ado/publish.yml @@ -222,6 +222,7 @@ extends: BuildDropPath: $(System.DefaultWorkingDirectory) templateContext: + type: releaseJob outputs: - output: pipelineArtifact displayName: 'Publish npm pack artifacts' @@ -447,6 +448,7 @@ extends: TreatNotIndexedAsWarning: false templateContext: + type: releaseJob sdl: binskim: analyzeTargetGlob: '$(System.DefaultWorkingDirectory)\NugetRoot\**\Microsoft.ReactNative\Microsoft.ReactNative.dll;$(System.DefaultWorkingDirectory)\NugetRoot\**\React.Windows.Desktop.DLL\react-native-win32.dll' From 72def5f7d46229ffddef47436f6262571226b8c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Feb 2026 07:15:11 +0000 Subject: [PATCH 027/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20@babel/generator?= =?UTF-8?q?=20from=207.29.0=20to=207.29.1=20in=20the=20babel=20group=20(#1?= =?UTF-8?q?5629)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps the babel group with 1 update: [@babel/generator](https://github.com/babel/babel/tree/HEAD/packages/babel-generator). Updates `@babel/generator` from 7.29.0 to 7.29.1 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.29.1/packages/babel-generator) --- updated-dependencies: - dependency-name: "@babel/generator" dependency-version: 7.29.1 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: babel ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d4af006ef43..30d126ac004 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,9 +47,9 @@ semver "^6.3.1" "@babel/generator@^7.25.0", "@babel/generator@^7.28.5", "@babel/generator@^7.29.0", "@babel/generator@^7.7.2": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.0.tgz#4cba5a76b3c71d8be31761b03329d5dc7768447f" - integrity sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ== + version "7.29.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" + integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== dependencies: "@babel/parser" "^7.29.0" "@babel/types" "^7.29.0" From b5e109f14ce9cc132fc3020df19716e35836dc7e Mon Sep 17 00:00:00 2001 From: Abhijeet Jha <74712637+iamAbhi-916@users.noreply.github.com> Date: Mon, 9 Feb 2026 15:05:13 +0530 Subject: [PATCH 028/138] [0.82] Enables word-extension during drag after a double-click selection (#15640) (#15642) * enables word-extension during drag after a double-click selection * yarn lint:fix and format * Change files --- ...-3c6ddb8b-a7f5-4d43-a953-7461a9bc110c.json | 7 +++ .../Composition/ParagraphComponentView.cpp | 54 ++++++++++++++++--- .../Composition/ParagraphComponentView.h | 6 +++ 3 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 change/react-native-windows-3c6ddb8b-a7f5-4d43-a953-7461a9bc110c.json diff --git a/change/react-native-windows-3c6ddb8b-a7f5-4d43-a953-7461a9bc110c.json b/change/react-native-windows-3c6ddb8b-a7f5-4d43-a953-7461a9bc110c.json new file mode 100644 index 00000000000..59a4f3c2a17 --- /dev/null +++ b/change/react-native-windows-3c6ddb8b-a7f5-4d43-a953-7461a9bc110c.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "enables word-extension during drag after a double-click selection", + "packageName": "react-native-windows", + "email": "74712637+iamAbhi-916@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp index a9d78cdc452..7974583346e 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.cpp @@ -548,6 +548,7 @@ void ParagraphComponentView::ClearSelection() noexcept { m_selectionStart = std::nullopt; m_selectionEnd = std::nullopt; m_isSelecting = false; + m_isWordSelecting = false; if (hadSelection) { // Clears selection highlight DrawText(); @@ -598,7 +599,13 @@ void ParagraphComponentView::OnPointerPressed( if (isDoubleClick) { SelectWordAtPosition(*charPosition); - m_isSelecting = false; + if (m_selectionStart && m_selectionEnd) { + m_isWordSelecting = true; + m_wordAnchorStart = *m_selectionStart; + m_wordAnchorEnd = *m_selectionEnd; + m_isSelecting = true; + CapturePointer(args.Pointer()); + } } else { // Single-click: start drag selection m_selectionStart = charPosition; @@ -640,10 +647,28 @@ void ParagraphComponentView::OnPointerMoved( facebook::react::Point localPt{position.X, position.Y}; std::optional charPosition = GetClampedTextPosition(localPt); - if (charPosition && charPosition != m_selectionEnd) { - m_selectionEnd = charPosition; - DrawText(); - args.Handled(true); + if (charPosition) { + if (m_isWordSelecting) { + // Extend selection by whole words + auto [wordStart, wordEnd] = GetWordBoundariesAtPosition(*charPosition); + + if (*charPosition < m_wordAnchorStart) { + m_selectionStart = wordStart; + m_selectionEnd = m_wordAnchorEnd; + } else if (*charPosition >= m_wordAnchorEnd) { + m_selectionStart = m_wordAnchorStart; + m_selectionEnd = wordEnd; + } else { + m_selectionStart = m_wordAnchorStart; + m_selectionEnd = m_wordAnchorEnd; + } + DrawText(); + args.Handled(true); + } else if (charPosition != m_selectionEnd) { + m_selectionEnd = charPosition; + DrawText(); + args.Handled(true); + } } } @@ -667,6 +692,7 @@ void ParagraphComponentView::OnPointerReleased( } m_isSelecting = false; + m_isWordSelecting = false; ReleasePointerCapture(args.Pointer()); @@ -691,6 +717,7 @@ void ParagraphComponentView::OnPointerCaptureLost() noexcept { // Pointer capture was lost stop any active selection drag if (m_isSelecting) { m_isSelecting = false; + m_isWordSelecting = false; if (!m_selectionStart || !m_selectionEnd || *m_selectionStart == *m_selectionEnd) { m_selectionStart = std::nullopt; @@ -741,12 +768,17 @@ void ParagraphComponentView::CopySelectionToClipboard() noexcept { winrt::Windows::ApplicationModel::DataTransfer::Clipboard::SetContent(dataPackage); } -void ParagraphComponentView::SelectWordAtPosition(int32_t charPosition) noexcept { +std::pair ParagraphComponentView::GetWordBoundariesAtPosition(int32_t charPosition) noexcept { const std::wstring utf16Text{facebook::react::WindowsTextLayoutManager::GetTransformedText(m_attributedStringBox)}; const int32_t textLength = static_cast(utf16Text.length()); - if (utf16Text.empty() || charPosition < 0 || charPosition >= textLength) { - return; + if (utf16Text.empty() || charPosition < 0) { + return {0, 0}; + } + + charPosition = std::min(charPosition, textLength - 1); + if (charPosition < 0) { + return {0, 0}; } int32_t wordStart = charPosition; @@ -779,6 +811,12 @@ void ParagraphComponentView::SelectWordAtPosition(int32_t charPosition) noexcept } } + return {wordStart, wordEnd}; +} + +void ParagraphComponentView::SelectWordAtPosition(int32_t charPosition) noexcept { + auto [wordStart, wordEnd] = GetWordBoundariesAtPosition(charPosition); + if (wordEnd > wordStart) { SetSelection(wordStart, wordEnd); DrawText(); diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h index 096d58d23d7..65557151cdd 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ParagraphComponentView.h @@ -100,6 +100,7 @@ struct ParagraphComponentView : ParagraphComponentViewT GetWordBoundariesAtPosition(int32_t charPosition) noexcept; // Shows a context menu with Copy/Select All options on right-click void ShowContextMenu() noexcept; @@ -118,6 +119,11 @@ struct ParagraphComponentView : ParagraphComponentViewT m_selectionEnd; bool m_isSelecting{false}; + // Double click + drag selection + bool m_isWordSelecting{false}; + int32_t m_wordAnchorStart{0}; + int32_t m_wordAnchorEnd{0}; + // Double-click detection std::chrono::steady_clock::time_point m_lastClickTime{}; std::optional m_lastClickPosition; From 0f0a5bc610fd6f8ef7b9fb44fbde39da2e434d7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 12:32:27 +0000 Subject: [PATCH 029/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20semver=20from=207?= =?UTF-8?q?.7.3=20to=207.7.4=20(#15635)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [semver](https://github.com/npm/node-semver) from 7.7.3 to 7.7.4. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v7.7.3...v7.7.4) --- updated-dependencies: - dependency-name: semver dependency-version: 7.7.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 30d126ac004..8cb59b616eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10862,9 +10862,9 @@ semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.0.0, semver@^7.1.3, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3, semver@^7.7.3: - version "7.7.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + version "7.7.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== semver@~7.5.4: version "7.5.4" From 1bdab9aae06a63982230177263b02b637663731d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 12:36:17 +0000 Subject: [PATCH 030/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20@types/node=20fro?= =?UTF-8?q?m=2022.19.8=20to=2022.19.9=20(#15636)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.19.8 to 22.19.9. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 22.19.9 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8cb59b616eb..4e25d78e47f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2842,9 +2842,9 @@ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^22.0.0", "@types/node@^22.14.0": - version "22.19.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.8.tgz#b0c7812df8a98a001570950f4275f0c10fcad101" - integrity sha512-ebO/Yl+EAvVe8DnMfi+iaAyIqYdK0q/q0y0rw82INWEKJOBe6b/P3YWE8NW7oOlF/nXFNrHwhARrN/hdgDkraA== + version "22.19.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.10.tgz#a802d3cc6bdc190ec2b0cbf6958bf127c0ec2926" + integrity sha512-tF5VOugLS/EuDlTBijk0MqABfP8UxgYazTLo3uIn3b4yJgg26QRbVYJYsDtHrjdDUIRfP70+VfhTTc+CE1yskw== dependencies: undici-types "~6.21.0" From fb3a6fad574348c0a906b6796f59aedeee7d0c0b Mon Sep 17 00:00:00 2001 From: Harini Malothu <185761277+HariniMalothu17@users.noreply.github.com> Date: Mon, 9 Feb 2026 18:49:07 +0530 Subject: [PATCH 031/138] Implement GetSize Api in main (#15643) * fix getSize * Change files --------- Co-authored-by: Harini Malothu --- ...-49284bd6-2b6c-4cc5-8124-9ba345612623.json | 7 +++ .../Modules/ImageViewManagerModule.cpp | 59 ++++++++++++++----- 2 files changed, 50 insertions(+), 16 deletions(-) create mode 100644 change/react-native-windows-49284bd6-2b6c-4cc5-8124-9ba345612623.json diff --git a/change/react-native-windows-49284bd6-2b6c-4cc5-8124-9ba345612623.json b/change/react-native-windows-49284bd6-2b6c-4cc5-8124-9ba345612623.json new file mode 100644 index 00000000000..c9876a37bac --- /dev/null +++ b/change/react-native-windows-49284bd6-2b6c-4cc5-8124-9ba345612623.json @@ -0,0 +1,7 @@ +{ + "type": "none", + "comment": "fix getSize", + "packageName": "react-native-windows", + "email": "hmalothu@microsoft.com", + "dependentChangeType": "none" +} diff --git a/vnext/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp b/vnext/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp index c5e9c0b132f..dd81100575f 100644 --- a/vnext/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp +++ b/vnext/Microsoft.ReactNative/Modules/ImageViewManagerModule.cpp @@ -24,15 +24,28 @@ using namespace Windows::Storage::Streams; namespace Microsoft::ReactNative { +static const char *ERROR_INVALID_URI = "E_INVALID_URI"; +static const char *ERROR_GET_SIZE_FAILURE = "E_GET_SIZE_FAILURE"; + winrt::fire_and_forget GetImageSizeAsync( const winrt::Microsoft::ReactNative::IReactPropertyBag &properties, std::string uriString, winrt::Microsoft::ReactNative::JSValue &&headers, Mso::Functor successCallback, - Mso::Functor errorCallback) { + Mso::Functor errorCallback) { bool succeeded{false}; + const char *errorCode = ERROR_GET_SIZE_FAILURE; + std::string errorMessage; try { + // Validate URI is not empty + if (uriString.empty()) { + errorCode = ERROR_INVALID_URI; + errorMessage = "Cannot get the size of an image for an empty URI"; + errorCallback(errorCode, errorMessage); + co_return; + } + ReactImageSource source; source.uri = uriString; if (!headers.IsNull()) { @@ -45,28 +58,38 @@ winrt::fire_and_forget GetImageSizeAsync( winrt::hstring scheme{uri.SchemeName()}; bool needsDownload = (scheme == L"http") || (scheme == L"https"); bool inlineData = scheme == L"data"; + bool isLocalFile = (scheme == L"file") || (scheme == L"ms-appx") || (scheme == L"ms-appdata"); winrt::IRandomAccessStream memoryStream; - if (needsDownload) { + if (needsDownload || isLocalFile) { memoryStream = co_await GetImageStreamAsync(properties, source); } else if (inlineData) { memoryStream = co_await GetImageInlineDataAsync(source); } - auto result = wicBitmapSourceFromStream(memoryStream); - if (!std::get>(result)) { - auto imagingFactory = std::get>(result); - auto wicBmpSource = std::get>(result); - UINT width, height; - if (SUCCEEDED(wicBmpSource->GetSize(&width, &height))) { - successCallback(width, height); - succeeded = true; + + if (memoryStream) { + auto result = wicBitmapSourceFromStream(memoryStream); + if (!std::get>(result)) { + auto imagingFactory = std::get>(result); + auto wicBmpSource = std::get>(result); + UINT width, height; + if (SUCCEEDED(wicBmpSource->GetSize(&width, &height))) { + successCallback(width, height); + succeeded = true; + } } } - } catch (winrt::hresult_error const &) { + } catch (winrt::hresult_error const &e) { + errorMessage = "Failed to get image size: " + Microsoft::Common::Unicode::Utf16ToUtf8(std::wstring(e.message())) + + " for URI: " + uriString; } - if (!succeeded) - errorCallback(); + if (!succeeded) { + if (errorMessage.empty()) { + errorMessage = "Failed to get image size for URI: " + uriString; + } + errorCallback(errorCode, errorMessage); + } co_return; } @@ -85,7 +108,9 @@ void ImageLoader::getSize(std::string uri, React::ReactPromise{width, height}); }, - [result]() noexcept { result.Reject("Failed"); }); + [result](const char *errorCode, std::string errorMessage) noexcept { + result.Reject(React::ReactError{errorCode, errorMessage}); + }); }); } @@ -105,7 +130,9 @@ void ImageLoader::getSizeWithHeaders( [result](double width, double height) noexcept { result.Resolve(Microsoft::ReactNativeSpecs::ImageLoaderIOSSpec_getSizeWithHeaders_returnType{width, height}); }, - [result]() noexcept { result.Reject("Failed"); }); + [result](const char *errorCode, std::string errorMessage) noexcept { + result.Reject(React::ReactError{errorCode, errorMessage}); + }); }); } @@ -130,4 +157,4 @@ void ImageLoader::queryCache( result.Resolve(React::JSValueObject{}); } -} // namespace Microsoft::ReactNative +} // namespace Microsoft::ReactNative \ No newline at end of file From 44e1bed766b3f247d732fc25bf6bbf4c774d8911 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Feb 2026 16:38:14 +0000 Subject: [PATCH 032/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20lage=20from=202.1?= =?UTF-8?q?4.16=20to=202.14.17=20(#15591)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [lage](https://github.com/microsoft/lage) from 2.14.16 to 2.14.17. - [Commits](https://github.com/microsoft/lage/compare/lage_v2.14.16...lage_v2.14.17) --- updated-dependencies: - dependency-name: lage dependency-version: 2.14.17 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4e25d78e47f..1d63134b266 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8150,9 +8150,9 @@ kleur@^3.0.3: integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== lage@^2.7.1: - version "2.14.16" - resolved "https://registry.yarnpkg.com/lage/-/lage-2.14.16.tgz#cdc1d986a17188d33f990b3bd401773c71cfd54b" - integrity sha512-yQJcWA2DyCPHvPvWRIGdP3tSSYth9fStnCc5kajG+MEOz0XwvBb6N2H4JdShzyoDSherW3DOwRXeEvLDQVTeqA== + version "2.14.17" + resolved "https://registry.yarnpkg.com/lage/-/lage-2.14.17.tgz#0022919de8225010cb1f501ce72f1071c4550ab9" + integrity sha512-siTPYicgpWB5n7bLbV08mJL073qTyXHUCgrjBkU3KeMk+V45o77819L2D/6i1AcTGlCm4hS7ZCq1QUPQti0A4A== dependencies: glob-hasher "^1.4.2" optionalDependencies: From cf699ff435d674bd5bdc82da0448d9c7f2d1604c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 05:33:08 +0000 Subject: [PATCH 033/138] =?UTF-8?q?=F0=9F=93=A6=20Bump=20lodash=20from=204?= =?UTF-8?q?.17.21=20to=204.17.23=20(#15568)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1d63134b266..14967aa4020 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8357,9 +8357,9 @@ lodash.zip@^4.2.0: integrity sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg== lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@~4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + version "4.17.23" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.23.tgz#f113b0378386103be4f6893388c73d0bde7f2c5a" + integrity sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w== log-symbols@^2.2.0: version "2.2.0" From 3889efa3c151e13be4a83390eca55d2c1ec0d624 Mon Sep 17 00:00:00 2001 From: Nitin Chaudhary <31587527+Nitin-100@users.noreply.github.com> Date: Tue, 10 Feb 2026 15:39:22 +0530 Subject: [PATCH 034/138] Fix SHIFT+F10 keyboard shortcut for context menu in TextInput (#15621) Co-authored-by: Nitin Chaudhary --- ...-98ecf15d-5d4a-4fd9-8197-192eaf831e5f.json | 7 ++ vnext/Microsoft.ReactNative/ComponentView.idl | 2 + .../Composition.Input.idl | 7 ++ .../Fabric/ComponentView.cpp | 18 +++++ .../Fabric/ComponentView.h | 9 +++ .../Fabric/Composition/Composition.Input.cpp | 12 +++ .../Fabric/Composition/Composition.Input.h | 15 ++++ .../Composition/CompositionEventHandler.cpp | 75 +++++++++++++++++++ .../Composition/CompositionEventHandler.h | 1 + .../WindowsTextInputComponentView.cpp | 58 +++++++++----- .../TextInput/WindowsTextInputComponentView.h | 3 + 11 files changed, 188 insertions(+), 19 deletions(-) create mode 100644 change/react-native-windows-98ecf15d-5d4a-4fd9-8197-192eaf831e5f.json diff --git a/change/react-native-windows-98ecf15d-5d4a-4fd9-8197-192eaf831e5f.json b/change/react-native-windows-98ecf15d-5d4a-4fd9-8197-192eaf831e5f.json new file mode 100644 index 00000000000..bb9f9495f87 --- /dev/null +++ b/change/react-native-windows-98ecf15d-5d4a-4fd9-8197-192eaf831e5f.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Fix SHIFT+F10 keyboard shortcut for context menu in TextInput", + "packageName": "react-native-windows", + "email": "nitchaudhary@microsoft.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/ComponentView.idl b/vnext/Microsoft.ReactNative/ComponentView.idl index 2481b3344db..cd724297724 100644 --- a/vnext/Microsoft.ReactNative/ComponentView.idl +++ b/vnext/Microsoft.ReactNative/ComponentView.idl @@ -106,6 +106,8 @@ namespace Microsoft.ReactNative DOC_STRING("Used to handle key up events when this component is focused, or if a child component did not handle the key up") event Windows.Foundation.EventHandler KeyUp; event Windows.Foundation.EventHandler CharacterReceived; + DOC_STRING("Used to handle context menu key events (SHIFT+F10 or Context Menu key) when this component is focused") + event Windows.Foundation.EventHandler ContextMenuKey; event Windows.Foundation.EventHandler PointerPressed; event Windows.Foundation.EventHandler PointerReleased; event Windows.Foundation.EventHandler PointerMoved; diff --git a/vnext/Microsoft.ReactNative/Composition.Input.idl b/vnext/Microsoft.ReactNative/Composition.Input.idl index 68d9e4f5da6..f5348e0566d 100644 --- a/vnext/Microsoft.ReactNative/Composition.Input.idl +++ b/vnext/Microsoft.ReactNative/Composition.Input.idl @@ -34,6 +34,13 @@ namespace Microsoft.ReactNative.Composition.Input KeyboardSource KeyboardSource { get; }; }; + DOC_STRING("Event arguments for context menu key events (SHIFT+F10 or Context Menu key)") + interface ContextMenuKeyEventArgs requires RoutedEventArgs + { + DOC_STRING("Gets or sets whether the event was handled. Set to true to prevent default behavior.") + Boolean Handled { get; set; }; + }; + interface IPointerPointTransform { IPointerPointTransform Inverse { get; }; diff --git a/vnext/Microsoft.ReactNative/Fabric/ComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/ComponentView.cpp index 6c2aee7ba13..64d8a427941 100644 --- a/vnext/Microsoft.ReactNative/Fabric/ComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/ComponentView.cpp @@ -469,6 +469,16 @@ void ComponentView::CharacterReceived(winrt::event_token const &token) noexcept m_characterReceivedEvent.remove(token); } +winrt::event_token ComponentView::ContextMenuKey( + winrt::Windows::Foundation::EventHandler< + winrt::Microsoft::ReactNative::Composition::Input::ContextMenuKeyEventArgs> const &handler) noexcept { + return m_contextMenuKeyEvent.add(handler); +} + +void ComponentView::ContextMenuKey(winrt::event_token const &token) noexcept { + m_contextMenuKeyEvent.remove(token); +} + winrt::event_token ComponentView::PointerPressed( winrt::Windows::Foundation::EventHandler< winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs> const &handler) noexcept { @@ -609,6 +619,14 @@ void ComponentView::OnCharacterReceived( } } +void ComponentView::OnContextMenuKey( + const winrt::Microsoft::ReactNative::Composition::Input::ContextMenuKeyEventArgs &args) noexcept { + m_contextMenuKeyEvent(*this, args); + if (m_parent && !args.Handled()) { + winrt::get_self(m_parent)->OnContextMenuKey(args); + } +} + bool ComponentView::focusable() const noexcept { return false; } diff --git a/vnext/Microsoft.ReactNative/Fabric/ComponentView.h b/vnext/Microsoft.ReactNative/Fabric/ComponentView.h index 7700ac9e3fa..9f73308d436 100644 --- a/vnext/Microsoft.ReactNative/Fabric/ComponentView.h +++ b/vnext/Microsoft.ReactNative/Fabric/ComponentView.h @@ -167,6 +167,10 @@ struct ComponentView winrt::Windows::Foundation::EventHandler< winrt::Microsoft::ReactNative::Composition::Input::CharacterReceivedRoutedEventArgs> const &handler) noexcept; void CharacterReceived(winrt::event_token const &token) noexcept; + winrt::event_token ContextMenuKey( + winrt::Windows::Foundation::EventHandler< + winrt::Microsoft::ReactNative::Composition::Input::ContextMenuKeyEventArgs> const &handler) noexcept; + void ContextMenuKey(winrt::event_token const &token) noexcept; winrt::event_token PointerPressed( winrt::Windows::Foundation::EventHandler< winrt::Microsoft::ReactNative::Composition::Input::PointerRoutedEventArgs> const &handler) noexcept; @@ -253,6 +257,8 @@ struct ComponentView virtual void OnKeyUp(const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept; virtual void OnCharacterReceived( const winrt::Microsoft::ReactNative::Composition::Input::CharacterReceivedRoutedEventArgs &args) noexcept; + virtual void OnContextMenuKey( + const winrt::Microsoft::ReactNative::Composition::Input::ContextMenuKeyEventArgs &args) noexcept; protected: winrt::com_ptr m_builder; @@ -277,6 +283,9 @@ struct ComponentView winrt::event> m_characterReceivedEvent; + winrt::event> + m_contextMenuKeyEvent; winrt::event> m_pointerPressedEvent; diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp index 47ecc141b25..6e925c40584 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.cpp @@ -136,6 +136,18 @@ winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource CharacterRecei return m_source; } +ContextMenuKeyEventArgs::ContextMenuKeyEventArgs(facebook::react::Tag tag) : m_tag(tag) {} + +int32_t ContextMenuKeyEventArgs::OriginalSource() noexcept { + return m_tag; +} +bool ContextMenuKeyEventArgs::Handled() noexcept { + return m_handled; +} +void ContextMenuKeyEventArgs::Handled(bool value) noexcept { + m_handled = value; +} + Pointer::Pointer(winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType type, uint32_t id) : m_type(type), m_id(id) {} diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h b/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h index 3a8bb6f042d..5d87eb928fd 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/Composition.Input.h @@ -78,6 +78,21 @@ struct CharacterReceivedRoutedEventArgs const winrt::Microsoft::ReactNative::Composition::Input::KeyboardSource m_source; }; +struct ContextMenuKeyEventArgs : winrt::implements< + ContextMenuKeyEventArgs, + winrt::Microsoft::ReactNative::Composition::Input::ContextMenuKeyEventArgs, + winrt::Microsoft::ReactNative::Composition::Input::RoutedEventArgs> { + ContextMenuKeyEventArgs(facebook::react::Tag tag); + + int32_t OriginalSource() noexcept; + bool Handled() noexcept; + void Handled(bool value) noexcept; + + private: + facebook::react::Tag m_tag{-1}; + bool m_handled{false}; +}; + struct Pointer : PointerT { Pointer(winrt::Microsoft::ReactNative::Composition::Input::PointerDeviceType type, uint32_t id); diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp index 556409a0fee..0ff00758bb7 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.cpp @@ -320,6 +320,32 @@ void CompositionEventHandler::Initialize() noexcept { } } }); + + m_contextMenuKeyToken = + keyboardSource.ContextMenuKey([wkThis = weak_from_this()]( + winrt::Microsoft::UI::Input::InputKeyboardSource const & /*source*/, + winrt::Microsoft::UI::Input::ContextMenuKeyEventArgs const &args) { + if (auto strongThis = wkThis.lock()) { + if (auto strongRootView = strongThis->m_wkRootView.get()) { + if (strongThis->SurfaceId() == -1) + return; + + auto focusedComponent = strongThis->RootComponentView().GetFocusedComponent(); + if (focusedComponent) { + auto tag = + winrt::get_self(focusedComponent) + ->Tag(); + auto contextMenuArgs = winrt::make< + winrt::Microsoft::ReactNative::Composition::Input::implementation::ContextMenuKeyEventArgs>(tag); + winrt::get_self(focusedComponent) + ->OnContextMenuKey(contextMenuArgs); + if (contextMenuArgs.Handled()) { + args.Handled(true); + } + } + } + } + }); } } @@ -336,6 +362,7 @@ CompositionEventHandler::~CompositionEventHandler() { keyboardSource.KeyDown(m_keyDownToken); keyboardSource.KeyUp(m_keyUpToken); keyboardSource.CharacterReceived(m_characterReceivedToken); + keyboardSource.ContextMenuKey(m_contextMenuKeyToken); } } @@ -443,6 +470,54 @@ int64_t CompositionEventHandler::SendMessage(HWND hwnd, uint32_t msg, uint64_t w } return 0; } + case WM_RBUTTONDOWN: { + if (auto strongRootView = m_wkRootView.get()) { + auto pp = winrt::make( + hwnd, msg, wParam, lParam, strongRootView.ScaleFactor()); + onPointerPressed(pp, GetKeyModifiers(wParam)); + } + return 0; + } + case WM_RBUTTONUP: { + if (auto strongRootView = m_wkRootView.get()) { + auto pp = winrt::make( + hwnd, msg, wParam, lParam, strongRootView.ScaleFactor()); + onPointerReleased(pp, GetKeyModifiers(wParam)); + } + return 0; + } + case WM_MBUTTONDOWN: { + if (auto strongRootView = m_wkRootView.get()) { + auto pp = winrt::make( + hwnd, msg, wParam, lParam, strongRootView.ScaleFactor()); + onPointerPressed(pp, GetKeyModifiers(wParam)); + } + return 0; + } + case WM_MBUTTONUP: { + if (auto strongRootView = m_wkRootView.get()) { + auto pp = winrt::make( + hwnd, msg, wParam, lParam, strongRootView.ScaleFactor()); + onPointerReleased(pp, GetKeyModifiers(wParam)); + } + return 0; + } + case WM_XBUTTONDOWN: { + if (auto strongRootView = m_wkRootView.get()) { + auto pp = winrt::make( + hwnd, msg, wParam, lParam, strongRootView.ScaleFactor()); + onPointerPressed(pp, GetKeyModifiers(wParam)); + } + return 0; + } + case WM_XBUTTONUP: { + if (auto strongRootView = m_wkRootView.get()) { + auto pp = winrt::make( + hwnd, msg, wParam, lParam, strongRootView.ScaleFactor()); + onPointerReleased(pp, GetKeyModifiers(wParam)); + } + return 0; + } case WM_POINTERUP: { if (auto strongRootView = m_wkRootView.get()) { auto pp = winrt::make( diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h index 810b2872fb9..82e80b3dde8 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/CompositionEventHandler.h @@ -175,6 +175,7 @@ class CompositionEventHandler : public std::enable_shared_from_this { auto pt = m_outer->getClientOffset(); m_outer->m_caretVisual.Position({x - pt.x, y - pt.y}); + m_outer->m_caretPosition = {x, y}; return true; } @@ -696,17 +697,10 @@ void WindowsTextInputComponentView::OnPointerPressed( } if (m_textServices && msg) { - if (msg == WM_RBUTTONUP && !windowsTextInputProps().contextMenuHidden) { - ShowContextMenu(position); - args.Handled(true); - } else if (msg == WM_RBUTTONUP && windowsTextInputProps().contextMenuHidden) { - args.Handled(true); - } else { - LRESULT lresult; - DrawBlock db(*this); - auto hr = m_textServices->TxSendMessage(msg, static_cast(wParam), static_cast(lParam), &lresult); - args.Handled(hr != S_FALSE); - } + LRESULT lresult; + DrawBlock db(*this); + auto hr = m_textServices->TxSendMessage(msg, static_cast(wParam), static_cast(lParam), &lresult); + args.Handled(hr != S_FALSE); } // Emits the OnPressIn event @@ -768,10 +762,18 @@ void WindowsTextInputComponentView::OnPointerReleased( } if (m_textServices && msg) { - LRESULT lresult; - DrawBlock db(*this); - auto hr = m_textServices->TxSendMessage(msg, static_cast(wParam), static_cast(lParam), &lresult); - args.Handled(hr != S_FALSE); + // Show context menu on right button release (standard Windows behavior) + if (msg == WM_RBUTTONUP && !windowsTextInputProps().contextMenuHidden) { + ShowContextMenu(LocalToScreen(position)); + args.Handled(true); + } else if (msg == WM_RBUTTONUP) { + // Context menu is hidden - don't mark as handled, let app add custom behavior + } else { + LRESULT lresult; + DrawBlock db(*this); + auto hr = m_textServices->TxSendMessage(msg, static_cast(wParam), static_cast(lParam), &lresult); + args.Handled(hr != S_FALSE); + } } // Emits the OnPressOut event @@ -1879,6 +1881,21 @@ void WindowsTextInputComponentView::updateSpellCheck(bool enable) noexcept { m_textServices->TxSendMessage(EM_SETLANGOPTIONS, IMF_SPELLCHECKING, enable ? newLangOptions : 0, &lresult)); } +void WindowsTextInputComponentView::OnContextMenuKey( + const winrt::Microsoft::ReactNative::Composition::Input::ContextMenuKeyEventArgs &args) noexcept { + // Handle context menu key event (SHIFT+F10 or Context Menu key) + if (!windowsTextInputProps().contextMenuHidden) { + // m_caretPosition is stored from TxSetCaretPos in RichEdit client rect space (physical pixels). + // LocalToScreen expects logical (DIP) coordinates, so divide by pointScaleFactor. + auto screenPt = LocalToScreen(winrt::Windows::Foundation::Point{ + static_cast(m_caretPosition.x) / m_layoutMetrics.pointScaleFactor, + static_cast(m_caretPosition.y) / m_layoutMetrics.pointScaleFactor}); + ShowContextMenu(screenPt); + args.Handled(true); + } + // If contextMenuHidden, don't mark as handled - let app handle it +} + void WindowsTextInputComponentView::ShowContextMenu(const winrt::Windows::Foundation::Point &position) noexcept { HMENU menu = CreatePopupMenu(); if (!menu) @@ -1898,13 +1915,16 @@ void WindowsTextInputComponentView::ShowContextMenu(const winrt::Windows::Founda AppendMenuW(menu, MF_STRING | (canPaste ? 0 : MF_GRAYED), 3, L"Paste"); AppendMenuW(menu, MF_STRING | (!isEmpty && !isReadOnly ? 0 : MF_GRAYED), 4, L"Select All"); - POINT cursorPos; - GetCursorPos(&cursorPos); - HWND hwnd = GetActiveWindow(); int cmd = TrackPopupMenu( - menu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD | TPM_NONOTIFY, cursorPos.x, cursorPos.y, 0, hwnd, NULL); + menu, + TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RETURNCMD | TPM_NONOTIFY, + static_cast(position.X), + static_cast(position.Y), + 0, + hwnd, + NULL); if (cmd == 1) { // Cut m_textServices->TxSendMessage(WM_CUT, 0, 0, &res); diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h index 26dc207961c..634b5884ab9 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.h @@ -67,6 +67,8 @@ struct WindowsTextInputComponentView void OnKeyUp(const winrt::Microsoft::ReactNative::Composition::Input::KeyRoutedEventArgs &args) noexcept override; void OnCharacterReceived(const winrt::Microsoft::ReactNative::Composition::Input::CharacterReceivedRoutedEventArgs &args) noexcept override; + void OnContextMenuKey( + const winrt::Microsoft::ReactNative::Composition::Input::ContextMenuKeyEventArgs &args) noexcept override; void onMounted() noexcept override; std::optional getAccessiblityValue() noexcept override; @@ -146,6 +148,7 @@ struct WindowsTextInputComponentView DWORD m_propBitsMask{0}; DWORD m_propBits{0}; HCURSOR m_hcursor{nullptr}; + POINT m_caretPosition{0, 0}; std::chrono::steady_clock::time_point m_lastClickTime{}; std::vector m_submitKeyEvents; }; From 8f763bfb52d85cc410e099d38d92fedb2e4cf5f7 Mon Sep 17 00:00:00 2001 From: Andrew Coates <30809111+acoates-ms@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:33:16 -0800 Subject: [PATCH 035/138] Codegen: Fix issues with more complex props and event types (#15647) * Fix issues with more complex props and event types * Change files * lint * fix --- ...-1a60d2fe-5491-4857-95e8-f2db0f4ae9c8.json | 7 + .../generators/GenerateComponentWindows.ts | 40 ++-- .../src/MovingLightNativeComponent.ts | 11 +- .../SampleCustomComponent/CalendarView.cpp | 2 +- .../SampleCustomComponent/CalendarView.g.h | 8 +- .../SampleCustomComponent/MovingLight.g.h | 192 +++++++++++++++++- 6 files changed, 236 insertions(+), 24 deletions(-) create mode 100644 change/@react-native-windows-codegen-1a60d2fe-5491-4857-95e8-f2db0f4ae9c8.json diff --git a/change/@react-native-windows-codegen-1a60d2fe-5491-4857-95e8-f2db0f4ae9c8.json b/change/@react-native-windows-codegen-1a60d2fe-5491-4857-95e8-f2db0f4ae9c8.json new file mode 100644 index 00000000000..fb230d2c766 --- /dev/null +++ b/change/@react-native-windows-codegen-1a60d2fe-5491-4857-95e8-f2db0f4ae9c8.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Fix issues with more complex props and event types", + "packageName": "@react-native-windows/codegen", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/@react-native-windows/codegen/src/generators/GenerateComponentWindows.ts b/packages/@react-native-windows/codegen/src/generators/GenerateComponentWindows.ts index b08d0e51f16..1d000e27630 100644 --- a/packages/@react-native-windows/codegen/src/generators/GenerateComponentWindows.ts +++ b/packages/@react-native-windows/codegen/src/generators/GenerateComponentWindows.ts @@ -70,7 +70,7 @@ struct ::_OBJECT_NAME_:: { `; const eventEmitterMethodTemplate = ` void ::_EVENT_NAME_::(::_EVENT_OBJECT_TYPE_:: &value) const { - m_eventEmitter.DispatchEvent(L"::_EVENT_NAME_NO_ON_::", [value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) { + m_eventEmitter.DispatchEvent(L"::_EVENT_NAME_NO_ON_::", [&value](const winrt::Microsoft::ReactNative::IJSValueWriter writer) { winrt::Microsoft::ReactNative::WriteValue(writer, value); }); }`; @@ -344,7 +344,9 @@ export function createComponentGenerator({ const propInitializers = componentShape.props .map(prop => { - return ` ${prop.name} = cloneFromProps->${prop.name};`; + if (prop.typeAnnotation.type === 'MixedTypeAnnotation') + return ` ${prop.name} = cloneFromProps->${prop.name}.Copy();`; + else return ` ${prop.name} = cloneFromProps->${prop.name};`; }) .join('\n'); @@ -414,7 +416,30 @@ export function createComponentGenerator({ }) .join('\n\n'); + const eventObjectUsings = eventObjectAliases.jobs + .map(eventObjectTypeName => { + return ` using ${eventObjectTypeName.replace('on', 'On')} = ${ + getAliasCppName(eventObjectTypeName) /*.replace('_on', '_On')*/ + };`; + }) + .join('\n'); + + // Collect all the alias types for the event objects so that we can generate the unnamed types within objects + eventObjectAliases.jobs.forEach(eventObjectTypeName => { + const eventObjectType = + eventObjectAliases.types[eventObjectTypeName]!; + eventObjectType.properties.forEach(property => { + translateComponentEventType( + property.typeAnnotation, + eventObjectAliases, + eventObjectTypeName, + cppCodegenOptions, + ); + }); + }); + const eventObjects = eventObjectAliases.jobs + .reverse() .map(eventObjectTypeName => { const eventObjectType = eventObjectAliases.types[eventObjectTypeName]!; @@ -437,21 +462,12 @@ export function createComponentGenerator({ return eventsObjectTemplate .replace( /::_OBJECT_NAME_::/g, - `${componentName}_${eventObjectTypeName.replace('on', 'On')}`, + getAliasCppName(eventObjectTypeName) /*.replace('_on', '_On')*/, ) .replace(/::_OBJECT_FIELDS_::/g, eventObjectFields); }) .join('\n'); - const eventObjectUsings = eventObjectAliases.jobs - .map(eventObjectTypeName => { - return ` using ${eventObjectTypeName.replace( - 'on', - 'On', - )} = ${componentName}_${eventObjectTypeName.replace('on', 'On')};`; - }) - .join('\n'); - const eventEmitter = eventEmitterTemplate .replace(/::_COMPONENT_EVENT_OBJECT_TYPES_::/g, eventObjects) .replace(/::_EVENT_EMITTER_METHODS_::/g, eventEmitterMethods) diff --git a/packages/sample-custom-component/src/MovingLightNativeComponent.ts b/packages/sample-custom-component/src/MovingLightNativeComponent.ts index e452632a2a8..18641f63c4b 100644 --- a/packages/sample-custom-component/src/MovingLightNativeComponent.ts +++ b/packages/sample-custom-component/src/MovingLightNativeComponent.ts @@ -1,4 +1,4 @@ -import {codegenNativeComponent, codegenNativeCommands} from 'react-native'; +import { codegenNativeComponent, codegenNativeCommands } from 'react-native'; import type { ColorValue, HostComponent, ViewProps } from 'react-native'; import type { @@ -7,6 +7,7 @@ import type { Double, Int32, WithDefault, + UnsafeMixed, } from 'react-native/Libraries/Types/CodegenTypes'; export type SomethingEvent = { @@ -17,12 +18,16 @@ export type SomethingEvent = { export interface MovingLightProps extends ViewProps { // Props size?: WithDefault; - color?: ColorValue + color?: ColorValue; + testMixed?: UnsafeMixed; eventParam?: string; - objectProp?: { number: Double, string: string}; + objectProp?: { number: Double, string: string }; // Events onSomething?: DirectEventHandler, + onTestObjectEvent?: DirectEventHandler<{ target: Int32; testObject: UnsafeMixed }>; + onEventWithInlineTypes?: DirectEventHandler<{ target: Int32; contentInset: { top: Double; bottom: Double; left: Double; right: Double }; contentOffset: { x: Double; y: Double }; contentSize: { width: Double; height: Double }; layoutMeasurement: { width: Double; height: Double }; velocity: { x: Double; y: Double }; isUserTriggered: boolean }>; + onEventWithMultipleAliasTypes?: DirectEventHandler<{ target: Int32; contentInset: { top: Double; bottom: Double; left: Double; right: Double }; contentOffset: { x: Double; y: Double }; contentSize: { width: Double; height: Double }; layoutMeasurement: { width: Double; height: Double }; velocity: { x: Double; y: Double }; isUserTriggered: boolean }>; } diff --git a/packages/sample-custom-component/windows/SampleCustomComponent/CalendarView.cpp b/packages/sample-custom-component/windows/SampleCustomComponent/CalendarView.cpp index 4557d956634..0927016080c 100644 --- a/packages/sample-custom-component/windows/SampleCustomComponent/CalendarView.cpp +++ b/packages/sample-custom-component/windows/SampleCustomComponent/CalendarView.cpp @@ -28,7 +28,7 @@ struct CalendarViewComponentView : public winrt::implements(); size = cloneFromProps->size; color = cloneFromProps->color; + testMixed = cloneFromProps->testMixed.Copy(); eventParam = cloneFromProps->eventParam; objectProp = cloneFromProps->objectProp; } @@ -51,6 +52,9 @@ struct MovingLightProps : winrt::implements eventParam; @@ -60,8 +64,167 @@ struct MovingLightProps : winrt::implements Date: Tue, 10 Feb 2026 18:04:55 -0800 Subject: [PATCH 036/138] Fix issue when creating a ContentIslandComponentView when the root ReactNativeIsland is not connected (#15649) * Fix issue when creating a ContentIslandComponentView when the root ReactNativeIsland is not connected * Change files * Unregister from state changed events after we have used it to connect --- ...-b74972ac-3ce7-4596-b61b-2b7fc31ac233.json | 7 +++ .../ContentIslandComponentView.cpp | 45 ++++++++++++++++++- .../Composition/ContentIslandComponentView.h | 7 +++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 change/react-native-windows-b74972ac-3ce7-4596-b61b-2b7fc31ac233.json diff --git a/change/react-native-windows-b74972ac-3ce7-4596-b61b-2b7fc31ac233.json b/change/react-native-windows-b74972ac-3ce7-4596-b61b-2b7fc31ac233.json new file mode 100644 index 00000000000..aab076a8168 --- /dev/null +++ b/change/react-native-windows-b74972ac-3ce7-4596-b61b-2b7fc31ac233.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Fix issue when creating a ContentIslandComponentView when the root ReactNativeIsland is not connected", + "packageName": "react-native-windows", + "email": "30809111+acoates-ms@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp index 84d73ef2899..1d49b7eb8d3 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp @@ -42,9 +42,19 @@ ContentIslandComponentView::ContentIslandComponentView( }); } -void ContentIslandComponentView::OnMounted() noexcept { +winrt::Microsoft::UI::Content::ContentIsland ContentIslandComponentView::ParentContentIsland() noexcept { + auto root = rootComponentView(); + if (!root) + return nullptr; + return root->parentContentIsland(); +} + +void ContentIslandComponentView::ConnectInternal() noexcept { + if (!m_islandToConnect) + return; + m_childSiteLink = winrt::Microsoft::UI::Content::ChildSiteLink::Create( - rootComponentView()->parentContentIsland(), + m_parentContentIsland, winrt::Microsoft::ReactNative::Composition::Experimental::CompositionContextHelper::InnerVisual(Visual()) .as()); m_childSiteLink.ActualSize({m_layoutMetrics.frame.size.width, m_layoutMetrics.frame.size.height}); @@ -68,6 +78,7 @@ void ContentIslandComponentView::OnMounted() noexcept { m_childSiteLink.Connect(m_islandToConnect); m_islandToConnect = nullptr; } + UnregisterForRootIslandEvents(); ParentLayoutChanged(); auto view = Parent(); @@ -84,12 +95,42 @@ void ContentIslandComponentView::OnMounted() noexcept { } } +void ContentIslandComponentView::RegisterForRootIslandEvents() noexcept { + m_parentContentIsland = ParentContentIsland(); + + if (m_parentContentIsland.IsConnected()) { + ConnectInternal(); + } else { + m_islandStateChangedToken = m_parentContentIsland.StateChanged( + [wkThis = get_weak()]( + const winrt::Microsoft::UI::Content::ContentIsland & /*island*/, + const winrt::Microsoft::UI::Content::ContentIslandStateChangedEventArgs & /*args*/) { + if (auto strongThis = wkThis.get()) { + strongThis->ConnectInternal(); + } + }); + } +} + +void ContentIslandComponentView::UnregisterForRootIslandEvents() noexcept { + if (m_islandStateChangedToken) { + m_parentContentIsland.StateChanged(m_islandStateChangedToken); + m_islandStateChangedToken = {}; + m_parentContentIsland = nullptr; + } +} + +void ContentIslandComponentView::OnMounted() noexcept { + RegisterForRootIslandEvents(); +} + void ContentIslandComponentView::OnUnmounted() noexcept { m_layoutMetricChangedRevokers.clear(); if (m_navigationHostDepartFocusRequestedToken && m_navigationHost) { m_navigationHost.DepartFocusRequested(m_navigationHostDepartFocusRequestedToken); m_navigationHostDepartFocusRequestedToken = {}; } + UnregisterForRootIslandEvents(); } void ContentIslandComponentView::ParentLayoutChanged() noexcept { diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h index 7c85ee1cc01..fd3d90cc3e6 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.h @@ -58,9 +58,16 @@ struct ContentIslandComponentView : ContentIslandComponentViewT m_layoutMetricChangedRevokers; From 30939243e2a24ccb9e252694ddfb7d94fd4fa317 Mon Sep 17 00:00:00 2001 From: Vineeth <66076509+vineethkuttan@users.noreply.github.com> Date: Wed, 11 Feb 2026 14:07:10 +0530 Subject: [PATCH 037/138] Expose AutomationOption Setter for ChildSite (#15622) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Enable Fragment‑Based Automation for ChildSite Without XAML Islands * change files * expose childsite automation option * remove unwanted changes * Remove Sample XAML Custom Component i) will do it a seperate PR * final changes * format changes --- ...indows-cdc988c8-8058-4f35-a668-0fc97bf4f9a8.json | 7 +++++++ .../Composition/ContentIslandComponentView.cpp | 13 +++++++------ .../ReactCompositionViewComponentBuilder.cpp | 10 ++++++++++ .../ReactCompositionViewComponentBuilder.h | 6 ++++++ .../IReactCompositionViewComponentBuilder.idl | 2 ++ 5 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 change/react-native-windows-cdc988c8-8058-4f35-a668-0fc97bf4f9a8.json diff --git a/change/react-native-windows-cdc988c8-8058-4f35-a668-0fc97bf4f9a8.json b/change/react-native-windows-cdc988c8-8058-4f35-a668-0fc97bf4f9a8.json new file mode 100644 index 00000000000..ee7da3a9438 --- /dev/null +++ b/change/react-native-windows-cdc988c8-8058-4f35-a668-0fc97bf4f9a8.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Expose AutomationOption Setter for ChildSite", + "packageName": "react-native-windows", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} \ No newline at end of file diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp index 1d49b7eb8d3..67be950c830 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ContentIslandComponentView.cpp @@ -253,13 +253,14 @@ void ContentIslandComponentView::prepareForRecycle() noexcept { } void ContentIslandComponentView::ConfigureChildSiteLinkAutomation() noexcept { - // Use FrameworkBased to let the XamlIsland manage its own framework-level accessibility tree - // and raise focus events naturally. This tells the system that the child island has its own - // framework (WinUI/XAML) that manages automation. - m_childSiteLink.AutomationOption(winrt::Microsoft::UI::Content::ContentAutomationOptions::FrameworkBased); + // Determine the automation option to use: + // 1. If explicitly set via builder, use that + // 2. Otherwise, default to FrameworkBased + if (m_builder) { + m_childSiteLink.AutomationOption(m_builder->ContentIslandChildSiteAutomationOption().value_or( + winrt::Microsoft::UI::Content::ContentAutomationOptions::FrameworkBased)); + } - // When using FrameworkBased mode, we don't register automation callbacks - let the XamlIsland handle its own UIA - // tree. if (m_innerAutomationProvider) { m_innerAutomationProvider->SetChildSiteLink(m_childSiteLink); } diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp b/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp index c9f250f1e06..3e26bdf2355 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.cpp @@ -113,6 +113,16 @@ void ReactCompositionViewComponentBuilder::SetContentIslandComponentViewInitiali }; } +void ReactCompositionViewComponentBuilder::SetContentIslandChildSiteAutomationOption( + winrt::Microsoft::UI::Content::ContentAutomationOptions automationOption) noexcept { + m_contentIslandChildSiteAutomationOption = automationOption; +} + +std::optional +ReactCompositionViewComponentBuilder::ContentIslandChildSiteAutomationOption() const noexcept { + return m_contentIslandChildSiteAutomationOption; +} + void ReactCompositionViewComponentBuilder::SetPortalComponentViewInitializer( const PortalComponentViewInitializer &initializer) noexcept { m_fnCreateView = [initializer]( diff --git a/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h b/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h index c015b33a5fb..116764a2469 100644 --- a/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h +++ b/vnext/Microsoft.ReactNative/Fabric/Composition/ReactCompositionViewComponentBuilder.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "winrt/Microsoft.ReactNative.Composition.Experimental.h" #include "winrt/Microsoft.ReactNative.Composition.h" #include "winrt/Microsoft.ReactNative.h" @@ -46,6 +47,8 @@ struct ReactCompositionViewComponentBuilder public: // Composition::IReactCompositionViewComponentBuilder void SetViewComponentViewInitializer(const ViewComponentViewInitializer &initializer) noexcept; void SetContentIslandComponentViewInitializer(const ComponentIslandComponentViewInitializer &initializer) noexcept; + void SetContentIslandChildSiteAutomationOption( + winrt::Microsoft::UI::Content::ContentAutomationOptions automationOption) noexcept; void SetPortalComponentViewInitializer(const PortalComponentViewInitializer &initializer) noexcept; void SetCreateVisualHandler(CreateVisualDelegate impl) noexcept; void SetViewFeatures(ComponentViewFeatures viewFeatures) noexcept; @@ -81,6 +84,8 @@ struct ReactCompositionViewComponentBuilder const winrt::Microsoft::ReactNative::Composition::Experimental::IVisualToMountChildrenIntoDelegate & VisualToMountChildrenIntoHandler() const noexcept; const CreateAutomationPeerDelegate &CreateAutomationPeerHandler() const noexcept; + std::optional ContentIslandChildSiteAutomationOption() + const noexcept; private: void InitializeComponentView(const winrt::Microsoft::ReactNative::ComponentView &view) noexcept; @@ -114,6 +119,7 @@ struct ReactCompositionViewComponentBuilder m_visualToMountChildrenIntoHandler; UpdateLayoutMetricsDelegate m_updateLayoutMetricsHandler; bool m_xamlSupport{false}; + std::optional m_contentIslandChildSiteAutomationOption; }; } // namespace winrt::Microsoft::ReactNative::Composition diff --git a/vnext/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl b/vnext/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl index 4ddbdc43b54..bbc7fd90187 100644 --- a/vnext/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl +++ b/vnext/Microsoft.ReactNative/IReactCompositionViewComponentBuilder.idl @@ -21,6 +21,7 @@ namespace Microsoft.ReactNative.Composition [experimental] delegate void ComponentIslandComponentViewInitializer(ContentIslandComponentView view); + [webhosthidden] [experimental] delegate void PortalComponentViewInitializer(PortalComponentView view); @@ -68,6 +69,7 @@ namespace Microsoft.ReactNative.Composition { void SetViewComponentViewInitializer(ViewComponentViewInitializer initializer); void SetContentIslandComponentViewInitializer(ComponentIslandComponentViewInitializer initializer); + void SetContentIslandChildSiteAutomationOption(Microsoft.UI.Content.ContentAutomationOptions automationOption); void SetPortalComponentViewInitializer(PortalComponentViewInitializer initializer); void SetCreateVisualHandler(CreateVisualDelegate impl); void SetViewFeatures(ComponentViewFeatures viewFeatures); From 9a59a5e833886b5d9bdccb1bf20f99a35d7500bc Mon Sep 17 00:00:00 2001 From: Vineeth <66076509+vineethkuttan@users.noreply.github.com> Date: Wed, 11 Feb 2026 17:55:36 +0530 Subject: [PATCH 038/138] Integrate 0.83.0-nightly-20250917-18cb4edfa (#15645) * update community template * commit with conflicts * resolve conflicts * validate override fix * fixed yarn build issues * build issue fix * Change files * fix change files * change files * lint issue fix * Switch Component issue fix * lint fix * update snapshots --- ...-9daf089d-fac0-4026-a8e0-30b39817cbc3.json | 7 + ...-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json | 7 + ...-887fac2c-05c0-47f8-a7af-693074e3f0ed.json | 7 + .../react-native-win32-tester/overrides.json | 4 +- .../react-native-win32-tester/package.json | 6 +- .../src/js/utils/RNTesterList.win32.js | 10 + .../react-native-win32/.flowconfig | 2 +- .../react-native-win32/overrides.json | 10 +- .../react-native-win32/package.json | 24 +- .../Components/TextInput/TextInput.win32.js | 24 +- .../Libraries/Components/View/View.win32.js | 30 +- .../Pressability/Pressability.win32.js | 10 +- .../ReactNative/PaperUIManager.win32.js | 14 +- .../Renderer/shims/ReactNativeTypes.win32.js | 3 +- .../Text/TextNativeComponent.win32.js | 10 + .../Libraries/Utilities/FocusManager.win32.js | 4 +- .../react-native-win32/src-win/index.win32.js | 8 + .../automation-channel/package.json | 5 +- .../tester/overrides.json | 6 +- .../@react-native-windows/tester/package.json | 8 +- .../FlatList/BaseFlatListExample.windows.js | 70 +- .../src/js/utils/RNTesterList.windows.js | 10 + .../@react-native/monorepo/overrides.json | 4 +- packages/@react-native/monorepo/package.json | 18 +- .../DrawerLayoutAndroidExample.js | 1 - .../PointerEventPointerOverOut.js | 1 - .../js/examples/Filter/FilterExample.js | 64 +- .../examples/FlatList/BaseFlatListExample.js | 70 +- .../Performance/PerformanceApiExample.js | 264 +++++ .../SectionList/SectionListBaseExample.js | 40 +- .../js/examples/Text/TextExample.ios.js | 44 +- .../js/examples/TextInput/ExampleTextInput.js | 6 +- .../tester/js/utils/RNTesterList.android.js | 10 + .../tester/js/utils/RNTesterList.ios.js | 10 + packages/@react-native/tester/overrides.json | 22 +- packages/@react-native/tester/package.json | 4 +- .../babel-react-native-config/package.json | 6 +- .../@rnw-scripts/eslint-config/package.json | 2 +- .../@rnw-scripts/integrate-rn/package.json | 4 +- .../metro-dev-config/package.json | 4 +- packages/e2e-test-app-fabric/package.json | 6 +- .../__snapshots__/snapshotPages.test.js.snap | 612 ++++++++++- packages/playground/package.json | 6 +- packages/sample-app-fabric/package.json | 6 +- packages/sample-custom-component/package.json | 7 +- vnext/.flowconfig | 7 +- .../WindowsTextInputComponentDescriptor.h | 2 +- vnext/ReactCommon/ReactCommon.vcxproj | 4 +- .../jsinspector-modern/NetworkIOAgent.cpp | 16 +- .../jsinspector-modern/network/HttpUtils.cpp | 3 +- vnext/Scripts/creaternwapp.cmd | 2 +- vnext/Shared/Shared.vcxitems | 4 +- vnext/Shared/Shared.vcxitems.filters | 3 +- vnext/overrides.json | 27 +- vnext/package.json | 26 +- .../Components/Switch/Switch.windows.js | 2 +- .../Touchable/TouchableBounce.windows.js | 14 +- .../ReactNative/PaperUIManager.windows.js | 6 +- .../shims/ReactNativeTypes.windows.js | 3 +- vnext/src-win/index.windows.js | 6 + vnext/src-win/index.windows.js.flow | 3 + .../components/SwitchNativeComponent.js | 62 ++ yarn.lock | 960 +++++++++++++++--- 63 files changed, 2209 insertions(+), 431 deletions(-) create mode 100644 change/@office-iss-react-native-win32-9daf089d-fac0-4026-a8e0-30b39817cbc3.json create mode 100644 change/@react-native-windows-automation-channel-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json create mode 100644 change/react-native-windows-887fac2c-05c0-47f8-a7af-693074e3f0ed.json create mode 100644 packages/@react-native/tester/js/examples/Performance/PerformanceApiExample.js create mode 100644 vnext/src-win/src/private/specs_DEPRECATED/components/SwitchNativeComponent.js diff --git a/change/@office-iss-react-native-win32-9daf089d-fac0-4026-a8e0-30b39817cbc3.json b/change/@office-iss-react-native-win32-9daf089d-fac0-4026-a8e0-30b39817cbc3.json new file mode 100644 index 00000000000..07545cb0452 --- /dev/null +++ b/change/@office-iss-react-native-win32-9daf089d-fac0-4026-a8e0-30b39817cbc3.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.83.0-nightly-20250917-18cb4edfa", + "packageName": "@office-iss/react-native-win32", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/@react-native-windows-automation-channel-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json b/change/@react-native-windows-automation-channel-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json new file mode 100644 index 00000000000..18d33915c17 --- /dev/null +++ b/change/@react-native-windows-automation-channel-ab4f18d2-84ab-4a21-9c52-d0f30180636f.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.83.0-nightly-20250917-18cb4edfa", + "packageName": "@react-native-windows/automation-channel", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/change/react-native-windows-887fac2c-05c0-47f8-a7af-693074e3f0ed.json b/change/react-native-windows-887fac2c-05c0-47f8-a7af-693074e3f0ed.json new file mode 100644 index 00000000000..73890c67032 --- /dev/null +++ b/change/react-native-windows-887fac2c-05c0-47f8-a7af-693074e3f0ed.json @@ -0,0 +1,7 @@ +{ + "type": "prerelease", + "comment": "Integrate 0.83.0-nightly-20250917-18cb4edfa", + "packageName": "react-native-windows", + "email": "66076509+vineethkuttan@users.noreply.github.com", + "dependentChangeType": "patch" +} diff --git a/packages/@office-iss/react-native-win32-tester/overrides.json b/packages/@office-iss/react-native-win32-tester/overrides.json index cabcb17484a..7fa4e6e7910 100644 --- a/packages/@office-iss/react-native-win32-tester/overrides.json +++ b/packages/@office-iss/react-native-win32-tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win32/**" ], - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "type": "patch", @@ -42,7 +42,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.win32.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "8cd219abae140e98f9578432954fc9ef62421308" + "baseHash": "aeb0275507e7c508cdf7c2ceec49f9e95ef4e1ec" } ] } \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32-tester/package.json b/packages/@office-iss/react-native-win32-tester/package.json index e55d1a91bad..ce06785812f 100644 --- a/packages/@office-iss/react-native-win32-tester/package.json +++ b/packages/@office-iss/react-native-win32-tester/package.json @@ -19,7 +19,7 @@ "peerDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.305", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc" + "react-native": "0.83.0-nightly-20250917-18cb4edfa" }, "devDependencies": { "@office-iss/react-native-win32": "^0.0.0-canary.305", @@ -30,11 +30,11 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-platform-override": "0.0.0-canary.1019", "typescript": "5.0.4" }, "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js b/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js index 032bd9fe6d5..c951141a754 100644 --- a/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js +++ b/packages/@office-iss/react-native-win32-tester/src/js/utils/RNTesterList.win32.js @@ -364,6 +364,16 @@ const APIs: Array = ([ category: 'Basic', module: require('../examples/TurboModule/TurboCxxModuleExample'), }, + // Basic check to detect the availability of the modern Performance API. + ...(typeof performance.getEntries === 'function' + ? [ + { + key: 'PerformanceApiExample', + category: 'Basic', + module: require('../examples/Performance/PerformanceApiExample'), + }, + ] + : []), ...RNTesterListFbInternal.APIs, ]: Array).filter(Boolean); diff --git a/packages/@office-iss/react-native-win32/.flowconfig b/packages/@office-iss/react-native-win32/.flowconfig index 1f7153bd66d..5da300893c1 100644 --- a/packages/@office-iss/react-native-win32/.flowconfig +++ b/packages/@office-iss/react-native-win32/.flowconfig @@ -175,4 +175,4 @@ untyped-import untyped-type-import [version] -^0.280.0 +^0.281.0 diff --git a/packages/@office-iss/react-native-win32/overrides.json b/packages/@office-iss/react-native-win32/overrides.json index 08a01083799..5d1ee64d783 100644 --- a/packages/@office-iss/react-native-win32/overrides.json +++ b/packages/@office-iss/react-native-win32/overrides.json @@ -7,19 +7,19 @@ "**/__snapshots__/**", "src-win/rntypes/**" ], - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "type": "derived", "file": ".flowconfig", "baseFile": ".flowconfig", - "baseHash": "c8bd25d4aa75328a2484c5c7b0b768c188a50b52" + "baseHash": "8a6739338afdae4cbcfad614e33e66ae2948f497" }, { "type": "derived", "file": "src-win/index.win32.js", "baseFile": "packages/react-native/index.js", - "baseHash": "88aa62f2d86a810631bcbc871f45c28c53fceec7" + "baseHash": "02a8ea6efd164de036681159f18135cc3393cb21" }, { "type": "platform", @@ -394,7 +394,7 @@ "type": "patch", "file": "src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js", "baseFile": "packages/react-native/Libraries/Renderer/shims/ReactNativeTypes.js", - "baseHash": "9e91759d01c9a6d459c5781b357533f4ac8727a7", + "baseHash": "333afc05f5a42a5321196f5f7a14d14c8fd5dd0f", "issue": 0 }, { @@ -431,7 +431,7 @@ "type": "derived", "file": "src-win/Libraries/Text/TextNativeComponent.win32.js", "baseFile": "packages/react-native/Libraries/Text/TextNativeComponent.js", - "baseHash": "259a625b5f7cf3a70ecd4af6388d82d47f446e50", + "baseHash": "56a99244e10bd1833a3d048f2476c4500f59202d", "issue": 7074 }, { diff --git a/packages/@office-iss/react-native-win32/package.json b/packages/@office-iss/react-native-win32/package.json index e46eee49b9f..54b1a89b8a4 100644 --- a/packages/@office-iss/react-native-win32/package.json +++ b/packages/@office-iss/react-native-win32/package.json @@ -30,13 +30,13 @@ "@react-native-community/cli-platform-android": "20.0.0", "@react-native-community/cli-platform-ios": "20.0.0", "@react-native/assets": "1.0.0", - "@react-native/assets-registry": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/codegen": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/community-cli-plugin": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/gradle-plugin": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/js-polyfills": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/normalize-colors": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/virtualized-lists": "0.82.0-nightly-20250902-9731e8ebc", + "@react-native/assets-registry": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/codegen": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/community-cli-plugin": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/gradle-plugin": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/js-polyfills": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/normalize-colors": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/virtualized-lists": "0.83.0-nightly-20250917-18cb4edfa", "abort-controller": "^3.0.0", "anser": "^1.4.9", "ansi-regex": "^5.0.0", @@ -72,7 +72,7 @@ "devDependencies": { "@babel/core": "^7.25.2", "@babel/eslint-parser": "^7.25.1", - "@react-native/metro-config": "0.82.0-nightly-20250902-9731e8ebc", + "@react-native/metro-config": "0.83.0-nightly-20250917-18cb4edfa", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", "@rnw-scripts/jest-out-of-tree-snapshot-resolver": "^1.1.42", @@ -83,19 +83,19 @@ "@types/prop-types": "15.7.1", "@types/react": "^19.0.0", "eslint": "^8.19.0", - "flow-bin": "^0.280.0", + "flow-bin": "^0.281.0", "jscodeshift": "^0.14.0", "just-scripts": "^1.3.3", "prettier": "2.8.8", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-platform-override": "0.0.0-canary.1019", "typescript": "5.0.4" }, "peerDependencies": { "@types/react": "^19.1.1", "react": "^19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc" + "react-native": "0.83.0-nightly-20250917-18cb4edfa" }, "beachball": { "defaultNpmTag": "canary", @@ -112,4 +112,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js index dcde270eca5..44b487cc854 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/TextInput/TextInput.win32.js @@ -646,9 +646,9 @@ function InternalTextInput(props: TextInputProps): React.Node { const {onBlur, onFocus, ...eventHandlers} = usePressability(config); const eventPhase = Object.freeze({Capturing: 1, Bubbling: 3}); const _keyDown = (event: KeyEvent) => { - if (props.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyDownEvents) { + const keyDownEvents = props.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -665,9 +665,9 @@ function InternalTextInput(props: TextInputProps): React.Node { }; const _keyUp = (event: KeyEvent) => { - if (props.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyUpEvents) { + const keyUpEvents = props.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -684,9 +684,9 @@ function InternalTextInput(props: TextInputProps): React.Node { }; const _keyDownCapture = (event: KeyEvent) => { - if (props.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyDownEvents) { + const keyDownEvents = props.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -703,9 +703,9 @@ function InternalTextInput(props: TextInputProps): React.Node { }; const _keyUpCapture = (event: KeyEvent) => { - if (props.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of props.keyUpEvents) { + const keyUpEvents = props.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js index 4907407ab30..6446a169da4 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Components/View/View.win32.js @@ -112,9 +112,9 @@ const View: component( : undefined; const _keyDown = (event: KeyEvent) => { - if (otherProps.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyDownEvents) { + const keyDownEvents = otherProps.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -131,9 +131,9 @@ const View: component( }; const _keyUp = (event: KeyEvent) => { - if (otherProps.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyUpEvents) { + const keyUpEvents = otherProps.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -150,9 +150,9 @@ const View: component( }; const _keyDownCapture = (event: KeyEvent) => { - if (otherProps.keyDownEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyDownEvents) { + const keyDownEvents = otherProps.keyDownEvents; + if (keyDownEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyDownEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -169,9 +169,9 @@ const View: component( }; const _keyUpCapture = (event: KeyEvent) => { - if (otherProps.keyUpEvents && event.isPropagationStopped() !== true) { - // $FlowFixMe - keyDownEvents was already checked to not be undefined - for (const el of otherProps.keyUpEvents) { + const keyUpEvents = otherProps.keyUpEvents; + if (keyUpEvents != null && event.isPropagationStopped() !== true) { + for (const el of keyUpEvents) { if ( event.nativeEvent.code === el.code && event.nativeEvent.ctrlKey === Boolean(el.ctrlKey) && @@ -188,11 +188,13 @@ const View: component( }; // [Windows - // $FlowFixMe - children typing - const childrenWithImportantForAccessibility = children => { + const childrenWithImportantForAccessibility = ( + children: React.Node, + ): React.Node => { return React.Children.map(children, child => { if (React.isValidElement(child)) { // $FlowFixMe[incompatible-use] + // $FlowFixMe[prop-missing] if (child.props.children) { // $FlowFixMe[incompatible-call] - React.Children.map types child as mixed // $FlowFixMe[incompatible-type] diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js index 12768b498b1..69e1e0dbd36 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Pressability/Pressability.win32.js @@ -603,9 +603,9 @@ export default class Pressability { this._isKeyDown ) { const {onPressOut, onPress} = this._config; - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type] PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPressOut && onPressOut(event); - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type] PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPress && onPress(event); } // Native windows app clears the key pressed state when another key press interrupts the current @@ -623,7 +623,7 @@ export default class Pressability { ) { const {onPressIn} = this._config; this._isKeyDown = true; - // $FlowFixMe: PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead + // $FlowFixMe[incompatible-type] PressEvents don't mesh with keyboarding APIs. Keep legacy behavior of passing KeyEvents instead onPressIn && onPressIn(event); } }, @@ -788,8 +788,8 @@ export default class Pressability { } // [Win32] - // $FlowFixMe - button typing - _isDefaultPressButton(button): boolean { + // $FlowFixMe[unclear-type] - button typing + _isDefaultPressButton(button: any): boolean { return !button; // Treat 0 or undefined as default press } diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js index 6e41e4fdefa..ec739cdb348 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/ReactNative/PaperUIManager.win32.js @@ -101,22 +101,22 @@ const UIManagerJS: UIManagerJSInterface = { for (const propName of Object.getOwnPropertyNames( Object.getPrototypeOf(NativeUIManager), )) { - // $FlowFixMe + // $FlowFixMe[incompatible-type] UIManagerJS[propName] = NativeUIManager[propName]; } // Windows] -/* $FlowFixMe(>=0.123.0 site=react_native_fb) This comment suppresses an error +/* $FlowFixMe[cannot-write] (>=0.123.0 site=react_native_fb) This comment suppresses an error * found when Flow v0.123.0 was deployed. To see the error, delete this comment * and run Flow. */ //const UIManagerJS = { // ...NativeUIManager, -// $FlowFixMe +// $FlowFixMe[cannot-write] UIManagerJS.getConstants = getConstants; // }, -// $FlowFixMe +// $FlowFixMe[cannot-write] UIManagerJS.getViewManagerConfig = getViewManagerConfig; -// $FlowFixMe +// $FlowFixMe[cannot-write] UIManagerJS.hasViewManagerConfig = (viewManagerName: string) => getViewManagerConfig(viewManagerName) != null; @@ -130,7 +130,7 @@ UIManagerJS.hasViewManagerConfig = (viewManagerName: string) => // getViewManagerConfig is implemented on the JSI object, so we don't // need to hook this unless we are running in webdebugger if (!global.nativeCallSyncHook) - // $FlowFixMe + // $FlowFixMe[prop-missing] NativeUIManager.getViewManagerConfig = UIManagerJS.getViewManagerConfig; function lazifyViewManagerConfig(viewName: string) { @@ -199,7 +199,7 @@ if (!global.nativeCallSyncHook) { `Accessing view manager configs directly off UIManager via UIManager['${viewManagerName}'] ` + `is no longer supported. Use UIManager.getViewManagerConfig('${viewManagerName}') instead.`, ); - // $FlowFixMe + // $FlowFixMe[incompatible-return] return UIManagerJS.getViewManagerConfig(viewManagerName); }, }); diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js index d17feb9416d..ee6ae134cac 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Renderer/shims/ReactNativeTypes.win32.js @@ -7,7 +7,7 @@ * @noformat * @nolint * @flow strict - * @generated SignedSource<> + * @generated SignedSource<> */ import type { @@ -139,6 +139,7 @@ export type RenderRootOptions = { error: mixed, errorInfo: {+componentStack?: ?string}, ) => void, + onDefaultTransitionIndicator?: () => void | (() => void), }; /** diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js index 5ff2186fb6b..72919710df1 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Text/TextNativeComponent.win32.js @@ -99,6 +99,16 @@ const virtualTextViewConfig = { uiViewClassName: 'RCTVirtualText', }; +/** + * `NativeText` is an internal React Native host component, and is exported to + * provide lower-level access for libraries. + * + * @warning `` provides no semver guarantees and is not + * intended to be used in app code. Please use + * [``](https://reactnative.dev/docs/text) instead. + */ +// Additional note: Our long term plan is to reduce the overhead of the +// and wrappers so that we no longer have any reason to export these APIs. export const NativeText: HostComponent = (createReactNativeComponentClass('RCTText', () => /* $FlowFixMe[incompatible-type] Natural Inference rollout. See diff --git a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js index 8bfa88ac68d..171b8029677 100644 --- a/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/Libraries/Utilities/FocusManager.win32.js @@ -22,14 +22,14 @@ class FocusManager { if (ref) { if (setWindowFocus) { UIManager.dispatchViewManagerCommand( - // $FlowIgnoreMe[incompatible-call] + // $FlowFixMe[incompatible-type] findNodeHandle(ref), UIManager.getViewManagerConfig('RCTView').Commands.aggressivefocus, [], ); } else { UIManager.dispatchViewManagerCommand( - // $FlowIgnoreMe[incompatible-call] + // $FlowFixMe[incompatible-type] findNodeHandle(ref), UIManager.getViewManagerConfig('RCTView').Commands.politefocus, [], diff --git a/packages/@office-iss/react-native-win32/src-win/index.win32.js b/packages/@office-iss/react-native-win32/src-win/index.win32.js index a7fdd26391f..27a0dfed1aa 100644 --- a/packages/@office-iss/react-native-win32/src-win/index.win32.js +++ b/packages/@office-iss/react-native-win32/src-win/index.win32.js @@ -71,6 +71,8 @@ import typeof VirtualizedList from './Libraries/Lists/VirtualizedList'; import typeof VirtualizedSectionList from './Libraries/Lists/VirtualizedSectionList'; import typeof LogBox from './Libraries/LogBox/LogBox'; import typeof Modal from './Libraries/Modal/Modal'; +import typeof {NativeText as unstable_NativeText} from './Libraries/Text/TextNativeComponent'; +import typeof unstable_NativeView from './Libraries/Components/View/ViewNativeComponent'; // $FlowFixMe[invalid-exported-annotation] import typeof NativeDialogManagerAndroid from './Libraries/NativeModules/specs/NativeDialogManagerAndroid'; import typeof * as NativeComponentRegistry from './Libraries/NativeComponent/NativeComponentRegistry'; @@ -154,6 +156,12 @@ module.exports = { get Modal(): Modal { return require('./Libraries/Modal/Modal').default; }, + get unstable_NativeText(): unstable_NativeText { + return require('./Libraries/Text/TextNativeComponent').NativeText; + }, + get unstable_NativeView(): unstable_NativeView { + return require('./Libraries/Components/View/ViewNativeComponent').default; + }, get Pressable(): Pressable { return require('./Libraries/Components/Pressable/Pressable').default; }, diff --git a/packages/@react-native-windows/automation-channel/package.json b/packages/@react-native-windows/automation-channel/package.json index 801fa39548b..44231a507aa 100644 --- a/packages/@react-native-windows/automation-channel/package.json +++ b/packages/@react-native-windows/automation-channel/package.json @@ -19,6 +19,7 @@ "dependencies": { "@typescript-eslint/eslint-plugin": "^7.1.1", "@typescript-eslint/parser": "^7.1.1", + "minimatch": "^10.0.3", "jsonrpc-lite": "^2.2.0" }, "devDependencies": { @@ -32,7 +33,7 @@ "just-scripts": "^1.3.2", "prettier": "2.8.8", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-windows": "^0.0.0-canary.1031", "typescript": "5.0.4" }, @@ -56,4 +57,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/tester/overrides.json b/packages/@react-native-windows/tester/overrides.json index 19a2a15dc7e..a95ec25aa84 100644 --- a/packages/@react-native-windows/tester/overrides.json +++ b/packages/@react-native-windows/tester/overrides.json @@ -5,7 +5,7 @@ "excludePatterns": [ "src/js/examples-win/**" ], - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "type": "copy", @@ -43,7 +43,7 @@ "type": "patch", "file": "src/js/examples/FlatList/BaseFlatListExample.windows.js", "baseFile": "packages/rn-tester/js/examples/FlatList/BaseFlatListExample.js", - "baseHash": "7a516e491b4cbe22678baf899dfe855567468a6f", + "baseHash": "6a140eb7fd8961bbee46fbe6af9d592c0fcf5a2b", "issue": 12869 }, { @@ -156,7 +156,7 @@ "type": "derived", "file": "src/js/utils/RNTesterList.windows.js", "baseFile": "packages/rn-tester/js/utils/RNTesterList.android.js", - "baseHash": "8cd219abae140e98f9578432954fc9ef62421308" + "baseHash": "aeb0275507e7c508cdf7c2ceec49f9e95ef4e1ec" } ] } \ No newline at end of file diff --git a/packages/@react-native-windows/tester/package.json b/packages/@react-native-windows/tester/package.json index 51192239190..20b90133b51 100644 --- a/packages/@react-native-windows/tester/package.json +++ b/packages/@react-native-windows/tester/package.json @@ -19,12 +19,12 @@ "peerDependencies": { "@react-native-picker/picker": "2.11.0", "react": "19.1.1", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-windows": "^0.0.0-canary.1031", "react-native-xaml": "^0.0.80" }, "devDependencies": { - "@react-native/new-app-screen": "0.82.0-nightly-20250902-9731e8ebc", + "@react-native/new-app-screen": "0.83.0-nightly-20250917-18cb4edfa", "@react-native/tester": "0.82.0-main", "@rnw-scripts/babel-react-native-config": "0.0.0", "@rnw-scripts/eslint-config": "1.2.38", @@ -33,7 +33,7 @@ "@types/node": "^22.14.0", "eslint": "^8.19.0", "just-scripts": "^1.3.3", - "react-native": "0.82.0-nightly-20250902-9731e8ebc", + "react-native": "0.83.0-nightly-20250917-18cb4edfa", "react-native-platform-override": "0.0.0-canary.1019", "react-native-windows": "^0.0.0-canary.1031", "typescript": "5.0.4" @@ -41,4 +41,4 @@ "engines": { "node": ">= 22" } -} +} \ No newline at end of file diff --git a/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js b/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js index cc6d7ba26e4..a31cc7ca308 100644 --- a/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js +++ b/packages/@react-native-windows/tester/src/js/examples/FlatList/BaseFlatListExample.windows.js @@ -68,7 +68,7 @@ type Props = { }; const BaseFlatListExample: component( - ref: React.RefSetter>, + ref?: React.RefSetter>, ...props: Props ) = ({ref, ...props}: {ref: React.RefSetter>, ...Props}) => { return ( @@ -114,41 +114,23 @@ const ITEM_MARGIN = 8; export const ITEM_HEIGHT: number = ITEM_INNER_HEIGHT + ITEM_MARGIN * 2; const styles = StyleSheet.create({ + container: {flex: 1}, + header: { + backgroundColor: 'white', + fontSize: 32, + }, item: { backgroundColor: 'pink', - paddingHorizontal: 20, height: ITEM_INNER_HEIGHT, - marginVertical: ITEM_MARGIN, justifyContent: 'center', + marginVertical: ITEM_MARGIN, + paddingHorizontal: 20, }, - header: { - fontSize: 32, - backgroundColor: 'white', - }, - title: { - fontSize: 24, - }, - titleContainer: { - position: 'absolute', - top: 45, - left: 0, - right: 0, - justifyContent: 'flex-end', - alignItems: 'center', - backgroundColor: 'gray', - zIndex: 1, - }, - titleText: { - fontSize: 24, - lineHeight: 44, - fontWeight: 'bold', + list: { + flex: 1, }, - testContainer: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - backgroundColor: '#f2f2f7ff', - height: 40, + offScreen: { + height: 1000, }, output: { fontSize: 12, @@ -159,11 +141,29 @@ const styles = StyleSheet.create({ separatorText: { fontSize: 10, }, - list: { - flex: 1, + testContainer: { + alignItems: 'center', + backgroundColor: '#f2f2f7ff', + flexDirection: 'row', + height: 40, + justifyContent: 'space-between', }, - container: {flex: 1}, - offScreen: { - height: 1000, + title: { + fontSize: 24, + }, + titleContainer: { + alignItems: 'center', + backgroundColor: 'gray', + justifyContent: 'flex-end', + left: 0, + position: 'absolute', + right: 0, + top: 45, + zIndex: 1, + }, + titleText: { + fontSize: 24, + fontWeight: 'bold', + lineHeight: 44, }, }); diff --git a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js index 6095f578d71..b7f6b88df51 100644 --- a/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js +++ b/packages/@react-native-windows/tester/src/js/utils/RNTesterList.windows.js @@ -456,6 +456,16 @@ const APIs: Array = ([ category: 'Basic', module: require('../examples/TurboModule/TurboCxxModuleExample'), }, + // Basic check to detect the availability of the modern Performance API. + ...(typeof performance.getEntries === 'function' + ? [ + { + key: 'PerformanceApiExample', + category: 'Basic', + module: require('../examples/Performance/PerformanceApiExample'), + }, + ] + : []), ...RNTesterListFbInternal.APIs, ]: Array).filter(Boolean); diff --git a/packages/@react-native/monorepo/overrides.json b/packages/@react-native/monorepo/overrides.json index be46ac1fa01..d8de4765538 100644 --- a/packages/@react-native/monorepo/overrides.json +++ b/packages/@react-native/monorepo/overrides.json @@ -1,11 +1,11 @@ { - "baseVersion": "0.82.0-nightly-20250902-9731e8ebc", + "baseVersion": "0.83.0-nightly-20250917-18cb4edfa", "overrides": [ { "type": "patch", "file": "package.json", "baseFile": "package.json", - "baseHash": "8b94d93c1a98029715186bcb5286ea56beae0ed0" + "baseHash": "2f4eded3ff0e23b55edcbcebb60857803796f5a4" } ] } \ No newline at end of file diff --git a/packages/@react-native/monorepo/package.json b/packages/@react-native/monorepo/package.json index b0cd6bf5291..acbb0c4fe8b 100644 --- a/packages/@react-native/monorepo/package.json +++ b/packages/@react-native/monorepo/package.json @@ -46,13 +46,17 @@ "@babel/plugin-transform-regenerator": "^7.24.7", "@babel/preset-env": "^7.25.3", "@babel/preset-flow": "^7.24.7", + "@electron/packager": "^18.3.6", + "@expo/spawn-async": "^1.7.2", "@jest/create-cache-key-function": "^29.7.0", "@microsoft/api-extractor": "^7.52.2", - "@react-native/metro-babel-transformer": "0.82.0-nightly-20250902-9731e8ebc", - "@react-native/metro-config": "0.82.0-nightly-20250902-9731e8ebc", + "@octokit/rest": "^22.0.0", + "@react-native/metro-babel-transformer": "0.83.0-nightly-20250917-18cb4edfa", + "@react-native/metro-config": "0.83.0-nightly-20250917-18cb4edfa", "@tsconfig/node22": "22.0.2", "@types/react": "^19.1.0", "@typescript-eslint/parser": "^8.36.0", + "ansi-regex": "^5.0.0", "ansi-styles": "^4.2.1", "babel-plugin-minify-dead-code-elimination": "^0.5.2", "babel-plugin-syntax-hermes-parser": "0.32.0", @@ -73,8 +77,9 @@ "eslint-plugin-react-native": "^4.0.0", "eslint-plugin-redundant-undefined": "^0.4.0", "eslint-plugin-relay": "^1.8.3", + "fb-dotslash": "0.5.8", "flow-api-translator": "0.32.0", - "flow-bin": "^0.280.0", + "flow-bin": "^0.281.0", "glob": "^7.1.1", "hermes-eslint": "0.32.0", "hermes-transform": "0.32.0", @@ -85,9 +90,10 @@ "jest-diff": "^29.7.0", "jest-junit": "^16.0.0", "jest-snapshot": "^29.7.0", + "jsonc-parser": "2.2.1", "markdownlint-cli2": "^0.17.2", "markdownlint-rule-relative-links": "^3.0.0", - "memfs": "^4.7.7", + "memfs": "^4.38.2", "metro-babel-register": "^0.83.1", "metro-memory-fs": "^0.82.4", "metro-transform-plugins": "^0.83.1", @@ -100,12 +106,12 @@ "react-test-renderer": "19.1.1", "rimraf": "^3.0.2", "shelljs": "^0.8.5", - "signedsource": "^1.0.0", + "signedsource": "^2.0.0", "supports-color": "^7.1.0", "temp-dir": "^2.0.0", "tinybench": "^4.1.0", "typescript": "5.8.3", - "ws": "^6.2.3" + "ws": "^7.5.10" }, "resolutions": { "eslint-plugin-react-hooks": "6.1.0-canary-12bc60f5-20250613", diff --git a/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js b/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js index 5e70b342aa4..693ebd66044 100644 --- a/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js +++ b/packages/@react-native/tester/js/examples/DrawerLayoutAndroid/DrawerLayoutAndroidExample.js @@ -48,7 +48,6 @@ const Drawer = () => { return (