diff --git a/.changeset/yellow-lobsters-promise.md b/.changeset/yellow-lobsters-promise.md new file mode 100644 index 000000000..0f17728ca --- /dev/null +++ b/.changeset/yellow-lobsters-promise.md @@ -0,0 +1,33 @@ +--- +"@evolu/common": minor +--- + +Indexes (or indices, we don't judge) + +This release brings SQLite indexes support to Evolu with two helpful options for `evolu.createQuery` functions. + +```ts +const indexes = [ + createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), +]; + +const evolu = createEvolu(Database, { + // Try to remove/re-add indexes with `logExplainQueryPlan`. + indexes, +}); + +const allTodos = evolu.createQuery( + (db) => db.selectFrom("todo").orderBy("createdAt").selectAll(), + { + logExecutionTime: true, + // logExplainQueryPlan: false, + }, +); +``` + +Indexes are not necessary for development but are required for production. + +Before adding an index, use `logExecutionTime` and `logExplainQueryPlan` +createQuery options. + +SQLite has [a tool](https://sqlite.org/cli.html#index_recommendations_sqlite_expert_) for index recommendations. diff --git a/README.md b/README.md index 57847f806..009c58d28 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,12 @@ Start developing and watch for code changes: pnpm dev ``` +Start iOS developing: + +``` +pnpm ios +``` + Lint and tests: ``` diff --git a/apps/native/App.tsx b/apps/native/App.tsx index ff7f068a6..527115da7 100644 --- a/apps/native/App.tsx +++ b/apps/native/App.tsx @@ -8,6 +8,7 @@ import { String, cast, createEvolu, + createIndex, database, id, jsonArrayFrom, @@ -37,12 +38,18 @@ import { } from "react-native"; import RNPickerSelect from "react-native-picker-select"; +// Let's start with the database schema. + +// Every table needs Id. It's defined as a branded type. +// Branded types make database types super safe. const TodoId = id("Todo"); type TodoId = S.Schema.Type; const TodoCategoryId = id("TodoCategory"); type TodoCategoryId = S.Schema.Type; +// This branded type ensures a string must be validated before being put +// into the database. const NonEmptyString50 = String.pipe( S.minLength(1), S.maxLength(50), @@ -50,6 +57,7 @@ const NonEmptyString50 = String.pipe( ); type NonEmptyString50 = S.Schema.Type; +// Now we can define tables. const TodoTable = table({ id: TodoId, title: NonEmptyString1000, @@ -58,6 +66,7 @@ const TodoTable = table({ }); type TodoTable = S.Schema.Type; +// Evolu tables can contain typed JSONs. const SomeJson = S.struct({ foo: S.string, bar: S.boolean }); type SomeJson = S.Schema.Type; @@ -68,13 +77,34 @@ const TodoCategoryTable = table({ }); type TodoCategoryTable = S.Schema.Type; +// Now, we can define the database schema. const Database = database({ todo: TodoTable, todoCategory: TodoCategoryTable, }); type Database = S.Schema.Type; +/** + * Indexes + * + * Indexes are not necessary for development but are required for production. + * + * Before adding an index, use `logExecutionTime` and `logExplainQueryPlan` + * createQuery options. + * + * SQLite has a tool for Index Recommendations (SQLite Expert) + * https://sqlite.org/cli.html#index_recommendations_sqlite_expert_ + */ +const indexes = [ + createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), + + createIndex("indexTodoCategoryCreatedAt") + .on("todoCategory") + .column("createdAt"), +]; + const evolu = createEvolu(Database, { + indexes, ...(process.env.NODE_ENV === "development" && { syncUrl: "http://localhost:4000", }), @@ -184,25 +214,31 @@ const OwnerActions: FC = () => { ); }; -const todosWithCategories = evolu.createQuery((db) => - db - .selectFrom("todo") - .select(["id", "title", "isCompleted", "categoryId"]) - .where("isDeleted", "is not", cast(true)) - // Filter null value and ensure non-null type. - .where("title", "is not", null) - .$narrowType<{ title: NotNull }>() - .orderBy("createdAt") - // https://kysely.dev/docs/recipes/relations - .select((eb) => [ - jsonArrayFrom( - eb - .selectFrom("todoCategory") - .select(["todoCategory.id", "todoCategory.name"]) - .where("isDeleted", "is not", cast(true)) - .orderBy("createdAt"), - ).as("categories"), - ]), +// Evolu queries should be collocated. If necessary, they can be preloaded. +const todosWithCategories = evolu.createQuery( + (db) => + db + .selectFrom("todo") + .select(["id", "title", "isCompleted", "categoryId"]) + .where("isDeleted", "is not", cast(true)) + // Filter null value and ensure non-null type. + .where("title", "is not", null) + .$narrowType<{ title: NotNull }>() + .orderBy("createdAt") + // https://kysely.dev/docs/recipes/relations + .select((eb) => [ + jsonArrayFrom( + eb + .selectFrom("todoCategory") + .select(["todoCategory.id", "todoCategory.name"]) + .where("isDeleted", "is not", cast(true)) + .orderBy("createdAt"), + ).as("categories"), + ]), + { + // logQueryExecutionTime: true, + // logExplainQueryPlan: true, + }, ); const Todos: FC = () => { diff --git a/apps/native/package.json b/apps/native/package.json index 50f52b67e..4113b88bb 100644 --- a/apps/native/package.json +++ b/apps/native/package.json @@ -11,7 +11,7 @@ "clean": "rm -rf .turbo .expo node_modules dist" }, "dependencies": { - "@effect/schema": "^0.64.5", + "@effect/schema": "^0.64.9", "@evolu/common": "workspace:*", "@evolu/common-react": "workspace:*", "@evolu/react-native": "workspace:*", @@ -19,26 +19,26 @@ "babel-plugin-module-resolver": "^5.0.0", "buffer": "^6.0.3", "crypto-browserify": "^3.12.0", - "effect": "2.4.7", + "effect": "2.4.9", "events": "^3.3.0", - "expo": "^50.0.11", - "expo-sqlite": "~13.3.0", + "expo": "^50.0.14", + "expo-sqlite": "~13.4.0", "expo-status-bar": "~1.11.1", "fast-text-encoding": "^1.0.6", "react": "^18.2.0", - "react-native": "0.73.5", + "react-native": "0.73.6", "react-native-get-random-values": "~1.8.0", "react-native-picker-select": "^9.0.0", "stream": "^0.0.2" }, "devDependencies": { - "@babel/core": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@types/react": "^18.2.66", + "@babel/core": "^7.24.3", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@types/react": "^18.2.67", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", "prettier": "^3.2.5", - "typescript": "^5.4.2" + "typescript": "^5.4.3" } } diff --git a/apps/server/package.json b/apps/server/package.json index 25f46445a..77e21aba2 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -15,9 +15,9 @@ }, "devDependencies": { "@evolu/tsconfig": "workspace:*", - "@types/node": "^20.11.28", + "@types/node": "^20.11.30", "ts-node": "^10.9.1", - "typescript": "^5.4.2" + "typescript": "^5.4.3" }, "engines": { "node": ">=16.15" diff --git a/apps/web/components/NextJsExample.tsx b/apps/web/components/NextJsExample.tsx index 3df3b7eaf..ea513c6cc 100644 --- a/apps/web/components/NextJsExample.tsx +++ b/apps/web/components/NextJsExample.tsx @@ -10,6 +10,7 @@ import { canUseDom, cast, createEvolu, + createIndex, database, id, jsonArrayFrom, @@ -31,12 +32,18 @@ import { useState, } from "react"; +// Let's start with the database schema. + +// Every table needs Id. It's defined as a branded type. +// Branded types make database types super safe. const TodoId = id("Todo"); type TodoId = S.Schema.Type; const TodoCategoryId = id("TodoCategory"); type TodoCategoryId = S.Schema.Type; +// This branded type ensures a string must be validated before being put +// into the database. Check the prompt function to see Schema validation. const NonEmptyString50 = String.pipe( S.minLength(1), S.maxLength(50), @@ -44,6 +51,7 @@ const NonEmptyString50 = String.pipe( ); type NonEmptyString50 = S.Schema.Type; +// Now we can define tables. const TodoTable = table({ id: TodoId, title: NonEmptyString1000, @@ -52,9 +60,11 @@ const TodoTable = table({ }); type TodoTable = S.Schema.Type; +// Evolu tables can contain typed JSONs. const SomeJson = S.struct({ foo: S.string, bar: S.boolean }); type SomeJson = S.Schema.Type; +// Let's make a table with JSON value. const TodoCategoryTable = table({ id: TodoCategoryId, name: NonEmptyString50, @@ -62,13 +72,34 @@ const TodoCategoryTable = table({ }); type TodoCategoryTable = S.Schema.Type; +// Now, we can define the database schema. const Database = database({ todo: TodoTable, todoCategory: TodoCategoryTable, }); type Database = S.Schema.Type; +/** + * Indexes + * + * Indexes are not necessary for development but are required for production. + * + * Before adding an index, use `logExecutionTime` and `logExplainQueryPlan` + * createQuery options. + * + * SQLite has a tool for Index Recommendations (SQLite Expert) + * https://sqlite.org/cli.html#index_recommendations_sqlite_expert_ + */ +const indexes = [ + createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), + + createIndex("indexTodoCategoryCreatedAt") + .on("todoCategory") + .column("createdAt"), +]; + const evolu = createEvolu(Database, { + indexes, reloadUrl: "/examples/nextjs", ...(process.env.NODE_ENV === "development" && { syncUrl: "http://localhost:4000", @@ -158,25 +189,31 @@ const NotificationBar: FC = () => { ); }; -const todosWithCategories = evolu.createQuery((db) => - db - .selectFrom("todo") - .select(["id", "title", "isCompleted", "categoryId"]) - .where("isDeleted", "is not", cast(true)) - // Filter null value and ensure non-null type. - .where("title", "is not", null) - .$narrowType<{ title: NotNull }>() - .orderBy("createdAt") - // https://kysely.dev/docs/recipes/relations - .select((eb) => [ - jsonArrayFrom( - eb - .selectFrom("todoCategory") - .select(["todoCategory.id", "todoCategory.name"]) - .where("isDeleted", "is not", cast(true)) - .orderBy("createdAt"), - ).as("categories"), - ]), +// Evolu queries should be collocated. If necessary, they can be preloaded. +const todosWithCategories = evolu.createQuery( + (db) => + db + .selectFrom("todo") + .select(["id", "title", "isCompleted", "categoryId"]) + .where("isDeleted", "is not", cast(true)) + // Filter null value and ensure non-null type. + .where("title", "is not", null) + .$narrowType<{ title: NotNull }>() + .orderBy("createdAt") + // https://kysely.dev/docs/recipes/relations + .select((eb) => [ + jsonArrayFrom( + eb + .selectFrom("todoCategory") + .select(["todoCategory.id", "todoCategory.name"]) + .where("isDeleted", "is not", cast(true)) + .orderBy("createdAt"), + ).as("categories"), + ]), + { + // logQueryExecutionTime: true, + // logExplainQueryPlan: true, + }, ); type TodosWithCategoriesRow = ExtractRow; diff --git a/apps/web/package.json b/apps/web/package.json index a8372ea89..d86ffb18c 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -10,12 +10,12 @@ "clean": "rm -rf .turbo .next node_modules" }, "dependencies": { - "@effect/schema": "^0.64.5", + "@effect/schema": "^0.64.9", "@evolu/common": "workspace:*", "@evolu/react": "workspace:*", "clsx": "^2.1.0", - "effect": "2.4.7", - "next": "14.1.3", + "effect": "2.4.9", + "next": "14.1.4", "nextra": "^2.13.4", "nextra-theme-docs": "^2.13.4", "react": "^18.2.0", @@ -23,16 +23,16 @@ }, "devDependencies": { "@evolu/tsconfig": "workspace:*", - "@types/node": "^20.11.28", - "@types/react": "^18.2.66", + "@types/node": "^20.11.30", + "@types/react": "^18.2.67", "@types/react-dom": "^18.2.22", "autoprefixer": "^10.4.18", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", - "postcss": "^8.4.35", + "postcss": "^8.4.37", "prettier": "^3.2.5", "prettier-plugin-tailwindcss": "^0.5.12", "tailwindcss": "^3.4.0", - "typescript": "^5.4.2" + "typescript": "^5.4.3" } } diff --git a/examples/electron-app/src/Example.tsx b/examples/electron-app/src/Example.tsx index 79d58bd48..4edc50f0b 100644 --- a/examples/electron-app/src/Example.tsx +++ b/examples/electron-app/src/Example.tsx @@ -10,6 +10,7 @@ import { canUseDom, cast, createEvolu, + createIndex, database, id, jsonArrayFrom, @@ -31,12 +32,18 @@ import { useState, } from "react"; +// Let's start with the database schema. + +// Every table needs Id. It's defined as a branded type. +// Branded types make database types super safe. const TodoId = id("Todo"); type TodoId = S.Schema.Type; const TodoCategoryId = id("TodoCategory"); type TodoCategoryId = S.Schema.Type; +// This branded type ensures a string must be validated before being put +// into the database. Check the prompt function to see Schema validation. const NonEmptyString50 = String.pipe( S.minLength(1), S.maxLength(50), @@ -44,6 +51,7 @@ const NonEmptyString50 = String.pipe( ); type NonEmptyString50 = S.Schema.Type; +// Now we can define tables. const TodoTable = table({ id: TodoId, title: NonEmptyString1000, @@ -52,9 +60,11 @@ const TodoTable = table({ }); type TodoTable = S.Schema.Type; +// Evolu tables can contain typed JSONs. const SomeJson = S.struct({ foo: S.string, bar: S.boolean }); type SomeJson = S.Schema.Type; +// Let's make a table with JSON value. const TodoCategoryTable = table({ id: TodoCategoryId, name: NonEmptyString50, @@ -62,13 +72,33 @@ const TodoCategoryTable = table({ }); type TodoCategoryTable = S.Schema.Type; +// Now, we can define the database schema. const Database = database({ todo: TodoTable, todoCategory: TodoCategoryTable, }); type Database = S.Schema.Type; -const evolu = createEvolu(Database); +/** + * Indexes + * + * Indexes are not necessary for development but are required for production. + * + * Before adding an index, use `logExecutionTime` and `logExplainQueryPlan` + * createQuery options. + * + * SQLite has a tool for Index Recommendations (SQLite Expert) + * https://sqlite.org/cli.html#index_recommendations_sqlite_expert_ + */ +const indexes = [ + createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), + + createIndex("indexTodoCategoryCreatedAt") + .on("todoCategory") + .column("createdAt"), +]; + +const evolu = createEvolu(Database, { indexes }); const createFixtures = (): Promise => Promise.all( @@ -153,25 +183,31 @@ const NotificationBar: FC = () => { ); }; -const todosWithCategories = evolu.createQuery((db) => - db - .selectFrom("todo") - .select(["id", "title", "isCompleted", "categoryId"]) - .where("isDeleted", "is not", cast(true)) - // Filter null value and ensure non-null type. - .where("title", "is not", null) - .$narrowType<{ title: NotNull }>() - .orderBy("createdAt") - // https://kysely.dev/docs/recipes/relations - .select((eb) => [ - jsonArrayFrom( - eb - .selectFrom("todoCategory") - .select(["todoCategory.id", "todoCategory.name"]) - .where("isDeleted", "is not", cast(true)) - .orderBy("createdAt"), - ).as("categories"), - ]), +// Evolu queries should be collocated. If necessary, they can be preloaded. +const todosWithCategories = evolu.createQuery( + (db) => + db + .selectFrom("todo") + .select(["id", "title", "isCompleted", "categoryId"]) + .where("isDeleted", "is not", cast(true)) + // Filter null value and ensure non-null type. + .where("title", "is not", null) + .$narrowType<{ title: NotNull }>() + .orderBy("createdAt") + // https://kysely.dev/docs/recipes/relations + .select((eb) => [ + jsonArrayFrom( + eb + .selectFrom("todoCategory") + .select(["todoCategory.id", "todoCategory.name"]) + .where("isDeleted", "is not", cast(true)) + .orderBy("createdAt"), + ).as("categories"), + ]), + { + // logQueryExecutionTime: true, + // logExplainQueryPlan: true, + }, ); type TodosWithCategoriesRow = ExtractRow; diff --git a/examples/nextjs/app/page.tsx b/examples/nextjs/app/page.tsx index 8828e01fa..4e9aec6f4 100644 --- a/examples/nextjs/app/page.tsx +++ b/examples/nextjs/app/page.tsx @@ -12,6 +12,7 @@ import { canUseDom, cast, createEvolu, + createIndex, database, id, jsonArrayFrom, @@ -33,12 +34,18 @@ import { useState, } from "react"; +// Let's start with the database schema. + +// Every table needs Id. It's defined as a branded type. +// Branded types make database types super safe. const TodoId = id("Todo"); type TodoId = S.Schema.Type; const TodoCategoryId = id("TodoCategory"); type TodoCategoryId = S.Schema.Type; +// This branded type ensures a string must be validated before being put +// into the database. Check the prompt function to see Schema validation. const NonEmptyString50 = String.pipe( S.minLength(1), S.maxLength(50), @@ -46,6 +53,7 @@ const NonEmptyString50 = String.pipe( ); type NonEmptyString50 = S.Schema.Type; +// Now we can define tables. const TodoTable = table({ id: TodoId, title: NonEmptyString1000, @@ -54,9 +62,11 @@ const TodoTable = table({ }); type TodoTable = S.Schema.Type; +// Evolu tables can contain typed JSONs. const SomeJson = S.struct({ foo: S.string, bar: S.boolean }); type SomeJson = S.Schema.Type; +// Let's make a table with JSON value. const TodoCategoryTable = table({ id: TodoCategoryId, name: NonEmptyString50, @@ -64,13 +74,33 @@ const TodoCategoryTable = table({ }); type TodoCategoryTable = S.Schema.Type; +// Now, we can define the database schema. const Database = database({ todo: TodoTable, todoCategory: TodoCategoryTable, }); type Database = S.Schema.Type; -const evolu = createEvolu(Database); +/** + * Indexes + * + * Indexes are not necessary for development but are required for production. + * + * Before adding an index, use `logExecutionTime` and `logExplainQueryPlan` + * createQuery options. + * + * SQLite has a tool for Index Recommendations (SQLite Expert) + * https://sqlite.org/cli.html#index_recommendations_sqlite_expert_ + */ +const indexes = [ + createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), + + createIndex("indexTodoCategoryCreatedAt") + .on("todoCategory") + .column("createdAt"), +]; + +const evolu = createEvolu(Database, { indexes }); const createFixtures = (): Promise => Promise.all( @@ -155,25 +185,31 @@ const NotificationBar: FC = () => { ); }; -const todosWithCategories = evolu.createQuery((db) => - db - .selectFrom("todo") - .select(["id", "title", "isCompleted", "categoryId"]) - .where("isDeleted", "is not", cast(true)) - // Filter null value and ensure non-null type. - .where("title", "is not", null) - .$narrowType<{ title: NotNull }>() - .orderBy("createdAt") - // https://kysely.dev/docs/recipes/relations - .select((eb) => [ - jsonArrayFrom( - eb - .selectFrom("todoCategory") - .select(["todoCategory.id", "todoCategory.name"]) - .where("isDeleted", "is not", cast(true)) - .orderBy("createdAt"), - ).as("categories"), - ]), +// Evolu queries should be collocated. If necessary, they can be preloaded. +const todosWithCategories = evolu.createQuery( + (db) => + db + .selectFrom("todo") + .select(["id", "title", "isCompleted", "categoryId"]) + .where("isDeleted", "is not", cast(true)) + // Filter null value and ensure non-null type. + .where("title", "is not", null) + .$narrowType<{ title: NotNull }>() + .orderBy("createdAt") + // https://kysely.dev/docs/recipes/relations + .select((eb) => [ + jsonArrayFrom( + eb + .selectFrom("todoCategory") + .select(["todoCategory.id", "todoCategory.name"]) + .where("isDeleted", "is not", cast(true)) + .orderBy("createdAt"), + ).as("categories"), + ]), + { + // logQueryExecutionTime: true, + // logExplainQueryPlan: true, + }, ); type TodosWithCategoriesRow = ExtractRow; diff --git a/examples/remix/app/routes/_index.tsx b/examples/remix/app/routes/_index.tsx index c81c0c5c6..fc4a37ba5 100644 --- a/examples/remix/app/routes/_index.tsx +++ b/examples/remix/app/routes/_index.tsx @@ -10,6 +10,7 @@ import { canUseDom, cast, createEvolu, + createIndex, database, id, jsonArrayFrom, @@ -31,12 +32,18 @@ import { useState, } from "react"; +// Let's start with the database schema. + +// Every table needs Id. It's defined as a branded type. +// Branded types make database types super safe. const TodoId = id("Todo"); type TodoId = S.Schema.Type; const TodoCategoryId = id("TodoCategory"); type TodoCategoryId = S.Schema.Type; +// This branded type ensures a string must be validated before being put +// into the database. Check the prompt function to see Schema validation. const NonEmptyString50 = String.pipe( S.minLength(1), S.maxLength(50), @@ -44,6 +51,7 @@ const NonEmptyString50 = String.pipe( ); type NonEmptyString50 = S.Schema.Type; +// Now we can define tables. const TodoTable = table({ id: TodoId, title: NonEmptyString1000, @@ -52,9 +60,11 @@ const TodoTable = table({ }); type TodoTable = S.Schema.Type; +// Evolu tables can contain typed JSONs. const SomeJson = S.struct({ foo: S.string, bar: S.boolean }); type SomeJson = S.Schema.Type; +// Let's make a table with JSON value. const TodoCategoryTable = table({ id: TodoCategoryId, name: NonEmptyString50, @@ -62,13 +72,34 @@ const TodoCategoryTable = table({ }); type TodoCategoryTable = S.Schema.Type; +// Now, we can define the database schema. const Database = database({ todo: TodoTable, todoCategory: TodoCategoryTable, }); type Database = S.Schema.Type; +/** + * Indexes + * + * Indexes are not necessary for development but are required for production. + * + * Before adding an index, use `logExecutionTime` and `logExplainQueryPlan` + * createQuery options. + * + * SQLite has a tool for Index Recommendations (SQLite Expert) + * https://sqlite.org/cli.html#index_recommendations_sqlite_expert_ + */ +const indexes = [ + createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), + + createIndex("indexTodoCategoryCreatedAt") + .on("todoCategory") + .column("createdAt"), +]; + const evolu = createEvolu(Database, { + indexes, // uncomment this line if you would like to enable custom evolu // sync server, e.g. this app server // syncUrl: "http://localhost:3000", @@ -157,25 +188,31 @@ const NotificationBar: FC = () => { ); }; -const todosWithCategories = evolu.createQuery((db) => - db - .selectFrom("todo") - .select(["id", "title", "isCompleted", "categoryId"]) - .where("isDeleted", "is not", cast(true)) - // Filter null value and ensure non-null type. - .where("title", "is not", null) - .$narrowType<{ title: NotNull }>() - .orderBy("createdAt") - // https://kysely.dev/docs/recipes/relations - .select((eb) => [ - jsonArrayFrom( - eb - .selectFrom("todoCategory") - .select(["todoCategory.id", "todoCategory.name"]) - .where("isDeleted", "is not", cast(true)) - .orderBy("createdAt"), - ).as("categories"), - ]), +// Evolu queries should be collocated. If necessary, they can be preloaded. +const todosWithCategories = evolu.createQuery( + (db) => + db + .selectFrom("todo") + .select(["id", "title", "isCompleted", "categoryId"]) + .where("isDeleted", "is not", cast(true)) + // Filter null value and ensure non-null type. + .where("title", "is not", null) + .$narrowType<{ title: NotNull }>() + .orderBy("createdAt") + // https://kysely.dev/docs/recipes/relations + .select((eb) => [ + jsonArrayFrom( + eb + .selectFrom("todoCategory") + .select(["todoCategory.id", "todoCategory.name"]) + .where("isDeleted", "is not", cast(true)) + .orderBy("createdAt"), + ).as("categories"), + ]), + { + // logQueryExecutionTime: true, + // logExplainQueryPlan: true, + }, ); type TodosWithCategoriesRow = ExtractRow; diff --git a/examples/vite/src/App.tsx b/examples/vite/src/App.tsx index b933d666c..aafd350c7 100644 --- a/examples/vite/src/App.tsx +++ b/examples/vite/src/App.tsx @@ -10,6 +10,7 @@ import { canUseDom, cast, createEvolu, + createIndex, database, id, jsonArrayFrom, @@ -31,12 +32,18 @@ import { useState, } from "react"; +// Let's start with the database schema. + +// Every table needs Id. It's defined as a branded type. +// Branded types make database types super safe. const TodoId = id("Todo"); type TodoId = S.Schema.Type; const TodoCategoryId = id("TodoCategory"); type TodoCategoryId = S.Schema.Type; +// This branded type ensures a string must be validated before being put +// into the database. Check the prompt function to see Schema validation. const NonEmptyString50 = String.pipe( S.minLength(1), S.maxLength(50), @@ -44,6 +51,7 @@ const NonEmptyString50 = String.pipe( ); type NonEmptyString50 = S.Schema.Type; +// Now we can define tables. const TodoTable = table({ id: TodoId, title: NonEmptyString1000, @@ -52,9 +60,11 @@ const TodoTable = table({ }); type TodoTable = S.Schema.Type; +// Evolu tables can contain typed JSONs. const SomeJson = S.struct({ foo: S.string, bar: S.boolean }); type SomeJson = S.Schema.Type; +// Let's make a table with JSON value. const TodoCategoryTable = table({ id: TodoCategoryId, name: NonEmptyString50, @@ -62,13 +72,33 @@ const TodoCategoryTable = table({ }); type TodoCategoryTable = S.Schema.Type; +// Now, we can define the database schema. const Database = database({ todo: TodoTable, todoCategory: TodoCategoryTable, }); type Database = S.Schema.Type; -const evolu = createEvolu(Database); +/** + * Indexes + * + * Indexes are not necessary for development but are required for production. + * + * Before adding an index, use `logExecutionTime` and `logExplainQueryPlan` + * createQuery options. + * + * SQLite has a tool for Index Recommendations (SQLite Expert) + * https://sqlite.org/cli.html#index_recommendations_sqlite_expert_ + */ +const indexes = [ + createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), + + createIndex("indexTodoCategoryCreatedAt") + .on("todoCategory") + .column("createdAt"), +]; + +const evolu = createEvolu(Database, { indexes }); const createFixtures = (): Promise => Promise.all( @@ -153,25 +183,31 @@ const NotificationBar: FC = () => { ); }; -const todosWithCategories = evolu.createQuery((db) => - db - .selectFrom("todo") - .select(["id", "title", "isCompleted", "categoryId"]) - .where("isDeleted", "is not", cast(true)) - // Filter null value and ensure non-null type. - .where("title", "is not", null) - .$narrowType<{ title: NotNull }>() - .orderBy("createdAt") - // https://kysely.dev/docs/recipes/relations - .select((eb) => [ - jsonArrayFrom( - eb - .selectFrom("todoCategory") - .select(["todoCategory.id", "todoCategory.name"]) - .where("isDeleted", "is not", cast(true)) - .orderBy("createdAt"), - ).as("categories"), - ]), +// Evolu queries should be collocated. If necessary, they can be preloaded. +const todosWithCategories = evolu.createQuery( + (db) => + db + .selectFrom("todo") + .select(["id", "title", "isCompleted", "categoryId"]) + .where("isDeleted", "is not", cast(true)) + // Filter null value and ensure non-null type. + .where("title", "is not", null) + .$narrowType<{ title: NotNull }>() + .orderBy("createdAt") + // https://kysely.dev/docs/recipes/relations + .select((eb) => [ + jsonArrayFrom( + eb + .selectFrom("todoCategory") + .select(["todoCategory.id", "todoCategory.name"]) + .where("isDeleted", "is not", cast(true)) + .orderBy("createdAt"), + ).as("categories"), + ]), + { + // logQueryExecutionTime: true, + // logExplainQueryPlan: true, + }, ); type TodosWithCategoriesRow = ExtractRow; diff --git a/package.json b/package.json index 05a63ebe4..92189428a 100755 --- a/package.json +++ b/package.json @@ -13,7 +13,8 @@ "version": "changeset version && pnpm install --no-frozen-lockfile && pnpm format", "release": "pnpm run build && changeset publish", "ios": "cd apps/native && pnpm ios", - "android": "cd apps/native && pnpm android" + "android": "cd apps/native && pnpm android", + "generate-sql": "bun scripts/generateSql.ts" }, "devDependencies": { "@changesets/cli": "^2.27.1", diff --git a/packages/eslint-config-evolu/package.json b/packages/eslint-config-evolu/package.json index 6b2afb726..e8c0c0b77 100644 --- a/packages/eslint-config-evolu/package.json +++ b/packages/eslint-config-evolu/package.json @@ -7,20 +7,20 @@ "clean": "rm -rf node_modules" }, "dependencies": { - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", - "eslint-config-next": "14.1.3", + "@typescript-eslint/eslint-plugin": "^7.3.1", + "@typescript-eslint/parser": "^7.3.1", + "eslint-config-next": "14.1.4", "eslint-config-prettier": "^9.1.0", "eslint-config-turbo": "^1.12.5", "eslint-plugin-jsdoc": "^48.2.1", "eslint-plugin-node": "^11.1.0", - "next": "14.1.3", + "next": "14.1.4", "react": "^18.2.0", "react-dom": "^18.2.0" }, "devDependencies": { "eslint": "^8.57.0", - "typescript": "^5.4.2" + "typescript": "^5.4.3" }, "publishConfig": { "access": "public" diff --git a/packages/evolu-common-react/package.json b/packages/evolu-common-react/package.json index 21000e15a..19aee8d4c 100644 --- a/packages/evolu-common-react/package.json +++ b/packages/evolu-common-react/package.json @@ -41,11 +41,11 @@ "devDependencies": { "@evolu/common": "workspace:*", "@evolu/tsconfig": "workspace:*", - "@types/react": "^18.2.66", + "@types/react": "^18.2.67", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", "react": "^18.2.0", - "typescript": "^5.4.2", + "typescript": "^5.4.3", "vitest": "^1.4.0" }, "peerDependencies": { diff --git a/packages/evolu-common-web/package.json b/packages/evolu-common-web/package.json index 2a10ce1fd..2a70aa778 100644 --- a/packages/evolu-common-web/package.json +++ b/packages/evolu-common-web/package.json @@ -41,7 +41,7 @@ "@types/web-locks-api": "^0.0.5", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", - "typescript": "^5.4.2", + "typescript": "^5.4.3", "user-agent-data-types": "^0.4.2", "vitest": "^1.4.0" }, diff --git a/packages/evolu-common-web/src/SqliteLive.ts b/packages/evolu-common-web/src/SqliteLive.ts index fafb95614..7f57a791f 100644 --- a/packages/evolu-common-web/src/SqliteLive.ts +++ b/packages/evolu-common-web/src/SqliteLive.ts @@ -7,7 +7,7 @@ import { SqliteQuery, SqliteRow, UnexpectedError, - ensureSqliteQuery, + maybeLogSqliteQueryExecutionTime, makeUnexpectedError, maybeParseJson, valuesToSqliteValues, @@ -138,13 +138,16 @@ export const SqliteLive = Layer.effect( const initSqlite = (poolUtil: SAHPoolUtil): void => { const sqlite = new poolUtil.OpfsSAHPoolDb("/evolu1.db"); - const exec = (sqliteQuery: SqliteQuery, id: NanoId): void => { + const exec = (query: SqliteQuery, id: NanoId): void => { try { - const rows = sqlite.exec(sqliteQuery.sql, { - returnValue: "resultRows", - rowMode: "object", - bind: valuesToSqliteValues(sqliteQuery.parameters), - }) as SqliteRow[]; + const rows = Effect.try( + () => + sqlite.exec(query.sql, { + returnValue: "resultRows", + rowMode: "object", + bind: valuesToSqliteValues(query.parameters || []), + }) as SqliteRow[], + ).pipe(maybeLogSqliteQueryExecutionTime(query), Effect.runSync); maybeParseJson(rows); const result = { rows, changes: sqlite.changes() }; channel.postMessage({ _tag: "ExecSuccess", id, result }); @@ -198,11 +201,9 @@ export const SqliteLive = Layer.effect( ); return Sqlite.of({ - exec: (arg) => + exec: (query) => Effect.gen(function* (_) { const id = yield* _(nanoIdGenerator.nanoid); - const query = ensureSqliteQuery(arg); - const promise = new Promise( (resolve) => { promiseResolves.set(id, resolve); diff --git a/packages/evolu-common/README.md b/packages/evolu-common/README.md index 57847f806..009c58d28 100644 --- a/packages/evolu-common/README.md +++ b/packages/evolu-common/README.md @@ -55,6 +55,12 @@ Start developing and watch for code changes: pnpm dev ``` +Start iOS developing: + +``` +pnpm ios +``` + Lint and tests: ``` diff --git a/packages/evolu-common/package.json b/packages/evolu-common/package.json index 3038b882e..2a19cf3f9 100644 --- a/packages/evolu-common/package.json +++ b/packages/evolu-common/package.json @@ -61,20 +61,20 @@ "nanoid": "^5.0.6" }, "devDependencies": { - "@effect/schema": "^0.64.5", + "@effect/schema": "^0.64.9", "@evolu/tsconfig": "workspace:*", "@protobuf-ts/plugin": "^2.9.4", "@protobuf-ts/protoc": "^2.9.4", "array-shuffle": "^3.0.0", - "effect": "2.4.7", + "effect": "2.4.9", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", - "typescript": "^5.4.2", + "typescript": "^5.4.3", "vitest": "^1.4.0" }, "peerDependencies": { - "@effect/schema": "^0.64.5", - "effect": "2.4.7" + "@effect/schema": "^0.64.9", + "effect": "2.4.9" }, "publishConfig": { "access": "public" diff --git a/packages/evolu-common/src/Config.ts b/packages/evolu-common/src/Config.ts index 4af660d4b..b2971e8d3 100644 --- a/packages/evolu-common/src/Config.ts +++ b/packages/evolu-common/src/Config.ts @@ -1,5 +1,6 @@ import * as Context from "effect/Context"; import * as Layer from "effect/Layer"; +import { CreateIndexBuilder } from "kysely"; export interface Config { /** Alternate URL to Evolu sync and backup server. */ @@ -23,6 +24,24 @@ export interface Config { * default value is: "Evolu". */ readonly name: string; + + /** + * Use the `indexes` property to define SQLite indexes. + * + * Table and column names are not typed because Kysely doesn't support it. + * + * https://medium.com/@JasonWyatt/squeezing-performance-from-sqlite-indexes-indexes-c4e175f3c346 + * + * @example + * const indexes = [ + * createIndex("indexTodoCreatedAt").on("todo").column("createdAt"), + * + * createIndex("indexTodoCategoryCreatedAt") + * .on("todoCategory") + * .column("createdAt"), + * ]; + */ + readonly indexes: ReadonlyArray>; } export const Config = Context.GenericTag("@services/Config"); @@ -35,6 +54,7 @@ export const ConfigLive = (config?: Partial): Layer.Layer => maxDrift: 5 * 60 * 1000, reloadUrl: "/", name: "Evolu", + indexes: [], ...config, }), ); diff --git a/packages/evolu-common/src/Db.ts b/packages/evolu-common/src/Db.ts index cc9581074..dfd84fd91 100644 --- a/packages/evolu-common/src/Db.ts +++ b/packages/evolu-common/src/Db.ts @@ -31,9 +31,14 @@ import { insertOwner, } from "./Sql.js"; import { + Index, + indexEquivalence, JsonObjectOrArray, Sqlite, SqliteQuery, + SqliteQueryOptions, + SqliteSchema, + Table, Value, isJsonObjectOrArray, } from "./Sqlite.js"; @@ -157,22 +162,25 @@ interface SerializedSqliteQuery { | Array | { json: JsonObjectOrArray } )[]; + readonly options?: SqliteQueryOptions; } // We use queries as keys, hence JSON.stringify. export const serializeQuery = ({ sql, - parameters, + parameters = [], + options, }: SqliteQuery): Query => { const query: SerializedSqliteQuery = { sql, - parameters: parameters.map((p) => { - return Predicate.isUint8Array(p) + parameters: parameters.map((p) => + Predicate.isUint8Array(p) ? Array.from(p) : isJsonObjectOrArray(p) ? { json: p } - : p; - }), + : p, + ), + ...(options && { options }), }; return JSON.stringify(query) as Query; }; @@ -249,13 +257,7 @@ export const queryResultFromRows = ( return queryResult as QueryResult; }; -export type Tables = ReadonlyArray; - -export interface Table { - readonly name: string; - readonly columns: ReadonlyArray; -} - +// TODO: https://discord.com/channels/795981131316985866/1218626687546294386/1218796529725476935 // https://github.com/Effect-TS/schema/releases/tag/v0.18.0 const getPropertySignatures = ( schema: S.Schema, @@ -270,7 +272,7 @@ const getPropertySignatures = ( return out as any; }; -export const schemaToTables = (schema: S.Schema): Tables => +export const schemaToTables = (schema: S.Schema): ReadonlyArray
=> pipe( getPropertySignatures(schema), ReadonlyRecord.toEntries, @@ -287,10 +289,12 @@ export const transaction = ( ): Effect.Effect => Effect.flatMap(Sqlite, (sqlite) => Effect.acquireUseRelease( - sqlite.exec("begin"), + sqlite.exec({ sql: "begin" }), () => effect, (_, exit) => - Exit.isFailure(exit) ? sqlite.exec("rollback") : sqlite.exec("end"), + Exit.isFailure(exit) + ? sqlite.exec({ sql: "rollback" }) + : sqlite.exec({ sql: "end" }), ), ); @@ -336,7 +340,7 @@ export const lazyInit = ( sqlite.exec(createMessageTableIndex), sqlite.exec(createOwnerTable), sqlite.exec({ - sql: insertOwner, + ...insertOwner, parameters: [ owner.id, owner.mnemonic, @@ -351,78 +355,150 @@ export const lazyInit = ( return owner; }); -const getTables: Effect.Effect< - ReadonlyArray, - never, - Sqlite -> = Sqlite.pipe( - Effect.flatMap((sqlite) => - sqlite.exec(`select "name" from "sqlite_schema" where "type" = 'table'`), - ), - Effect.map((result) => result.rows), - Effect.map(ReadonlyArray.map((row) => (row.name as string) + "")), - Effect.map(ReadonlyArray.filter(Predicate.not(String.startsWith("__")))), - Effect.map(ReadonlyArray.dedupeWith(String.Equivalence)), -); - -const updateTable = ({ - name, - columns, -}: Table): Effect.Effect => - Effect.gen(function* (_) { +const getSchema: Effect.Effect = Effect.gen( + function* (_) { const sqlite = yield* _(Sqlite); - const sql = yield* _( - sqlite.exec(`pragma table_info (${name})`), - Effect.map((result) => result.rows), - Effect.map(ReadonlyArray.map((row) => row.name as string)), - Effect.map((existingColumns) => - ReadonlyArray.differenceWith(String.Equivalence)(existingColumns)( + + const tables = yield* _( + sqlite.exec({ + // https://til.simonwillison.net/sqlite/list-all-columns-in-a-database + sql: ` + select + sqlite_master.name as tableName, + table_info.name as columnName + from + sqlite_master + join pragma_table_info(sqlite_master.name) as table_info + `.trim(), + }), + Effect.map(({ rows }) => { + const map = new Map(); + rows.forEach((row) => { + const { tableName, columnName } = row as { + tableName: string; + columnName: string; + }; + if (!map.has(tableName)) map.set(tableName, []); + map.get(tableName)?.push(columnName); + }); + return Array.from(map, ([name, columns]) => ({ + name, columns, - ), - ), - Effect.map( + })); + }), + ); + + const indexes = yield* _( + sqlite.exec({ + sql: ` + select + name, sql + from + sqlite_master + where + type='index' and + name not like 'sqlite_%' and + name not like 'index_evolu_%'`, + }), + Effect.map((result) => ReadonlyArray.map( - (newColumn) => - `alter table "${name}" add column "${newColumn}" blob;`, + result.rows, + (row): Index => ({ + name: row.name as string, + /** + * SQLite returns "CREATE INDEX" for "create index" for some reason. + * Other keywords remain unchanged. We have to normalize the casing + * for `indexEquivalence` manually. + */ + sql: (row.sql as string).replace("CREATE INDEX", "create index"), + }), ), ), - Effect.map(ReadonlyArray.join("")), ); - if (sql) yield* _(sqlite.exec(sql)); - }); -const createTable = ({ - name, - columns, -}: Table): Effect.Effect => - Effect.flatMap(Sqlite, (sqlite) => - sqlite.exec(` - create table ${name} ( - "id" text primary key, - ${columns - .filter((c) => c !== "id") - // "A column with affinity BLOB does not prefer one storage class over another - // and no attempt is made to coerce data from one storage class into another." - // https://www.sqlite.org/datatype3.html - .map((name) => `"${name}" blob`) - .join(", ")} - ); - `), - ); + return { tables, indexes }; + }, +); export const ensureSchema = ( - tables: Tables, + schema: SqliteSchema, ): Effect.Effect => - Effect.flatMap(getTables, (existingTables) => - Effect.forEach( - tables, - (tableDefinition) => - existingTables.includes(tableDefinition.name) - ? updateTable(tableDefinition) - : createTable(tableDefinition), - { discard: true }, - ), - ); + Effect.gen(function* (_) { + const sqlite = yield* _(Sqlite); + const currentSchema = yield* _(getSchema); + + const sql: string[] = []; + + schema.tables.forEach((table) => { + const currentTable = currentSchema.tables.find( + (t) => t.name === table.name, + ); + if (!currentTable) { + sql.push(` + create table ${table.name} ( + "id" text primary key, + ${table.columns + .filter((c) => c !== "id") + // "A column with affinity BLOB does not prefer one storage class over another + // and no attempt is made to coerce data from one storage class into another." + // https://www.sqlite.org/datatype3.html + .map((name) => `"${name}" blob`) + .join(", ")} + ); + `); + } else { + ReadonlyArray.differenceWith(String.Equivalence)( + table.columns, + currentTable.columns, + ).forEach((newColumn) => { + sql.push( + `alter table "${table.name}" add column "${newColumn}" blob;`, + ); + }); + } + }); + + // Remove old indexes. + ReadonlyArray.differenceWith(indexEquivalence)( + currentSchema.indexes, + ReadonlyArray.intersectionWith(indexEquivalence)( + currentSchema.indexes, + schema.indexes, + ), + ).forEach((indexToDrop) => { + sql.push(`drop index "${indexToDrop.name}";`); + }); + + // Add new indexes. + ReadonlyArray.differenceWith(indexEquivalence)( + schema.indexes, + currentSchema.indexes, + ).forEach((newIndex) => { + sql.push(`${newIndex.sql};`); + }); + + if (sql.length > 0) + yield* _( + sqlite.exec({ + sql: sql.join(""), + }), + ); + }); + +export const dropAllTables: Effect.Effect = Effect.gen( + function* (_) { + const sqlite = yield* _(Sqlite); + const schema = yield* _(getSchema); + const sql = schema.tables + // The dropped table is completely removed from the database schema and + // the disk file. The table can not be recovered. + // All indices and triggers associated with the table are also deleted. + // https://sqlite.org/lang_droptable.html + .map((table) => `drop table "${table.name}";`) + .join(""); + yield* _(sqlite.exec({ sql })); + }, +); export type RowsStore = Store; export const RowsStore = Context.GenericTag("@services/RowsStore"); diff --git a/packages/evolu-common/src/DbWorker.ts b/packages/evolu-common/src/DbWorker.ts index 0d5e01419..eef1dfc7f 100644 --- a/packages/evolu-common/src/DbWorker.ts +++ b/packages/evolu-common/src/DbWorker.ts @@ -34,9 +34,8 @@ import { Query, RowsStore, RowsStoreLive, - Table, - Tables, deserializeQuery, + dropAllTables, ensureSchema, lazyInit, someDefectToNoSuchTableOrColumnError, @@ -49,7 +48,14 @@ import { OnCompleteId } from "./OnCompletes.js"; import { Owner, OwnerId } from "./Owner.js"; import { DbWorkerLock } from "./Platform.js"; import * as Sql from "./Sql.js"; -import { Sqlite, Value } from "./Sqlite.js"; +import { + Sqlite, + SqliteQueryPlanRow, + SqliteSchema, + Table, + Value, + drawSqliteQueryPlan as drawExplainQueryPlan, +} from "./Sqlite.js"; import { Message, NewMessage, @@ -99,9 +105,8 @@ interface DbWorkerInputReset { readonly mnemonic?: Mnemonic; } -interface DbWorkerInputEnsureSchema { +interface DbWorkerInputEnsureSchema extends SqliteSchema { readonly _tag: "ensureSchema"; - readonly tables: Tables; } type DbWorkerOnMessage = DbWorker["onMessage"]; @@ -189,11 +194,30 @@ const query = ({ const queriesRows = yield* _( ReadonlyArray.dedupe(queries), - Effect.forEach((query) => - sqlite - .exec(deserializeQuery(query)) - .pipe(Effect.map((result) => [query, result.rows] as const)), - ), + Effect.forEach((query) => { + const sqliteQuery = deserializeQuery(query); + return sqlite.exec(sqliteQuery).pipe( + Effect.map((result) => [query, result.rows] as const), + Effect.tap(() => { + if (!sqliteQuery.options?.logExplainQueryPlan) return; + return sqlite + .exec({ + ...sqliteQuery, + sql: `EXPLAIN QUERY PLAN ${sqliteQuery.sql}`, + }) + .pipe( + Effect.tap(() => Effect.log("ExplainQueryPlan")), + Effect.tap(({ rows }) => { + // Not using Effect.log because of formating + // eslint-disable-next-line no-console + console.log( + drawExplainQueryPlan(rows as SqliteQueryPlanRow[]), + ); + }), + ); + }), + ); + }), ); const previous = rowsStore.getState(); @@ -288,7 +312,8 @@ const ensureSchemaByNewMessages = ( columns: table.columns.concat(message.column), }); }); - yield* _(ensureSchema(Array.from(tablesMap.values()))); + const tables = Array.from(tablesMap.values()); + yield* _(ensureSchema({ tables, indexes: [] })); }); export const upsertValueIntoTableRowColumn = ( @@ -300,7 +325,15 @@ export const upsertValueIntoTableRowColumn = ( const sqlite = yield* _(Sqlite); const createdAtOrUpdatedAt = cast(new Date(millis)); const insert = sqlite.exec({ - sql: Sql.upsertValueIntoTableRowColumn(message.table, message.column), + sql: ` + insert into + "${message.table}" ("id", "${message.column}", "createdAt", "updatedAt") + values + (?, ?, ?, ?) + on conflict do update set + "${message.column}" = ?, + "updatedAt" = ? + `.trim(), parameters: [ message.row, message.value, @@ -334,8 +367,8 @@ const applyMessages = ({ for (const message of messages) { const timestamp: TimestampString | null = yield* _( sqlite.exec({ - sql: Sql.selectLastTimestampForTableRowColumn, - parameters: [message.table, message.row, message.column], + ...Sql.selectLastTimestampForTableRowColumn, + parameters: [message.table, message.row, message.column, 1], }), Effect.map((result) => result.rows), Effect.flatMap(ReadonlyArray.head), @@ -351,7 +384,7 @@ const applyMessages = ({ if (timestamp == null || timestamp !== message.timestamp) { const { changes } = yield* _( sqlite.exec({ - sql: Sql.insertIntoMessagesIfNew, + ...Sql.insertIntoMessagesIfNew, parameters: [ message.timestamp, message.table, @@ -377,10 +410,10 @@ const writeTimestampAndMerkleTree = ({ }: TimestampAndMerkleTree): Effect.Effect => Effect.flatMap(Sqlite, (sqlite) => sqlite.exec({ - sql: Sql.updateOwnerTimestampAndMerkleTree, + ...Sql.updateOwnerTimestampAndMerkleTree, parameters: [ - timestampToString(timestamp), merkleTreeToString(merkleTree), + timestampToString(timestamp), ], }), ); @@ -420,7 +453,10 @@ const mutate = ({ const { exec } = yield* _(Sqlite); yield* _( Effect.forEach(toDelete, ({ table, row }) => - exec({ sql: Sql.deleteTableRow(table), parameters: [row] }), + exec({ + sql: `delete from "${table}" where "id" = ?;`, + parameters: [row], + }), ), ); @@ -504,7 +540,7 @@ const handleSyncResponse = ({ const messagesToSync = yield* _( sqlite.exec({ - sql: Sql.selectMessagesToSync, + ...Sql.selectMessagesToSync, parameters: [timestampToString(makeSyncTimestamp(diff.value))], }), Effect.map(({ rows }) => rows as unknown as ReadonlyArray), @@ -561,25 +597,8 @@ const reset = ( Sqlite | Bip39 | NanoIdGenerator | DbWorkerOnMessage > => Effect.gen(function* (_) { - const sqlite = yield* _(Sqlite); - - yield* _( - sqlite.exec(`SELECT "name" FROM "sqlite_master" WHERE "type" = 'table'`), - Effect.map((result) => result.rows), - Effect.flatMap( - // The dropped table is completely removed from the database schema and - // the disk file. The table can not be recovered. - // All indices and triggers associated with the table are also deleted. - // https://sqlite.org/lang_droptable.html - Effect.forEach( - ({ name }) => sqlite.exec(`DROP TABLE "${name as string}"`), - { discard: true }, - ), - ), - ); - + yield* _(dropAllTables); if (input.mnemonic) yield* _(lazyInit(input.mnemonic)); - const onMessage = yield* _(DbWorkerOnMessage); onMessage({ _tag: "onResetOrRestore" }); }); @@ -666,7 +685,7 @@ export const DbWorkerCommonLive = Layer.effect( skipAllBecauseOfReset = true; return reset(input); }, - ensureSchema: ({ tables }) => ensureSchema(tables), + ensureSchema, SyncWorkerOutputSyncResponse: handleSyncResponse, }), Effect.provide(layer), diff --git a/packages/evolu-common/src/Evolu.ts b/packages/evolu-common/src/Evolu.ts index 7542eb9e5..8114516f1 100644 --- a/packages/evolu-common/src/Evolu.ts +++ b/packages/evolu-common/src/Evolu.ts @@ -32,7 +32,12 @@ import { SqliteBoolean, SqliteDate } from "./Model.js"; import { OnCompletes, OnCompletesLive } from "./OnCompletes.js"; import { Owner } from "./Owner.js"; import { AppState, FlushSync } from "./Platform.js"; -import { SqliteQuery, isSqlMutation } from "./Sqlite.js"; +import { + Index, + SqliteQuery, + SqliteQueryOptions, + isSqlMutation, +} from "./Sqlite.js"; import { Store, Unsubscribe, makeStore } from "./Store.js"; import { SyncState } from "./SyncWorker.js"; @@ -297,6 +302,7 @@ export interface Evolu { */ readonly ensureSchema: ( schema: S.Schema, + indexes?: ReadonlyArray, ) => void; /** @@ -313,6 +319,7 @@ export const Evolu = Context.GenericTag("@services/Evolu"); type CreateQuery = ( queryCallback: QueryCallback, + options?: SqliteQueryOptions, ) => Query; type QueryCallback = ( @@ -334,6 +341,7 @@ type NullableExceptForIdAndAutomaticColumns = { : T[K] | null; }; +// https://kysely.dev/docs/recipes/splitting-query-building-and-execution const kysely = new Kysely.Kysely>({ dialect: { createAdapter: (): Kysely.DialectAdapter => new Kysely.SqliteAdapter(), @@ -346,18 +354,29 @@ const kysely = new Kysely.Kysely>({ }, }); +export const createIndex = kysely.schema.createIndex.bind(kysely.schema); + export const makeCreateQuery = (): CreateQuery => - (queryCallback: QueryCallback) => + ( + queryCallback: QueryCallback, + options?: SqliteQueryOptions, + ) => pipe( queryCallback(kysely as Kysely.Kysely>).compile(), - ({ sql, parameters }): SqliteQuery => { - if (isSqlMutation(sql)) + (compiledQuery): SqliteQuery => { + if (isSqlMutation(compiledQuery.sql)) throw new Error( "SQL mutation (INSERT, UPDATE, DELETE, etc.) isn't allowed in the Evolu `createQuery` function. Kysely suggests it because there is no read-only Kysely yet, and removing such an API is not possible. For mutations, use Evolu mutation API.", ); - - return { sql, parameters: parameters as SqliteQuery["parameters"] }; + const parameters = compiledQuery.parameters as NonNullable< + SqliteQuery["parameters"] + >; + return { + sql: compiledQuery.sql, + parameters, + ...(options && { options }), + }; }, (query) => serializeQuery(query), ); @@ -739,7 +758,6 @@ const EvoluCommon = Layer.effect( }; appState.init({ onRequestSync: sync }); - sync(); return Evolu.of({ @@ -770,10 +788,11 @@ const EvoluCommon = Layer.effect( restoreOwner: (mnemonic) => dbWorker.postMessage({ _tag: "reset", mnemonic }), - ensureSchema: (schema) => + ensureSchema: (schema, indexes = []) => dbWorker.postMessage({ _tag: "ensureSchema", tables: schemaToTables(schema), + indexes, }), sync, @@ -815,6 +834,14 @@ export const makeCreateEvolu = Effect.runSync, ), ); - evolu.ensureSchema(schema); + + const indexes = config?.indexes?.map( + (index): Index => ({ + name: index.toOperationNode().name.name, + sql: index.compile().sql, + }), + ); + + evolu.ensureSchema(schema, indexes); return evolu as Evolu; }; diff --git a/packages/evolu-common/src/Public.ts b/packages/evolu-common/src/Public.ts index 75d9dd3b0..c1e5cfa0e 100644 --- a/packages/evolu-common/src/Public.ts +++ b/packages/evolu-common/src/Public.ts @@ -1,3 +1,4 @@ +export { sql } from "kysely"; export type { NotNull } from "kysely"; export { jsonArrayFrom, jsonObjectFrom } from "kysely/helpers/sqlite"; export type { Timestamp, TimestampError } from "./Crdt.js"; @@ -5,6 +6,7 @@ export type { InvalidMnemonicError, Mnemonic } from "./Crypto.js"; export { database, table } from "./Db.js"; export type { ExtractRow, QueryResult } from "./Db.js"; export type { EvoluError, UnexpectedError } from "./ErrorStore.js"; +export { createIndex } from "./Evolu.js"; export * from "./Model.js"; export type { Owner, OwnerId } from "./Owner.js"; export { canUseDom } from "./Platform.js"; diff --git a/packages/evolu-common/src/Sql.ts b/packages/evolu-common/src/Sql.ts index 1bbda61a6..0c980be37 100644 --- a/packages/evolu-common/src/Sql.ts +++ b/packages/evolu-common/src/Sql.ts @@ -1,123 +1,41 @@ -// TODO: This file should be generated from a script via Kysely. -// The reason for not using Kysely directly is bundle size. -// [Playground Link](https://kyse.link/?p=b&i=haFkpnNxbGl0ZaF2pjAuMjYuMKFz2gFoaW1wb3J0IHsgR2VuZXJhdGVkIH0gZnJvbSAna3lzZWx5JwoKZGVjbGFyZSBnbG9iYWwgewogIGludGVyZmFjZSBEQiB7CiAgICBldm9sdV9tZXNzYWdlOiB7CiAgICAgIHRpbWVzdGFtcDogc3RyaW5nLAogICAgICB0YWJsZTogc3RyaW5nLAogICAgICByb3c6IHN0cmluZywKICAgICAgY29sdW1uOiBzdHJpbmcsCiAgICAgIHZhbHVlOiB1bmtub3duCiAgICB9LAoKICAgIGV2b2x1X293bmVyOiB7CiAgICAgIGlkOiBzdHJpbmcKICAgICAgbW5lbW9uaWM6IHN0cmluZwogICAgICBlbmNyeXB0aW9uS2V5OiBVaW50OEFycmF5LAogICAgICB0aW1lc3RhbXA6IHN0cmluZywKICAgICAgbWVya2xlVHJlZTogc3RyaW5nCiAgICB9CiAgfQp9oXHaBnhhd2FpdCBreXNlbHkuc2VsZWN0RnJvbSgiZXZvbHVfb3duZXIiKQogIC5zZWxlY3QoWyJpZCIsICJtbmVtb25pYyIsICJlbmNyeXB0aW9uS2V5Il0pCiAgLmV4ZWN1dGUoKQoKYXdhaXQga3lzZWx5LnNjaGVtYQogIC5jcmVhdGVUYWJsZSgnZXZvbHVfbWVzc2FnZScpCiAgLmFkZENvbHVtbigndGltZXN0YW1wJywgJ2Jsb2InLCBjb2wgPT4gY29sLnByaW1hcnlLZXkoKSkKICAuYWRkQ29sdW1uKCd0YWJsZScsICdibG9iJykKICAuYWRkQ29sdW1uKCdyb3cnLCAnYmxvYicpCiAgLmFkZENvbHVtbignY29sdW1uJywgJ2Jsb2InKQogIC5hZGRDb2x1bW4oJ3ZhbHVlJywgJ2Jsb2InKQogIC5leGVjdXRlKCkKCmF3YWl0IGt5c2VseS5zY2hlbWEKICAuY3JlYXRlSW5kZXgoImluZGV4X2V2b2x1X21lc3NhZ2UiKQogIC5vbigiZXZvbHVfbWVzc2FnZSIpCiAgLmNvbHVtbnMoWyJ0YWJsZSIsICJyb3ciLCAiY29sdW1uIiwgInRpbWVzdGFtcCJdKQogIC5leGVjdXRlKCkKCmF3YWl0IGt5c2VseS5zY2hlbWEKICAuY3JlYXRlVGFibGUoJ2V2b2x1X19vd25lcicpCiAgLmFkZENvbHVtbignaWQnLCAnYmxvYicpCiAgLmFkZENvbHVtbignbW5lbW9uaWMnLCAnYmxvYicpCiAgLmFkZENvbHVtbignZW5jcnlwdGlvbktleScsICdibG9iJykKICAuYWRkQ29sdW1uKCd0aW1lc3RhbXAnLCAnYmxvYicpCiAgLmFkZENvbHVtbignbWVya2xlVHJlZScsICdibG9iJykKICAuZXhlY3V0ZSgpCgphd2FpdCBreXNlbHkuaW5zZXJ0SW50bygiZXZvbHVfb3duZXIiKQogIC52YWx1ZXMoewogICAgImlkIjogImIiLAogICAgIm1uZW1vbmljIjogImEiLAogICAgImVuY3J5cHRpb25LZXkiOiBuZXcgVWludDhBcnJheSgpLAogICAgInRpbWVzdGFtcCI6ICJhIiwKICAgICJtZXJrbGVUcmVlIjogImIiCiAgfSkKICAuZXhlY3V0ZSgpCgphd2FpdCBreXNlbHkuc2VsZWN0RnJvbSgiZXZvbHVfb3duZXIiKQogIC5zZWxlY3QoWyJ0aW1lc3RhbXAiLCAibWVya2xlVHJlZSJdKQogIC5leGVjdXRlKCkKCmF3YWl0IGt5c2VseS5zZWxlY3RGcm9tKCJldm9sdV9tZXNzYWdlIikKICAuc2VsZWN0KCJ0aW1lc3RhbXAiKQogIC53aGVyZSgndGFibGUnLCAnPScsICcxJykKICAud2hlcmUoJ3JvdycsICc9JywgJzInKQogIC53aGVyZSgnY29sdW1uJywgJz0nLCAnMycpCiAgLm9yZGVyQnkoInRpbWVzdGFtcCIsICJkZXNjIikKICAubGltaXQoMSkKICAuZXhlY3V0ZVRha2VGaXJzdCgpCgphd2FpdCBreXNlbHkuaW5zZXJ0SW50bygiZXZvbHVfbWVzc2FnZSIpCiAgLnZhbHVlcyh7CiAgICAidGltZXN0YW1wIjogJzEnLAogICAgInRhYmxlIjogJzInLAogICAgInJvdyI6ICczJywKICAgICJjb2x1bW4iOiAnNCcsCiAgICAidmFsdWUiOiAnNScsCiAgfSkKICAub25Db25mbGljdChvYyA9PiBvYy5kb05vdGhpbmcoKSkKICAuZXhlY3V0ZSgpCgphd2FpdCBreXNlbHkudXBkYXRlVGFibGUoImV2b2x1X293bmVyIikKICAuc2V0KHsKICAgICJtZXJrbGVUcmVlIjogJzEnLAogICAgInRpbWVzdGFtcCI6ICIyIgogIH0pCiAgLmV4ZWN1dGUoKQoKYXdhaXQga3lzZWx5LnNlbGVjdEZyb20oImV2b2x1X21lc3NhZ2UiKQogIC5zZWxlY3RBbGwoKQogIC53aGVyZSgidGltZXN0YW1wIiwgIj49IiwgJzEnKQogIC5vcmRlckJ5KCJ0aW1lc3RhbXAiKQogIC5leGVjdXRlKCmhY8M=) - -export const selectOwner = ` -select - "id", - "mnemonic", - "encryptionKey" -from - "evolu_owner" -`.trim(); - -export const createMessageTable = ` -create table - "evolu_message" ( - "timestamp" blob primary key, - "table" blob, - "row" blob, - "column" blob, - "value" blob - ); -`.trim(); - -export const createMessageTableIndex = ` -create index "index_evolu_message" on "evolu_message" ( - "table", "row", "column", "timestamp" -); -`.trim(); - -export const createOwnerTable = ` -create table - "evolu_owner" ( - "id" blob, - "mnemonic" blob, - "encryptionKey" blob, - "timestamp" blob, - "merkleTree" blob - ); -`.trim(); - -export const insertOwner = ` -insert into - "evolu_owner" ( - "id", - "mnemonic", - "encryptionKey", - "timestamp", - "merkleTree" - ) -values - (?, ?, ?, ?, ?); -`.trim(); - -export const selectOwnerTimestampAndMerkleTree = ` -select - "timestamp", - "merkleTree" -from - "evolu_owner" -`.trim(); - -export const selectLastTimestampForTableRowColumn = ` -select - "timestamp" -from - "evolu_message" -where - "table" = ? - and "row" = ? - and "column" = ? -order by - "timestamp" desc -limit - 1 -`.trim(); - -export const upsertValueIntoTableRowColumn = ( - table: string, - column: string, -): string => - ` -insert into - "${table}" ("id", "${column}", "createdAt", "updatedAt") -values - (?, ?, ?, ?) -on conflict do update set - "${column}" = ?, - "updatedAt" = ? -`.trim(); - -export const deleteTableRow = (table: string): string => - ` -delete from "${table}" -where - "id" = ?; -`.trim(); - -export const insertIntoMessagesIfNew = ` -insert into - "evolu_message" ("timestamp", "table", "row", "column", "value") -values - (?, ?, ?, ?, ?) -on conflict do nothing -`.trim(); - -export const updateOwnerTimestampAndMerkleTree = ` -update "evolu_owner" -set - "timestamp" = ?, - "merkleTree" = ? -`.trim(); - -export const selectMessagesToSync = ` -select - * -from - "evolu_message" -where - "timestamp" >= ? -order by - "timestamp" -`.trim(); +// this file is generated by generateSql script +import { SqliteQuery } from "./Sqlite.js"; +export const selectOwner: SqliteQuery = { + sql: `select "id", "mnemonic", "encryptionKey" from "evolu_owner"`, +}; + +export const createMessageTable: SqliteQuery = { + sql: `create table "evolu_message" ("timestamp" blob primary key, "table" blob, "row" blob, "column" blob, "value" blob)`, +}; + +export const createMessageTableIndex: SqliteQuery = { + sql: `create index "index_evolu_message" on "evolu_message" ("table", "row", "column", "timestamp" desc)`, +}; + +export const createOwnerTable: SqliteQuery = { + sql: `create table "evolu_owner" ("id" blob, "mnemonic" blob, "encryptionKey" blob, "timestamp" blob, "merkleTree" blob)`, +}; + +export const insertOwner: SqliteQuery = { + sql: `insert into "evolu_owner" ("id", "mnemonic", "encryptionKey", "timestamp", "merkleTree") values (?, ?, ?, ?, ?)`, +}; + +export const selectOwnerTimestampAndMerkleTree: SqliteQuery = { + sql: `select "timestamp", "merkleTree" from "evolu_owner"`, +}; + +export const selectLastTimestampForTableRowColumn: SqliteQuery = { + sql: `select "timestamp" from "evolu_message" where "table" = ? and "row" = ? and "column" = ? order by "timestamp" desc limit ?`, +}; + +export const insertIntoMessagesIfNew: SqliteQuery = { + sql: `insert into "evolu_message" ("timestamp", "table", "row", "column", "value") values (?, ?, ?, ?, ?) on conflict do nothing`, +}; + +export const updateOwnerTimestampAndMerkleTree: SqliteQuery = { + sql: `update "evolu_owner" set "merkleTree" = ?, "timestamp" = ?`, +}; + +export const selectMessagesToSync: SqliteQuery = { + sql: `select * from "evolu_message" where "timestamp" >= ? order by "timestamp"`, +}; diff --git a/packages/evolu-common/src/Sqlite.ts b/packages/evolu-common/src/Sqlite.ts index 0db79e03f..113318087 100644 --- a/packages/evolu-common/src/Sqlite.ts +++ b/packages/evolu-common/src/Sqlite.ts @@ -1,16 +1,24 @@ import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; +import { Equivalence } from "effect/Equivalence"; import * as Predicate from "effect/Predicate"; export interface Sqlite { - readonly exec: (arg: string | SqliteQuery) => Effect.Effect; + readonly exec: (query: SqliteQuery) => Effect.Effect; } export const Sqlite = Context.GenericTag("@services/Sqlite"); export interface SqliteQuery { readonly sql: string; - readonly parameters: Value[]; + readonly parameters?: Value[]; + readonly options?: SqliteQueryOptions; +} + +export interface SqliteQueryOptions { + readonly logQueryExecutionTime?: boolean; + /** https://www.sqlite.org/eqp.html */ + readonly logExplainQueryPlan?: boolean; } export type Value = SqliteValue | JsonObjectOrArray; @@ -41,11 +49,6 @@ export const valuesToSqliteValues = ( isJsonObjectOrArray(value) ? JSON.stringify(value) : value, ); -export const ensureSqliteQuery = (arg: string | SqliteQuery): SqliteQuery => { - if (typeof arg !== "string") return arg; - return { sql: arg, parameters: [] }; -}; - export const maybeParseJson = (rows: SqliteRow[]): SqliteRow[] => parseArray(rows); @@ -96,3 +99,58 @@ const isSqlMutationRegEx = new RegExp( export const isSqlMutation = (sql: string): boolean => isSqlMutationRegEx.test(sql); + +export const maybeLogSqliteQueryExecutionTime = + (query: SqliteQuery) => + (effect: Effect.Effect): Effect.Effect => { + if (!query.options?.logQueryExecutionTime) return effect; + return effect.pipe( + Effect.tap(() => Effect.log("QueryExecutionTime")), + // Not using Effect.log because of formating + // eslint-disable-next-line no-console + Effect.tap(() => console.log(query.sql)), + Effect.withLogSpan("duration"), + ); + }; + +export type SqliteQueryPlanRow = { + id: number; + parent: number; + detail: string; +}; + +export const drawSqliteQueryPlan = (rows: SqliteQueryPlanRow[]): string => + rows + .map((row) => { + let parentId = row.parent; + let indent = 0; + + do { + const parent = rows.find((r) => r.id === parentId); + if (!parent) break; + parentId = parent.parent; + indent++; + // eslint-disable-next-line no-constant-condition + } while (true); + + return `${" ".repeat(indent)}${row.detail}`; + }) + .join("\n"); + +export interface SqliteSchema { + readonly tables: ReadonlyArray
; + readonly indexes: ReadonlyArray; +} + +export interface Table { + readonly name: string; + readonly columns: ReadonlyArray; +} + +export interface Index { + readonly name: string; + readonly sql: string; +} + +export const indexEquivalence: Equivalence = (self, that) => + self.name === that.name && self.sql === that.sql; diff --git a/packages/evolu-common/test/DbWorker.test.ts b/packages/evolu-common/test/DbWorker.test.ts index e3c0f10be..c33b7e0be 100644 --- a/packages/evolu-common/test/DbWorker.test.ts +++ b/packages/evolu-common/test/DbWorker.test.ts @@ -40,7 +40,7 @@ test("upsertValueIntoTableRowColumn should ensure schema", () => { millis, ).pipe( Effect.zipRight(Sqlite), - Effect.flatMap(({ exec }) => exec("select * from a")), + Effect.flatMap(({ exec }) => exec({ sql: "select * from a" })), Effect.provide(SqliteTest), Effect.runSync, ); diff --git a/packages/evolu-common/test/utils.ts b/packages/evolu-common/test/utils.ts index 5ece37e8f..b649c8d4f 100644 --- a/packages/evolu-common/test/utils.ts +++ b/packages/evolu-common/test/utils.ts @@ -24,15 +24,12 @@ export const SqliteTest = Layer.effect( Effect.sync(() => { const db = new Database(":memory:"); - const exec: Sqlite["exec"] = (arg) => + const exec: Sqlite["exec"] = (query) => Effect.sync(() => { - const isSqlString = typeof arg === "string"; - const isSelect = (isSqlString ? arg : arg.sql) - .toLowerCase() - .includes("select"); + const isSelect = query.sql.toLowerCase().includes("select"); - const prepared = db.prepare(isSqlString ? arg : arg.sql); - const parameters = isSqlString ? [] : arg.parameters; + const prepared = db.prepare(query.sql); + const parameters = query.parameters || []; const rows = isSelect ? (prepared.all(parameters) as SqliteRow[]) : []; const changes = isSelect ? 0 : prepared.run(parameters).changes; diff --git a/packages/evolu-react-native/package.json b/packages/evolu-react-native/package.json index f5d71c3c0..a899d30a5 100644 --- a/packages/evolu-react-native/package.json +++ b/packages/evolu-react-native/package.json @@ -46,17 +46,17 @@ "@evolu/tsconfig": "workspace:*", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", - "expo": "^50.0.11", - "expo-sqlite": "~13.3.0", - "react-native": "0.73.5", - "typescript": "^5.4.2", + "expo": "^50.0.14", + "expo-sqlite": "~13.4.0", + "react-native": "0.73.6", + "typescript": "^5.4.3", "vitest": "^1.4.0" }, "peerDependencies": { "@evolu/common-react": "^6.0.3", - "expo": "^50.0.11", - "expo-sqlite": "~13.3.0", - "react-native": "0.73.5" + "expo": "^50.0.14", + "expo-sqlite": "~13.4.0", + "react-native": "0.73.6" }, "publishConfig": { "access": "public" diff --git a/packages/evolu-react-native/src/SqliteLive.ts b/packages/evolu-react-native/src/SqliteLive.ts index f3cd55259..86e0b1a7a 100644 --- a/packages/evolu-react-native/src/SqliteLive.ts +++ b/packages/evolu-react-native/src/SqliteLive.ts @@ -2,8 +2,8 @@ import { Config, Sqlite, SqliteRow, - ensureSqliteQuery, isSqlMutation, + maybeLogSqliteQueryExecutionTime, maybeParseJson, valuesToSqliteValues, } from "@evolu/common"; @@ -18,23 +18,20 @@ export const SqliteLive = Layer.effect( const db = ExpoSQLite.openDatabaseSync(`evolu1-${config.name}.db`); return Sqlite.of({ - exec: (arg) => + exec: (query) => Effect.gen(function* (_) { - const sqliteQuery = ensureSqliteQuery(arg); - const query = { - sql: sqliteQuery.sql, - args: valuesToSqliteValues(sqliteQuery.parameters), - }; + const parameters = valuesToSqliteValues(query.parameters || []); if (!isSqlMutation(query.sql)) { const rows = (yield* _( - Effect.promise(() => db.getAllAsync(query.sql, query.args)), + Effect.promise(() => db.getAllAsync(query.sql, parameters)), + maybeLogSqliteQueryExecutionTime(query), )) as SqliteRow[]; maybeParseJson(rows); return { rows, changes: 0 }; } const { changes } = yield* _( - Effect.promise(() => db.runAsync(query.sql, query.args)), + Effect.promise(() => db.runAsync(query.sql, parameters)), ); return { rows: [], changes }; }), diff --git a/packages/evolu-react/package.json b/packages/evolu-react/package.json index bf8de9a81..096a4c99c 100644 --- a/packages/evolu-react/package.json +++ b/packages/evolu-react/package.json @@ -44,7 +44,7 @@ "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", "react-dom": "^18.2.0", - "typescript": "^5.4.2", + "typescript": "^5.4.3", "vitest": "^1.4.0" }, "peerDependencies": { diff --git a/packages/evolu-server/package.json b/packages/evolu-server/package.json index f22d95d7c..032db3d81 100644 --- a/packages/evolu-server/package.json +++ b/packages/evolu-server/package.json @@ -31,8 +31,8 @@ "better-sqlite3": "^9.4.3", "body-parser": "^1.20.2", "cors": "^2.8.5", - "effect": "2.4.7", - "express": "^4.18.3", + "effect": "2.4.9", + "express": "^4.19.0", "kysely": "^0.27.3" }, "devDependencies": { @@ -41,15 +41,15 @@ "@types/body-parser": "^1.19.5", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", - "@types/node": "^20.11.28", + "@types/node": "^20.11.30", "eslint": "^8.57.0", "eslint-config-evolu": "workspace:*", - "typescript": "^5.4.2", + "typescript": "^5.4.3", "vitest": "^1.4.0" }, "peerDependencies": { "@evolu/common": "^4.0.5", - "effect": "2.4.7" + "effect": "2.4.9" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0854d2839..b7950c73d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: apps/native: dependencies: '@effect/schema': - specifier: ^0.64.5 - version: 0.64.5(effect@2.4.7)(fast-check@3.16.0) + specifier: ^0.64.9 + version: 0.64.9(effect@2.4.9)(fast-check@3.16.0) '@evolu/common': specifier: workspace:* version: link:../../packages/evolu-common @@ -46,7 +46,7 @@ importers: version: link:../../packages/evolu-react-native '@react-native-community/netinfo': specifier: 11.1.0 - version: 11.1.0(react-native@0.73.5) + version: 11.1.0(react-native@0.73.6) babel-plugin-module-resolver: specifier: ^5.0.0 version: 5.0.0 @@ -57,17 +57,17 @@ importers: specifier: ^3.12.0 version: 3.12.0 effect: - specifier: 2.4.7 - version: 2.4.7 + specifier: 2.4.9 + version: 2.4.9 events: specifier: ^3.3.0 version: 3.3.0 expo: - specifier: ^50.0.11 - version: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + specifier: ^50.0.14 + version: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) expo-sqlite: - specifier: ~13.3.0 - version: 13.3.0(expo@50.0.13) + specifier: ~13.4.0 + version: 13.4.0(expo@50.0.14) expo-status-bar: specifier: ~1.11.1 version: 1.11.1 @@ -78,11 +78,11 @@ importers: specifier: ^18.2.0 version: 18.2.0 react-native: - specifier: 0.73.5 - version: 0.73.5(@babel/core@7.24.0)(react@18.2.0) + specifier: 0.73.6 + version: 0.73.6(@babel/core@7.24.3)(react@18.2.0) react-native-get-random-values: specifier: ~1.8.0 - version: 1.8.0(react-native@0.73.5) + version: 1.8.0(react-native@0.73.6) react-native-picker-select: specifier: ^9.0.0 version: 9.0.1(@react-native-picker/picker@2.6.1) @@ -91,17 +91,17 @@ importers: version: 0.0.2 devDependencies: '@babel/core': - specifier: ^7.23.3 - version: 7.24.0 + specifier: ^7.24.3 + version: 7.24.3 '@babel/plugin-transform-dynamic-import': - specifier: ^7.23.4 - version: 7.23.4(@babel/core@7.24.0) + specifier: ^7.24.1 + version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-private-methods': - specifier: ^7.23.3 - version: 7.23.3(@babel/core@7.24.0) + specifier: ^7.24.1 + version: 7.24.1(@babel/core@7.24.3) '@types/react': - specifier: ^18.2.66 - version: 18.2.66 + specifier: ^18.2.67 + version: 18.2.67 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -112,8 +112,8 @@ importers: specifier: ^3.2.5 version: 3.2.5 typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 apps/server: dependencies: @@ -125,20 +125,20 @@ importers: specifier: workspace:* version: link:../../packages/evolu-tsconfig '@types/node': - specifier: ^20.11.28 - version: 20.11.28 + specifier: ^20.11.30 + version: 20.11.30 ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@20.11.28)(typescript@5.4.2) + version: 10.9.2(@types/node@20.11.30)(typescript@5.4.3) typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 apps/web: dependencies: '@effect/schema': - specifier: ^0.64.5 - version: 0.64.5(effect@2.4.7)(fast-check@3.16.0) + specifier: ^0.64.9 + version: 0.64.9(effect@2.4.9)(fast-check@3.16.0) '@evolu/common': specifier: workspace:* version: link:../../packages/evolu-common @@ -149,17 +149,17 @@ importers: specifier: ^2.1.0 version: 2.1.0 effect: - specifier: 2.4.7 - version: 2.4.7 + specifier: 2.4.9 + version: 2.4.9 next: - specifier: 14.1.3 - version: 14.1.3(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.4 + version: 14.1.4(react-dom@18.2.0)(react@18.2.0) nextra: specifier: ^2.13.4 - version: 2.13.4(next@14.1.3)(react-dom@18.2.0)(react@18.2.0) + version: 2.13.4(next@14.1.4)(react-dom@18.2.0)(react@18.2.0) nextra-theme-docs: specifier: ^2.13.4 - version: 2.13.4(next@14.1.3)(nextra@2.13.4)(react-dom@18.2.0)(react@18.2.0) + version: 2.13.4(next@14.1.4)(nextra@2.13.4)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -171,17 +171,17 @@ importers: specifier: workspace:* version: link:../../packages/evolu-tsconfig '@types/node': - specifier: ^20.11.28 - version: 20.11.28 + specifier: ^20.11.30 + version: 20.11.30 '@types/react': - specifier: ^18.2.66 - version: 18.2.66 + specifier: ^18.2.67 + version: 18.2.67 '@types/react-dom': specifier: ^18.2.22 version: 18.2.22 autoprefixer: specifier: ^10.4.18 - version: 10.4.18(postcss@8.4.35) + version: 10.4.18(postcss@8.4.37) eslint: specifier: ^8.57.0 version: 8.57.0 @@ -189,8 +189,8 @@ importers: specifier: workspace:* version: link:../../packages/eslint-config-evolu postcss: - specifier: ^8.4.35 - version: 8.4.35 + specifier: ^8.4.37 + version: 8.4.37 prettier: specifier: ^3.2.5 version: 3.2.5 @@ -201,20 +201,20 @@ importers: specifier: ^3.4.0 version: 3.4.1 typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 packages/eslint-config-evolu: dependencies: '@typescript-eslint/eslint-plugin': - specifier: ^7.2.0 - version: 7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.2) + specifier: ^7.3.1 + version: 7.3.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0)(typescript@5.4.3) '@typescript-eslint/parser': - specifier: ^7.2.0 - version: 7.2.0(eslint@8.57.0)(typescript@5.4.2) + specifier: ^7.3.1 + version: 7.3.1(eslint@8.57.0)(typescript@5.4.3) eslint-config-next: - specifier: 14.1.3 - version: 14.1.3(eslint@8.57.0)(typescript@5.4.2) + specifier: 14.1.4 + version: 14.1.4(eslint@8.57.0)(typescript@5.4.3) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) @@ -228,8 +228,8 @@ importers: specifier: ^11.1.0 version: 11.1.0(eslint@8.57.0) next: - specifier: 14.1.3 - version: 14.1.3(react-dom@18.2.0)(react@18.2.0) + specifier: 14.1.4 + version: 14.1.4(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -241,8 +241,8 @@ importers: specifier: ^8.57.0 version: 8.57.0 typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 packages/evolu-common: dependencies: @@ -266,8 +266,8 @@ importers: version: 5.0.6 devDependencies: '@effect/schema': - specifier: ^0.64.5 - version: 0.64.5(effect@2.4.7)(fast-check@3.16.0) + specifier: ^0.64.9 + version: 0.64.9(effect@2.4.9)(fast-check@3.16.0) '@evolu/tsconfig': specifier: workspace:* version: link:../evolu-tsconfig @@ -281,8 +281,8 @@ importers: specifier: ^3.0.0 version: 3.0.0 effect: - specifier: 2.4.7 - version: 2.4.7 + specifier: 2.4.9 + version: 2.4.9 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -290,11 +290,11 @@ importers: specifier: workspace:* version: link:../eslint-config-evolu typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.28) + version: 1.4.0(@types/node@20.11.30) packages/evolu-common-react: devDependencies: @@ -305,8 +305,8 @@ importers: specifier: workspace:* version: link:../evolu-tsconfig '@types/react': - specifier: ^18.2.66 - version: 18.2.66 + specifier: ^18.2.67 + version: 18.2.67 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -317,11 +317,11 @@ importers: specifier: ^18.2.0 version: 18.2.0 typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.28) + version: 1.4.0(@types/node@20.11.30) packages/evolu-common-web: devDependencies: @@ -344,14 +344,14 @@ importers: specifier: workspace:* version: link:../eslint-config-evolu typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 user-agent-data-types: specifier: ^0.4.2 version: 0.4.2 vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.28) + version: 1.4.0(@types/node@20.11.30) packages/evolu-react: devDependencies: @@ -380,17 +380,17 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.28) + version: 1.4.0(@types/node@20.11.30) packages/evolu-react-native: dependencies: expo-updates: specifier: ^0.24.11 - version: 0.24.12(expo@50.0.13) + version: 0.24.12(expo@50.0.14) devDependencies: '@evolu/common': specifier: workspace:* @@ -408,20 +408,20 @@ importers: specifier: workspace:* version: link:../eslint-config-evolu expo: - specifier: ^50.0.11 - version: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + specifier: ^50.0.14 + version: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) expo-sqlite: - specifier: ~13.3.0 - version: 13.3.0(expo@50.0.13) + specifier: ~13.4.0 + version: 13.4.0(expo@50.0.14) react-native: - specifier: 0.73.5 - version: 0.73.5(@babel/core@7.24.0)(react@18.2.0) + specifier: 0.73.6 + version: 0.73.6(@babel/core@7.24.3)(react@18.2.0) typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.28) + version: 1.4.0(@types/node@20.11.30) packages/evolu-server: dependencies: @@ -438,11 +438,11 @@ importers: specifier: ^2.8.5 version: 2.8.5 effect: - specifier: 2.4.7 - version: 2.4.7 + specifier: 2.4.9 + version: 2.4.9 express: - specifier: ^4.18.3 - version: 4.18.3 + specifier: ^4.19.0 + version: 4.19.0 kysely: specifier: ^0.27.3 version: 0.27.3 @@ -463,8 +463,8 @@ importers: specifier: ^4.17.21 version: 4.17.21 '@types/node': - specifier: ^20.11.28 - version: 20.11.28 + specifier: ^20.11.30 + version: 20.11.30 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -472,11 +472,11 @@ importers: specifier: workspace:* version: link:../eslint-config-evolu typescript: - specifier: ^5.4.2 - version: 5.4.2 + specifier: ^5.4.3 + version: 5.4.3 vitest: specifier: ^1.4.0 - version: 1.4.0(@types/node@20.11.28) + version: 1.4.0(@types/node@20.11.30) packages/evolu-tsconfig: {} @@ -501,32 +501,32 @@ packages: /@babel/code-frame@7.10.4: resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} dependencies: - '@babel/highlight': 7.23.4 + '@babel/highlight': 7.24.2 - /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + /@babel/code-frame@7.24.2: + resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 + '@babel/highlight': 7.24.2 + picocolors: 1.0.0 - /@babel/compat-data@7.23.5: - resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + /@babel/compat-data@7.24.1: + resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} engines: {node: '>=6.9.0'} - /@babel/core@7.24.0: - resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} + /@babel/core@7.24.3: + resolution: {integrity: sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helpers': 7.24.0 - '@babel/parser': 7.24.0 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) + '@babel/helpers': 7.24.1 + '@babel/parser': 7.24.1 '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 + '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 convert-source-map: 2.0.0 debug: 4.3.4 @@ -536,8 +536,8 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + /@babel/generator@7.24.1: + resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 @@ -561,14 +561,14 @@ packages: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.23.5 + '@babel/compat-data': 7.24.1 '@babel/helper-validator-option': 7.23.5 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.24.0): - resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} + /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -576,18 +576,18 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.0): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.3): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -596,29 +596,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.24.0): - resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.0): + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3): resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -626,7 +609,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 debug: 4.3.4 @@ -658,13 +641,13 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -673,9 +656,9 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 @@ -690,7 +673,7 @@ packages: resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.0): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.3): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -699,13 +682,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - /@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -713,7 +696,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -736,8 +719,8 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + /@babel/helper-string-parser@7.24.1: + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} /@babel/helper-validator-identifier@7.22.20: @@ -756,33 +739,34 @@ packages: '@babel/template': 7.24.0 '@babel/types': 7.24.0 - /@babel/helpers@7.24.0: - resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} + /@babel/helpers@7.24.1: + resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 + '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 transitivePeerDependencies: - supports-color - /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + /@babel/highlight@7.24.2: + resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.0.0 - /@babel/parser@7.24.0: - resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + /@babel/parser@7.24.1: + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.24.0 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -790,11 +774,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 @@ -802,13 +786,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.24.0): - resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -816,11 +800,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.0): + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.3): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. @@ -830,13 +814,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.0): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.3): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. @@ -846,12 +830,26 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) + '@babel/helper-plugin-utils': 7.24.0 + + /@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-proposal-decorators@7.24.0(@babel/core@7.24.0): - resolution: {integrity: sha512-LiT1RqZWeij7X+wGxCoYh3/3b8nVOX6/7BZ9wiQgAIyjoeQWdROaodJCgT+dwtbjHaz0r7bEbHJzjSbVfcOyjQ==} + /@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -859,25 +857,25 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-decorators': 7.24.0(@babel/core@7.24.0) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.24.3): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 peerDependenciesMeta: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.0): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.3): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. @@ -887,11 +885,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.0): + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.3): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. @@ -901,11 +899,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.0): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.3): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. @@ -915,14 +913,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.0): + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.3): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. @@ -932,11 +930,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.0): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.3): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. @@ -946,12 +944,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -960,9 +958,9 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.3): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -970,10 +968,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.3): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -981,10 +979,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.0): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -993,11 +991,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-decorators@7.24.0(@babel/core@7.24.0): - resolution: {integrity: sha512-MXW3pQCu9gUiVGzqkGqsgiINDVYXoAnrY8FYF/rmb+OfufNF0zHMpHPN4ulRrinxYT8Vk/aZJxYqOKsDECjKAw==} + /@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1005,10 +1003,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.0): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1016,11 +1014,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} + /@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1028,10 +1026,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.0): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1039,11 +1037,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1051,11 +1049,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1063,11 +1061,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1075,10 +1073,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1086,10 +1084,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1097,11 +1095,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1109,10 +1107,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1120,10 +1118,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1131,10 +1129,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.3): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1142,10 +1140,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1153,10 +1151,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1164,10 +1162,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.3): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1175,10 +1173,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.0): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1187,10 +1185,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.3): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1199,11 +1197,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1211,10 +1209,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.0): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.3): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1223,12 +1221,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1236,11 +1234,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.24.0): - resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1248,14 +1246,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1263,13 +1261,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.22.15 + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.0) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1277,11 +1275,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1289,11 +1287,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1301,12 +1299,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 @@ -1314,13 +1312,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) - /@babel/plugin-transform-classes@7.23.8(@babel/core@7.24.0): - resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1328,18 +1326,18 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1347,12 +1345,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1360,11 +1358,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1372,12 +1370,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1385,11 +1383,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1397,12 +1395,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1410,12 +1408,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1423,12 +1421,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} + /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1436,12 +1434,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.24.0): - resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1449,12 +1447,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1462,13 +1460,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1476,12 +1474,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1489,11 +1487,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1501,12 +1499,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1514,11 +1512,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1526,12 +1524,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1539,13 +1537,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 - /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.24.0): - resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1553,14 +1551,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1568,11 +1566,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.0): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.3): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1581,12 +1579,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1594,11 +1592,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1606,12 +1604,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1619,12 +1617,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) - /@babel/plugin-transform-object-rest-spread@7.24.0(@babel/core@7.24.0): - resolution: {integrity: sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==} + /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1632,15 +1630,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1648,12 +1645,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1661,12 +1658,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1674,13 +1671,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1688,11 +1685,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1700,12 +1697,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.24.0): - resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1713,14 +1710,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1728,11 +1725,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} + /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1740,10 +1737,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.0): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.3): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1752,11 +1749,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1764,11 +1761,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1776,10 +1773,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.0): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.3): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1788,15 +1785,15 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) '@babel/types': 7.24.0 - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} + /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1804,12 +1801,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1817,12 +1814,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1830,11 +1827,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-runtime@7.24.0(@babel/core@7.24.0): - resolution: {integrity: sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==} + /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1842,18 +1839,18 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-imports': 7.22.15 + '@babel/core': 7.24.3 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.0) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1861,11 +1858,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1873,12 +1870,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1886,11 +1883,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1898,11 +1895,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1910,11 +1907,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.24.0): - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1922,14 +1919,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.3) - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1937,11 +1934,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1949,12 +1946,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1962,12 +1959,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1975,12 +1972,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/preset-env@7.24.0(@babel/core@7.24.0): - resolution: {integrity: sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==} + /@babel/preset-env@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1988,92 +1985,92 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.3 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.24.0) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.0) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.24.0) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.0) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.24.0) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.24.0) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-object-rest-spread': 7.24.0(@babel/core@7.24.0) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.24.0) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.0) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.0) - babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.24.0) - babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.0) - core-js-compat: 3.36.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.3) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.3) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typeof-symbol': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.3) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) + babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) + babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) + core-js-compat: 3.36.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/preset-flow@7.24.0(@babel/core@7.24.0): - resolution: {integrity: sha512-cum/nSi82cDaSJ21I4PgLTVlj0OXovFk6GRguJYe/IKg6y6JHLTbJhybtX4k35WT9wdeJfEVjycTixMhBHd0Dg==} + /@babel/preset-flow@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2081,12 +2078,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.3) - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.0): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.3): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 @@ -2094,13 +2091,13 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/types': 7.24.0 esutils: 2.0.3 - /@babel/preset-react@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} + /@babel/preset-react@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2108,16 +2105,16 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.3) - /@babel/preset-typescript@7.23.3(@babel/core@7.24.0): - resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + /@babel/preset-typescript@7.24.1(@babel/core@7.24.3): + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2125,14 +2122,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) - /@babel/register@7.23.7(@babel/core@7.24.0): + /@babel/register@7.23.7(@babel/core@7.24.3): resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -2141,7 +2138,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -2151,8 +2148,8 @@ packages: /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/runtime@7.24.0: - resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==} + /@babel/runtime@7.24.1: + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 @@ -2161,21 +2158,21 @@ packages: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.24.0 + '@babel/code-frame': 7.24.2 + '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - /@babel/traverse@7.24.0: - resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} + /@babel/traverse@7.24.1: + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 + '@babel/code-frame': 7.24.2 + '@babel/generator': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.24.0 + '@babel/parser': 7.24.1 '@babel/types': 7.24.0 debug: 4.3.4 globals: 11.12.0 @@ -2186,7 +2183,7 @@ packages: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.23.4 + '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 @@ -2197,7 +2194,7 @@ packages: /@changesets/apply-release-plan@7.0.0: resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/config': 3.0.0 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.0 @@ -2215,7 +2212,7 @@ packages: /@changesets/assemble-release-plan@6.0.0: resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.0.0 '@changesets/types': 6.0.0 @@ -2233,7 +2230,7 @@ packages: resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} hasBin: true dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/apply-release-plan': 7.0.0 '@changesets/assemble-release-plan': 6.0.0 '@changesets/changelog-git': 0.2.0 @@ -2298,7 +2295,7 @@ packages: /@changesets/get-release-plan@4.0.0: resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/assemble-release-plan': 6.0.0 '@changesets/config': 3.0.0 '@changesets/pre': 2.0.0 @@ -2314,7 +2311,7 @@ packages: /@changesets/git@3.0.0: resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -2339,7 +2336,7 @@ packages: /@changesets/pre@2.0.0: resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/errors': 0.2.0 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -2349,7 +2346,7 @@ packages: /@changesets/read@0.6.0: resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/parse': 0.4.0 @@ -2370,7 +2367,7 @@ packages: /@changesets/write@0.3.0: resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 @@ -2384,13 +2381,13 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@effect/schema@0.64.5(effect@2.4.7)(fast-check@3.16.0): - resolution: {integrity: sha512-yYhwdYkGyj4GEepuo7kNvhtYqi3UxdbFR3A+W3/Ln9cKQa0WGJP8v6jKuSBpAJKz8aFuFVsJ6wRtrx1pgjE0OQ==} + /@effect/schema@0.64.9(effect@2.4.9)(fast-check@3.16.0): + resolution: {integrity: sha512-Vpb5evW3FLHdzVk1uFOi/b2GtqoJWOgfzWMY1jnJg2VTO7N9zdvtmsDeW56t3kea3CJBNmkEnb8TrbEkCsO7nw==} peerDependencies: - effect: ^2.4.7 + effect: ^2.4.9 fast-check: ^3.13.2 dependencies: - effect: 2.4.7 + effect: 2.4.9 fast-check: 3.16.0 /@es-joy/jsdoccomment@0.42.0: @@ -2402,8 +2399,8 @@ packages: jsdoc-type-pratt-parser: 4.0.0 dev: false - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -2411,8 +2408,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2420,8 +2417,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2429,8 +2426,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2438,8 +2435,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2447,8 +2444,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2456,8 +2453,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2465,8 +2462,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2474,8 +2471,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2483,8 +2480,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2492,8 +2489,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2501,8 +2498,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2510,8 +2507,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2519,8 +2516,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2528,8 +2525,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2537,8 +2534,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2546,8 +2543,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2555,8 +2552,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2564,8 +2561,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2573,8 +2570,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2582,8 +2579,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2591,8 +2588,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2600,8 +2597,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -2651,11 +2648,11 @@ packages: mv: 2.1.1 safe-json-stringify: 1.2.0 - /@expo/cli@0.17.8(@react-native/babel-preset@0.73.21)(expo-modules-autolinking@1.10.3): + /@expo/cli@0.17.8(@react-native/babel-preset@0.75.0-main)(expo-modules-autolinking@1.10.3): resolution: {integrity: sha512-yfkoghCltbGPDbRI71Qu3puInjXx4wO82+uhW82qbWLvosfIN7ep5Gr0Lq54liJpvlUG6M0IXM1GiGqcCyP12w==} hasBin: true dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@expo/code-signing-certificates': 0.0.5 '@expo/config': 8.5.4 '@expo/config-plugins': 7.8.4 @@ -2663,7 +2660,7 @@ packages: '@expo/env': 0.2.2 '@expo/image-utils': 0.4.1 '@expo/json-file': 8.3.0 - '@expo/metro-config': 0.17.6(@react-native/babel-preset@0.73.21) + '@expo/metro-config': 0.17.6(@react-native/babel-preset@0.75.0-main) '@expo/osascript': 2.1.0 '@expo/package-manager': 1.4.2 '@expo/plist': 0.1.0 @@ -2856,21 +2853,21 @@ packages: json5: 2.2.3 write-file-atomic: 2.4.3 - /@expo/metro-config@0.17.6(@react-native/babel-preset@0.73.21): + /@expo/metro-config@0.17.6(@react-native/babel-preset@0.75.0-main): resolution: {integrity: sha512-WaC1C+sLX/Wa7irwUigLhng3ckmXIEQefZczB8DfYmleV6uhfWWo2kz/HijFBpV7FKs2cW6u8J/aBQpFkxlcqg==} peerDependencies: '@react-native/babel-preset': '*' dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.0 + '@babel/core': 7.24.3 + '@babel/generator': 7.24.1 + '@babel/parser': 7.24.1 '@babel/types': 7.24.0 '@expo/config': 8.5.4 '@expo/env': 0.2.2 '@expo/json-file': 8.3.0 '@expo/spawn-async': 1.7.2 - '@react-native/babel-preset': 0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0) - babel-preset-fbjs: 3.4.0(@babel/core@7.24.0) + '@react-native/babel-preset': 0.75.0-main(@babel/core@7.24.3) + babel-preset-fbjs: 3.4.0(@babel/core@7.24.3) chalk: 4.1.2 debug: 4.3.4 find-yarn-workspace-root: 2.0.0 @@ -2879,7 +2876,7 @@ packages: glob: 7.2.3 jsc-safe-url: 0.2.4 lightningcss: 1.19.0 - postcss: 8.4.35 + postcss: 8.4.37 resolve-from: 5.0.0 sucrase: 3.34.0 transitivePeerDependencies: @@ -3013,7 +3010,7 @@ packages: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 dependencies: - '@tanstack/react-virtual': 3.1.3(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-virtual': 3.2.0(react-dom@18.2.0)(react@18.2.0) client-only: 0.0.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3063,7 +3060,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.28 + '@types/node': 20.11.30 jest-mock: 29.7.0 /@jest/fake-timers@29.7.0: @@ -3072,7 +3069,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.11.28 + '@types/node': 20.11.30 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3089,7 +3086,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.28 + '@types/node': 20.11.30 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -3100,7 +3097,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.28 + '@types/node': 20.11.30 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -3145,7 +3142,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -3154,7 +3151,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -3192,7 +3189,7 @@ packages: react: '>=16' dependencies: '@types/mdx': 2.0.11 - '@types/react': 18.2.66 + '@types/react': 18.2.67 react: 18.2.0 dev: false @@ -3312,18 +3309,18 @@ packages: '@napi-rs/simple-git-win32-x64-msvc': 0.1.16 dev: false - /@next/env@14.1.3: - resolution: {integrity: sha512-VhgXTvrgeBRxNPjyfBsDIMvgsKDxjlpw4IAUsHCX8Gjl1vtHUYRT3+xfQ/wwvLPDd/6kqfLqk9Pt4+7gysuCKQ==} + /@next/env@14.1.4: + resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} dev: false - /@next/eslint-plugin-next@14.1.3: - resolution: {integrity: sha512-VCnZI2cy77Yaj3L7Uhs3+44ikMM1VD/fBMwvTBb3hIaTIuqa+DmG4dhUDq+MASu3yx97KhgsVJbsas0XuiKyww==} + /@next/eslint-plugin-next@14.1.4: + resolution: {integrity: sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==} dependencies: glob: 10.3.10 dev: false - /@next/swc-darwin-arm64@14.1.3: - resolution: {integrity: sha512-LALu0yIBPRiG9ANrD5ncB3pjpO0Gli9ZLhxdOu6ZUNf3x1r3ea1rd9Q+4xxUkGrUXLqKVK9/lDkpYIJaCJ6AHQ==} + /@next/swc-darwin-arm64@14.1.4: + resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3331,8 +3328,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.3: - resolution: {integrity: sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg==} + /@next/swc-darwin-x64@14.1.4: + resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3340,8 +3337,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.3: - resolution: {integrity: sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw==} + /@next/swc-linux-arm64-gnu@14.1.4: + resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3349,8 +3346,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.3: - resolution: {integrity: sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw==} + /@next/swc-linux-arm64-musl@14.1.4: + resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3358,8 +3355,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.3: - resolution: {integrity: sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg==} + /@next/swc-linux-x64-gnu@14.1.4: + resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3367,8 +3364,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.3: - resolution: {integrity: sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ==} + /@next/swc-linux-x64-musl@14.1.4: + resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3376,8 +3373,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.3: - resolution: {integrity: sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA==} + /@next/swc-win32-arm64-msvc@14.1.4: + resolution: {integrity: sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3385,8 +3382,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.3: - resolution: {integrity: sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw==} + /@next/swc-win32-ia32-msvc@14.1.4: + resolution: {integrity: sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -3394,8 +3391,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.3: - resolution: {integrity: sha512-uC2DaDoWH7h1P/aJ4Fok3Xiw6P0Lo4ez7NbowW2VGNXw/Xv6tOuLUcxhBYZxsSUJtpeknCi8/fvnSpyCFp4Rcg==} + /@next/swc-win32-x64-msvc@14.1.4: + resolution: {integrity: sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3646,38 +3643,47 @@ packages: - supports-color - utf-8-validate - /@react-native-community/netinfo@11.1.0(react-native@0.73.5): + /@react-native-community/netinfo@11.1.0(react-native@0.73.6): resolution: {integrity: sha512-pIbCuqgrY7SkngAcjUs9fMzNh1h4soQMVw1IeGp1HN5//wox3fUVOuvyIubTscUbdLFKiltJAiuQek7Nhx1bqA==} peerDependencies: react-native: '>=0.59' dependencies: - react-native: 0.73.5(@babel/core@7.24.0)(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.3)(react@18.2.0) dev: false - /@react-native-picker/picker@2.6.1(react-native@0.73.5)(react@18.2.0): + /@react-native-picker/picker@2.6.1(react-native@0.73.6)(react@18.2.0): resolution: {integrity: sha512-oJftvmLOj6Y6/bF4kPcK6L83yNBALGmqNYugf94BzP0FQGpHBwimVN2ygqkQ2Sn2ZU3pGUZMs0jV6+Gku2GyYg==} peerDependencies: react: '>=16' react-native: '>=0.57' dependencies: react: 18.2.0 - react-native: 0.73.5(@babel/core@7.24.0)(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.3)(react@18.2.0) dev: false /@react-native/assets-registry@0.73.1: resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} engines: {node: '>=18'} - /@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.24.0): + /@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.24.3): resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} engines: {node: '>=18'} dependencies: - '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.0) + '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.3) transitivePeerDependencies: - '@babel/preset-env' - supports-color - /@react-native/babel-preset@0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0): + /@react-native/babel-plugin-codegen@0.75.0-main: + resolution: {integrity: sha512-gEl+bl+orntqNA3yGETGeHLNzDnZuQfO074BreX/l80WnZbx00/BJ57IkZ372j6I+gjki+3dYeRQOp82m/sUWQ==} + engines: {node: '>=18'} + dependencies: + '@react-native/codegen': 0.75.0-main + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + /@react-native/babel-preset@0.73.21(@babel/core@7.24.3)(@babel/preset-env@7.24.3): resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} engines: {node: '>=18'} peerDependencies: @@ -3686,53 +3692,109 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.0) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.0) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.0) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-runtime': 7.24.0(@babel/core@7.24.0) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.24.0) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.3) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.3) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) + '@babel/template': 7.24.0 + '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.24.3) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.3) + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + + /@react-native/babel-preset@0.75.0-main(@babel/core@7.24.3): + resolution: {integrity: sha512-yTyft0jSbTEfTfDUUfllJqKWLl3rNMiVMFjuWzMigikKAlSwKKUC/DxTEUfMwekFU05TjDyEOtigOTrm2yuoRQ==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.24.3 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.3) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.24.3) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.3) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.3) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.3) '@babel/template': 7.24.0 - '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.24.0) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.0) + '@react-native/babel-plugin-codegen': 0.75.0-main + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.3) react-refresh: 0.14.0 transitivePeerDependencies: - '@babel/preset-env' - supports-color - /@react-native/codegen@0.73.3(@babel/preset-env@7.24.0): + /@react-native/codegen@0.73.3(@babel/preset-env@7.24.3): resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} engines: {node: '>=18'} peerDependencies: @@ -3741,30 +3803,49 @@ packages: '@babel/preset-env': optional: true dependencies: - '@babel/parser': 7.24.0 - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) + '@babel/parser': 7.24.1 + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) flow-parser: 0.206.0 glob: 7.2.3 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.0) + jscodeshift: 0.14.0(@babel/preset-env@7.24.3) + mkdirp: 0.5.6 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /@react-native/codegen@0.75.0-main: + resolution: {integrity: sha512-vcIu7x7o/3xn9UQdOPqA6B/jtxDHB+xTIDlVe7nym+0ua/OIOwYoVscTb0NtHuEjGKO1G5CTWNhl34BFhIs0+g==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + peerDependenciesMeta: + '@babel/preset-env': + optional: true + dependencies: + '@babel/parser': 7.24.1 + glob: 7.2.3 + hermes-parser: 0.20.1 + invariant: 2.2.4 + jscodeshift: 0.14.0(@babel/preset-env@7.24.3) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /@react-native/community-cli-plugin@0.73.17(@babel/core@7.24.0): + /@react-native/community-cli-plugin@0.73.17(@babel/core@7.24.3): resolution: {integrity: sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ==} engines: {node: '>=18'} dependencies: '@react-native-community/cli-server-api': 12.3.6 '@react-native-community/cli-tools': 12.3.6 '@react-native/dev-middleware': 0.73.8 - '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.24.0) + '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.24.3) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.6 - metro-config: 0.80.6 - metro-core: 0.80.6 + metro: 0.80.7 + metro-config: 0.80.7 + metro-core: 0.80.7 node-fetch: 2.7.0 readline: 1.3.0 transitivePeerDependencies: @@ -3808,7 +3889,7 @@ packages: resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} engines: {node: '>=18'} - /@react-native/metro-babel-transformer@0.73.15(@babel/core@7.24.0): + /@react-native/metro-babel-transformer@0.73.15(@babel/core@7.24.3): resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} engines: {node: '>=18'} peerDependencies: @@ -3817,8 +3898,8 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@react-native/babel-preset': 0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0) + '@babel/core': 7.24.3 + '@react-native/babel-preset': 0.73.21(@babel/core@7.24.3)(@babel/preset-env@7.24.3) hermes-parser: 0.15.0 nullthrows: 1.1.1 transitivePeerDependencies: @@ -3831,7 +3912,7 @@ packages: /@react-native/normalize-colors@0.73.2: resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} - /@react-native/virtualized-lists@0.73.4(react-native@0.73.5): + /@react-native/virtualized-lists@0.73.4(react-native@0.73.6): resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} engines: {node: '>=18'} peerDependencies: @@ -3839,7 +3920,7 @@ packages: dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.73.5(@babel/core@7.24.0)(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.3)(react@18.2.0) /@rollup/rollup-android-arm-eabi@4.13.0: resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} @@ -3945,19 +4026,19 @@ packages: dev: true optional: true - /@rushstack/eslint-patch@1.7.2: - resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} + /@rushstack/eslint-patch@1.8.0: + resolution: {integrity: sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ==} dev: false - /@scure/base@1.1.5: - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} + /@scure/base@1.1.6: + resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} dev: false /@scure/bip39@1.2.2: resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} dependencies: '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@scure/base': 1.1.6 dev: false /@segment/loosely-validate-event@2.0.0: @@ -4001,19 +4082,19 @@ packages: tslib: 2.6.2 dev: false - /@tanstack/react-virtual@3.1.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-YCzcbF/Ws/uZ0q3Z6fagH+JVhx4JLvbSflgldMgLsuvB8aXjZLLb3HvrEVxY480F9wFlBiXlvQxOyXb5ENPrNA==} + /@tanstack/react-virtual@3.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OEdMByf2hEfDa6XDbGlZN8qO6bTjlNKqjM3im9JG+u3mCL8jALy0T/67oDI001raUUPh1Bdmfn4ZvPOV5knpcg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@tanstack/virtual-core': 3.1.3 + '@tanstack/virtual-core': 3.2.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@tanstack/virtual-core@3.1.3: - resolution: {integrity: sha512-Y5B4EYyv1j9V8LzeAoOVeTg0LI7Fo5InYKgAjkY1Pu9GjtUwX/EKxNcU7ng3sKr99WEf+bPTcktAeybyMOYo+g==} + /@tanstack/virtual-core@3.2.0: + resolution: {integrity: sha512-P5XgYoAw/vfW65byBbJQCw+cagdXDT/qH6wmABiLt4v4YBT2q2vqCOhihe+D1Nt325F/S/0Tkv6C5z0Lv+VBQQ==} dev: false /@theguild/remark-mermaid@0.0.5(react@18.2.0): @@ -4060,26 +4141,26 @@ packages: /@types/better-sqlite3@7.6.9: resolution: {integrity: sha512-FvktcujPDj9XKMJQWFcl2vVl7OdRIqsSRX9b0acWwTmwLK9CF2eqo/FRcmMLNpugKoX/avA6pb7TorDLmpgTnQ==} dependencies: - '@types/node': 20.11.28 + '@types/node': 20.11.30 dev: true /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.28 + '@types/node': 20.11.30 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.28 + '@types/node': 20.11.30 dev: true /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 20.11.28 + '@types/node': 20.11.30 dev: true /@types/d3-scale-chromatic@3.0.3: @@ -4113,8 +4194,8 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.11.28 - '@types/qs': 6.9.12 + '@types/node': 20.11.30 + '@types/qs': 6.9.14 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 dev: true @@ -4124,7 +4205,7 @@ packages: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.12 + '@types/qs': 6.9.14 '@types/serve-static': 1.15.5 dev: true @@ -4207,8 +4288,8 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@20.11.28: - resolution: {integrity: sha512-M/GPWVS2wLkSkNHVeLkrF2fD5Lx5UC4PxA0uZcKc6QqbIQUJyW1jVjueJYi1z8n0I5PxYrtpnPnWglE+y9A0KA==} + /@types/node@20.11.30: + resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} dependencies: undici-types: 5.26.5 @@ -4219,8 +4300,8 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - /@types/qs@6.9.12: - resolution: {integrity: sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==} + /@types/qs@6.9.14: + resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} dev: true /@types/range-parser@1.2.7: @@ -4230,11 +4311,11 @@ packages: /@types/react-dom@18.2.22: resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} dependencies: - '@types/react': 18.2.66 + '@types/react': 18.2.67 dev: true - /@types/react@18.2.66: - resolution: {integrity: sha512-OYTmMI4UigXeFMF/j4uv0lBBEbongSgptPrHBxqME44h9+yNov+oL6Z3ocJKo0WyXR84sQUNeyIp9MRfckvZpg==} + /@types/react@18.2.67: + resolution: {integrity: sha512-vkIE2vTIMHQ/xL0rgmuoECBCkZFZeHr49HeWSc24AptMbNRo7pwSBvj73rlJJs9fGKj0koS+V7kQB1jHS0uCgw==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -4250,7 +4331,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.28 + '@types/node': 20.11.30 dev: true /@types/serve-static@1.15.5: @@ -4258,7 +4339,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.11.28 + '@types/node': 20.11.30 dev: true /@types/stack-utils@2.0.3: @@ -4288,9 +4369,9 @@ packages: dependencies: '@types/yargs-parser': 21.0.3 - /@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.3.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0)(typescript@5.4.3): + resolution: {integrity: sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 eslint: ^8.56.0 @@ -4300,24 +4381,24 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/type-utils': 7.2.0(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/scope-manager': 7.3.1 + '@typescript-eslint/type-utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.3.1 debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2): + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.3): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4329,18 +4410,18 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3) '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.2 + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.3.1(eslint@8.57.0)(typescript@5.4.3): + resolution: {integrity: sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -4348,13 +4429,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.2) - '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/scope-manager': 7.3.1 + '@typescript-eslint/types': 7.3.1 + '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3) + '@typescript-eslint/visitor-keys': 7.3.1 debug: 4.3.4 eslint: 8.57.0 - typescript: 5.4.2 + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: false @@ -4367,17 +4448,17 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: false - /@typescript-eslint/scope-manager@7.2.0: - resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.3.1: + resolution: {integrity: sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/types': 7.3.1 + '@typescript-eslint/visitor-keys': 7.3.1 dev: false - /@typescript-eslint/type-utils@7.2.0(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.3.1(eslint@8.57.0)(typescript@5.4.3): + resolution: {integrity: sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 typescript: '*' @@ -4385,12 +4466,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.2) - '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3) + '@typescript-eslint/utils': 7.3.1(eslint@8.57.0)(typescript@5.4.3) debug: 4.3.4 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: false @@ -4400,12 +4481,12 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: false - /@typescript-eslint/types@7.2.0: - resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.3.1: + resolution: {integrity: sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==} + engines: {node: ^18.18.0 || >=20.0.0} dev: false - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.2): + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.3): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -4421,46 +4502,46 @@ packages: is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/typescript-estree@7.2.0(typescript@5.4.2): - resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.3.1(typescript@5.4.3): + resolution: {integrity: sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/visitor-keys': 7.2.0 + '@typescript-eslint/types': 7.3.1 + '@typescript-eslint/visitor-keys': 7.3.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.4.3) + typescript: 5.4.3 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils@7.2.0(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.3.1(eslint@8.57.0)(typescript@5.4.3): + resolution: {integrity: sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.2.0 - '@typescript-eslint/types': 7.2.0 - '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.2) + '@typescript-eslint/scope-manager': 7.3.1 + '@typescript-eslint/types': 7.3.1 + '@typescript-eslint/typescript-estree': 7.3.1(typescript@5.4.3) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -4476,11 +4557,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: false - /@typescript-eslint/visitor-keys@7.2.0: - resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.3.1: + resolution: {integrity: sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/types': 7.3.1 eslint-visitor-keys: 3.4.3 dev: false @@ -4730,13 +4811,14 @@ packages: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: false - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 dev: false @@ -4750,36 +4832,27 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array.prototype.filter@1.0.3: - resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: false - - /array.prototype.findlast@1.2.4: - resolution: {integrity: sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 dev: false - /array.prototype.findlastindex@1.2.4: - resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 dev: false @@ -4828,7 +4901,7 @@ packages: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -4883,7 +4956,7 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - /autoprefixer@10.4.18(postcss@8.4.35): + /autoprefixer@10.4.18(postcss@8.4.37): resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -4891,11 +4964,11 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001597 + caniuse-lite: 1.0.30001599 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.35 + postcss: 8.4.37 postcss-value-parser: 4.2.0 dev: true @@ -4916,7 +4989,7 @@ packages: dequal: 2.0.3 dev: false - /babel-core@7.0.0-bridge.0(@babel/core@7.24.0): + /babel-core@7.0.0-bridge.0(@babel/core@7.24.3): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -4924,7 +4997,7 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.24.3 /babel-plugin-module-resolver@5.0.0: resolution: {integrity: sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q==} @@ -4937,7 +5010,7 @@ packages: resolve: 1.22.8 dev: false - /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.0): + /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.3): resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 @@ -4945,37 +5018,37 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.0) + '@babel/compat-data': 7.24.1 + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.24.0): - resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.3): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 peerDependenciesMeta: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) - core-js-compat: 3.36.0 + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) + core-js-compat: 3.36.1 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.24.0): - resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.3): + resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 peerDependenciesMeta: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3) transitivePeerDependencies: - supports-color @@ -4985,30 +5058,30 @@ packages: /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.0): + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.3): resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.3) transitivePeerDependencies: - '@babel/core' - /babel-preset-expo@10.0.1(@babel/core@7.24.0): + /babel-preset-expo@10.0.1(@babel/core@7.24.3): resolution: {integrity: sha512-uWIGmLfbP3dS5+8nesxaW6mQs41d4iP7X82ZwRdisB/wAhKQmuJM9Y1jQe4006uNYkw6Phf2TT03ykLVro7KuQ==} dependencies: - '@babel/plugin-proposal-decorators': 7.24.0(@babel/core@7.24.0) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-object-rest-spread': 7.24.0(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/preset-react': 7.23.3(@babel/core@7.24.0) - '@react-native/babel-preset': 0.73.21(@babel/core@7.24.0)(@babel/preset-env@7.24.0) + '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-rest-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) + '@babel/preset-react': 7.24.1(@babel/core@7.24.3) + '@react-native/babel-preset': 0.73.21(@babel/core@7.24.3)(@babel/preset-env@7.24.3) babel-plugin-react-native-web: 0.18.12 react-refresh: 0.14.0 transitivePeerDependencies: - '@babel/core' - supports-color - /babel-preset-fbjs@3.4.0(@babel/core@7.24.0): + /babel-preset-fbjs@3.4.0(@babel/core@7.24.3): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 @@ -5016,33 +5089,33 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.0) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.24.0) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.3) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.3) + '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.3) + '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.3) + '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.3) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 /bail@2.0.2: @@ -5233,8 +5306,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001597 - electron-to-chromium: 1.4.708 + caniuse-lite: 1.0.30001599 + electron-to-chromium: 1.4.712 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -5381,8 +5454,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite@1.0.30001597: - resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} + /caniuse-lite@1.0.30001599: + resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5481,7 +5554,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 20.11.28 + '@types/node': 20.11.30 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -5491,7 +5564,7 @@ packages: /chromium-edge-launcher@1.0.0: resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} dependencies: - '@types/node': 20.11.28 + '@types/node': 20.11.30 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -5702,13 +5775,13 @@ packages: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: false - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} dev: false - /core-js-compat@3.36.0: - resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} + /core-js-compat@3.36.1: + resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} dependencies: browserslist: 4.23.0 @@ -6169,7 +6242,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: false /data-view-byte-length@1.0.1: resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} @@ -6178,7 +6250,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: false /data-view-byte-offset@1.0.0: resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} @@ -6187,7 +6258,6 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: false /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} @@ -6360,8 +6430,8 @@ packages: engines: {node: '>=0.10'} hasBin: true - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} dev: false @@ -6420,8 +6490,8 @@ packages: dependencies: esutils: 2.0.3 - /dompurify@3.0.9: - resolution: {integrity: sha512-uyb4NDIvQ3hRn6NiC+SIFaP4mJ/MdXlvtunaqK9Bn6dD3RuB/1S/gasEjDHD8eiaqdSael2vBv+hOs7Y+jhYOQ==} + /dompurify@3.0.10: + resolution: {integrity: sha512-WZDL8ZHTliEVP3Lk4phtvjg8SNQ3YMc5WVstxE8cszKZrFjzI4PF4ZTIk9VGAc9vZADO7uGO2V/ZiStcRSAT4Q==} dev: false /dotenv-expand@10.0.0: @@ -6438,11 +6508,11 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /effect@2.4.7: - resolution: {integrity: sha512-4YOPi4r7nLFJAK1W/l7FM3fptZBtrJkqa5Rh2u7gkFCECn+RiwuQ8KYPm8sf4RFIp+fSQXGA87GIDtyxrz0mbA==} + /effect@2.4.9: + resolution: {integrity: sha512-hRTy37jVylIYOC4k/VKfgmGkIMEOjR8MOurLzr1J0AD7ufagbcoO7voygZkT2B1STXfBXEsKNWj8yDAzUcPpAA==} - /electron-to-chromium@1.4.708: - resolution: {integrity: sha512-iWgEEvREL4GTXXHKohhh33+6Y8XkPI5eHihDmm8zUk5Zo7HICEW+wI/j5kJ2tbuNUCXJ/sNXa03ajW635DiJXA==} + /electron-to-chromium@1.4.712: + resolution: {integrity: sha512-ncfPC8UnGIyGFrPE03J5Xn6yTZ6R+clkcZbuG1PJbjAaZBFS4Kn3UKfzu8eilzru6SfC8TPsHuwv0p0eYVu+ww==} /elkjs@0.9.2: resolution: {integrity: sha512-2Y/RaA1pdgSHpY0YG4TYuYCD2wh97CRvu22eLG3Kz0pgQ/6KbIFTxsTnDc4MH/6hFlg2L/9qXrDMG0nMjP63iw==} @@ -6565,8 +6635,8 @@ packages: regexp.prototype.flags: 1.5.2 safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 @@ -6575,8 +6645,8 @@ packages: unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - /es-abstract@1.23.0: - resolution: {integrity: sha512-vmuE7Uoevk2xkwu5Gwa7RfJk/ebVV6xRv7KuZNbUglmJHhWPMbLL20ztreVpBbdxBZijETx3Aml3NssX4SFMvQ==} + /es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 @@ -6588,6 +6658,7 @@ packages: data-view-byte-offset: 1.0.0 es-define-property: 1.0.0 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 @@ -6615,8 +6686,8 @@ packages: regexp.prototype.flags: 1.5.2 safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 string.prototype.trimstart: 1.0.7 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 @@ -6624,11 +6695,6 @@ packages: typed-array-length: 1.0.5 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: false - - /es-array-method-boxes-properly@1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: false /es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} @@ -6646,7 +6712,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.0 + es-abstract: 1.23.2 es-errors: 1.3.0 es-set-tostringtag: 2.0.3 function-bind: 1.1.2 @@ -6660,6 +6726,12 @@ packages: safe-array-concat: 1.1.2 dev: false + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + /es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} @@ -6681,35 +6753,35 @@ packages: is-date-object: 1.0.5 is-symbol: 1.0.4 - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 dev: true /escalade@3.1.2: @@ -6736,8 +6808,8 @@ packages: engines: {node: '>=12'} dev: false - /eslint-config-next@14.1.3(eslint@8.57.0)(typescript@5.4.2): - resolution: {integrity: sha512-sUCpWlGuHpEhI0pIT0UtdSLJk5Z8E2DYinPTwsBiWaSYQomchdl0i60pjynY48+oXvtyWMQ7oE+G3m49yrfacg==} + /eslint-config-next@14.1.4(eslint@8.57.0)(typescript@5.4.3): + resolution: {integrity: sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -6745,17 +6817,17 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 14.1.3 - '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) + '@next/eslint-plugin-next': 14.1.4 + '@rushstack/eslint-patch': 1.8.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) - typescript: 5.4.2 + typescript: 5.4.3 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color @@ -6800,7 +6872,7 @@ packages: enhanced-resolve: 5.16.0 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 is-core-module: 2.13.1 @@ -6833,7 +6905,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -6842,7 +6914,7 @@ packages: - supports-color dev: false - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.3.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -6863,7 +6935,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -6882,7 +6954,7 @@ packages: regexpp: 3.2.0 dev: false - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -6892,23 +6964,23 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.2) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 + '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.3.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 transitivePeerDependencies: @@ -6943,9 +7015,9 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 aria-query: 5.3.0 - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 axe-core: 4.7.0 @@ -6958,8 +7030,8 @@ packages: jsx-ast-utils: 3.3.5 language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 dev: false /eslint-plugin-node@11.1.0(eslint@8.57.0): @@ -6992,8 +7064,8 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 - array.prototype.findlast: 1.2.4 + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 array.prototype.toreversed: 1.1.2 array.prototype.tosorted: 1.1.3 @@ -7003,14 +7075,14 @@ packages: estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 object.hasown: 1.1.3 - object.values: 1.1.7 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 dev: false /eslint-plugin-turbo@1.12.5(eslint@8.57.0): @@ -7251,26 +7323,26 @@ packages: engines: {node: '>=6'} dev: false - /expo-asset@9.0.2(expo@50.0.13): + /expo-asset@9.0.2(expo@50.0.14): resolution: {integrity: sha512-PzYKME1MgUOoUvwtdzhAyXkjXOXGiSYqGKG/MsXwWr0Ef5wlBaBm2DCO9V6KYbng5tBPFu6hTjoRNil1tBOSow==} dependencies: '@react-native/assets-registry': 0.73.1 blueimp-md5: 2.19.0 - expo-constants: 15.4.5(expo@50.0.13) - expo-file-system: 16.0.8(expo@50.0.13) + expo-constants: 15.4.5(expo@50.0.14) + expo-file-system: 16.0.8(expo@50.0.14) invariant: 2.2.4 md5-file: 3.2.3 transitivePeerDependencies: - expo - supports-color - /expo-constants@15.4.5(expo@50.0.13): + /expo-constants@15.4.5(expo@50.0.14): resolution: {integrity: sha512-1pVVjwk733hbbIjtQcvUFCme540v4gFemdNlaxM2UXKbfRCOh2hzgKN5joHMOysoXQe736TTUrRj7UaZI5Yyhg==} peerDependencies: expo: '*' dependencies: '@expo/config': 8.5.4 - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) transitivePeerDependencies: - supports-color @@ -7278,39 +7350,39 @@ packages: resolution: {integrity: sha512-SY7rVFxb4ut/OMTgR7A39Jg+8+hXwQNRpZd+RBpB+B5XV2STj/pWXHnGFhBayEF4umI4SxrOvisY90rlPWVO9Q==} dev: false - /expo-file-system@16.0.8(expo@50.0.13): + /expo-file-system@16.0.8(expo@50.0.14): resolution: {integrity: sha512-yDbVT0TUKd7ewQjaY5THum2VRFx2n/biskGhkUmLh3ai21xjIVtaeIzHXyv9ir537eVgt4ReqDNWi7jcXjdUcA==} peerDependencies: expo: '*' dependencies: - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) - /expo-font@11.10.3(expo@50.0.13): + /expo-font@11.10.3(expo@50.0.14): resolution: {integrity: sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ==} peerDependencies: expo: '*' dependencies: - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) fontfaceobserver: 2.3.0 /expo-json-utils@0.12.3: resolution: {integrity: sha512-4pypQdinpNc6XY9wsZk56njvzDh+B/9mISr7FPP3CVk1QGB1nSLh883/BCDSgnsephATZkC5HG+cdE60kCAR6A==} dev: false - /expo-keep-awake@12.8.2(expo@50.0.13): + /expo-keep-awake@12.8.2(expo@50.0.14): resolution: {integrity: sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g==} peerDependencies: expo: '*' dependencies: - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) - /expo-manifests@0.13.2(expo@50.0.13): + /expo-manifests@0.13.2(expo@50.0.14): resolution: {integrity: sha512-l0Sia1WmLULx8V41K8RzGLsFoTe4qqthPRGpHjItsYn8ZB6lRrdTBM9OYp2McIflgqN1HAimUCQMFIwJyH+UmA==} peerDependencies: expo: '*' dependencies: '@expo/config': 8.5.4 - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) expo-json-utils: 0.12.3 transitivePeerDependencies: - supports-color @@ -7334,13 +7406,13 @@ packages: dependencies: invariant: 2.2.4 - /expo-sqlite@13.3.0(expo@50.0.13): - resolution: {integrity: sha512-vezKAT5K+EBZ9X4Gh0kqu2+NmmP+OEFbXnrrofBbomHnr/MZCJGEpV+RVGKlfTujiKxktHg6eCWn1Bu3wTX6YQ==} + /expo-sqlite@13.4.0(expo@50.0.14): + resolution: {integrity: sha512-5f7d2EDM+pgerM33KndtX4gWw2nuVaXY68nnqx7PhkiYeyEmeNfZ29bIFtpBzNb/L5l0/DTtRxuSqftxbknFtw==} peerDependencies: expo: '*' dependencies: '@expo/websql': 1.0.1 - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) /expo-status-bar@1.11.1: resolution: {integrity: sha512-ddQEtCOgYHTLlFUe/yH67dDBIoct5VIULthyT3LRJbEwdpzAgueKsX2FYK02ldh440V87PWKCamh7R9evk1rrg==} @@ -7350,15 +7422,15 @@ packages: resolution: {integrity: sha512-/nGOyeWUXSUy4aIYKJTwQOznRNs0yKqKPAyEE6jtwvOl9qvfDWx9xskNtShioggBhFAssFkV6RBbPn+xZMQtvw==} dev: false - /expo-updates-interface@0.15.3(expo@50.0.13): + /expo-updates-interface@0.15.3(expo@50.0.14): resolution: {integrity: sha512-uLvsbaCmUsXgJqeen8rYH/jPr874ZUCXEvWpKHxrCv5/XATPlYEaDuecbNSGQ+cu78i6MdtB4BHOwZmoH2d47A==} peerDependencies: expo: '*' dependencies: - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) dev: false - /expo-updates@0.24.12(expo@50.0.13): + /expo-updates@0.24.12(expo@50.0.14): resolution: {integrity: sha512-35ZpAMSqHIyVGT5mEptaZJBxytu0mv4PIG28i3BQe+GG4ifQtY94aCOCrUwZe8Myzaf4dNVGEUXWTPo+JPCgcw==} hasBin: true peerDependencies: @@ -7369,11 +7441,11 @@ packages: '@expo/config-plugins': 7.8.4 arg: 4.1.0 chalk: 4.1.2 - expo: 50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21) + expo: 50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main) expo-eas-client: 0.11.2 - expo-manifests: 0.13.2(expo@50.0.13) + expo-manifests: 0.13.2(expo@50.0.14) expo-structured-headers: 3.7.2 - expo-updates-interface: 0.15.3(expo@50.0.13) + expo-updates-interface: 0.15.3(expo@50.0.14) fbemitter: 3.0.0 resolve-from: 5.0.0 transitivePeerDependencies: @@ -7381,21 +7453,21 @@ packages: - supports-color dev: false - /expo@50.0.13(@babel/core@7.24.0)(@react-native/babel-preset@0.73.21): - resolution: {integrity: sha512-p0FYrhUJZe92YOwOXx6GZ/WaxF6YtsLXtWkql9pFIIocYBN6iQ3OMGsbQCRSu0ao8rlxsk7HgQDEWK4D+y9tAg==} + /expo@50.0.14(@babel/core@7.24.3)(@react-native/babel-preset@0.75.0-main): + resolution: {integrity: sha512-yLPdxCMVAbmeEIpzzyAuJ79wvr6ToDDtQmuLDMAgWtjqP8x3CGddXxUe07PpKEQgzwJabdHvCLP5Bv94wMFIjQ==} hasBin: true dependencies: - '@babel/runtime': 7.24.0 - '@expo/cli': 0.17.8(@react-native/babel-preset@0.73.21)(expo-modules-autolinking@1.10.3) + '@babel/runtime': 7.24.1 + '@expo/cli': 0.17.8(@react-native/babel-preset@0.75.0-main)(expo-modules-autolinking@1.10.3) '@expo/config': 8.5.4 '@expo/config-plugins': 7.8.4 - '@expo/metro-config': 0.17.6(@react-native/babel-preset@0.73.21) + '@expo/metro-config': 0.17.6(@react-native/babel-preset@0.75.0-main) '@expo/vector-icons': 14.0.0 - babel-preset-expo: 10.0.1(@babel/core@7.24.0) - expo-asset: 9.0.2(expo@50.0.13) - expo-file-system: 16.0.8(expo@50.0.13) - expo-font: 11.10.3(expo@50.0.13) - expo-keep-awake: 12.8.2(expo@50.0.13) + babel-preset-expo: 10.0.1(@babel/core@7.24.3) + expo-asset: 9.0.2(expo@50.0.14) + expo-file-system: 16.0.8(expo@50.0.14) + expo-font: 11.10.3(expo@50.0.14) + expo-keep-awake: 12.8.2(expo@50.0.14) expo-modules-autolinking: 1.10.3 expo-modules-core: 1.11.12 fbemitter: 3.0.0 @@ -7409,8 +7481,8 @@ packages: - supports-color - utf-8-validate - /express@4.18.3: - resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==} + /express@4.19.0: + resolution: {integrity: sha512-/ERliX0l7UuHEgAy7HU2FRsiz3ScIKNl/iwnoYzHTJC0Sqj3ctWDD3MQ9CbUEfjshvxXImWaeukD0Xo7a2lWLA==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 @@ -7418,7 +7490,7 @@ packages: body-parser: 1.20.2 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.5.0 + cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 @@ -7480,7 +7552,7 @@ packages: resolution: {integrity: sha512-k8GtQHi4pJoRQ1gVDFQno+/FVkowo/ehiz/aCj9O/D7HRWb1sSFzNrw+iPVU8QlWtH+jNwbuN+dDVg3QkS56DQ==} engines: {node: '>=8.0.0'} dependencies: - pure-rand: 6.0.4 + pure-rand: 6.1.0 /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -7770,7 +7842,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 functions-have-names: 1.2.3 /functions-have-names@1.2.3: @@ -8205,18 +8277,18 @@ packages: /hermes-estree@0.15.0: resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} - /hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + /hermes-estree@0.20.1: + resolution: {integrity: sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg==} /hermes-parser@0.15.0: resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} dependencies: hermes-estree: 0.15.0 - /hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + /hermes-parser@0.20.1: + resolution: {integrity: sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA==} dependencies: - hermes-estree: 0.19.1 + hermes-estree: 0.20.1 /hermes-profile-transformer@0.0.6: resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} @@ -8466,7 +8538,6 @@ packages: engines: {node: '>= 0.4'} dependencies: is-typed-array: 1.1.13 - dev: false /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -8730,7 +8801,7 @@ packages: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.5 + reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 dev: false @@ -8749,7 +8820,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.28 + '@types/node': 20.11.30 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8761,7 +8832,7 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -8776,7 +8847,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.28 + '@types/node': 20.11.30 jest-util: 29.7.0 /jest-util@29.7.0: @@ -8784,7 +8855,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.28 + '@types/node': 20.11.30 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -8805,7 +8876,7 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.11.28 + '@types/node': 20.11.30 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -8856,7 +8927,7 @@ packages: /jsc-safe-url@0.2.4: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - /jscodeshift@0.14.0(@babel/preset-env@7.24.0): + /jscodeshift@0.14.0(@babel/preset-env@7.24.3): resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} hasBin: true peerDependencies: @@ -8865,17 +8936,17 @@ packages: '@babel/preset-env': optional: true dependencies: - '@babel/core': 7.24.0 - '@babel/parser': 7.24.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/preset-env': 7.24.0(@babel/core@7.24.0) - '@babel/preset-flow': 7.24.0(@babel/core@7.24.0) - '@babel/preset-typescript': 7.23.3(@babel/core@7.24.0) - '@babel/register': 7.23.7(@babel/core@7.24.0) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.0) + '@babel/core': 7.24.3 + '@babel/parser': 7.24.1 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.3) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.3) + '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) + '@babel/preset-flow': 7.24.1(@babel/core@7.24.3) + '@babel/preset-typescript': 7.24.1(@babel/core@7.24.3) + '@babel/register': 7.23.7(@babel/core@7.24.3) + babel-core: 7.0.0-bridge.0(@babel/core@7.24.3) chalk: 4.1.2 flow-parser: 0.206.0 graceful-fs: 4.2.11 @@ -8962,10 +9033,10 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 dev: false /katex@0.16.9: @@ -9298,7 +9369,7 @@ packages: /match-sorter@6.3.4: resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 remove-accents: 0.5.0 dev: false @@ -9618,7 +9689,7 @@ packages: d3-sankey: 0.12.3 dagre-d3-es: 7.0.10 dayjs: 1.11.10 - dompurify: 3.0.9 + dompurify: 3.0.10 elkjs: 0.9.2 katex: 0.16.9 khroma: 2.1.0 @@ -9638,53 +9709,53 @@ packages: engines: {node: '>= 0.6'} dev: false - /metro-babel-transformer@0.80.6: - resolution: {integrity: sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA==} + /metro-babel-transformer@0.80.7: + resolution: {integrity: sha512-b773yA16DsDQiM4OOzCsr1gwEd+iio9au98o3bj7F/bxVyoz1LuYox06BIdsiLL1o4kV5VtzTu3UXSJ2X0ZGXg==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.24.0 - hermes-parser: 0.19.1 + '@babel/core': 7.24.3 + hermes-parser: 0.20.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-cache-key@0.80.6: - resolution: {integrity: sha512-DFmjQacC8m/S3HpELklLMWkPGP/fZPX3BSgjd0xQvwIvWyFwk8Nn/lfp/uWdEVDtDSIr64/anXU5uWohGwlWXw==} + /metro-cache-key@0.80.7: + resolution: {integrity: sha512-sfCOtooMqmmm2v0a4EsYr5knYJGIArZJ5Y7MAcmsVU2pcqg+JQyPhYr/zqSkXBBipRxXr7aNXul9StKzKjsnbw==} engines: {node: '>=18'} - /metro-cache@0.80.6: - resolution: {integrity: sha512-NP81pHSPkzs+iNlpVkJqijrpcd6lfuDAunYH9/Rn8oLNz0yLfkl8lt+xOdUU4IkFt3oVcTBEFCnzAzv4B8YhyA==} + /metro-cache@0.80.7: + resolution: {integrity: sha512-N6HyLjwDKusqJDaVyP57SVZKP51m1FFVcbIWQXu938W30nCXQEuWOx4e6adKgfEOZpscisWojfrCFN42/A8uug==} engines: {node: '>=18'} dependencies: - metro-core: 0.80.6 + metro-core: 0.80.7 rimraf: 3.0.2 - /metro-config@0.80.6: - resolution: {integrity: sha512-vHYYvJpRTWYbmvqlR7i04xQpZCHJ6yfZ/xIcPdz2ssbdJGGJbiT1Aar9wr8RAhsccSxdJgfE5B1DB8Mo+DnhIg==} + /metro-config@0.80.7: + resolution: {integrity: sha512-kpXCidthS/kFlEoXjWQp+IyCU5ICCOESVgwXEzViSDOv5bPJz2ytIr2lF623e50QzyrpFBSnOPjnyd1JbsVPvQ==} engines: {node: '>=18'} dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 jest-validate: 29.7.0 - metro: 0.80.6 - metro-cache: 0.80.6 - metro-core: 0.80.6 - metro-runtime: 0.80.6 + metro: 0.80.7 + metro-cache: 0.80.7 + metro-core: 0.80.7 + metro-runtime: 0.80.7 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - /metro-core@0.80.6: - resolution: {integrity: sha512-fn4rryTUAwzFJWj7VIPDH4CcW/q7MV4oGobqR6NsuxZoIGYrVpK7pBasumu5YbCqifuErMs5s23BhmrDNeZURw==} + /metro-core@0.80.7: + resolution: {integrity: sha512-bl3D6TtIa2mSdVTbkskMPcJSdoivO0F06u8ip/oS/T6RsbjkMTN3OZBjJXclY9I0FcN14q8I5YQt1oriySY/2Q==} engines: {node: '>=18'} dependencies: lodash.throttle: 4.1.1 - metro-resolver: 0.80.6 + metro-resolver: 0.80.7 - /metro-file-map@0.80.6: - resolution: {integrity: sha512-S3CUqvpXpc+q3q+hCEWvFKhVqgq0VmXdZQDF6u7ue86E2elq1XLnfLOt9JSpwyhpMQRyysjSCnd/Yh6GZMNHoQ==} + /metro-file-map@0.80.7: + resolution: {integrity: sha512-A9IAmFZu/Ch7zJ4LzJChsvhedNOipuIXaOz6N8J44rqVZHI0uIqDKVGCne7lzc97djF1Ti4tH9nP64u4IdhpSg==} engines: {node: '>=18'} dependencies: anymatch: 3.1.3 @@ -9702,44 +9773,44 @@ packages: transitivePeerDependencies: - supports-color - /metro-minify-terser@0.80.6: - resolution: {integrity: sha512-83eZaH2+B+jP92KuodPqXknzwmiboKAuZY4doRfTEEXAG57pNVNN6cqSRJlwDnmaTBKRffxoncBXbYqHQgulgg==} + /metro-minify-terser@0.80.7: + resolution: {integrity: sha512-9/mYV1tMGeoFSTMFr94oigJM2qMXJO3hvlibkaQ21HZjVyrfb54bSYyfIIRvAsjY2RCBRg9r2OrT+YbxnMypig==} engines: {node: '>=18'} dependencies: terser: 5.29.2 - /metro-resolver@0.80.6: - resolution: {integrity: sha512-R7trfglG4zY4X9XyM9cvuffAhQ9W1reWoahr1jdEWa6rOI8PyM0qXjcsb8l+fsOQhdSiVlkKcYAmkyrs1S/zrA==} + /metro-resolver@0.80.7: + resolution: {integrity: sha512-xW7M0TITuKs2rYQqbIQn297+MVWfDuGptPnfZ+RBG9afdN//Zpmg14KFMIYU4r5AH2WS+nxwL57DbZft1MyoHg==} engines: {node: '>=18'} - /metro-runtime@0.80.6: - resolution: {integrity: sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw==} + /metro-runtime@0.80.7: + resolution: {integrity: sha512-gWqzfm9YQw9I08L23hcLmY7XNx48W0c0vLEkVEF5P7ZNIOSfX9CkEv0JvTTJWshRYkbgIqsdtpMAHq13LJJ6iA==} engines: {node: '>=18'} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 - /metro-source-map@0.80.6: - resolution: {integrity: sha512-lqDuSLctWy9Qccu4Zl0YB1PzItpsqcKGb1nK0aDY+lzJ26X65OCib2VzHlj+xj7e4PiIKOfsvDCczCBz4cnxdg==} + /metro-source-map@0.80.7: + resolution: {integrity: sha512-6a1m/51ekkAl+ISNBcKQUXTU+AldbbPUHDE3DDDU17Y0HNoovkQR23DB/uH/SzUHQszYxK1fnwUTSxpzOjx+pw==} engines: {node: '>=18'} dependencies: - '@babel/traverse': 7.24.0 + '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 invariant: 2.2.4 - metro-symbolicate: 0.80.6 + metro-symbolicate: 0.80.7 nullthrows: 1.1.1 - ob1: 0.80.6 + ob1: 0.80.7 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - /metro-symbolicate@0.80.6: - resolution: {integrity: sha512-SGwKeBi+lK7NmM5+EcW6DyRRa9HmGSvH0LJtlT4XoRMbpxzsLYs0qUEA+olD96pOIP+ta7I8S30nQr2ttqgO8A==} + /metro-symbolicate@0.80.7: + resolution: {integrity: sha512-WrBR5FQhVf/Y2N3zBS5TvNdwYzcQTLdJj9kcn0MIt+DpdgfLuUDjHXYaq4G9fZubofInx2dUcqr4WCn6fkIxuA==} engines: {node: '>=18'} hasBin: true dependencies: invariant: 2.2.4 - metro-source-map: 0.80.6 + metro-source-map: 0.80.7 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -9747,33 +9818,33 @@ packages: transitivePeerDependencies: - supports-color - /metro-transform-plugins@0.80.6: - resolution: {integrity: sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg==} + /metro-transform-plugins@0.80.7: + resolution: {integrity: sha512-ENGvQF7wZCtn2rO6jwsYy3XRSPrlm0G/1TgDC8AXdvz0yjfAe1ODSCYWxP8S3JXfjKL5m3b6j9RsV8sQIxsUjQ==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 + '@babel/core': 7.24.3 + '@babel/generator': 7.24.1 '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 + '@babel/traverse': 7.24.1 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-transform-worker@0.80.6: - resolution: {integrity: sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA==} + /metro-transform-worker@0.80.7: + resolution: {integrity: sha512-QcgKpx3WZo71jTtXMEeeFuGpA+nG8YuWjxPTIsIYTjgDxcArS8zDDRzS18mmYkP65yyzH4dT94B1FJH9+flRag==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.0 + '@babel/core': 7.24.3 + '@babel/generator': 7.24.1 + '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - metro: 0.80.6 - metro-babel-transformer: 0.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-minify-terser: 0.80.6 - metro-source-map: 0.80.6 - metro-transform-plugins: 0.80.6 + metro: 0.80.7 + metro-babel-transformer: 0.80.7 + metro-cache: 0.80.7 + metro-cache-key: 0.80.7 + metro-minify-terser: 0.80.7 + metro-source-map: 0.80.7 + metro-transform-plugins: 0.80.7 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -9781,17 +9852,17 @@ packages: - supports-color - utf-8-validate - /metro@0.80.6: - resolution: {integrity: sha512-f6Nhnht9TxVRP6zdBq9J2jNdeDBxRmJFnjxhQS1GeCpokBvI6fTXq+wHTLz5jZA+75fwbkPSzBxBJzQa6xi0AQ==} + /metro@0.80.7: + resolution: {integrity: sha512-con7RTEulmefHplqusjpoGD+r4CBuDLaeI261hFcSuTv6+Arm5FgSYmUcBa3MeqJbC/U8v0uT6MbdkEFCEl1xg==} engines: {node: '>=18'} hasBin: true dependencies: - '@babel/code-frame': 7.23.5 - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.0 + '@babel/code-frame': 7.24.2 + '@babel/core': 7.24.3 + '@babel/generator': 7.24.1 + '@babel/parser': 7.24.1 '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 + '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 accepts: 1.3.8 chalk: 4.1.2 @@ -9801,24 +9872,24 @@ packages: denodeify: 1.2.1 error-stack-parser: 2.1.4 graceful-fs: 4.2.11 - hermes-parser: 0.19.1 + hermes-parser: 0.20.1 image-size: 1.1.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.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-config: 0.80.6 - metro-core: 0.80.6 - metro-file-map: 0.80.6 - metro-resolver: 0.80.6 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 - metro-symbolicate: 0.80.6 - metro-transform-plugins: 0.80.6 - metro-transform-worker: 0.80.6 + metro-babel-transformer: 0.80.7 + metro-cache: 0.80.7 + metro-cache-key: 0.80.7 + metro-config: 0.80.7 + metro-core: 0.80.7 + metro-file-map: 0.80.7 + metro-resolver: 0.80.7 + metro-runtime: 0.80.7 + metro-source-map: 0.80.7 + metro-symbolicate: 0.80.7 + metro-transform-plugins: 0.80.7 + metro-transform-worker: 0.80.7 mime-types: 2.1.35 node-fetch: 2.7.0 nullthrows: 1.1.1 @@ -10512,7 +10583,7 @@ packages: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.5.1 + ufo: 1.5.3 dev: true /mri@1.2.0: @@ -10597,32 +10668,32 @@ packages: - supports-color dev: false - /next-seo@6.5.0(next@14.1.3)(react-dom@18.2.0)(react@18.2.0): + /next-seo@6.5.0(next@14.1.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-MfzUeWTN/x/rsKp/1n0213eojO97lIl0unxqbeCY+6pAucViHDA8GSLRRcXpgjsSmBxfCFdfpu7LXbt4ANQoNQ==} peerDependencies: next: ^8.1.1-canary.54 || >=9.0.0 react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 14.1.3(react-dom@18.2.0)(react@18.2.0) + next: 14.1.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next-themes@0.2.1(next@14.1.3)(react-dom@18.2.0)(react@18.2.0): + /next-themes@0.2.1(next@14.1.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 14.1.3(react-dom@18.2.0)(react@18.2.0) + next: 14.1.4(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /next@14.1.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g==} + /next@14.1.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -10636,31 +10707,31 @@ packages: sass: optional: true dependencies: - '@next/env': 14.1.3 + '@next/env': 14.1.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001597 + caniuse-lite: 1.0.30001599 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.3 - '@next/swc-darwin-x64': 14.1.3 - '@next/swc-linux-arm64-gnu': 14.1.3 - '@next/swc-linux-arm64-musl': 14.1.3 - '@next/swc-linux-x64-gnu': 14.1.3 - '@next/swc-linux-x64-musl': 14.1.3 - '@next/swc-win32-arm64-msvc': 14.1.3 - '@next/swc-win32-ia32-msvc': 14.1.3 - '@next/swc-win32-x64-msvc': 14.1.3 + '@next/swc-darwin-arm64': 14.1.4 + '@next/swc-darwin-x64': 14.1.4 + '@next/swc-linux-arm64-gnu': 14.1.4 + '@next/swc-linux-arm64-musl': 14.1.4 + '@next/swc-linux-x64-gnu': 14.1.4 + '@next/swc-linux-x64-musl': 14.1.4 + '@next/swc-win32-arm64-msvc': 14.1.4 + '@next/swc-win32-ia32-msvc': 14.1.4 + '@next/swc-win32-x64-msvc': 14.1.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros dev: false - /nextra-theme-docs@2.13.4(next@14.1.3)(nextra@2.13.4)(react-dom@18.2.0)(react@18.2.0): + /nextra-theme-docs@2.13.4(next@14.1.4)(nextra@2.13.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2XOoMfwBCTYBt8ds4ZHftt9Wyf2XsykiNo02eir/XEYB+sGeUoE77kzqfidjEOKCSzOHYbK9BDMcg2+B/2vYRw==} peerDependencies: next: '>=9.5.3' @@ -10677,17 +10748,17 @@ packages: git-url-parse: 13.1.1 intersection-observer: 0.12.2 match-sorter: 6.3.4 - next: 14.1.3(react-dom@18.2.0)(react@18.2.0) - next-seo: 6.5.0(next@14.1.3)(react-dom@18.2.0)(react@18.2.0) - next-themes: 0.2.1(next@14.1.3)(react-dom@18.2.0)(react@18.2.0) - nextra: 2.13.4(next@14.1.3)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.4(react-dom@18.2.0)(react@18.2.0) + next-seo: 6.5.0(next@14.1.4)(react-dom@18.2.0)(react@18.2.0) + next-themes: 0.2.1(next@14.1.4)(react-dom@18.2.0)(react@18.2.0) + nextra: 2.13.4(next@14.1.4)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) scroll-into-view-if-needed: 3.1.0 zod: 3.22.4 dev: false - /nextra@2.13.4(next@14.1.3)(react-dom@18.2.0)(react@18.2.0): + /nextra@2.13.4(next@14.1.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7of2rSBxuUa3+lbMmZwG9cqgftcoNOVQLTT6Rxf3EhBR9t1EI7b43dted8YoqSNaigdE3j1CoyNkX8N/ZzlEpw==} engines: {node: '>=16'} peerDependencies: @@ -10707,7 +10778,7 @@ packages: gray-matter: 4.0.3 katex: 0.16.9 lodash.get: 4.4.2 - next: 14.1.3(react-dom@18.2.0)(react@18.2.0) + next: 14.1.4(react-dom@18.2.0)(react@18.2.0) next-mdx-remote: 4.4.1(react-dom@18.2.0)(react@18.2.0) p-limit: 3.1.0 react: 18.2.0 @@ -10836,8 +10907,8 @@ packages: /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - /ob1@0.80.6: - resolution: {integrity: sha512-nlLGZPMQ/kbmkdIb5yvVzep1jKUII2x6ehNsHpgy71jpnJMW7V+KsB3AjYI2Ajb7UqMAMNjlssg6FUodrEMYzg==} + /ob1@0.80.7: + resolution: {integrity: sha512-+m1cCNckRtDEnurNSVqywpN6LhFWc1Z3MdX7PX7boCwEdSzh4evlUjBIUzao1lBOpB7G5FvwfFagTVQGCMa0Yw==} engines: {node: '>=18'} /object-assign@4.1.1: @@ -10865,32 +10936,32 @@ packages: has-symbols: 1.0.3 object-keys: 1.1.1 - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 dev: false - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 dev: false - /object.groupby@1.0.2: - resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: - array.prototype.filter: 1.0.3 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 + es-abstract: 1.23.2 dev: false /object.hasown@1.1.3: @@ -10900,13 +10971,13 @@ packages: es-abstract: 1.22.5 dev: false - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 dev: false /on-finished@2.3.0: @@ -11129,7 +11200,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -11311,29 +11382,29 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - /postcss-import@15.1.0(postcss@8.4.35): + /postcss-import@15.1.0(postcss@8.4.37): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.35 + postcss: 8.4.37 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 dev: true - /postcss-js@4.0.1(postcss@8.4.35): + /postcss-js@4.0.1(postcss@8.4.37): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.35 + postcss: 8.4.37 dev: true - /postcss-load-config@4.0.2(postcss@8.4.35): + /postcss-load-config@4.0.2(postcss@8.4.37): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: @@ -11346,17 +11417,17 @@ packages: optional: true dependencies: lilconfig: 3.1.1 - postcss: 8.4.35 + postcss: 8.4.37 yaml: 2.4.1 dev: true - /postcss-nested@6.0.1(postcss@8.4.35): + /postcss-nested@6.0.1(postcss@8.4.37): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.35 + postcss: 8.4.37 postcss-selector-parser: 6.0.16 dev: true @@ -11378,16 +11449,16 @@ packages: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 dev: false - /postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + /postcss@8.4.37: + resolution: {integrity: sha512-7iB/v/r7Woof0glKLH8b1SPHrsX7uhdO+Geb41QpF/+mWZHU3uxxSlN+UXGVit1PawOYDToO+AbZzhBzWRDwbQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 picocolors: 1.0.0 - source-map-js: 1.0.2 + source-map-js: 1.2.0 /pouchdb-collections@1.0.1: resolution: {integrity: sha512-31db6JRg4+4D5Yzc2nqsRqsA2oOkZS8DpFav3jf/qVNBxusKa2ClkEIZ2bJNpaDbMfWtnuSq59p6Bn+CipPMdg==} @@ -11397,7 +11468,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - detect-libc: 2.0.2 + detect-libc: 2.0.3 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 @@ -11607,8 +11678,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - /pure-rand@6.0.4: - resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + /pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} /qrcode-terminal@0.11.0: resolution: {integrity: sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==} @@ -11697,13 +11768,13 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-native-get-random-values@1.8.0(react-native@0.73.5): + /react-native-get-random-values@1.8.0(react-native@0.73.6): resolution: {integrity: sha512-H/zghhun0T+UIJLmig3+ZuBCvF66rdbiWUfRSNS6kv5oDSpa1ZiVyvRWtuPesQpT8dXj+Bv7WJRQOUP+5TB1sA==} peerDependencies: react-native: '>=0.56' dependencies: fast-base64-decode: 1.0.0 - react-native: 0.73.5(@babel/core@7.24.0)(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.3)(react@18.2.0) dev: false /react-native-picker-select@9.0.1(@react-native-picker/picker@2.6.1): @@ -11711,12 +11782,12 @@ packages: peerDependencies: '@react-native-picker/picker': ^2.4.0 dependencies: - '@react-native-picker/picker': 2.6.1(react-native@0.73.5)(react@18.2.0) + '@react-native-picker/picker': 2.6.1(react-native@0.73.6)(react@18.2.0) lodash.isequal: 4.5.0 dev: false - /react-native@0.73.5(@babel/core@7.24.0)(react@18.2.0): - resolution: {integrity: sha512-iHgDArmF4CrhL0qTj+Rn+CBN5pZWUL9lUGl8ub+V9Hwu/vnzQQh8rTMVSwVd2sV6N76KjpE5a4TfIAHkpIHhKg==} + /react-native@0.73.6(@babel/core@7.24.3)(react@18.2.0): + resolution: {integrity: sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -11727,12 +11798,12 @@ packages: '@react-native-community/cli-platform-android': 12.3.6 '@react-native-community/cli-platform-ios': 12.3.6 '@react-native/assets-registry': 0.73.1 - '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.0) - '@react-native/community-cli-plugin': 0.73.17(@babel/core@7.24.0) + '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.3) + '@react-native/community-cli-plugin': 0.73.17(@babel/core@7.24.3) '@react-native/gradle-plugin': 0.73.4 '@react-native/js-polyfills': 0.73.1 '@react-native/normalize-colors': 0.73.2 - '@react-native/virtualized-lists': 0.73.4(react-native@0.73.5) + '@react-native/virtualized-lists': 0.73.4(react-native@0.73.6) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -11745,8 +11816,8 @@ packages: jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 + metro-runtime: 0.80.7 + metro-source-map: 0.80.7 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 @@ -11873,13 +11944,13 @@ packages: strip-indent: 3.0.0 dev: true - /reflect.getprototypeof@1.0.5: - resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.0 + es-abstract: 1.23.2 es-errors: 1.3.0 get-intrinsic: 1.2.4 globalthis: 1.0.3 @@ -11904,7 +11975,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.24.0 + '@babel/runtime': 7.24.1 /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} @@ -12465,8 +12536,8 @@ packages: is-plain-obj: 4.1.0 dev: false - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} /source-map-support@0.5.21: @@ -12607,13 +12678,17 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.7 regexp.prototype.flags: 1.5.2 @@ -12621,27 +12696,28 @@ packages: side-channel: 1.0.6 dev: false - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 + es-object-atoms: 1.0.0 - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-object-atoms: 1.0.0 /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.2 /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -12845,11 +12921,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.35 - postcss-import: 15.1.0(postcss@8.4.35) - postcss-js: 4.0.1(postcss@8.4.35) - postcss-load-config: 4.0.2(postcss@8.4.35) - postcss-nested: 6.0.1(postcss@8.4.35) + postcss: 8.4.37 + postcss-import: 15.1.0(postcss@8.4.37) + postcss-js: 4.0.1(postcss@8.4.37) + postcss-load-config: 4.0.2(postcss@8.4.37) + postcss-nested: 6.0.1(postcss@8.4.37) postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 @@ -13048,7 +13124,7 @@ packages: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false - /ts-api-utils@1.3.0(typescript@5.4.2): + /ts-api-utils@1.3.0(typescript@5.4.3): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} peerDependencies: @@ -13057,7 +13133,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.4.2 + typescript: 5.4.3 dev: false /ts-dedent@2.2.0: @@ -13068,7 +13144,7 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /ts-node@10.9.2(@types/node@20.11.28)(typescript@5.4.2): + /ts-node@10.9.2(@types/node@20.11.30)(typescript@5.4.3): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -13089,14 +13165,14 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.28 + '@types/node': 20.11.30 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.4.2 + typescript: 5.4.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -13297,16 +13373,16 @@ packages: hasBin: true dev: true - /typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + /typescript@5.4.3: + resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==} engines: {node: '>=14.17'} hasBin: true /ua-parser-js@1.0.37: resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} - /ufo@1.5.1: - resolution: {integrity: sha512-HGyF79+/qZ4soRvM+nHERR2pJ3VXDZ/8sL1uLahdgEDf580NkgiWOxLk33FetExqOWp352JZRsgXbG/4MaGOSg==} + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} dev: true /unbox-primitive@1.0.2: @@ -13630,7 +13706,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-node@1.4.0(@types/node@20.11.28): + /vite-node@1.4.0(@types/node@20.11.30): resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -13639,7 +13715,7 @@ packages: debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.1.6(@types/node@20.11.28) + vite: 5.2.2(@types/node@20.11.30) transitivePeerDependencies: - '@types/node' - less @@ -13651,8 +13727,8 @@ packages: - terser dev: true - /vite@5.1.6(@types/node@20.11.28): - resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} + /vite@5.2.2(@types/node@20.11.30): + resolution: {integrity: sha512-FWZbz0oSdLq5snUI0b6sULbz58iXFXdvkZfZWR/F0ZJuKTSPO7v72QPXt6KqYeMFb0yytNp6kZosxJ96Nr/wDQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -13679,15 +13755,15 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.28 - esbuild: 0.19.12 - postcss: 8.4.35 + '@types/node': 20.11.30 + esbuild: 0.20.2 + postcss: 8.4.37 rollup: 4.13.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.4.0(@types/node@20.11.28): + /vitest@1.4.0(@types/node@20.11.30): resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -13712,7 +13788,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.28 + '@types/node': 20.11.30 '@vitest/expect': 1.4.0 '@vitest/runner': 1.4.0 '@vitest/snapshot': 1.4.0 @@ -13730,8 +13806,8 @@ packages: strip-literal: 2.0.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.1.6(@types/node@20.11.28) - vite-node: 1.4.0(@types/node@20.11.28) + vite: 5.2.2(@types/node@20.11.30) + vite-node: 1.4.0(@types/node@20.11.30) why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/scripts/generateSql.ts b/scripts/generateSql.ts new file mode 100644 index 000000000..597e47331 --- /dev/null +++ b/scripts/generateSql.ts @@ -0,0 +1,134 @@ +import * as Kysely from "kysely"; +import { Mnemonic } from "../packages/evolu-common/src/Crypto"; +import { pipe, ReadonlyRecord, Effect } from "effect"; +import * as prettier from "prettier"; +import fs from "fs"; + +/** + * Evolu internal SQL queries are statically generated to reduce bundle size. + * Kysely in Web Worker can't be shared with Kysely used in the main thread for + * createQuery. + */ + +// https://kysely.dev/docs/recipes/splitting-query-building-and-execution +const db = new Kysely.Kysely({ + dialect: { + createAdapter: (): Kysely.DialectAdapter => new Kysely.SqliteAdapter(), + createDriver: (): Kysely.Driver => new Kysely.DummyDriver(), + createIntrospector(): Kysely.DatabaseIntrospector { + throw "Not implemeneted"; + }, + createQueryCompiler: (): Kysely.QueryCompiler => + new Kysely.SqliteQueryCompiler(), + }, +}); + +// We don't need actual types because we need only SQL strings. +interface Database { + evolu_message: { + timestamp: string; + table: string; + row: string; + column: string; + value: unknown; + }; + + evolu_owner: { + id: string; + mnemonic: string; + encryptionKey: Uint8Array; + timestamp: string; + merkleTree: string; + }; +} + +const queries = { + selectOwner: db + .selectFrom("evolu_owner") + .select(["id", "mnemonic", "encryptionKey"]), + + createMessageTable: db.schema + .createTable("evolu_message") + .addColumn("timestamp", "blob", (col) => col.primaryKey()) + .addColumn("table", "blob") + .addColumn("row", "blob") + .addColumn("column", "blob") + .addColumn("value", "blob"), + + createMessageTableIndex: db.schema + .createIndex("index_evolu_message") + .on("evolu_message") + .columns(["table", "row", "column", "timestamp desc"]), + + createOwnerTable: db.schema + .createTable("evolu_owner") + .addColumn("id", "blob") + .addColumn("mnemonic", "blob") + .addColumn("encryptionKey", "blob") + .addColumn("timestamp", "blob") + .addColumn("merkleTree", "blob"), + + insertOwner: db.insertInto("evolu_owner").values({ + id: "b", + mnemonic: "a", + encryptionKey: new Uint8Array(), + timestamp: "a", + merkleTree: "b", + }), + + selectOwnerTimestampAndMerkleTree: db + .selectFrom("evolu_owner") + .select(["timestamp", "merkleTree"]), + + selectLastTimestampForTableRowColumn: db + .selectFrom("evolu_message") + .select("timestamp") + .where("table", "=", "1") + .where("row", "=", "2") + .where("column", "=", "3") + .orderBy("timestamp", "desc") + .limit(1), + + insertIntoMessagesIfNew: db + .insertInto("evolu_message") + .values({ + timestamp: "1", + table: "2", + row: "3", + column: "4", + value: "5", + }) + .onConflict((oc) => oc.doNothing()), + + updateOwnerTimestampAndMerkleTree: db.updateTable("evolu_owner").set({ + merkleTree: "1", + timestamp: "2", + }), + + selectMessagesToSync: db + .selectFrom("evolu_message") + .selectAll() + .where("timestamp", ">=", "1") + .orderBy("timestamp"), +}; + +pipe( + queries, + ReadonlyRecord.reduce( + ` + // this file is generated by generateSql script + import { SqliteQuery } from "./Sqlite.js"; + `, + (acc, value, name) => { + return ( + acc + + `export const ${name}: SqliteQuery = { sql: \`${value.compile().sql}\`};\n\n` + ); + }, + ), + (string) => + Effect.promise(() => prettier.format(string, { parser: "typescript" })), + Effect.runPromise, +).then((formattedString) => { + fs.writeFileSync("./packages/evolu-common/src/Sql.ts", formattedString); +});