diff --git a/apps/mobile/app/components/header/index.tsx b/apps/mobile/app/components/header/index.tsx index eeef627c4..15a6e4b66 100644 --- a/apps/mobile/app/components/header/index.tsx +++ b/apps/mobile/app/components/header/index.tsx @@ -105,6 +105,7 @@ export const Header = ({ paddingHorizontal: !hasSearch ? 0 : DefaultAppStyles.GAP_SMALL, alignItems: "center" }} + testID="search-header" onPress={() => { onSearch?.(); }} diff --git a/apps/mobile/app/components/list-items/headers/section-header.tsx b/apps/mobile/app/components/list-items/headers/section-header.tsx index ecd51a28c..fcdbe1457 100644 --- a/apps/mobile/app/components/list-items/headers/section-header.tsx +++ b/apps/mobile/app/components/list-items/headers/section-header.tsx @@ -120,6 +120,8 @@ export const SectionHeader = React.memo< : "sort-descending" } color={colors.secondary.icon} + t + testID="icon-sort" onPress={() => { if (!screen) return; presentSheet({ diff --git a/apps/mobile/app/components/list-items/note/index.tsx b/apps/mobile/app/components/list-items/note/index.tsx index e66227019..e8ef4481c 100644 --- a/apps/mobile/app/components/list-items/note/index.tsx +++ b/apps/mobile/app/components/list-items/note/index.tsx @@ -223,7 +223,7 @@ const NoteItem = ({ ) : null} diff --git a/apps/mobile/app/components/properties/items.tsx b/apps/mobile/app/components/properties/items.tsx index aa8636adf..660551333 100644 --- a/apps/mobile/app/components/properties/items.tsx +++ b/apps/mobile/app/components/properties/items.tsx @@ -70,6 +70,7 @@ const COLUMN_BAR_ITEMS: ActionId[] = [ "reorder", "rename-color", "rename-tag", + "restore", "trash" ]; @@ -128,7 +129,6 @@ export const Items = ({ item, close }: { item: Item; close: () => void }) => { ({ item }: { item: Action }) => ( void }) => { void }) => { ? colors.error.paragraph : colors.primary.paragraph }} + testID={"icon-" + item.id} onPress={item.onPress} title={item.title} icon={item.icon} diff --git a/apps/mobile/app/components/selection-header/index.tsx b/apps/mobile/app/components/selection-header/index.tsx index 80cb83f7d..a6e983ecf 100644 --- a/apps/mobile/app/components/selection-header/index.tsx +++ b/apps/mobile/app/components/selection-header/index.tsx @@ -278,6 +278,7 @@ export const SelectionHeader = React.memo( { onPress={() => { UserSheet.present(); }} + testID="sidemenu-settings-icon" style={{ width: 40, height: 40 @@ -62,18 +63,6 @@ const SettingsIcon = () => { size={AppFontSize.lg} /> )} - - {/* - {userProfile?.fullName - ? userProfile.fullName.split(" ")[0] - : strings.settings()} - */} ); }; diff --git a/apps/mobile/app/components/side-menu/side-menu-home.tsx b/apps/mobile/app/components/side-menu/side-menu-home.tsx index 48566aa15..5ba88024b 100644 --- a/apps/mobile/app/components/side-menu/side-menu-home.tsx +++ b/apps/mobile/app/components/side-menu/side-menu-home.tsx @@ -48,7 +48,6 @@ export function SideMenuHome() { style={{ height: "100%", width: "100%", - paddingTop: DefaultAppStyles.GAP_SMALL, backgroundColor: colors.primary.background, gap: DefaultAppStyles.GAP }} diff --git a/apps/mobile/app/components/side-menu/side-menu-list-empty.tsx b/apps/mobile/app/components/side-menu/side-menu-list-empty.tsx index e8184ed75..d998f9fc6 100644 --- a/apps/mobile/app/components/side-menu/side-menu-list-empty.tsx +++ b/apps/mobile/app/components/side-menu/side-menu-list-empty.tsx @@ -16,13 +16,12 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ +import { useThemeColors } from "@notesnook/theme"; import React from "react"; import { View } from "react-native"; -import { SideMenuHeader } from "./side-menu-header"; -import Paragraph from "../ui/typography/paragraph"; import { AppFontSize } from "../../utils/size"; -import { useThemeColors } from "@notesnook/theme"; -import { DefaultAppStyles } from "../../utils/styles"; +import Paragraph from "../ui/typography/paragraph"; +import { SideMenuHeader } from "./side-menu-header"; type SideMenuListEmptyProps = { placeholder: string; @@ -39,8 +38,7 @@ export const SideMenuListEmpty = (props: SideMenuListEmptyProps) => { > diff --git a/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx b/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx index 889c35f29..026c45061 100644 --- a/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx +++ b/apps/mobile/app/components/side-menu/side-menu-notebooks.tsx @@ -241,9 +241,7 @@ const NotebookItem = ({ { if (item.hasChildren) { onToggleExpanded?.(); diff --git a/apps/mobile/app/components/side-menu/side-menu-tags.tsx b/apps/mobile/app/components/side-menu/side-menu-tags.tsx index f2357dd84..cbef1faea 100644 --- a/apps/mobile/app/components/side-menu/side-menu-tags.tsx +++ b/apps/mobile/app/components/side-menu/side-menu-tags.tsx @@ -229,7 +229,6 @@ export const SideMenuTags = () => { return ( . import { Item, ItemType } from "@notesnook/core"; import { Monographs } from "../screens/notes/monographs"; +import Navigation from "../services/navigation"; export type SideMenuItem = { dataType?: ItemType | "monograph"; @@ -67,6 +68,7 @@ export const MenuItemsList: SideMenuItem[] = [ title: "Monographs", icon: "text-box-multiple-outline", onPress: () => { + Navigation.closeDrawer(); Monographs.navigate(); } }, diff --git a/apps/mobile/e2e/tests/index.e2e.ts b/apps/mobile/e2e/tests/index.e2e.ts index 5acdde8ef..5e7a2fb79 100644 --- a/apps/mobile/e2e/tests/index.e2e.ts +++ b/apps/mobile/e2e/tests/index.e2e.ts @@ -26,13 +26,28 @@ describe("APP LAUNCH AND NAVIGATION", () => { it("Basic navigation should work", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); await Tests.navigate("Favorites"); - await Tests.navigate("Trash"); - await Tests.navigate("Tags"); - await Tests.navigate("Settings"); - await Tests.navigate("Monographs"); await Tests.navigate("Reminders"); - await Tests.navigate("Notes"); + await Tests.navigate("Monographs"); + await Tests.navigate("Trash"); + await Tests.openSideMenu(); + await Tests.fromId("sidemenu-settings-icon").waitAndTap(); + await Tests.fromText("Settings").waitAndTap(); + await Tests.fromText("Settings").isVisible(); + await device.pressBack(); + + await Tests.fromId("tab-notebooks").tap(); + await Tests.fromText("No notebooks").isVisible(); + await Tests.fromId("tab-tags").tap(); + await Tests.fromText("No tags").isVisible(); + await Tests.fromId("tab-home").tap(); + + await Tests.fromText("Notes").tap(); + await Tests.fromText("Search in Notes").isVisible(); + + // await Tests.navigate("Tags"); + // await Tests.navigate("Settings"); + + // await Tests.navigate("Notebooks"); }); }); diff --git a/apps/mobile/e2e/tests/note.e2e.ts b/apps/mobile/e2e/tests/note.e2e.ts index 7aa93ba76..a58a88012 100644 --- a/apps/mobile/e2e/tests/note.e2e.ts +++ b/apps/mobile/e2e/tests/note.e2e.ts @@ -59,14 +59,14 @@ describe("NOTE TESTS", () => { await Tests.createNote(); await Tests.fromId(notesnook.listitem.menu).waitAndTap(); await Tests.fromId("icon-pin").waitAndTap(); - await Tests.fromText("Pinned").isVisible(); + await Tests.fromText("PINNED").isVisible(); await Tests.fromId("icon-pinned").isVisible(); await Tests.fromId(notesnook.listitem.menu).waitAndTap(); await Tests.fromId("icon-pin").waitAndTap(); await Tests.fromText("icon-pinned").isNotVisible(); }); - it.skip("Pin a note in notifications", async () => { + it("Pin a note in notifications", async () => { await Tests.prepare(); await Tests.createNote(); await Tests.fromId(notesnook.listitem.menu).waitAndTap(); @@ -100,7 +100,7 @@ describe("NOTE TESTS", () => { await Tests.fromText(note.body).isVisible(); }); - it("Delete & restore a note", async () => { + it.only("Delete & restore a note", async () => { await Tests.prepare(); await Tests.createNote(); await Tests.fromId(notesnook.listitem.menu).waitAndTap(); diff --git a/apps/mobile/e2e/tests/notebook.e2e.ts b/apps/mobile/e2e/tests/notebook.e2e.ts index 208b02790..f29ccbc59 100644 --- a/apps/mobile/e2e/tests/notebook.e2e.ts +++ b/apps/mobile/e2e/tests/notebook.e2e.ts @@ -23,8 +23,9 @@ import { Tests } from "./utils"; describe("NOTEBOOKS", () => { it("Create a notebook with title only", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); await Tests.createNotebook("Notebook 1", false); await device.pressBack(); await Tests.fromText("Notebook 1").isVisible(); @@ -32,8 +33,9 @@ describe("NOTEBOOKS", () => { it("Create a notebook title & description", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); await Tests.createNotebook("Notebook 1", true); await device.pressBack(); await Tests.fromText("Notebook 1").isVisible(); @@ -42,8 +44,9 @@ describe("NOTEBOOKS", () => { it("Create a notebook, move notes", async () => { await Tests.prepare(); let note = await Tests.createNote(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); await Tests.createNotebook("Notebook 1", true); await Tests.fromId("listitem.select").waitAndTap(); await Tests.fromText("Move selected notes").waitAndTap(); @@ -53,42 +56,34 @@ describe("NOTEBOOKS", () => { it("Add a sub notebook to a notebook", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); await Tests.createNotebook("Notebook 1", true); await device.pressBack(); - await Tests.fromText("Notebook 1").waitAndTap(); - await Tests.sleep(500); - await Tests.fromId("add-notebook-button").waitAndTap(); + await Tests.fromText("Notebook 1").element.longPress(); + await Tests.fromText("Add notebook").waitAndTap(); await Tests.createNotebook("Sub notebook", true); - await Tests.fromText("Sub notebook").isVisible(); - await Tests.fromId(notesnook.ids.notebook.menu).waitAndTap(); + await device.pressBack(); await Tests.sleep(500); + await Tests.fromId("expand-notebook-0").waitAndTap(); + await Tests.fromText("Sub notebook").isVisible(); + await Tests.fromText("Sub notebook").element.longPress(); + await Tests.fromText("Move to trash").waitAndTap(); await Tests.fromText("Delete").waitAndTap(); await Tests.fromText("Sub notebook").isNotVisible(); }); - it("Remove a sub notebook from notebook", async () => { - await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); - await Tests.createNotebook("Notebook 1", true); - await device.pressBack(); - await Tests.fromText("Notebook 1").waitAndTap(); - await Tests.sleep(500); - await Tests.fromId("add-notebook-button").waitAndTap(); - await Tests.createNotebook("Sub notebook", true); - await Tests.fromText("Sub notebook").isVisible(); - }); - it("Edit notebook", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromId(notesnook.buttons.add).waitAndTap(); + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); await Tests.createNotebook("Notebook 1", true); await device.pressBack(); - await Tests.fromId(notesnook.ids.notebook.menu).waitAndTap(); + await Tests.sleep(500); + await Tests.fromText("Notebook 1").element.longPress(); await Tests.fromText("Edit notebook").waitAndTap(); await Tests.fromId( notesnook.ids.dialogs.notebook.inputs.title @@ -99,15 +94,23 @@ describe("NOTEBOOKS", () => { it("Edit a sub notebook", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromId(notesnook.buttons.add).waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook("Notebook 1", true); await device.pressBack(); - await Tests.fromText("Notebook 1").waitAndTap(); - await Tests.sleep(500); - await Tests.fromId("add-notebook-button").waitAndTap(); + + await Tests.fromText("Notebook 1").element.longPress(); + await Tests.fromText("Add notebook").waitAndTap(); + await Tests.createNotebook("Sub notebook", true); - await Tests.fromId(notesnook.ids.notebook.menu).waitAndTap(); + await device.pressBack(); + await Tests.sleep(500); + + await Tests.fromId("expand-notebook-0").waitAndTap(); + await Tests.fromText("Sub notebook").element.longPress(); await Tests.sleep(500); await Tests.fromText("Edit notebook").waitAndTap(); await Tests.fromId( @@ -119,52 +122,77 @@ describe("NOTEBOOKS", () => { it("Add a note to notebook", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook("Notebook 1", true); await device.pressBack(); + await Tests.fromText("Notebook 1").waitAndTap(); await Tests.createNote(); }); - it.skip("Remove note from Notebook", async () => { + it("Remove note from Notebook", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook("Notebook 1", true); await device.pressBack(); + await Tests.fromText("Notebook 1").waitAndTap(); await Tests.sleep(500); let note = await Tests.createNote(); await Tests.fromText(note.body).element.longPress(); + await Tests.fromId("select-minus").waitAndTap(); await Tests.fromId(note.title).isNotVisible(); }); it("Add/Remove note to notebook from home", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook("Notebook 1", true); await device.pressBack(); - await Tests.navigate("Notes"); + await Tests.fromId("tab-home").waitAndTap(); + + await Tests.fromText("Notes").waitAndTap(); await Tests.createNote(); + await Tests.fromId(notesnook.listitem.menu).waitAndTap(); + await Tests.sleep(500); + await Tests.fromId("icon-notebooks").waitAndTap(); await Tests.fromText("Notebook 1").waitAndTap(); + await Tests.fromText("Save").waitAndTap(); await Tests.fromText("Notebook 1").isVisible(); }); it("Edit notebook title, description", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook(); + await device.pressBack(); + await Tests.fromText("Notebook 1").isVisible(); - await Tests.fromId(notesnook.ids.notebook.menu).waitAndTap(); + + await Tests.fromText("Notebook 1").element.longPress(); + await Tests.sleep(500); await Tests.fromText("Edit notebook").waitAndTap(); await Tests.fromId( @@ -178,56 +206,82 @@ describe("NOTEBOOKS", () => { ).element.typeText("Description of Notebook 1 (Edited)"); await Tests.fromText("Save").waitAndTap(); await Tests.fromText("Notebook 1 (Edited)").isVisible(); - await Tests.fromText("Description of Notebook 1 (Edited)").isVisible(); + // await Tests.fromText("Description of Notebook 1 (Edited)").isVisible(); }); - it.skip("Move notebook to trash", async () => { + it("Move notebook to trash", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook("Notebook 1", false); await device.pressBack(); await Tests.fromText("Notebook 1").isVisible(); - await Tests.fromId(notesnook.ids.notebook.menu).waitAndTap(); + + await Tests.fromText("Notebook 1").element.longPress(); + await Tests.sleep(500); await Tests.fromText("Move to trash").waitAndTap(); await Tests.fromText("Delete").waitAndTap(); - await Tests.navigate("Trash"); + + await Tests.fromId("tab-home").waitAndTap(); + + await Tests.fromText("Trash").waitAndTap(); await Tests.fromText("Notebook 1").isVisible(); }); it("Move notebook to trash with notes", async () => { await Tests.prepare(); let note = await Tests.createNote(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook("Notebook 1", false); await Tests.fromId("listitem.select").waitAndTap(); await Tests.fromText("Move selected notes").waitAndTap(); await Tests.fromText("Notebook 1").isVisible(); - await Tests.fromId(notesnook.ids.notebook.menu).waitAndTap(); + await Tests.fromText("Notebook 1").element.longPress(); await Tests.sleep(500); await Tests.fromText("Move to trash").waitAndTap(); await Tests.fromText( "Move all notes in this notebook to trash" ).waitAndTap(); await Tests.fromText("Delete").waitAndTap(); - await Tests.navigate("Trash"); + await Tests.sleep(500); + await Tests.fromId("tab-home").waitAndTap(); + + await Tests.fromText("Trash").waitAndTap(); + await Tests.fromText("Notebook 1").isVisible(); await Tests.fromText(note.body).isVisible(); }); - it.skip("Pin notebook to side menu", async () => { + it("Pin notebook to side menu", async () => { await Tests.prepare(); - await Tests.navigate("Notebooks"); - await Tests.fromText("Add your first notebook").waitAndTap(); + + await Tests.openSideMenu(); + await Tests.fromId("tab-notebooks").waitAndTap(); + await Tests.fromId("sidebar-add-button").waitAndTap(); + await Tests.createNotebook("Notebook 1", false); + await device.pressBack(); + await Tests.fromText("Notebook 1").isVisible(); - await Tests.fromId(notesnook.ids.notebook.menu).waitAndTap(); + + await Tests.fromText("Notebook 1").element.longPress(); + await Tests.sleep(500); - await Tests.fromText("Add Shortcut").waitAndTap(); - await Tests.fromId(notesnook.ids.default.header.buttons.left).waitAndTap(); + + await Tests.fromId("icon-add-shortcut").waitAndTap(); + + await Tests.sleep(500); + await Tests.fromId("tab-home").waitAndTap(); + await Tests.fromText("Notebook 1").isVisible(); }); }); diff --git a/apps/mobile/e2e/tests/search.e2e.ts b/apps/mobile/e2e/tests/search.e2e.ts index e081a42e3..7a3912a23 100644 --- a/apps/mobile/e2e/tests/search.e2e.ts +++ b/apps/mobile/e2e/tests/search.e2e.ts @@ -23,7 +23,7 @@ describe("Search", () => { it("Search for a note", async () => { await Tests.prepare(); let note = await Tests.createNote(); - await Tests.fromId("icon-search").waitAndTap(); + await Tests.fromId("search-header").waitAndTap(); await Tests.fromId("search-input").element.typeText("Test"); await Tests.fromText(note.body).waitAndTap(); await device.pressBack(); diff --git a/apps/mobile/e2e/tests/sort.e2e.ts b/apps/mobile/e2e/tests/sort.e2e.ts index fa137666a..ed97df20d 100644 --- a/apps/mobile/e2e/tests/sort.e2e.ts +++ b/apps/mobile/e2e/tests/sort.e2e.ts @@ -20,8 +20,8 @@ along with this program. If not, see . import { notesnook } from "../test.ids"; import { Tests } from "./utils"; -async function sortBy(sorting: string, elementText = "Default") { - await Tests.fromText(elementText).waitAndTap(); +async function sortBy(sorting: string) { + await Tests.fromId("icon-sort").waitAndTap(); await Tests.fromText(sorting).waitAndTap(); await device.pressBack(); } @@ -51,7 +51,7 @@ describe("Sort & filter", () => { await Tests.prepare(); await Tests.createNote("Note 1", "Note 1"); await sortBy("None"); - await Tests.fromText("Default").isNotVisible(); + await Tests.fromText("ALL").isVisible(); }); it("Group by Abc", async () => { @@ -65,21 +65,18 @@ describe("Sort & filter", () => { await Tests.prepare(); await Tests.createNote("Note 1", "Note 1"); await sortBy("Year"); - await Tests.fromText("Year").isVisible(); }); it("Group by Week", async () => { await Tests.prepare(); await Tests.createNote("Note 1", "Note 1"); await sortBy("Week"); - await Tests.fromText("Week").isVisible(); }); it("Group by Month", async () => { await Tests.prepare(); await Tests.createNote("Note 1", "Note 1"); await sortBy("Month"); - await Tests.fromText("Month").isVisible(); }); it("Compact mode", async () => { diff --git a/apps/mobile/e2e/tests/tag.e2e.ts b/apps/mobile/e2e/tests/tag.e2e.ts index 3fce63a34..92fbc8fe5 100644 --- a/apps/mobile/e2e/tests/tag.e2e.ts +++ b/apps/mobile/e2e/tests/tag.e2e.ts @@ -32,7 +32,8 @@ describe("Tags", () => { await Tests.fromText("#testtag").isVisible(); await device.pressBack(); await device.pressBack(); - await Tests.navigate("Tags"); + await Tests.openSideMenu(); + await Tests.fromId("tab-tags").waitAndTap(); await Tests.fromText("#testtag").waitAndTap(); await Tests.fromText(note.body).isVisible(); }); @@ -63,11 +64,12 @@ describe("Tags", () => { await Tests.fromText("#testtag").isVisible(); await device.pressBack(); await device.pressBack(); - await Tests.navigate("Tags"); - await Tests.fromId(notesnook.ids.tag.menu).waitAndTap(); + await Tests.openSideMenu(); + await Tests.fromId("tab-tags").waitAndTap(); + await Tests.fromText("testtag").element.longPress(); await Tests.sleep(500); await Tests.fromText("Add shortcut").waitAndTap(); - await Tests.fromId(notesnook.ids.default.header.buttons.left).waitAndTap(); + await Tests.fromId("tab-home").waitAndTap(); await Tests.fromText("testtag").isVisible(); }); @@ -82,14 +84,15 @@ describe("Tags", () => { await Tests.fromText("#testtag").isVisible(); await device.pressBack(); await device.pressBack(); - await Tests.navigate("Tags"); - await Tests.fromId(notesnook.ids.tag.menu).waitAndTap(); + await Tests.openSideMenu(); + await Tests.fromId("tab-tags").waitAndTap(); + await Tests.fromText("testtag").element.longPress(); await Tests.sleep(500); await Tests.fromText("Rename").waitAndTap(); await Tests.sleep(100); await Tests.fromId("input-value").element.clearText(); await Tests.fromId("input-value").element.typeText("testtag_edited"); await Tests.fromText("Save").waitAndTap(); - await Tests.fromText("#testtag_edited").isVisible(); + await Tests.fromText("testtag_edited").isVisible(); }); }); diff --git a/apps/mobile/e2e/tests/utils.ts b/apps/mobile/e2e/tests/utils.ts index 5116163be..764d62388 100644 --- a/apps/mobile/e2e/tests/utils.ts +++ b/apps/mobile/e2e/tests/utils.ts @@ -105,7 +105,7 @@ const Tests = { async navigate(screen: RouteName | ({} & string)) { let menu = Tests.fromId(notesnook.ids.default.header.buttons.left); await menu.waitAndTap(); - await Tests.fromText(screen).waitAndTap(); + await Tests.fromText(screen as string).waitAndTap(); }, async openSideMenu() { await Tests.fromId(notesnook.ids.default.header.buttons.left).waitAndTap(); diff --git a/apps/mobile/e2e/tsconfig.json b/apps/mobile/e2e/tsconfig.json new file mode 100644 index 000000000..30a16b947 --- /dev/null +++ b/apps/mobile/e2e/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../../tsconfig", + "compilerOptions": { + "lib": ["es2017", "DOM", "DOM.Iterable"], + "allowJs": true, + "baseUrl": "../", + "rootDir": "../", + "jsx": "react-native", + "noEmit": true, + "types": ["node", "jest", "detox"], + "incremental": true, + "maxNodeModuleJsDepth": 5, + "downlevelIteration": true + } +} diff --git a/apps/mobile/native/.detoxrc.js b/apps/mobile/native/.detoxrc.js index b96580a28..c7aa2a300 100644 --- a/apps/mobile/native/.detoxrc.js +++ b/apps/mobile/native/.detoxrc.js @@ -22,7 +22,7 @@ module.exports = { }, 'android.debug': { type: 'android.apk', - "binaryPath": "android/app/build/outputs/apk/debug/app-x86_64-debug.apk", + "binaryPath": "android/app/build/outputs/apk/debug/app-arm64-v8a-debug.apk", "testBinaryPath": "android/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk", "build": "cd android ; ENVFILE=.env.test ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..", reversePorts: [ @@ -31,7 +31,7 @@ module.exports = { }, 'android.release': { type: 'android.apk', - "binaryPath": "android/app/build/outputs/apk/release/app-x86_64-release.apk", + "binaryPath": "android/app/build/outputs/apk/release/app-arm64-v8a-release.apk", "testBinaryPath": "android/app/build/outputs/apk/androidTest/release/app-release-androidTest.apk", "build": "cd android ; ENVFILE=.env.test ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release ; cd .." } diff --git a/apps/mobile/native/globals.js b/apps/mobile/native/globals.js index 48e263b40..9d7ed32fc 100644 --- a/apps/mobile/native/globals.js +++ b/apps/mobile/native/globals.js @@ -24,7 +24,7 @@ import { } from "@notesnook/intl/dist/locales/$pseudo-LOCALE.json"; i18n.load({ - en: !__DEV__ ? $pseudo : $en + en: __DEV__ ? $pseudo : $en }); setI18nGlobal(i18n); i18n.activate("en"); diff --git a/apps/mobile/package-lock.json b/apps/mobile/package-lock.json index 1fd9e1808..088f136ce 100644 --- a/apps/mobile/package-lock.json +++ b/apps/mobile/package-lock.json @@ -7743,7 +7743,7 @@ }, "../../packages/editor-mobile/node_modules/@types/prop-types": { "version": "15.7.11", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../packages/editor-mobile/node_modules/@types/q": { @@ -7763,7 +7763,7 @@ }, "../../packages/editor-mobile/node_modules/@types/react": { "version": "18.2.39", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -7794,7 +7794,7 @@ }, "../../packages/editor-mobile/node_modules/@types/scheduler": { "version": "0.16.8", - "dev": true, + "devOptional": true, "license": "MIT" }, "../../packages/editor-mobile/node_modules/@types/semver": { @@ -12619,7 +12619,7 @@ }, "../../packages/editor-mobile/node_modules/immer": { "version": "9.0.21", - "dev": true, + "devOptional": true, "license": "MIT", "funding": { "type": "opencollective", @@ -23091,7 +23091,6 @@ }, "../../packages/editor/node_modules/js-tokens": { "version": "4.0.0", - "dev": true, "license": "MIT" }, "../../packages/editor/node_modules/jsesc": { @@ -23142,7 +23141,6 @@ }, "../../packages/editor/node_modules/loose-envify": { "version": "1.4.0", - "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -23654,7 +23652,6 @@ }, "../../packages/editor/node_modules/react": { "version": "18.3.1", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -23673,7 +23670,6 @@ }, "../../packages/editor/node_modules/react-dom": { "version": "18.3.1", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", @@ -23812,7 +23808,6 @@ }, "../../packages/editor/node_modules/scheduler": { "version": "0.23.2", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.1.0" @@ -28599,7 +28594,6 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" @@ -28719,7 +28713,6 @@ }, "node_modules/@babel/helper-hoist-variables": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.22.5" @@ -28979,7 +28972,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -28994,7 +28986,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -29143,7 +29134,6 @@ "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, "engines": { "node": ">=6.9.0" }, @@ -29156,7 +29146,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -29191,7 +29180,6 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" @@ -29204,7 +29192,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -29242,7 +29229,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.3" }, @@ -29267,7 +29253,6 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.6.tgz", "integrity": "sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -29282,7 +29267,6 @@ "version": "7.25.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -29297,7 +29281,6 @@ "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -29309,7 +29292,6 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -29409,7 +29391,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -29437,7 +29418,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -29466,7 +29446,6 @@ "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", - "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -29497,7 +29476,6 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -29526,7 +29504,6 @@ "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -29542,7 +29519,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", - "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", @@ -29607,7 +29583,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -29623,7 +29598,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -29638,7 +29612,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -29651,7 +29624,6 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", @@ -29668,7 +29640,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -29696,7 +29667,6 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -29727,7 +29697,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -29756,7 +29725,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -29770,7 +29738,6 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -29786,7 +29753,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -29817,7 +29783,6 @@ "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", - "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.22.5", @@ -29835,7 +29800,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", - "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -29865,7 +29829,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -29895,7 +29858,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -29911,7 +29873,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", @@ -29928,7 +29889,6 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -29945,7 +29905,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -30019,7 +29978,6 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -30089,7 +30047,6 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.22.5", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -30106,7 +30063,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -30199,7 +30155,6 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -30230,7 +30185,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -30245,7 +30199,6 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -30275,7 +30228,6 @@ "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", - "dev": true, "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5" @@ -30291,7 +30243,6 @@ "version": "7.25.4", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.5", @@ -30385,7 +30336,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", - "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -30401,7 +30351,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -33705,8 +33654,7 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/graceful-fs": { "version": "4.1.6", @@ -33812,14 +33760,14 @@ }, "node_modules/@types/prop-types": { "version": "15.7.5", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.18", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -34175,7 +34123,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -34184,26 +34131,22 @@ "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -34213,14 +34156,12 @@ "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -34232,7 +34173,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -34241,7 +34181,6 @@ "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -34249,14 +34188,12 @@ "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -34272,7 +34209,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -34285,7 +34221,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -34297,7 +34232,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -34311,7 +34245,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -34369,14 +34302,12 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", @@ -35375,7 +35306,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, "engines": { "node": ">=6.0" } @@ -35806,7 +35736,7 @@ }, "node_modules/csstype": { "version": "3.1.2", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/date-fns": { @@ -36406,7 +36336,6 @@ "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -36526,8 +36455,7 @@ "node_modules/es-module-lexer": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" }, "node_modules/es-object-atoms": { "version": "1.0.0", @@ -36872,7 +36800,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -36885,7 +36812,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -37049,7 +36975,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -37061,7 +36986,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -37070,7 +36994,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -37830,8 +37753,7 @@ "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/global": { "version": "4.4.0", @@ -39920,8 +39842,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-ref-resolver": { "version": "1.0.1", @@ -40397,7 +40318,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, "engines": { "node": ">=6.11.5" } @@ -42627,7 +42547,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -42649,6 +42568,30 @@ "node": ">=0.10.0" } }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/react-freeze": { "version": "1.0.3", "license": "MIT", @@ -43598,7 +43541,6 @@ }, "node_modules/regenerator-transform": { "version": "0.15.1", - "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" @@ -43951,7 +43893,6 @@ }, "node_modules/serialize-javascript": { "version": "6.0.1", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" @@ -44609,7 +44550,6 @@ }, "node_modules/tapable": { "version": "2.2.1", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -44687,7 +44627,6 @@ "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -44721,7 +44660,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -44735,7 +44673,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -45312,7 +45249,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -45336,7 +45272,6 @@ "version": "5.94.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -45452,7 +45387,6 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, "engines": { "node": ">=10.13.0" }