diff --git a/package.json b/package.json index 1f3fc035..ce9e5df8 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "colors": "1.4.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-native": "^0.72.7" + "react-native": "~0.77.3" }, "license": "Apache-2.0", "copyright": "© Mendix Technology BV 2022. All rights reserved.", diff --git a/packages/generator-widget/CHANGELOG.md b/packages/generator-widget/CHANGELOG.md index 7939bee4..464803fd 100644 --- a/packages/generator-widget/CHANGELOG.md +++ b/packages/generator-widget/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +### Changed + +- We upgraded React Native to version 0.77.3 for generated widgets. + +- We updated the required Node.js version to 20 or newer for the generator and generated widget projects. + +- We switched from Enzyme to React Native Testing Library for generated widget tests. + ## [10.15.1] - 2025-05-19 ### Changed diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json index 4f41606c..2bc93be6 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json @@ -6,7 +6,7 @@ "copyright": "Mendix 2023", "author": "Jest", "engines": { - "node": ">=16" + "node": ">=20" }, "license": "Apache-2.0", "config": { @@ -34,10 +34,10 @@ }, "resolutions": { "react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" }, "overrides": { "react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json index ccf9b44b..5829b6d5 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json @@ -6,7 +6,7 @@ "copyright": "Mendix 2023", "author": "Jest", "engines": { - "node": ">=16" + "node": ">=20" }, "license": "Apache-2.0", "config": { @@ -29,10 +29,10 @@ }, "resolutions": { "react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" }, "overrides": { "react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json index a3af0292..2f0c66f1 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json @@ -6,7 +6,7 @@ "copyright": "Mendix 2023", "author": "Jest", "engines": { - "node": ">=16" + "node": ">=20" }, "license": "Apache-2.0", "config": { @@ -29,7 +29,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "^10.15.0", "@types/big.js": "^6.0.2", - "@types/enzyme": "^3.10.8", "@types/jest": "^29.0.0" }, "dependencies": { @@ -38,11 +37,11 @@ "resolutions": { "react": "^18.2.0", "@types/react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" }, "overrides": { "react": "^18.2.0", "@types/react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json index f825bf3f..eb0f824c 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json @@ -6,7 +6,7 @@ "copyright": "Mendix 2023", "author": "Jest", "engines": { - "node": ">=16" + "node": ">=20" }, "license": "Apache-2.0", "config": { @@ -31,11 +31,11 @@ "resolutions": { "react": "^18.2.0", "@types/react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" }, "overrides": { "react": "^18.2.0", "@types/react": "^18.2.0", - "react-native": "0.72.7" + "react-native": "0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs b/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs index 9437c6b4..f6de5945 100644 --- a/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs +++ b/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs @@ -6,7 +6,7 @@ "copyright": <%- JSON.stringify(copyright) %>, "author": <%- JSON.stringify(author) %>, "engines": { - "node": ">=16" + "node": ">=20" }, "license": <%- JSON.stringify(license) %>, "config": { @@ -29,7 +29,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "^10.15.0"<% if (isLanguageTS) { %>, "@types/big.js": "^6.0.2"<% if (hasUnitTests) { %>, - "@types/enzyme": "^3.10.8", "@types/jest": "^29.0.0"<% } %><% } %> }, "dependencies": { @@ -38,11 +37,11 @@ "resolutions": { "react": "^18.2.0",<% if (isLanguageTS) { %> "@types/react": "^18.2.0",<% } %> - "react-native": "0.72.7" + "react-native": "0.77.3" }, "overrides": { "react": "^18.2.0",<% if (isLanguageTS) { %> "@types/react": "^18.2.0",<% } %> - "react-native": "0.72.7" + "react-native": "0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJs/src/components/__tests__/HelloWorld.spec.jsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJs/src/components/__tests__/HelloWorld.spec.jsx.ejs index 42c17b25..605f0cb5 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJs/src/components/__tests__/HelloWorld.spec.jsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJs/src/components/__tests__/HelloWorld.spec.jsx.ejs @@ -1,5 +1,5 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; +import { render } from "@testing-library/react-native"; import { Platform } from "react-native"; import { HelloWorld } from "../HelloWorld"; @@ -15,9 +15,9 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os) => { name: "Mendix", style: [] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -25,8 +25,8 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os) => { name: "Mendix", style: [{ container: { borderColor: "white" }, label: { color: "black" } }] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJsFn/src/components/__tests__/HelloWorld.spec.jsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJsFn/src/components/__tests__/HelloWorld.spec.jsx.ejs index 42c17b25..605f0cb5 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJsFn/src/components/__tests__/HelloWorld.spec.jsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateJsFn/src/components/__tests__/HelloWorld.spec.jsx.ejs @@ -1,5 +1,5 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; +import { render } from "@testing-library/react-native"; import { Platform } from "react-native"; import { HelloWorld } from "../HelloWorld"; @@ -15,9 +15,9 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os) => { name: "Mendix", style: [] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -25,8 +25,8 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os) => { name: "Mendix", style: [{ container: { borderColor: "white" }, label: { color: "black" } }] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTs/src/components/__tests__/HelloWorld.spec.tsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTs/src/components/__tests__/HelloWorld.spec.tsx.ejs index d483e40c..ba9aa0e3 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTs/src/components/__tests__/HelloWorld.spec.tsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTs/src/components/__tests__/HelloWorld.spec.tsx.ejs @@ -1,5 +1,5 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; +import { render } from "@testing-library/react-native"; import { Platform } from "react-native"; import { HelloWorld, HelloWorldProps } from "../HelloWorld"; @@ -15,9 +15,9 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os: "ios" | "android") = name: "Mendix", style: [] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -25,8 +25,8 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os: "ios" | "android") = name: "Mendix", style: [{ container: { borderColor: "white" }, label: { color: "black" } }] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTsFn/src/components/__tests__/HelloWorld.spec.tsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTsFn/src/components/__tests__/HelloWorld.spec.tsx.ejs index d483e40c..ba9aa0e3 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTsFn/src/components/__tests__/HelloWorld.spec.tsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/emptyTemplateTsFn/src/components/__tests__/HelloWorld.spec.tsx.ejs @@ -1,5 +1,5 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; +import { render } from "@testing-library/react-native"; import { Platform } from "react-native"; import { HelloWorld, HelloWorldProps } from "../HelloWorld"; @@ -15,9 +15,9 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os: "ios" | "android") = name: "Mendix", style: [] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -25,8 +25,8 @@ describe.each(["ios", "android"])("HelloWorld for %s", (os: "ios" | "android") = name: "Mendix", style: [{ container: { borderColor: "white" }, label: { color: "black" } }] }; - const helloWorld = shallow(); + const component = render(); - expect(helloWorld).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); }); diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/Badge.jsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/Badge.jsx.ejs index f8202a7a..4fa94b2d 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/Badge.jsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/Badge.jsx.ejs @@ -13,7 +13,7 @@ export class Badge extends Component { return ( - + {this.renderContent()} diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/__tests__/Badge.spec.jsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/__tests__/Badge.spec.jsx.ejs index 6dd7c1ce..5d146d8b 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/__tests__/Badge.spec.jsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJs/src/components/__tests__/Badge.spec.jsx.ejs @@ -1,6 +1,6 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; -import { Platform, TouchableNativeFeedback, TouchableOpacity } from "react-native"; +import { render, fireEvent } from "@testing-library/react-native"; +import { Platform } from "react-native"; import { Badge } from "../Badge"; @@ -16,9 +16,9 @@ describe.each(["ios", "android"])("Badge for %s", os => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -27,9 +27,9 @@ describe.each(["ios", "android"])("Badge for %s", os => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("triggers the onClick action when pressed", () => { @@ -38,13 +38,10 @@ describe.each(["ios", "android"])("Badge for %s", os => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - const Touchable = Platform.OS === "android" ? TouchableNativeFeedback : TouchableOpacity; - - expect(badge.children().find(Touchable)).not.toBeNull(); - - badge.children().simulate("press"); + const touchable = component.getByRole("button"); + fireEvent.press(touchable); expect(badgeProps.onClick).toHaveBeenCalled(); }); diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/Badge.jsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/Badge.jsx.ejs index 8f11325d..752af8f7 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/Badge.jsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/Badge.jsx.ejs @@ -22,7 +22,7 @@ export function Badge({ value, style, onClick }) { return ( - + {renderContent} diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/__tests__/Badge.spec.jsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/__tests__/Badge.spec.jsx.ejs index 6dd7c1ce..5d146d8b 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/__tests__/Badge.spec.jsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateJsFn/src/components/__tests__/Badge.spec.jsx.ejs @@ -1,6 +1,6 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; -import { Platform, TouchableNativeFeedback, TouchableOpacity } from "react-native"; +import { render, fireEvent } from "@testing-library/react-native"; +import { Platform } from "react-native"; import { Badge } from "../Badge"; @@ -16,9 +16,9 @@ describe.each(["ios", "android"])("Badge for %s", os => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -27,9 +27,9 @@ describe.each(["ios", "android"])("Badge for %s", os => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("triggers the onClick action when pressed", () => { @@ -38,13 +38,10 @@ describe.each(["ios", "android"])("Badge for %s", os => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - const Touchable = Platform.OS === "android" ? TouchableNativeFeedback : TouchableOpacity; - - expect(badge.children().find(Touchable)).not.toBeNull(); - - badge.children().simulate("press"); + const touchable = component.getByRole("button"); + fireEvent.press(touchable); expect(badgeProps.onClick).toHaveBeenCalled(); }); diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/Badge.tsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/Badge.tsx.ejs index 829411eb..0bb264db 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/Badge.tsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/Badge.tsx.ejs @@ -19,7 +19,7 @@ export class Badge extends Component { return ( - + {this.renderContent()} diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/__tests__/Badge.spec.tsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/__tests__/Badge.spec.tsx.ejs index efdb0b80..91dca169 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/__tests__/Badge.spec.tsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTs/src/components/__tests__/Badge.spec.tsx.ejs @@ -1,6 +1,6 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; -import { Platform, TouchableNativeFeedback, TouchableOpacity } from "react-native"; +import { render, fireEvent } from "@testing-library/react-native"; +import { Platform } from "react-native"; import { Badge, BadgeProps } from "../Badge"; @@ -16,9 +16,9 @@ describe.each(["ios", "android"])("Badge for %s", (os: "ios" | "android") => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -27,9 +27,9 @@ describe.each(["ios", "android"])("Badge for %s", (os: "ios" | "android") => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("triggers the onClick action when pressed", () => { @@ -38,13 +38,10 @@ describe.each(["ios", "android"])("Badge for %s", (os: "ios" | "android") => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - const Touchable = Platform.OS === "android" ? TouchableNativeFeedback : TouchableOpacity; - - expect(badge.children().find(Touchable)).not.toBeNull(); - - badge.children().simulate("press"); + const touchable = component.getByRole("button"); + fireEvent.press(touchable); expect(badgeProps.onClick).toHaveBeenCalled(); }); diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/Badge.tsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/Badge.tsx.ejs index 2a3da723..3f42fd81 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/Badge.tsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/Badge.tsx.ejs @@ -28,7 +28,7 @@ export function Badge({ value, style, onClick }: BadgeProps): ReactElement { return ( - + {renderContent} diff --git a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/__tests__/Badge.spec.tsx.ejs b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/__tests__/Badge.spec.tsx.ejs index efdb0b80..91dca169 100644 --- a/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/__tests__/Badge.spec.tsx.ejs +++ b/packages/generator-widget/generators/app/templates/pluggable/native/fullTemplateTsFn/src/components/__tests__/Badge.spec.tsx.ejs @@ -1,6 +1,6 @@ import { createElement } from "react"; -import { shallow } from "enzyme"; -import { Platform, TouchableNativeFeedback, TouchableOpacity } from "react-native"; +import { render, fireEvent } from "@testing-library/react-native"; +import { Platform } from "react-native"; import { Badge, BadgeProps } from "../Badge"; @@ -16,9 +16,9 @@ describe.each(["ios", "android"])("Badge for %s", (os: "ios" | "android") => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("renders the structure correctly with custom style", () => { @@ -27,9 +27,9 @@ describe.each(["ios", "android"])("Badge for %s", (os: "ios" | "android") => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - expect(badge).toMatchSnapshot(); + expect(component.toJSON()).toMatchSnapshot(); }); it("triggers the onClick action when pressed", () => { @@ -38,13 +38,10 @@ describe.each(["ios", "android"])("Badge for %s", (os: "ios" | "android") => { onClick: jest.fn(), value: "0" }; - const badge = shallow(); + const component = render(); - const Touchable = Platform.OS === "android" ? TouchableNativeFeedback : TouchableOpacity; - - expect(badge.children().find(Touchable)).not.toBeNull(); - - badge.children().simulate("press"); + const touchable = component.getByRole("button"); + fireEvent.press(touchable); expect(badgeProps.onClick).toHaveBeenCalled(); }); diff --git a/packages/pluggable-widgets-tools/CHANGELOG.md b/packages/pluggable-widgets-tools/CHANGELOG.md index 9a38d95b..0e1d6baf 100644 --- a/packages/pluggable-widgets-tools/CHANGELOG.md +++ b/packages/pluggable-widgets-tools/CHANGELOG.md @@ -10,6 +10,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - We migrated to pnpm as our package manager. Users of the widgets tools should be able to continue using their package manager of choice. +- We updated React Native to version 0.77.3 to align with the Native Widgets project requirements. + +- We updated Jest configuration for React Native testing to use the recommended preset and removed Enzyme support for improved compatibility and performance. + ## [10.21.2] - 2025-07-02 ### Changed diff --git a/packages/pluggable-widgets-tools/package.json b/packages/pluggable-widgets-tools/package.json index fad4c481..21a4ed3f 100644 --- a/packages/pluggable-widgets-tools/package.json +++ b/packages/pluggable-widgets-tools/package.json @@ -31,6 +31,7 @@ "@babel/plugin-transform-react-jsx": "^7.25.9", "@babel/preset-env": "^7.26.0", "@babel/preset-react": "^7.25.9", + "@react-native/babel-preset": "0.77.3", "@cfaester/enzyme-adapter-react-18": "^0.6.0", "@prettier/plugin-xml": "^1.2.0", "@rollup/plugin-alias": "^5.1.1", @@ -47,9 +48,9 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", + "@testing-library/react-native": "^13.3.3", "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", - "@types/react-native": "^0.72.7", "@types/testing-library__jest-dom": "^5.14.5", "@typescript-eslint/eslint-plugin": "^5.8.1", "@typescript-eslint/parser": "^5.8.1", @@ -82,14 +83,13 @@ "jest-react-hooks-shallow": "^1.5.1", "make-dir": "^3.1.0", "mendix": "^10.21.64362", - "metro-react-native-babel-preset": "^0.74.1", "mime": "^3.0.0", "node-fetch": "^2.6.1", "postcss": "^8.3.11", "postcss-import": "^14.0.2", "postcss-url": "^10.1.0", "prettier": "^2.5.1", - "react-test-renderer": "18.2.0", + "react-test-renderer": "18.3.1", "recursive-copy": "^2.0.11", "resolve": "^1.19.0", "rollup": "^3.29.5", @@ -117,7 +117,7 @@ "async-mutex": "^0.2.4", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-native": "^0.72.7", + "react-native": "~0.77.3", "tree-kill": "^1.2.2", "yeoman-test": "^6.2.0" }, diff --git a/packages/pluggable-widgets-tools/test-config/jest.native.config.js b/packages/pluggable-widgets-tools/test-config/jest.native.config.js index d6a062e9..8346a68b 100644 --- a/packages/pluggable-widgets-tools/test-config/jest.native.config.js +++ b/packages/pluggable-widgets-tools/test-config/jest.native.config.js @@ -3,7 +3,7 @@ const { join } = require("path"); const projectDir = process.cwd(); module.exports = { - preset: hasDependency("@testing-library/react-native") ? "@testing-library/react-native" : "react-native", + preset: "react-native", testRunner: "jest-jasmine2", clearMocks: true, haste: { @@ -14,9 +14,7 @@ module.exports = { setupFilesAfterEnv: [ join(__dirname, "test-index-native.js"), ...(hasDependency("react-native-gesture-handler") ? ["react-native-gesture-handler/jestSetup.js"] : []), - ...(hasDependency("@testing-library/jest-native") ? ["@testing-library/jest-native/extend-expect"] : []) ], - snapshotSerializers: ["enzyme-to-json/serializer"], testMatch: ["/**/*.spec.{js,jsx,ts,tsx}"], transformIgnorePatterns: ["node_modules/(?!(.*react-native.*|victory-)/)"], transform: { @@ -35,7 +33,6 @@ module.exports = { "react-hot-loader/root": join(__dirname, "__mocks__/hot") }, moduleDirectories: ["node_modules", join(projectDir, "node_modules")], - collectCoverage: !process.env.CI, coverageDirectory: join(projectDir, "dist/coverage"), testEnvironment: "jsdom" }; diff --git a/packages/pluggable-widgets-tools/test-config/test-index-native.js b/packages/pluggable-widgets-tools/test-config/test-index-native.js index 8c4d3dd8..eec51722 100644 --- a/packages/pluggable-widgets-tools/test-config/test-index-native.js +++ b/packages/pluggable-widgets-tools/test-config/test-index-native.js @@ -1,6 +1,4 @@ const { TextEncoder, TextDecoder } = require("util"); -const { configure: configureEnzyme } = require("enzyme"); -const Adapter = require("@cfaester/enzyme-adapter-react-18").default; const enableHooks = require("jest-react-hooks-shallow").default; Object.defineProperties(global, { @@ -12,7 +10,6 @@ Object.defineProperties(global, { } }); -configureEnzyme({ adapter: new Adapter() }); enableHooks(jest); global.setImmediate = global.setTimeout; diff --git a/packages/pluggable-widgets-tools/test-config/transform-native.js b/packages/pluggable-widgets-tools/test-config/transform-native.js index eed8109d..4b422fac 100644 --- a/packages/pluggable-widgets-tools/test-config/transform-native.js +++ b/packages/pluggable-widgets-tools/test-config/transform-native.js @@ -1,3 +1,3 @@ module.exports = require("babel-jest").createTransformer({ - presets: ["module:metro-react-native-babel-preset"] + presets: ["module:@react-native/babel-preset"] }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c10bf49..e7ae32e2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -161,6 +161,9 @@ importers: '@prettier/plugin-xml': specifier: ^1.2.0 version: 1.2.0 + '@react-native/babel-preset': + specifier: 0.77.3 + version: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0)) '@rollup/plugin-alias': specifier: ^5.1.1 version: 5.1.1(rollup@3.29.5) @@ -200,6 +203,9 @@ importers: '@testing-library/react': specifier: ^13.4.0 version: 13.4.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@testing-library/react-native': + specifier: ^13.3.3 + version: 13.3.3(jest@29.7.0(@types/node@16.18.126)(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.8.3)))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/user-event': specifier: ^14.4.3 version: 14.6.1(@testing-library/dom@8.20.1) @@ -209,9 +215,6 @@ importers: '@types/react-dom': specifier: ^18.2.0 version: 18.3.7(@types/react@18.3.23) - '@types/react-native': - specifier: ^0.72.7 - version: 0.72.8(react-native@0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1)) '@types/testing-library__jest-dom': specifier: ^5.14.5 version: 5.14.9 @@ -308,9 +311,6 @@ importers: mendix: specifier: ^10.21.64362 version: 10.24.74050 - metro-react-native-babel-preset: - specifier: ^0.74.1 - version: 0.74.1(@babel/core@7.28.0) mime: specifier: ^3.0.0 version: 3.0.0 @@ -330,8 +330,8 @@ importers: specifier: ^2.5.1 version: 2.8.8 react-test-renderer: - specifier: 18.2.0 - version: 18.2.0(react@18.3.1) + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) recursive-copy: specifier: ^2.0.11 version: 2.0.14 @@ -409,8 +409,8 @@ importers: specifier: ^18.2.0 version: 18.3.1(react@18.3.1) react-native: - specifier: ^0.72.7 - version: 0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1) + specifier: ~0.77.3 + version: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1) tree-kill: specifier: ^1.2.2 version: 1.2.2 @@ -1295,6 +1295,10 @@ packages: '@isaacs/string-locale-compare@1.1.0': resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -1695,27 +1699,70 @@ packages: engines: {node: '>=16'} hasBin: true - '@react-native/assets-registry@0.72.0': - resolution: {integrity: sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==} + '@react-native/assets-registry@0.77.3': + resolution: {integrity: sha512-kLocY1mlQjCdrX0y4eYQblub9NDdX+rkNii3F2rumri532ILjMAvkdpehf2PwQDj0X6PZYF1XFjszPw5uzq0Aw==} + engines: {node: '>=18'} + + '@react-native/babel-plugin-codegen@0.77.3': + resolution: {integrity: sha512-UbjQY8vFCVD4Aw4uSRWslKa26l1uOZzYhhKzWWOrV36f2NnP9Siid2rPkLa+MIJk16G2UzDRtUrMhGuejxp9cQ==} + engines: {node: '>=18'} - '@react-native/codegen@0.72.8': - resolution: {integrity: sha512-jQCcBlXV7B7ap5VlHhwIPieYz89yiRgwd2FPUBu+unz+kcJ6pAiB2U8RdLDmyIs8fiWd+Vq1xxaWs4TR329/ng==} + '@react-native/babel-preset@0.77.3': + resolution: {integrity: sha512-Cy1RoL5/nh2S/suWgfTuhUwkERoDN/Q2O6dZd3lcNcBrjd5Y++sBJGyBnHd9pqlSmOy8RLLBJZ9dOylycBOqzQ==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.77.3': + resolution: {integrity: sha512-Q6ZJCE7h6Z3v3DiEZUnqzHbgwF3ZILN+ACTx6qu/x2X1cL96AatKwdX92e0+7J9RFg6gdoFYJgRrW8Q6VnWZsQ==} + engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 - '@react-native/gradle-plugin@0.72.11': - resolution: {integrity: sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==} + '@react-native/community-cli-plugin@0.77.3': + resolution: {integrity: sha512-8OKvow2jHojl1d3PW/84uTBPMnmxRyPtfhBL0sQxrWP5Kgooe5XALoWsoBIFk+aIFu/fV7Pv0AAd0cdLC0NtOg==} + engines: {node: '>=18'} + peerDependencies: + '@react-native-community/cli': '*' + peerDependenciesMeta: + '@react-native-community/cli': + optional: true + + '@react-native/debugger-frontend@0.77.3': + resolution: {integrity: sha512-FTERmc43r/3IpTvUZTr9gVVTgOIrg1hrkN57POr/CiL8RbcY/nv6vfNM7/CXG5WF8ckHiLeWTcRHzJUl1+rFkw==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.77.3': + resolution: {integrity: sha512-tCylGMjibJAEl2r2nWX5L5CvK6XFLGbjhe7Su7OcxRGrynHin87rAmcaTeoTtbtsREFlFM0f4qxcmwCxmbZHJw==} + engines: {node: '>=18'} - '@react-native/js-polyfills@0.72.1': - resolution: {integrity: sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==} + '@react-native/gradle-plugin@0.77.3': + resolution: {integrity: sha512-GRVNBDowaFub9j+WBLGI09bDbCq+f7ugaNRr6lmZnLx/xdmiKUj9YKyARt4zn8m65MRK2JGlJk0OqmQOvswpzQ==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.77.3': + resolution: {integrity: sha512-XqxnQRyKD11u5ZYG5LPnElThWYJf3HMosqqkJGB4nwx6nc6WKxj1sR9snptibExDMGioZ2OyvPWCF8tX+qggrw==} + engines: {node: '>=18'} + + '@react-native/metro-babel-transformer@0.77.3': + resolution: {integrity: sha512-eBX5ibF1ovuZGwo08UOhnnkZDnhl8DdrCulJ8V/LCnpC6CihhQyxtolO+BmzXjUFyGiH7ImoxX7+mpXI74NYGg==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' - '@react-native/normalize-colors@0.72.0': - resolution: {integrity: sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==} + '@react-native/normalize-colors@0.77.3': + resolution: {integrity: sha512-9gHhvK0EKskgIN4JiwzQdxiKhLCgH2LpCp+v38ZxWQpXTMbTDDE4AJRqYgWp2v9WUFQB/S5+XqBDZDgn/MGq9A==} - '@react-native/virtualized-lists@0.72.8': - resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} + '@react-native/virtualized-lists@0.77.3': + resolution: {integrity: sha512-3B0TPbLp7ZMWTlsOf+MzcuKuqF2HZzqh94+tPvw1thF5PxPaO2yZjVxfjrQ9EtdhQisG4siwiXVHB9DD6VkU4A==} + engines: {node: '>=18'} peerDependencies: + '@types/react': ^18.2.6 + react: '*' react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -1875,6 +1922,18 @@ packages: resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + '@testing-library/react-native@13.3.3': + resolution: {integrity: sha512-k6Mjsd9dbZgvY4Bl7P1NIpePQNi+dfYtlJ5voi9KQlynxSyQkfOgJmYGCYmw/aSgH/rUcFvG8u5gd4npzgRDyg==} + engines: {node: '>=18'} + peerDependencies: + jest: '>=29.0.0' + react: '>=18.2.0' + react-native: '>=0.71' + react-test-renderer: '>=18.2.0' + peerDependenciesMeta: + jest: + optional: true + '@testing-library/react@13.4.0': resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} engines: {node: '>=12'} @@ -1950,18 +2009,12 @@ packages: '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/istanbul-lib-coverage@2.0.4': - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} '@types/istanbul-lib-report@3.0.3': resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - '@types/istanbul-reports@3.0.1': - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} @@ -1986,6 +2039,9 @@ packages: '@types/node-fetch@2.6.1': resolution: {integrity: sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==} + '@types/node-forge@1.3.14': + resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} + '@types/node@15.14.9': resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} @@ -2006,9 +2062,6 @@ packages: peerDependencies: '@types/react': ^18.0.0 - '@types/react-native@0.72.8': - resolution: {integrity: sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==} - '@types/react@18.0.38': resolution: {integrity: sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==} @@ -2356,8 +2409,8 @@ packages: asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} astral-regex@1.0.0: @@ -2398,11 +2451,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - babel-core@7.0.0-bridge.0: - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - babel-eslint@10.1.0: resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} engines: {node: '>=6'} @@ -2439,6 +2487,9 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-syntax-hermes-parser@0.25.1: + resolution: {integrity: sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==} + babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} @@ -2627,6 +2678,14 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + ci-info@2.0.0: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} @@ -2741,6 +2800,10 @@ packages: command-exists@1.2.9: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + commander@2.13.0: resolution: {integrity: sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==} @@ -3005,9 +3068,6 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - deprecated-react-native-prop-types@4.2.3: - resolution: {integrity: sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g==} - deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} @@ -3027,10 +3087,6 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - diff-sequences@29.3.1: - resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3538,8 +3594,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - flow-enums-runtime@0.0.5: - resolution: {integrity: sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==} + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} flow-parser@0.206.0: resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} @@ -3753,9 +3809,15 @@ packages: hermes-estree@0.12.0: resolution: {integrity: sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==} + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + hermes-parser@0.12.0: resolution: {integrity: sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==} + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + hermes-profile-transformer@0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} engines: {node: '>=8'} @@ -3963,6 +4025,11 @@ packages: resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} engines: {node: '>=0.10.0'} + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4097,6 +4164,10 @@ packages: resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} engines: {node: '>=4'} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -4195,10 +4266,6 @@ packages: ts-node: optional: true - jest-diff@29.4.1: - resolution: {integrity: sha512-uazdl2g331iY56CEyfbNA0Ut7Mn2ulAG5vUaEHXycf1L6IPyuImIxSz4F0VYBKi7LYIuxOwTZzK3wh5jHzASMw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4248,10 +4315,6 @@ packages: resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-matcher-utils@29.4.1: - resolution: {integrity: sha512-k5h0u8V4nAEy6lSACepxL/rw78FLDkBnXhZVgFneVpnJONhb2DhZj/Gv4eNe+1XqQ5IhgUcqj745UwH0HJmMnA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4389,11 +4452,15 @@ packages: jsc-safe-url@0.2.4: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - jscodeshift@0.14.0: - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + jscodeshift@17.3.0: + resolution: {integrity: sha512-LjFrGOIORqXBU+jwfC9nbkjmQfFldtMIoS6d9z2LG/lkmyNXsJAySPT+2SWXJEoE68/bCWcxKpXH37npftgmow==} + engines: {node: '>=16'} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} @@ -4494,6 +4561,9 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -4652,6 +4722,9 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + marky@1.3.0: + resolution: {integrity: sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -4693,26 +4766,50 @@ packages: resolution: {integrity: sha512-dAnAmBqRdTwTPVn4W4JrowPolxD1MDbuU97u3MqtWZgVRvDpmr+Cqnn5oSxLQk3Uc+Zy3wkqVrB/zXNRlLDSAQ==} engines: {node: '>=16'} + metro-babel-transformer@0.81.5: + resolution: {integrity: sha512-oKCQuajU5srm+ZdDcFg86pG/U8hkSjBlkyFjz380SZ4TTIiI5F+OQB830i53D8hmqmcosa4wR/pnKv8y4Q3dLw==} + engines: {node: '>=18.18'} + metro-cache-key@0.76.9: resolution: {integrity: sha512-ugJuYBLngHVh1t2Jj+uP9pSCQl7enzVXkuh6+N3l0FETfqjgOaSHlcnIhMPn6yueGsjmkiIfxQU4fyFVXRtSTw==} engines: {node: '>=16'} + metro-cache-key@0.81.5: + resolution: {integrity: sha512-lGWnGVm1UwO8faRZ+LXQUesZSmP1LOg14OVR+KNPBip8kbMECbQJ8c10nGesw28uQT7AE0lwQThZPXlxDyCLKQ==} + engines: {node: '>=18.18'} + metro-cache@0.76.9: resolution: {integrity: sha512-W6QFEU5AJG1gH4Ltv8S2IvhmEhSDYnbPafyj5fGR3YLysdykj+olKv9B0V+YQXtcLGyY5CqpXLYUx595GdiKzA==} engines: {node: '>=16'} + metro-cache@0.81.5: + resolution: {integrity: sha512-wOsXuEgmZMZ5DMPoz1pEDerjJ11AuMy9JifH4yNW7NmWS0ghCRqvDxk13LsElzLshey8C+my/tmXauXZ3OqZgg==} + engines: {node: '>=18.18'} + metro-config@0.76.9: resolution: {integrity: sha512-oYyJ16PY3rprsfoi80L+gDJhFJqsKI3Pob5LKQbJpvL+gGr8qfZe1eQzYp5Xxxk9DOHKBV1xD94NB8GdT/DA8Q==} engines: {node: '>=16'} + metro-config@0.81.5: + resolution: {integrity: sha512-oDRAzUvj6RNRxratFdcVAqtAsg+T3qcKrGdqGZFUdwzlFJdHGR9Z413sW583uD2ynsuOjA2QB6US8FdwiBdNKg==} + engines: {node: '>=18.18'} + metro-core@0.76.9: resolution: {integrity: sha512-DSeEr43Wrd5Q7ySfRzYzDwfV89g2OZTQDf1s3exOcLjE5fb7awoLOkA2h46ZzN8NcmbbM0cuJy6hOwF073/yRQ==} engines: {node: '>=16'} + metro-core@0.81.5: + resolution: {integrity: sha512-+2R0c8ByfV2N7CH5wpdIajCWa8escUFd8TukfoXyBq/vb6yTCsznoA25FhNXJ+MC/cz1L447Zj3vdUfCXIZBwg==} + engines: {node: '>=18.18'} + metro-file-map@0.76.9: resolution: {integrity: sha512-7vJd8kksMDTO/0fbf3081bTrlw8SLiploeDf+vkkf0OwlrtDUWPOikfebp+MpZB2S61kamKjCNRfRkgrbPfSwg==} engines: {node: '>=16'} + metro-file-map@0.81.5: + resolution: {integrity: sha512-mW1PKyiO3qZvjeeVjj1brhkmIotObA3/9jdbY1fQQYvEWM6Ml7bN/oJCRDGn2+bJRlG+J8pwyJ+DgdrM4BsKyg==} + engines: {node: '>=18.18'} + metro-inspector-proxy@0.76.9: resolution: {integrity: sha512-idIiPkb8CYshc0WZmbzwmr4B1QwsQUbpDwBzHwxE1ni27FWKWhV9CD5p+qlXZHgfwJuMRfPN+tIaLSR8+vttYg==} engines: {node: '>=16'} @@ -4722,16 +4819,14 @@ packages: resolution: {integrity: sha512-ju2nUXTKvh96vHPoGZH/INhSvRRKM14CbGAJXQ98+g8K5z1v3luYJ/7+dFQB202eVzJdTB2QMtBjI1jUUpooCg==} engines: {node: '>=16'} + metro-minify-terser@0.81.5: + resolution: {integrity: sha512-/mn4AxjANnsSS3/Bb+zA1G5yIS5xygbbz/OuPaJYs0CPcZCaWt66D+65j4Ft/nJkffUxcwE9mk4ubpkl3rjgtw==} + engines: {node: '>=18.18'} + metro-minify-uglify@0.76.9: resolution: {integrity: sha512-MXRrM3lFo62FPISlPfTqC6n9HTEI3RJjDU5SvpE7sJFfJKLx02xXQEltsL/wzvEqK+DhRQ5DEYACTwf5W4Z3yA==} engines: {node: '>=16'} - metro-react-native-babel-preset@0.74.1: - resolution: {integrity: sha512-DjsG9nqm5C7cjB2SlgbcNJOn9y5MBUd3bRlCfnoj8CxAeGTGkS+yXd183lHR3C1bhmQNjuUE0abzzpE1CFh6JQ==} - deprecated: Use @react-native/babel-preset instead - peerDependencies: - '@babel/core': '*' - metro-react-native-babel-preset@0.76.9: resolution: {integrity: sha512-eCBtW/UkJPDr6HlMgFEGF+964DZsUEF9RGeJdZLKWE7d/0nY3ABZ9ZAGxzu9efQ35EWRox5bDMXUGaOwUe5ikQ==} engines: {node: '>=16'} @@ -4749,32 +4844,62 @@ packages: resolution: {integrity: sha512-s86ipNRas9vNR5lChzzSheF7HoaQEmzxBLzwFA6/2YcGmUCowcoyPAfs1yPh4cjMw9F1T4KlMLaiwniGE7HCyw==} engines: {node: '>=16'} + metro-resolver@0.81.5: + resolution: {integrity: sha512-6BX8Nq3g3go3FxcyXkVbWe7IgctjDTk6D9flq+P201DfHHQ28J+DWFpVelFcrNTn4tIfbP/Bw7u/0g2BGmeXfQ==} + engines: {node: '>=18.18'} + metro-runtime@0.76.9: resolution: {integrity: sha512-/5vezDpGUtA0Fv6cJg0+i6wB+QeBbvLeaw9cTSG7L76liP0b91f8vOcYzGaUbHI8pznJCCTerxRzpQ8e3/NcDw==} engines: {node: '>=16'} + metro-runtime@0.81.5: + resolution: {integrity: sha512-M/Gf71ictUKP9+77dV/y8XlAWg7xl76uhU7ggYFUwEdOHHWPG6gLBr1iiK0BmTjPFH8yRo/xyqMli4s3oGorPQ==} + engines: {node: '>=18.18'} + metro-source-map@0.76.9: resolution: {integrity: sha512-q5qsMlu8EFvsT46wUUh+ao+efDsicT30zmaPATNhq+PcTawDbDgnMuUD+FT0bvxxnisU2PWl91RdzKfNc2qPQA==} engines: {node: '>=16'} + metro-source-map@0.81.5: + resolution: {integrity: sha512-Jz+CjvCKLNbJZYJTBeN3Kq9kIJf6b61MoLBdaOQZJ5Ajhw6Pf95Nn21XwA8BwfUYgajsi6IXsp/dTZsYJbN00Q==} + engines: {node: '>=18.18'} + metro-symbolicate@0.76.9: resolution: {integrity: sha512-Yyq6Ukj/IeWnGST09kRt0sBK8TwzGZWoU7YAcQlh14+AREH454Olx4wbFTpkkhUkV05CzNCvUuXQ0efFxhA1bw==} engines: {node: '>=16'} hasBin: true + metro-symbolicate@0.81.5: + resolution: {integrity: sha512-X3HV3n3D6FuTE11UWFICqHbFMdTavfO48nXsSpnNGFkUZBexffu0Xd+fYKp+DJLNaQr3S+lAs8q9CgtDTlRRuA==} + engines: {node: '>=18.18'} + hasBin: true + metro-transform-plugins@0.76.9: resolution: {integrity: sha512-YEQeNlOCt92I7S9A3xbrfaDfwfgcxz9PpD/1eeop3c4cO3z3Q3otYuxw0WJ/rUIW8pZfOm5XCehd+1NRbWlAaw==} engines: {node: '>=16'} + metro-transform-plugins@0.81.5: + resolution: {integrity: sha512-MmHhVx/1dJC94FN7m3oHgv5uOjKH8EX8pBeu1pnPMxbJrx6ZuIejO0k84zTSaQTZ8RxX1wqwzWBpXAWPjEX8mA==} + engines: {node: '>=18.18'} + metro-transform-worker@0.76.9: resolution: {integrity: sha512-F69A0q0qFdJmP2Clqr6TpTSn4WTV9p5A28h5t9o+mB22ryXBZfUQ6BFBBW/6Wp2k/UtPH+oOsBfV9guiqm3d2Q==} engines: {node: '>=16'} + metro-transform-worker@0.81.5: + resolution: {integrity: sha512-lUFyWVHa7lZFRSLJEv+m4jH8WrR5gU7VIjUlg4XmxQfV8ngY4V10ARKynLhMYPeQGl7Qvf+Ayg0eCZ272YZ4Mg==} + engines: {node: '>=18.18'} + metro@0.76.9: resolution: {integrity: sha512-gcjcfs0l5qIPg0lc5P7pj0x7vPJ97tan+OnEjiYLbKjR1D7Oa78CE93YUPyymUPH6q7VzlzMm1UjT35waEkZUw==} engines: {node: '>=16'} hasBin: true + metro@0.81.5: + resolution: {integrity: sha512-YpFF0DDDpDVygeca2mAn7K0+us+XKmiGk4rIYMz/CRdjFoCGqAei/IQSpV0UrGfQbToSugpMQeQJveaWSH88Hg==} + engines: {node: '>=18.18'} + hasBin: true + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -4966,10 +5091,6 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -4979,6 +5100,10 @@ packages: encoding: optional: true + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + node-gyp@8.4.1: resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} engines: {node: '>= 10.12.0'} @@ -5108,6 +5233,10 @@ packages: resolution: {integrity: sha512-g0I/OLnSxf6OrN3QjSew3bTDJCdbZoWxnh8adh1z36alwCuGF1dgDeRA25bTYSakrG5WULSaWJPOdgnf1O/oQw==} engines: {node: '>=16'} + ob1@0.81.5: + resolution: {integrity: sha512-iNpbeXPLmaiT9I5g16gFFFjsF3sGxLpYG2EGP3dfFB4z+l9X60mp/yRzStHhMtuNt8qmf7Ww80nOPQHngHhnIQ==} + engines: {node: '>=18.18'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -5167,6 +5296,10 @@ packages: resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} engines: {node: '>=8'} + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -5716,8 +5849,8 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - react-devtools-core@4.28.5: - resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} + react-devtools-core@6.1.5: + resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} @@ -5733,12 +5866,20 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-native@0.72.17: - resolution: {integrity: sha512-k3dNe0XqoYCGGWTenbupWSj+ljW3GIfmYS5P4s3if4j0csx2YbenKgH1aJNWLp+UP7ONwfId6G+uBoUJfyMxXg==} - engines: {node: '>=16'} + react-native@0.77.3: + resolution: {integrity: sha512-fIYZ9+zX+iGcb/xGZA6oN3Uq9x46PdqVYtlyG+WmOIFQPVXgryaS9FJLdTvoTpsEA2JXGSGgNOdm640IdAW3cA==} + engines: {node: '>=18'} hasBin: true peerDependencies: - react: 18.2.0 + '@types/react': ^18.2.6 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} react-refresh@0.4.3: resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} @@ -5749,10 +5890,10 @@ packages: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-test-renderer@18.2.0: - resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} + react-test-renderer@18.3.1: + resolution: {integrity: sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==} peerDependencies: - react: ^18.2.0 + react: ^18.3.1 react@16.14.0: resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} @@ -5816,8 +5957,8 @@ packages: readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} rechoir@0.6.2: @@ -5933,11 +6074,6 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -6044,6 +6180,10 @@ packages: resolution: {integrity: sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==} engines: {node: '>=8'} + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -6431,10 +6571,6 @@ packages: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} - temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - terser@5.43.1: resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} engines: {node: '>=10'} @@ -6460,10 +6596,17 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} + tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -6695,11 +6838,6 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - use-sync-external-store@1.5.0: - resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6842,13 +6980,14 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@6.2.3: resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: @@ -7093,6 +7232,7 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: '@babel/types': 7.28.1 + optional: true '@babel/helper-globals@7.28.0': {} @@ -7226,6 +7366,7 @@ snapshots: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) transitivePeerDependencies: - supports-color + optional: true '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.0)': dependencies: @@ -7234,6 +7375,7 @@ snapshots: '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color + optional: true '@babel/plugin-proposal-export-default-from@7.27.1(@babel/core@7.28.0)': dependencies: @@ -7245,12 +7387,14 @@ snapshots: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) + optional: true '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) + optional: true '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.28.0)': dependencies: @@ -7260,12 +7404,14 @@ snapshots: '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) + optional: true '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) + optional: true '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.0)': dependencies: @@ -7275,6 +7421,7 @@ snapshots: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) transitivePeerDependencies: - supports-color + optional: true '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0)': dependencies: @@ -7948,7 +8095,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 - react-test-renderer: 18.2.0(react@18.3.1) + react-test-renderer: 18.3.1(react@18.3.1) '@cspotcode/source-map-support@0.8.1': dependencies: @@ -7998,11 +8145,13 @@ snapshots: '@gar/promisify@1.1.3': {} - '@hapi/hoek@9.3.0': {} + '@hapi/hoek@9.3.0': + optional: true '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 + optional: true '@humanwhocodes/config-array@0.13.0': dependencies: @@ -8043,6 +8192,8 @@ snapshots: '@isaacs/string-locale-compare@1.1.0': {} + '@isaacs/ttlcache@1.4.1': {} + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -8238,14 +8389,16 @@ snapshots: '@types/node': 16.18.126 '@types/yargs': 15.0.19 chalk: 4.1.2 + optional: true '@jest/types@27.5.1': dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 '@types/node': 16.18.126 '@types/yargs': 16.0.9 chalk: 4.1.2 + optional: true '@jest/types@29.6.3': dependencies: @@ -8627,6 +8780,7 @@ snapshots: prompts: 2.4.2 transitivePeerDependencies: - encoding + optional: true '@react-native-community/cli-config@11.4.1(encoding@0.1.13)': dependencies: @@ -8638,12 +8792,14 @@ snapshots: joi: 17.13.3 transitivePeerDependencies: - encoding + optional: true '@react-native-community/cli-debugger-ui@11.4.1': dependencies: serve-static: 1.16.2 transitivePeerDependencies: - supports-color + optional: true '@react-native-community/cli-doctor@11.4.1(encoding@0.1.13)': dependencies: @@ -8666,6 +8822,7 @@ snapshots: yaml: 2.8.0 transitivePeerDependencies: - encoding + optional: true '@react-native-community/cli-hermes@11.4.1(encoding@0.1.13)': dependencies: @@ -8675,6 +8832,7 @@ snapshots: hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding + optional: true '@react-native-community/cli-platform-android@11.4.1(encoding@0.1.13)': dependencies: @@ -8685,6 +8843,7 @@ snapshots: logkitty: 0.7.1 transitivePeerDependencies: - encoding + optional: true '@react-native-community/cli-platform-ios@11.4.1(encoding@0.1.13)': dependencies: @@ -8696,6 +8855,7 @@ snapshots: ora: 5.4.1 transitivePeerDependencies: - encoding + optional: true '@react-native-community/cli-plugin-metro@11.4.1(@babel/core@7.28.0)(encoding@0.1.13)': dependencies: @@ -8716,6 +8876,7 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true '@react-native-community/cli-server-api@11.4.1(encoding@0.1.13)': dependencies: @@ -8733,6 +8894,7 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true '@react-native-community/cli-tools@11.4.1(encoding@0.1.13)': dependencies: @@ -8747,10 +8909,12 @@ snapshots: shell-quote: 1.8.3 transitivePeerDependencies: - encoding + optional: true '@react-native-community/cli-types@11.4.1': dependencies: joi: 17.13.3 + optional: true '@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13)': dependencies: @@ -8777,33 +8941,148 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true + + '@react-native/assets-registry@0.77.3': {} + + '@react-native/babel-plugin-codegen@0.77.3(@babel/preset-env@7.28.0(@babel/core@7.28.0))': + dependencies: + '@babel/traverse': 7.28.0 + '@react-native/codegen': 0.77.3(@babel/preset-env@7.28.0(@babel/core@7.28.0)) + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color - '@react-native/assets-registry@0.72.0': {} + '@react-native/babel-preset@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))': + dependencies: + '@babel/core': 7.28.0 + '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-regenerator': 7.28.1(@babel/core@7.28.0) + '@babel/plugin-transform-runtime': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.0) + '@babel/template': 7.27.2 + '@react-native/babel-plugin-codegen': 0.77.3(@babel/preset-env@7.28.0(@babel/core@7.28.0)) + babel-plugin-syntax-hermes-parser: 0.25.1 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.0) + react-refresh: 0.14.2 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color - '@react-native/codegen@0.72.8(@babel/preset-env@7.28.0(@babel/core@7.28.0))': + '@react-native/codegen@0.77.3(@babel/preset-env@7.28.0(@babel/core@7.28.0))': dependencies: '@babel/parser': 7.28.0 '@babel/preset-env': 7.28.0(@babel/core@7.28.0) - flow-parser: 0.206.0 glob: 7.2.3 + hermes-parser: 0.25.1 + invariant: 2.2.4 + jscodeshift: 17.3.0(@babel/preset-env@7.28.0(@babel/core@7.28.0)) + nullthrows: 1.1.1 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + + '@react-native/community-cli-plugin@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))': + dependencies: + '@react-native/dev-middleware': 0.77.3 + '@react-native/metro-babel-transformer': 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0)) + chalk: 4.1.2 + debug: 2.6.9 + invariant: 2.2.4 + metro: 0.81.5 + metro-config: 0.81.5 + metro-core: 0.81.5 + readline: 1.3.0 + semver: 7.7.2 + optionalDependencies: + '@react-native-community/cli': 11.4.1(@babel/core@7.28.0)(encoding@0.1.13) + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - supports-color + - utf-8-validate + + '@react-native/debugger-frontend@0.77.3': {} + + '@react-native/dev-middleware@0.77.3': + dependencies: + '@isaacs/ttlcache': 1.4.1 + '@react-native/debugger-frontend': 0.77.3 + chrome-launcher: 0.15.2 + chromium-edge-launcher: 0.2.0 + connect: 3.7.0 + debug: 2.6.9 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.28.0(@babel/core@7.28.0)) - mkdirp: 0.5.6 nullthrows: 1.1.1 + open: 7.4.2 + selfsigned: 2.4.1 + serve-static: 1.16.2 + ws: 6.2.3 transitivePeerDependencies: + - bufferutil - supports-color + - utf-8-validate - '@react-native/gradle-plugin@0.72.11': {} + '@react-native/gradle-plugin@0.77.3': {} - '@react-native/js-polyfills@0.72.1': {} + '@react-native/js-polyfills@0.77.3': {} - '@react-native/normalize-colors@0.72.0': {} + '@react-native/metro-babel-transformer@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))': + dependencies: + '@babel/core': 7.28.0 + '@react-native/babel-preset': 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0)) + hermes-parser: 0.25.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color - '@react-native/virtualized-lists@0.72.8(react-native@0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1))': + '@react-native/normalize-colors@0.77.3': {} + + '@react-native/virtualized-lists@0.77.3(@types/react@18.3.23)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1) + react: 18.3.1 + react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 '@rollup/plugin-alias@5.1.1(rollup@3.29.5)': optionalDependencies: @@ -8891,10 +9170,13 @@ snapshots: '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 + optional: true - '@sideway/formula@3.0.1': {} + '@sideway/formula@3.0.1': + optional: true - '@sideway/pinpoint@2.0.0': {} + '@sideway/pinpoint@2.0.0': + optional: true '@sigstore/bundle@1.1.0': dependencies: @@ -8972,6 +9254,18 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 + '@testing-library/react-native@13.3.3(jest@29.7.0(@types/node@16.18.126)(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.8.3)))(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + jest-matcher-utils: 30.0.5 + picocolors: 1.1.1 + pretty-format: 30.0.5 + react: 18.3.1 + react-native: 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1) + react-test-renderer: 18.3.1(react@18.3.1) + redent: 3.0.0 + optionalDependencies: + jest: 29.7.0(@types/node@16.18.126)(ts-node@10.9.2(@types/node@16.18.126)(typescript@5.8.3)) + '@testing-library/react@13.4.0(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.27.6 @@ -9044,18 +9338,12 @@ snapshots: dependencies: '@types/node': 16.18.126 - '@types/istanbul-lib-coverage@2.0.4': {} - '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports@3.0.1': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 @@ -9091,6 +9379,10 @@ snapshots: '@types/node': 16.18.126 form-data: 3.0.4 + '@types/node-forge@1.3.14': + dependencies: + '@types/node': 16.18.126 + '@types/node@15.14.9': {} '@types/node@16.18.126': {} @@ -9107,13 +9399,6 @@ snapshots: dependencies: '@types/react': 18.3.23 - '@types/react-native@0.72.8(react-native@0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1))': - dependencies: - '@react-native/virtualized-lists': 0.72.8(react-native@0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1)) - '@types/react': 18.3.23 - transitivePeerDependencies: - - react-native - '@types/react@18.0.38': dependencies: '@types/prop-types': 15.7.15 @@ -9160,10 +9445,12 @@ snapshots: '@types/yargs@15.0.19': dependencies: '@types/yargs-parser': 21.0.3 + optional: true '@types/yargs@16.0.9': dependencies: '@types/yargs-parser': 21.0.3 + optional: true '@types/yargs@17.0.33': dependencies: @@ -9446,8 +9733,10 @@ snapshots: colorette: 1.4.0 slice-ansi: 2.1.0 strip-ansi: 5.2.0 + optional: true - ansi-regex@4.1.1: {} + ansi-regex@4.1.1: + optional: true ansi-regex@5.0.1: {} @@ -9470,7 +9759,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - appdirsjs@1.2.7: {} + appdirsjs@1.2.7: + optional: true aproba@2.1.0: {} @@ -9607,11 +9897,12 @@ snapshots: asap@2.0.6: {} - ast-types@0.15.2: + ast-types@0.16.1: dependencies: tslib: 2.8.1 - astral-regex@1.0.0: {} + astral-regex@1.0.0: + optional: true astral-regex@2.0.0: {} @@ -9641,10 +9932,6 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - babel-core@7.0.0-bridge.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - babel-eslint@10.1.0(eslint@7.32.0): dependencies: '@babel/code-frame': 7.27.1 @@ -9711,7 +9998,12 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {} + babel-plugin-syntax-hermes-parser@0.25.1: + dependencies: + hermes-parser: 0.25.1 + + babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: + optional: true babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.0): dependencies: @@ -9770,6 +10062,7 @@ snapshots: babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color + optional: true babel-preset-jest@29.6.3(@babel/core@7.28.0): dependencies: @@ -9850,7 +10143,8 @@ snapshots: builtins@1.0.3: {} - bytes@3.1.2: {} + bytes@3.1.2: + optional: true cacache@15.3.0: dependencies: @@ -10016,6 +10310,26 @@ snapshots: chownr@2.0.0: {} + chrome-launcher@0.15.2: + dependencies: + '@types/node': 16.18.126 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + transitivePeerDependencies: + - supports-color + + chromium-edge-launcher@0.2.0: + dependencies: + '@types/node': 16.18.126 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.4.2 + mkdirp: 1.0.4 + rimraf: 3.0.2 + transitivePeerDependencies: + - supports-color + ci-info@2.0.0: {} ci-info@3.5.0: {} @@ -10045,6 +10359,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + optional: true cliui@7.0.4: dependencies: @@ -10102,7 +10417,8 @@ snapshots: colord@2.9.3: {} - colorette@1.4.0: {} + colorette@1.4.0: + optional: true colors@1.0.3: {} @@ -10110,9 +10426,13 @@ snapshots: dependencies: delayed-stream: 1.0.0 - command-exists@1.2.9: {} + command-exists@1.2.9: + optional: true - commander@2.13.0: {} + commander@12.1.0: {} + + commander@2.13.0: + optional: true commander@2.20.3: {} @@ -10120,7 +10440,8 @@ snapshots: commander@7.2.0: {} - commander@9.5.0: {} + commander@9.5.0: + optional: true commenting@1.1.0: {} @@ -10138,6 +10459,7 @@ snapshots: compressible@2.0.18: dependencies: mime-db: 1.54.0 + optional: true compression@1.8.0: dependencies: @@ -10150,6 +10472,7 @@ snapshots: vary: 1.1.2 transitivePeerDependencies: - supports-color + optional: true concat-map@0.0.1: {} @@ -10351,7 +10674,8 @@ snapshots: dateformat@4.6.3: {} - dayjs@1.11.13: {} + dayjs@1.11.13: + optional: true debug@2.6.9: dependencies: @@ -10363,7 +10687,8 @@ snapshots: debuglog@1.0.1: {} - decamelize@1.2.0: {} + decamelize@1.2.0: + optional: true decimal.js@10.6.0: {} @@ -10416,16 +10741,11 @@ snapshots: delegates@1.0.0: {} - denodeify@1.2.1: {} + denodeify@1.2.1: + optional: true depd@2.0.0: {} - deprecated-react-native-prop-types@4.2.3: - dependencies: - '@react-native/normalize-colors': 0.72.0 - invariant: 2.2.4 - prop-types: 15.8.1 - deprecation@2.3.1: {} destroy@1.2.0: {} @@ -10440,8 +10760,6 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 - diff-sequences@29.3.1: {} - diff-sequences@29.6.3: {} diff@4.0.2: {} @@ -10552,7 +10870,8 @@ snapshots: env-paths@2.2.1: {} - envinfo@7.14.0: {} + envinfo@7.14.0: + optional: true enzyme-shallow-equal@1.0.7: dependencies: @@ -10611,6 +10930,7 @@ snapshots: dependencies: accepts: 1.3.8 escape-html: 1.0.3 + optional: true es-abstract@1.24.0: dependencies: @@ -11007,7 +11327,7 @@ snapshots: dependencies: '@jest/expect-utils': 29.4.1 jest-get-type: 29.6.3 - jest-matcher-utils: 29.4.1 + jest-matcher-utils: 29.7.0 jest-message-util: 29.4.1 jest-util: 29.4.1 @@ -11137,7 +11457,7 @@ snapshots: flatted@3.3.3: {} - flow-enums-runtime@0.0.5: {} + flow-enums-runtime@0.0.6: {} flow-parser@0.206.0: {} @@ -11181,6 +11501,7 @@ snapshots: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + optional: true fs-extra@9.1.0: dependencies: @@ -11383,15 +11704,24 @@ snapshots: dependencies: function-bind: 1.1.2 - hermes-estree@0.12.0: {} + hermes-estree@0.12.0: + optional: true + + hermes-estree@0.25.1: {} hermes-parser@0.12.0: dependencies: hermes-estree: 0.12.0 + optional: true + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 hermes-profile-transformer@0.0.6: dependencies: source-map: 0.7.4 + optional: true hosted-git-info@2.8.9: {} @@ -11622,13 +11952,16 @@ snapshots: is-directory@0.3.1: {} + is-docker@2.2.1: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: dependencies: call-bound: 1.0.4 - is-fullwidth-code-point@2.0.0: {} + is-fullwidth-code-point@2.0.0: + optional: true is-fullwidth-code-point@3.0.0: {} @@ -11729,7 +12062,12 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 - is-wsl@1.1.0: {} + is-wsl@1.1.0: + optional: true + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 isarray@1.0.0: {} @@ -11899,13 +12237,6 @@ snapshots: - babel-plugin-macros - supports-color - jest-diff@29.4.1: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.3.1 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -12008,13 +12339,6 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-matcher-utils@29.4.1: - dependencies: - chalk: 4.1.2 - jest-diff: 29.4.1 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 @@ -12085,7 +12409,8 @@ snapshots: dependencies: react: 16.14.0 - jest-regex-util@27.5.1: {} + jest-regex-util@27.5.1: + optional: true jest-regex-util@29.6.3: {} @@ -12193,9 +12518,10 @@ snapshots: '@jest/types': 27.5.1 '@types/node': 16.18.126 chalk: 4.1.2 - ci-info: 3.5.0 + ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + optional: true jest-util@29.4.1: dependencies: @@ -12249,6 +12575,7 @@ snapshots: '@types/node': 16.18.126 merge-stream: 2.0.0 supports-color: 8.1.1 + optional: true jest-worker@29.7.0: dependencies: @@ -12276,6 +12603,7 @@ snapshots: '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + optional: true js-tokens@4.0.0: {} @@ -12294,28 +12622,28 @@ snapshots: jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.28.0(@babel/core@7.28.0)): + jscodeshift@17.3.0(@babel/preset-env@7.28.0(@babel/core@7.28.0)): dependencies: '@babel/core': 7.28.0 '@babel/parser': 7.28.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.28.0) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/preset-env': 7.28.0(@babel/core@7.28.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.0) '@babel/preset-flow': 7.27.1(@babel/core@7.28.0) '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) '@babel/register': 7.27.1(@babel/core@7.28.0) - babel-core: 7.0.0-bridge.0(@babel/core@7.28.0) - chalk: 4.1.2 flow-parser: 0.206.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 + picocolors: 1.1.1 + recast: 0.23.11 + tmp: 0.2.5 + write-file-atomic: 5.0.1 + optionalDependencies: + '@babel/preset-env': 7.28.0(@babel/core@7.28.0) transitivePeerDependencies: - supports-color @@ -12377,6 +12705,7 @@ snapshots: jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 + optional: true jsonfile@6.1.0: dependencies: @@ -12420,6 +12749,13 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lighthouse-logger@1.4.2: + dependencies: + debug: 2.6.9 + marky: 1.3.0 + transitivePeerDependencies: + - supports-color + lilconfig@2.1.0: {} lines-and-columns@1.2.4: {} @@ -12502,6 +12838,7 @@ snapshots: ansi-fragments: 0.2.1 dayjs: 1.11.13 yargs: 15.4.1 + optional: true loose-envify@1.4.0: dependencies: @@ -12614,6 +12951,8 @@ snapshots: dependencies: tmpl: 1.0.5 + marky@1.3.0: {} + math-intrinsics@1.1.0: {} maximatch@0.1.0: @@ -12665,13 +13004,35 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + optional: true + + metro-babel-transformer@0.81.5: + dependencies: + '@babel/core': 7.28.0 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.25.1 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + metro-cache-key@0.76.9: + optional: true - metro-cache-key@0.76.9: {} + metro-cache-key@0.81.5: + dependencies: + flow-enums-runtime: 0.0.6 metro-cache@0.76.9: dependencies: metro-core: 0.76.9 rimraf: 3.0.2 + optional: true + + metro-cache@0.81.5: + dependencies: + exponential-backoff: 3.1.2 + flow-enums-runtime: 0.0.6 + metro-core: 0.81.5 metro-config@0.76.9(encoding@0.1.13): dependencies: @@ -12687,11 +13048,34 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true + + metro-config@0.81.5: + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + flow-enums-runtime: 0.0.6 + jest-validate: 29.7.0 + metro: 0.81.5 + metro-cache: 0.81.5 + metro-core: 0.81.5 + metro-runtime: 0.81.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate metro-core@0.76.9: dependencies: lodash.throttle: 4.1.1 metro-resolver: 0.76.9 + optional: true + + metro-core@0.81.5: + dependencies: + flow-enums-runtime: 0.0.6 + lodash.throttle: 4.1.1 + metro-resolver: 0.81.5 metro-file-map@0.76.9: dependencies: @@ -12711,6 +13095,21 @@ snapshots: fsevents: 2.3.3 transitivePeerDependencies: - supports-color + optional: true + + metro-file-map@0.81.5: + dependencies: + debug: 2.6.9 + fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 + nullthrows: 1.1.1 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color metro-inspector-proxy@0.76.9(encoding@0.1.13): dependencies: @@ -12724,57 +13123,22 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true metro-minify-terser@0.76.9: dependencies: terser: 5.43.1 + optional: true - metro-minify-uglify@0.76.9: + metro-minify-terser@0.81.5: dependencies: - uglify-es: 3.3.9 + flow-enums-runtime: 0.0.6 + terser: 5.43.1 - metro-react-native-babel-preset@0.74.1(@babel/core@7.28.0): + metro-minify-uglify@0.76.9: dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.28.0) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-export-default-from': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.28.0) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.28.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-export-default-from': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-runtime': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.0) - '@babel/template': 7.27.2 - react-refresh: 0.4.3 - transitivePeerDependencies: - - supports-color + uglify-es: 3.3.9 + optional: true metro-react-native-babel-preset@0.76.9(@babel/core@7.28.0): dependencies: @@ -12819,6 +13183,7 @@ snapshots: react-refresh: 0.4.3 transitivePeerDependencies: - supports-color + optional: true metro-react-native-babel-transformer@0.76.9(@babel/core@7.28.0): dependencies: @@ -12829,13 +13194,25 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + optional: true - metro-resolver@0.76.9: {} + metro-resolver@0.76.9: + optional: true + + metro-resolver@0.81.5: + dependencies: + flow-enums-runtime: 0.0.6 metro-runtime@0.76.9: dependencies: '@babel/runtime': 7.27.6 react-refresh: 0.4.3 + optional: true + + metro-runtime@0.81.5: + dependencies: + '@babel/runtime': 7.27.6 + flow-enums-runtime: 0.0.6 metro-source-map@0.76.9: dependencies: @@ -12849,6 +13226,22 @@ snapshots: vlq: 1.0.1 transitivePeerDependencies: - supports-color + optional: true + + metro-source-map@0.81.5: + dependencies: + '@babel/traverse': 7.28.0 + '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.0' + '@babel/types': 7.28.1 + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-symbolicate: 0.81.5 + nullthrows: 1.1.1 + ob1: 0.81.5 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color metro-symbolicate@0.76.9: dependencies: @@ -12860,6 +13253,18 @@ snapshots: vlq: 1.0.1 transitivePeerDependencies: - supports-color + optional: true + + metro-symbolicate@0.81.5: + dependencies: + flow-enums-runtime: 0.0.6 + invariant: 2.2.4 + metro-source-map: 0.81.5 + nullthrows: 1.1.1 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color metro-transform-plugins@0.76.9: dependencies: @@ -12870,6 +13275,18 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + optional: true + + metro-transform-plugins@0.81.5: + dependencies: + '@babel/core': 7.28.0 + '@babel/generator': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + flow-enums-runtime: 0.0.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color metro-transform-worker@0.76.9(encoding@0.1.13): dependencies: @@ -12891,6 +13308,27 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true + + metro-transform-worker@0.81.5: + dependencies: + '@babel/core': 7.28.0 + '@babel/generator': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.1 + flow-enums-runtime: 0.0.6 + metro: 0.81.5 + metro-babel-transformer: 0.81.5 + metro-cache: 0.81.5 + metro-cache-key: 0.81.5 + metro-minify-terser: 0.81.5 + metro-source-map: 0.81.5 + metro-transform-plugins: 0.81.5 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate metro@0.76.9(encoding@0.1.13): dependencies: @@ -12946,6 +13384,54 @@ snapshots: - encoding - supports-color - utf-8-validate + optional: true + + metro@0.81.5: + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.0 + '@babel/generator': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.1 + accepts: 1.3.8 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 + graceful-fs: 4.2.11 + hermes-parser: 0.25.1 + image-size: 1.2.1 + invariant: 2.2.4 + jest-worker: 29.7.0 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.81.5 + metro-cache: 0.81.5 + metro-cache-key: 0.81.5 + metro-config: 0.81.5 + metro-core: 0.81.5 + metro-file-map: 0.81.5 + metro-resolver: 0.81.5 + metro-runtime: 0.81.5 + metro-source-map: 0.81.5 + metro-symbolicate: 0.81.5 + metro-transform-plugins: 0.81.5 + metro-transform-worker: 0.81.5 + mime-types: 2.1.35 + nullthrows: 1.1.1 + serialize-error: 2.1.0 + source-map: 0.5.7 + throat: 5.0.0 + ws: 7.5.10 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate micromatch@4.0.8: dependencies: @@ -12954,7 +13440,8 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.54.0: {} + mime-db@1.54.0: + optional: true mime-types@2.1.35: dependencies: @@ -12964,7 +13451,8 @@ snapshots: mime@2.5.2: {} - mime@2.6.0: {} + mime@2.6.0: + optional: true mime@3.0.0: {} @@ -13115,23 +13603,23 @@ snapshots: just-extend: 6.2.0 path-to-regexp: 6.3.0 - nocache@3.0.4: {} + nocache@3.0.4: + optional: true - node-abort-controller@3.1.1: {} + node-abort-controller@3.1.1: + optional: true node-addon-api@7.1.1: optional: true - node-dir@0.1.17: - dependencies: - minimatch: 3.1.2 - node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 optionalDependencies: encoding: 0.1.13 + node-forge@1.3.1: {} + node-gyp@8.4.1: dependencies: env-paths: 2.2.1 @@ -13169,7 +13657,8 @@ snapshots: node-releases@2.0.19: {} - node-stream-zip@1.15.0: {} + node-stream-zip@1.15.0: + optional: true nopt@5.0.0: dependencies: @@ -13307,7 +13796,12 @@ snapshots: nwsapi@2.2.20: {} - ob1@0.76.9: {} + ob1@0.76.9: + optional: true + + ob1@0.81.5: + dependencies: + flow-enums-runtime: 0.0.6 object-assign@4.1.1: {} @@ -13364,7 +13858,8 @@ snapshots: dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} + on-headers@1.0.2: + optional: true once@1.4.0: dependencies: @@ -13377,6 +13872,12 @@ snapshots: open@6.4.0: dependencies: is-wsl: 1.1.0 + optional: true + + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 optionator@0.9.4: dependencies: @@ -13838,6 +14339,7 @@ snapshots: ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 + optional: true pretty-format@27.5.1: dependencies: @@ -13934,7 +14436,7 @@ snapshots: range-parser@1.2.1: {} - react-devtools-core@4.28.5: + react-devtools-core@6.1.5: dependencies: shell-quote: 1.8.3 ws: 7.5.10 @@ -13954,55 +14456,60 @@ snapshots: react-is@18.3.1: {} - react-native@0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1): + react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 11.4.1(@babel/core@7.28.0)(encoding@0.1.13) - '@react-native-community/cli-platform-android': 11.4.1(encoding@0.1.13) - '@react-native-community/cli-platform-ios': 11.4.1(encoding@0.1.13) - '@react-native/assets-registry': 0.72.0 - '@react-native/codegen': 0.72.8(@babel/preset-env@7.28.0(@babel/core@7.28.0)) - '@react-native/gradle-plugin': 0.72.11 - '@react-native/js-polyfills': 0.72.1 - '@react-native/normalize-colors': 0.72.0 - '@react-native/virtualized-lists': 0.72.8(react-native@0.72.17(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(encoding@0.1.13)(react@18.3.1)) + '@react-native/assets-registry': 0.77.3 + '@react-native/codegen': 0.77.3(@babel/preset-env@7.28.0(@babel/core@7.28.0)) + '@react-native/community-cli-plugin': 0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13)) + '@react-native/gradle-plugin': 0.77.3 + '@react-native/js-polyfills': 0.77.3 + '@react-native/normalize-colors': 0.77.3 + '@react-native/virtualized-lists': 0.77.3(@types/react@18.3.23)(react-native@0.77.3(@babel/core@7.28.0)(@babel/preset-env@7.28.0(@babel/core@7.28.0))(@react-native-community/cli@11.4.1(@babel/core@7.28.0)(encoding@0.1.13))(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.28.0) + babel-plugin-syntax-hermes-parser: 0.25.1 base64-js: 1.5.1 - deprecated-react-native-prop-types: 4.2.3 + chalk: 4.1.2 + commander: 12.1.0 event-target-shim: 5.0.1 - flow-enums-runtime: 0.0.5 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 invariant: 2.2.4 jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.76.9 - metro-source-map: 0.76.9 - mkdirp: 0.5.6 + metro-runtime: 0.81.5 + metro-source-map: 0.81.5 nullthrows: 1.1.1 - pretty-format: 26.6.2 + pretty-format: 29.7.0 promise: 8.3.0 react: 18.3.1 - react-devtools-core: 4.28.5 - react-refresh: 0.4.3 - react-shallow-renderer: 16.15.0(react@18.3.1) + react-devtools-core: 6.1.5 + react-refresh: 0.14.2 regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 + semver: 7.7.2 stacktrace-parser: 0.1.11 - use-sync-external-store: 1.5.0(react@18.3.1) whatwg-fetch: 3.6.20 ws: 6.2.3 yargs: 17.7.2 + optionalDependencies: + '@types/react': 18.3.23 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' + - '@react-native-community/cli' - bufferutil - - encoding - supports-color - utf-8-validate - react-refresh@0.4.3: {} + react-refresh@0.14.2: {} + + react-refresh@0.4.3: + optional: true react-shallow-renderer@16.15.0(react@18.3.1): dependencies: @@ -14010,7 +14517,7 @@ snapshots: react: 18.3.1 react-is: 18.3.1 - react-test-renderer@18.2.0(react@18.3.1): + react-test-renderer@18.3.1(react@18.3.1): dependencies: react: 18.3.1 react-is: 18.3.1 @@ -14102,11 +14609,12 @@ snapshots: readline@1.3.0: {} - recast@0.21.5: + recast@0.23.11: dependencies: - ast-types: 0.15.2 + ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 + tiny-invariant: 1.3.3 tslib: 2.8.1 rechoir@0.6.2: @@ -14185,7 +14693,8 @@ snapshots: require-from-string@2.0.2: {} - require-main-filename@2.0.0: {} + require-main-filename@2.0.0: + optional: true requires-port@1.0.0: {} @@ -14224,10 +14733,6 @@ snapshots: reusify@1.1.0: {} - rimraf@2.6.3: - dependencies: - glob: 7.2.3 - rimraf@2.7.1: dependencies: glob: 7.2.3 @@ -14365,6 +14870,11 @@ snapshots: scoped-regex@2.1.0: {} + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.14 + node-forge: 1.3.1 + semver@5.7.2: {} semver@6.3.1: {} @@ -14515,6 +15025,7 @@ snapshots: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 + optional: true slice-ansi@4.0.0: dependencies: @@ -14567,7 +15078,8 @@ snapshots: source-map@0.6.1: {} - source-map@0.7.4: {} + source-map@0.7.4: + optional: true spawn-command@0.0.2: {} @@ -14720,6 +15232,7 @@ snapshots: strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 + optional: true strip-ansi@6.0.1: dependencies: @@ -14764,7 +15277,8 @@ snapshots: postcss: 8.5.6 postcss-selector-parser: 6.1.2 - sudo-prompt@9.2.1: {} + sudo-prompt@9.2.1: + optional: true supports-color@5.5.0: dependencies: @@ -14819,10 +15333,6 @@ snapshots: temp-dir@2.0.0: {} - temp@0.8.4: - dependencies: - rimraf: 2.6.3 - terser@5.43.1: dependencies: '@jridgewell/source-map': 0.3.10 @@ -14846,13 +15356,18 @@ snapshots: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 + optional: true through@2.3.8: {} + tiny-invariant@1.3.3: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 + tmp@0.2.5: {} + tmpl@1.0.5: {} to-regex-range@5.0.1: @@ -15017,6 +15532,7 @@ snapshots: dependencies: commander: 2.13.0 source-map: 0.6.1 + optional: true unbox-primitive@1.1.0: dependencies: @@ -15062,7 +15578,8 @@ snapshots: universal-user-agent@6.0.1: {} - universalify@0.1.2: {} + universalify@0.1.2: + optional: true universalify@0.2.0: {} @@ -15087,10 +15604,6 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-sync-external-store@1.5.0(react@18.3.1): - dependencies: - react: 18.3.1 - util-deprecate@1.0.2: {} utils-merge@1.0.1: {} @@ -15118,7 +15631,8 @@ snapshots: validate-npm-package-name@5.0.1: {} - vary@1.1.2: {} + vary@1.1.2: + optional: true vinyl-file@3.0.0: dependencies: @@ -15208,7 +15722,8 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-module@2.0.1: {} + which-module@2.0.1: + optional: true which-pm@2.2.0: dependencies: @@ -15259,16 +15774,15 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@2.4.3: + write-file-atomic@4.0.2: dependencies: - graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@4.0.2: + write-file-atomic@5.0.1: dependencies: imurmurhash: 0.1.4 - signal-exit: 3.0.7 + signal-exit: 4.1.0 ws@6.2.3: dependencies: @@ -15291,13 +15805,15 @@ snapshots: xmlchars@2.2.0: {} - xtend@4.0.2: {} + xtend@4.0.2: + optional: true xxhashjs@0.2.2: dependencies: cuint: 0.2.2 - y18n@4.0.3: {} + y18n@4.0.3: + optional: true y18n@5.0.8: {} @@ -15307,12 +15823,14 @@ snapshots: yaml@1.10.2: {} - yaml@2.8.0: {} + yaml@2.8.0: + optional: true yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 + optional: true yargs-parser@20.2.9: {} @@ -15331,6 +15849,7 @@ snapshots: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 + optional: true yargs@16.2.0: dependencies: